xref: /reactos/dll/win32/ieframe/iehtmlwnd.c (revision aad80191)
1 /*
2  * Copyright 2012 Jacek Caban for CodeWeavers
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18 
19 #include "ieframe.h"
20 
21 #include "wine/debug.h"
22 
23 WINE_DEFAULT_DEBUG_CHANNEL(ieframe);
24 
25 static inline IEHTMLWindow *impl_from_IHTMLWindow2(IHTMLWindow2 *iface)
26 {
27     return CONTAINING_RECORD(iface, IEHTMLWindow, IHTMLWindow2_iface);
28 }
29 
30 static HRESULT WINAPI IEHTMLWindow2_QueryInterface(IHTMLWindow2 *iface, REFIID riid, void **ppv)
31 {
32     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
33 
34     if(IsEqualGUID(&IID_IUnknown, riid)) {
35         TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
36         *ppv = &This->IHTMLWindow2_iface;
37     }else if(IsEqualGUID(&IID_IDispatch, riid)) {
38         TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
39         *ppv = &This->IHTMLWindow2_iface;
40     }else if(IsEqualGUID(&IID_IHTMLFramesCollection2, riid)) {
41         TRACE("(%p)->(IID_IHTMLFramesCollection2 %p)\n", This, ppv);
42         *ppv = &This->IHTMLWindow2_iface;
43     }else if(IsEqualGUID(&IID_IHTMLWindow2, riid)) {
44         TRACE("(%p)->(IID_IHTMLWindow2 %p)\n", This, ppv);
45         *ppv = &This->IHTMLWindow2_iface;
46     }else {
47         WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
48         *ppv = NULL;
49         return E_NOINTERFACE;
50     }
51 
52     IUnknown_AddRef((IUnknown*)*ppv);
53     return S_OK;
54 }
55 
56 static ULONG WINAPI IEHTMLWindow2_AddRef(IHTMLWindow2 *iface)
57 {
58     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
59 
60     TRACE("(%p)\n", This);
61 
62     return IOleClientSite_AddRef(&This->doc_host->IOleClientSite_iface);
63 }
64 
65 static ULONG WINAPI IEHTMLWindow2_Release(IHTMLWindow2 *iface)
66 {
67     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
68 
69     TRACE("(%p)\n", This);
70 
71     return IOleClientSite_Release(&This->doc_host->IOleClientSite_iface);
72 }
73 
74 static HRESULT WINAPI IEHTMLWindow2_GetTypeInfoCount(IHTMLWindow2 *iface, UINT *pctinfo)
75 {
76     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
77     FIXME("(%p)->()\n", This);
78     return E_NOTIMPL;
79 }
80 
81 static HRESULT WINAPI IEHTMLWindow2_GetTypeInfo(IHTMLWindow2 *iface, UINT iTInfo,
82                                               LCID lcid, ITypeInfo **ppTInfo)
83 {
84     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
85     FIXME("(%p)->()\n", This);
86     return E_NOTIMPL;
87 }
88 
89 static HRESULT WINAPI IEHTMLWindow2_GetIDsOfNames(IHTMLWindow2 *iface, REFIID riid,
90                                                 LPOLESTR *rgszNames, UINT cNames,
91                                                 LCID lcid, DISPID *rgDispId)
92 {
93     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
94     FIXME("(%p)->()\n", This);
95     return E_NOTIMPL;
96 }
97 
98 static HRESULT WINAPI IEHTMLWindow2_Invoke(IHTMLWindow2 *iface, DISPID dispIdMember,
99                             REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
100                             VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
101 {
102     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
103     FIXME("(%p)->()\n", This);
104     return E_NOTIMPL;
105 }
106 
107 static HRESULT WINAPI IEHTMLWindow2_item(IHTMLWindow2 *iface, VARIANT *pvarIndex, VARIANT *pvarResult)
108 {
109     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
110     FIXME("(%p)->(%s %p)\n", This, debugstr_variant(pvarIndex), pvarResult);
111     return E_NOTIMPL;
112 }
113 
114 static HRESULT WINAPI IEHTMLWindow2_get_length(IHTMLWindow2 *iface, LONG *p)
115 {
116     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
117     FIXME("(%p)->(%p)\n", This, p);
118     return E_NOTIMPL;
119 }
120 
121 static HRESULT WINAPI IEHTMLWindow2_get_frames(IHTMLWindow2 *iface, IHTMLFramesCollection2 **p)
122 {
123     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
124     FIXME("(%p)->(%p)\n", This, p);
125     return E_NOTIMPL;
126 }
127 
128 static HRESULT WINAPI IEHTMLWindow2_put_defaultStatus(IHTMLWindow2 *iface, BSTR v)
129 {
130     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
131     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
132     return E_NOTIMPL;
133 }
134 
135 static HRESULT WINAPI IEHTMLWindow2_get_defaultStatus(IHTMLWindow2 *iface, BSTR *p)
136 {
137     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
138     FIXME("(%p)->(%p)\n", This, p);
139     return E_NOTIMPL;
140 }
141 
142 static HRESULT WINAPI IEHTMLWindow2_put_status(IHTMLWindow2 *iface, BSTR v)
143 {
144     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
145     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
146     return E_NOTIMPL;
147 }
148 
149 static HRESULT WINAPI IEHTMLWindow2_get_status(IHTMLWindow2 *iface, BSTR *p)
150 {
151     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
152     FIXME("(%p)->(%p)\n", This, p);
153     return E_NOTIMPL;
154 }
155 
156 static HRESULT WINAPI IEHTMLWindow2_setTimeout(IHTMLWindow2 *iface, BSTR expression,
157         LONG msec, VARIANT *language, LONG *timerID)
158 {
159     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
160     FIXME("(%p)->(%s %d %s %p)\n", This, debugstr_w(expression), msec, debugstr_variant(language), timerID);
161     return E_NOTIMPL;
162 }
163 
164 static HRESULT WINAPI IEHTMLWindow2_clearTimeout(IHTMLWindow2 *iface, LONG timerID)
165 {
166     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
167     FIXME("(%p)->(%d)\n", This, timerID);
168     return E_NOTIMPL;
169 }
170 
171 static HRESULT WINAPI IEHTMLWindow2_alert(IHTMLWindow2 *iface, BSTR message)
172 {
173     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
174     FIXME("(%p)->(%s)\n", This, debugstr_w(message));
175     return E_NOTIMPL;
176 }
177 
178 static HRESULT WINAPI IEHTMLWindow2_confirm(IHTMLWindow2 *iface, BSTR message,
179         VARIANT_BOOL *confirmed)
180 {
181     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
182     FIXME("(%p)->(%s %p)\n", This, debugstr_w(message), confirmed);
183     return E_NOTIMPL;
184 }
185 
186 static HRESULT WINAPI IEHTMLWindow2_prompt(IHTMLWindow2 *iface, BSTR message,
187         BSTR dststr, VARIANT *textdata)
188 {
189     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
190     FIXME("(%p)->(%s %s %p)\n", This, debugstr_w(message), debugstr_w(dststr), textdata);
191     return E_NOTIMPL;
192 }
193 
194 static HRESULT WINAPI IEHTMLWindow2_get_Image(IHTMLWindow2 *iface, IHTMLImageElementFactory **p)
195 {
196     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
197     FIXME("(%p)->(%p)\n", This, p);
198     return E_NOTIMPL;
199 }
200 
201 static HRESULT WINAPI IEHTMLWindow2_get_location(IHTMLWindow2 *iface, IHTMLLocation **p)
202 {
203     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
204     FIXME("(%p)->(%p)\n", This, p);
205     return E_NOTIMPL;
206 }
207 
208 static HRESULT WINAPI IEHTMLWindow2_get_history(IHTMLWindow2 *iface, IOmHistory **p)
209 {
210     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
211     FIXME("(%p)->(%p)\n", This, p);
212     return E_NOTIMPL;
213 }
214 
215 static HRESULT WINAPI IEHTMLWindow2_close(IHTMLWindow2 *iface)
216 {
217     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
218 
219     FIXME("(%p) semi-stub\n", This);
220 
221     if(!This->doc_host->wb)
222         return E_UNEXPECTED;
223 
224     return IWebBrowser2_put_Visible(This->doc_host->wb, VARIANT_FALSE);
225 }
226 
227 static HRESULT WINAPI IEHTMLWindow2_put_opener(IHTMLWindow2 *iface, VARIANT v)
228 {
229     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
230     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
231     return E_NOTIMPL;
232 }
233 
234 static HRESULT WINAPI IEHTMLWindow2_get_opener(IHTMLWindow2 *iface, VARIANT *p)
235 {
236     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
237     FIXME("(%p)->(%p)\n", This, p);
238     return E_NOTIMPL;
239 }
240 
241 static HRESULT WINAPI IEHTMLWindow2_get_navigator(IHTMLWindow2 *iface, IOmNavigator **p)
242 {
243     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
244     FIXME("(%p)->(%p)\n", This, p);
245     return E_NOTIMPL;
246 }
247 
248 static HRESULT WINAPI IEHTMLWindow2_put_name(IHTMLWindow2 *iface, BSTR v)
249 {
250     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
251     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
252     return E_NOTIMPL;
253 }
254 
255 static HRESULT WINAPI IEHTMLWindow2_get_name(IHTMLWindow2 *iface, BSTR *p)
256 {
257     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
258     FIXME("(%p)->(%p)\n", This, p);
259     return E_NOTIMPL;
260 }
261 
262 static HRESULT WINAPI IEHTMLWindow2_get_parent(IHTMLWindow2 *iface, IHTMLWindow2 **p)
263 {
264     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
265     FIXME("(%p)->(%p)\n", This, p);
266     return E_NOTIMPL;
267 }
268 
269 static HRESULT WINAPI IEHTMLWindow2_open(IHTMLWindow2 *iface, BSTR url, BSTR name,
270          BSTR features, VARIANT_BOOL replace, IHTMLWindow2 **pomWindowResult)
271 {
272     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
273     FIXME("(%p)->(%s %s %s %x %p)\n", This, debugstr_w(url), debugstr_w(name),
274           debugstr_w(features), replace, pomWindowResult);
275     return E_NOTIMPL;
276 }
277 
278 static HRESULT WINAPI IEHTMLWindow2_get_self(IHTMLWindow2 *iface, IHTMLWindow2 **p)
279 {
280     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
281     FIXME("(%p)->(%p)\n", This, p);
282     return E_NOTIMPL;
283 }
284 
285 static HRESULT WINAPI IEHTMLWindow2_get_top(IHTMLWindow2 *iface, IHTMLWindow2 **p)
286 {
287     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
288     FIXME("(%p)->(%p)\n", This, p);
289     return E_NOTIMPL;
290 }
291 
292 static HRESULT WINAPI IEHTMLWindow2_get_window(IHTMLWindow2 *iface, IHTMLWindow2 **p)
293 {
294     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
295     FIXME("(%p)->(%p)\n", This, p);
296     return E_NOTIMPL;
297 }
298 
299 static HRESULT WINAPI IEHTMLWindow2_navigate(IHTMLWindow2 *iface, BSTR url)
300 {
301     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
302     FIXME("(%p)->(%s)\n", This, debugstr_w(url));
303     return E_NOTIMPL;
304 }
305 
306 static HRESULT WINAPI IEHTMLWindow2_put_onfocus(IHTMLWindow2 *iface, VARIANT v)
307 {
308     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
309     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
310     return E_NOTIMPL;
311 }
312 
313 static HRESULT WINAPI IEHTMLWindow2_get_onfocus(IHTMLWindow2 *iface, VARIANT *p)
314 {
315     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
316     FIXME("(%p)->(%p)\n", This, p);
317     return E_NOTIMPL;
318 }
319 
320 static HRESULT WINAPI IEHTMLWindow2_put_onblur(IHTMLWindow2 *iface, VARIANT v)
321 {
322     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
323     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
324     return E_NOTIMPL;
325 }
326 
327 static HRESULT WINAPI IEHTMLWindow2_get_onblur(IHTMLWindow2 *iface, VARIANT *p)
328 {
329     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
330     FIXME("(%p)->(%p)\n", This, p);
331     return E_NOTIMPL;
332 }
333 
334 static HRESULT WINAPI IEHTMLWindow2_put_onload(IHTMLWindow2 *iface, VARIANT v)
335 {
336     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
337     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
338     return E_NOTIMPL;
339 }
340 
341 static HRESULT WINAPI IEHTMLWindow2_get_onload(IHTMLWindow2 *iface, VARIANT *p)
342 {
343     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
344     FIXME("(%p)->(%p)\n", This, p);
345     return E_NOTIMPL;
346 }
347 
348 static HRESULT WINAPI IEHTMLWindow2_put_onbeforeunload(IHTMLWindow2 *iface, VARIANT v)
349 {
350     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
351     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
352     return E_NOTIMPL;
353 }
354 
355 static HRESULT WINAPI IEHTMLWindow2_get_onbeforeunload(IHTMLWindow2 *iface, VARIANT *p)
356 {
357     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
358     FIXME("(%p)->(%p)\n", This, p);
359     return E_NOTIMPL;
360 }
361 
362 static HRESULT WINAPI IEHTMLWindow2_put_onunload(IHTMLWindow2 *iface, VARIANT v)
363 {
364     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
365     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
366     return E_NOTIMPL;
367 }
368 
369 static HRESULT WINAPI IEHTMLWindow2_get_onunload(IHTMLWindow2 *iface, VARIANT *p)
370 {
371     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
372     FIXME("(%p)->(%p)\n", This, p);
373     return E_NOTIMPL;
374 }
375 
376 static HRESULT WINAPI IEHTMLWindow2_put_onhelp(IHTMLWindow2 *iface, VARIANT v)
377 {
378     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
379     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
380     return E_NOTIMPL;
381 }
382 
383 static HRESULT WINAPI IEHTMLWindow2_get_onhelp(IHTMLWindow2 *iface, VARIANT *p)
384 {
385     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
386     FIXME("(%p)->(%p)\n", This, p);
387     return E_NOTIMPL;
388 }
389 
390 static HRESULT WINAPI IEHTMLWindow2_put_onerror(IHTMLWindow2 *iface, VARIANT v)
391 {
392     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
393     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
394     return E_NOTIMPL;
395 }
396 
397 static HRESULT WINAPI IEHTMLWindow2_get_onerror(IHTMLWindow2 *iface, VARIANT *p)
398 {
399     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
400     FIXME("(%p)->(%p)\n", This, p);
401     return E_NOTIMPL;
402 }
403 
404 static HRESULT WINAPI IEHTMLWindow2_put_onresize(IHTMLWindow2 *iface, VARIANT v)
405 {
406     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
407     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
408     return E_NOTIMPL;
409 }
410 
411 static HRESULT WINAPI IEHTMLWindow2_get_onresize(IHTMLWindow2 *iface, VARIANT *p)
412 {
413     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
414     FIXME("(%p)->(%p)\n", This, p);
415     return E_NOTIMPL;
416 }
417 
418 static HRESULT WINAPI IEHTMLWindow2_put_onscroll(IHTMLWindow2 *iface, VARIANT v)
419 {
420     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
421     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
422     return E_NOTIMPL;
423 }
424 
425 static HRESULT WINAPI IEHTMLWindow2_get_onscroll(IHTMLWindow2 *iface, VARIANT *p)
426 {
427     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
428     FIXME("(%p)->(%p)\n", This, p);
429     return E_NOTIMPL;
430 }
431 
432 static HRESULT WINAPI IEHTMLWindow2_get_document(IHTMLWindow2 *iface, IHTMLDocument2 **p)
433 {
434     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
435     FIXME("(%p)->(%p)\n", This, p);
436     return E_NOTIMPL;
437 }
438 
439 static HRESULT WINAPI IEHTMLWindow2_get_event(IHTMLWindow2 *iface, IHTMLEventObj **p)
440 {
441     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
442     FIXME("(%p)->(%p)\n", This, p);
443     return E_NOTIMPL;
444 }
445 
446 static HRESULT WINAPI IEHTMLWindow2_get__newEnum(IHTMLWindow2 *iface, IUnknown **p)
447 {
448     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
449     FIXME("(%p)->(%p)\n", This, p);
450     return E_NOTIMPL;
451 }
452 
453 static HRESULT WINAPI IEHTMLWindow2_showModalDialog(IHTMLWindow2 *iface, BSTR dialog,
454         VARIANT *varArgIn, VARIANT *varOptions, VARIANT *varArgOut)
455 {
456     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
457     FIXME("(%p)->(%s %s %s %p)\n", This, debugstr_w(dialog), debugstr_variant(varArgIn),
458         debugstr_variant(varOptions), varArgOut);
459     return E_NOTIMPL;
460 }
461 
462 static HRESULT WINAPI IEHTMLWindow2_showHelp(IHTMLWindow2 *iface, BSTR helpURL, VARIANT helpArg,
463         BSTR features)
464 {
465     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
466     FIXME("(%p)->(%s %s %s)\n", This, debugstr_w(helpURL), debugstr_variant(&helpArg), debugstr_w(features));
467     return E_NOTIMPL;
468 }
469 
470 static HRESULT WINAPI IEHTMLWindow2_get_screen(IHTMLWindow2 *iface, IHTMLScreen **p)
471 {
472     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
473     FIXME("(%p)->(%p)\n", This, p);
474     return E_NOTIMPL;
475 }
476 
477 static HRESULT WINAPI IEHTMLWindow2_get_Option(IHTMLWindow2 *iface, IHTMLOptionElementFactory **p)
478 {
479     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
480     FIXME("(%p)->(%p)\n", This, p);
481     return E_NOTIMPL;
482 }
483 
484 static HRESULT WINAPI IEHTMLWindow2_focus(IHTMLWindow2 *iface)
485 {
486     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
487     FIXME("(%p)->()\n", This);
488     return E_NOTIMPL;
489 }
490 
491 static HRESULT WINAPI IEHTMLWindow2_get_closed(IHTMLWindow2 *iface, VARIANT_BOOL *p)
492 {
493     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
494     FIXME("(%p)->(%p)\n", This, p);
495     return E_NOTIMPL;
496 }
497 
498 static HRESULT WINAPI IEHTMLWindow2_blur(IHTMLWindow2 *iface)
499 {
500     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
501     FIXME("(%p)->()\n", This);
502     return E_NOTIMPL;
503 }
504 
505 static HRESULT WINAPI IEHTMLWindow2_scroll(IHTMLWindow2 *iface, LONG x, LONG y)
506 {
507     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
508     FIXME("(%p)->(%d %d)\n", This, x, y);
509     return E_NOTIMPL;
510 }
511 
512 static HRESULT WINAPI IEHTMLWindow2_get_clientInformation(IHTMLWindow2 *iface, IOmNavigator **p)
513 {
514     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
515     FIXME("(%p)->(%p)\n", This, p);
516     return E_NOTIMPL;
517 }
518 
519 static HRESULT WINAPI IEHTMLWindow2_setInterval(IHTMLWindow2 *iface, BSTR expression,
520         LONG msec, VARIANT *language, LONG *timerID)
521 {
522     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
523     FIXME("(%p)->(%s %d %s %p)\n", This, debugstr_w(expression), msec, debugstr_variant(language), timerID);
524     return E_NOTIMPL;
525 }
526 
527 static HRESULT WINAPI IEHTMLWindow2_clearInterval(IHTMLWindow2 *iface, LONG timerID)
528 {
529     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
530     FIXME("(%p)->(%d)\n", This, timerID);
531     return E_NOTIMPL;
532 }
533 
534 static HRESULT WINAPI IEHTMLWindow2_put_offscreenBuffering(IHTMLWindow2 *iface, VARIANT v)
535 {
536     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
537     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
538     return E_NOTIMPL;
539 }
540 
541 static HRESULT WINAPI IEHTMLWindow2_get_offscreenBuffering(IHTMLWindow2 *iface, VARIANT *p)
542 {
543     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
544     FIXME("(%p)->(%p)\n", This, p);
545     return E_NOTIMPL;
546 }
547 
548 static HRESULT WINAPI IEHTMLWindow2_execScript(IHTMLWindow2 *iface, BSTR scode, BSTR language,
549         VARIANT *pvarRet)
550 {
551     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
552     FIXME("(%p)->(%s %s %p)\n", This, debugstr_w(scode), debugstr_w(language), pvarRet);
553     return E_NOTIMPL;
554 }
555 
556 static HRESULT WINAPI IEHTMLWindow2_toString(IHTMLWindow2 *iface, BSTR *String)
557 {
558     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
559     FIXME("(%p)->(%p)\n", This, String);
560     return E_NOTIMPL;
561 }
562 
563 static HRESULT WINAPI IEHTMLWindow2_scrollBy(IHTMLWindow2 *iface, LONG x, LONG y)
564 {
565     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
566     FIXME("(%p)->(%d %d)\n", This, x, y);
567     return E_NOTIMPL;
568 }
569 
570 static HRESULT WINAPI IEHTMLWindow2_scrollTo(IHTMLWindow2 *iface, LONG x, LONG y)
571 {
572     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
573     FIXME("(%p)->(%d %d)\n", This, x, y);
574     return E_NOTIMPL;
575 }
576 
577 static HRESULT WINAPI IEHTMLWindow2_moveTo(IHTMLWindow2 *iface, LONG x, LONG y)
578 {
579     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
580     FIXME("(%p)->(%d %d)\n", This, x, y);
581     return E_NOTIMPL;
582 }
583 
584 static HRESULT WINAPI IEHTMLWindow2_moveBy(IHTMLWindow2 *iface, LONG x, LONG y)
585 {
586     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
587     FIXME("(%p)->(%d %d)\n", This, x, y);
588     return E_NOTIMPL;
589 }
590 
591 static HRESULT WINAPI IEHTMLWindow2_resizeTo(IHTMLWindow2 *iface, LONG x, LONG y)
592 {
593     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
594     FIXME("(%p)->(%d %d)\n", This, x, y);
595     return E_NOTIMPL;
596 }
597 
598 static HRESULT WINAPI IEHTMLWindow2_resizeBy(IHTMLWindow2 *iface, LONG x, LONG y)
599 {
600     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
601     FIXME("(%p)->(%d %d)\n", This, x, y);
602     return E_NOTIMPL;
603 }
604 
605 static HRESULT WINAPI IEHTMLWindow2_get_external(IHTMLWindow2 *iface, IDispatch **p)
606 {
607     IEHTMLWindow *This = impl_from_IHTMLWindow2(iface);
608     FIXME("(%p)->(%p)\n", This, p);
609     return E_NOTIMPL;
610 }
611 
612 static const IHTMLWindow2Vtbl IEHTMLWindow2Vtbl = {
613     IEHTMLWindow2_QueryInterface,
614     IEHTMLWindow2_AddRef,
615     IEHTMLWindow2_Release,
616     IEHTMLWindow2_GetTypeInfoCount,
617     IEHTMLWindow2_GetTypeInfo,
618     IEHTMLWindow2_GetIDsOfNames,
619     IEHTMLWindow2_Invoke,
620     IEHTMLWindow2_item,
621     IEHTMLWindow2_get_length,
622     IEHTMLWindow2_get_frames,
623     IEHTMLWindow2_put_defaultStatus,
624     IEHTMLWindow2_get_defaultStatus,
625     IEHTMLWindow2_put_status,
626     IEHTMLWindow2_get_status,
627     IEHTMLWindow2_setTimeout,
628     IEHTMLWindow2_clearTimeout,
629     IEHTMLWindow2_alert,
630     IEHTMLWindow2_confirm,
631     IEHTMLWindow2_prompt,
632     IEHTMLWindow2_get_Image,
633     IEHTMLWindow2_get_location,
634     IEHTMLWindow2_get_history,
635     IEHTMLWindow2_close,
636     IEHTMLWindow2_put_opener,
637     IEHTMLWindow2_get_opener,
638     IEHTMLWindow2_get_navigator,
639     IEHTMLWindow2_put_name,
640     IEHTMLWindow2_get_name,
641     IEHTMLWindow2_get_parent,
642     IEHTMLWindow2_open,
643     IEHTMLWindow2_get_self,
644     IEHTMLWindow2_get_top,
645     IEHTMLWindow2_get_window,
646     IEHTMLWindow2_navigate,
647     IEHTMLWindow2_put_onfocus,
648     IEHTMLWindow2_get_onfocus,
649     IEHTMLWindow2_put_onblur,
650     IEHTMLWindow2_get_onblur,
651     IEHTMLWindow2_put_onload,
652     IEHTMLWindow2_get_onload,
653     IEHTMLWindow2_put_onbeforeunload,
654     IEHTMLWindow2_get_onbeforeunload,
655     IEHTMLWindow2_put_onunload,
656     IEHTMLWindow2_get_onunload,
657     IEHTMLWindow2_put_onhelp,
658     IEHTMLWindow2_get_onhelp,
659     IEHTMLWindow2_put_onerror,
660     IEHTMLWindow2_get_onerror,
661     IEHTMLWindow2_put_onresize,
662     IEHTMLWindow2_get_onresize,
663     IEHTMLWindow2_put_onscroll,
664     IEHTMLWindow2_get_onscroll,
665     IEHTMLWindow2_get_document,
666     IEHTMLWindow2_get_event,
667     IEHTMLWindow2_get__newEnum,
668     IEHTMLWindow2_showModalDialog,
669     IEHTMLWindow2_showHelp,
670     IEHTMLWindow2_get_screen,
671     IEHTMLWindow2_get_Option,
672     IEHTMLWindow2_focus,
673     IEHTMLWindow2_get_closed,
674     IEHTMLWindow2_blur,
675     IEHTMLWindow2_scroll,
676     IEHTMLWindow2_get_clientInformation,
677     IEHTMLWindow2_setInterval,
678     IEHTMLWindow2_clearInterval,
679     IEHTMLWindow2_put_offscreenBuffering,
680     IEHTMLWindow2_get_offscreenBuffering,
681     IEHTMLWindow2_execScript,
682     IEHTMLWindow2_toString,
683     IEHTMLWindow2_scrollBy,
684     IEHTMLWindow2_scrollTo,
685     IEHTMLWindow2_moveTo,
686     IEHTMLWindow2_moveBy,
687     IEHTMLWindow2_resizeTo,
688     IEHTMLWindow2_resizeBy,
689     IEHTMLWindow2_get_external
690 };
691 
692 void IEHTMLWindow_Init(DocHost *doc_host)
693 {
694     doc_host->html_window.IHTMLWindow2_iface.lpVtbl = &IEHTMLWindow2Vtbl;
695     doc_host->html_window.doc_host = doc_host;
696 }
697