2 * Copyright 2005 Jacek Caban
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.
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.
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
29 #include "shdeprecated.h"
34 #include "wine/debug.h"
36 #include "mshtml_private.h"
37 #include "htmlevent.h"
39 WINE_DEFAULT_DEBUG_CHANNEL(mshtml
);
41 #define DOCHOST_DOCCANNAVIGATE 0
44 IEnumUnknown IEnumUnknown_iface
;
48 static inline EnumUnknown
*impl_from_IEnumUnknown(IEnumUnknown
*iface
)
50 return CONTAINING_RECORD(iface
, EnumUnknown
, IEnumUnknown_iface
);
53 static HRESULT WINAPI
EnumUnknown_QueryInterface(IEnumUnknown
*iface
, REFIID riid
, void **ppv
)
55 EnumUnknown
*This
= impl_from_IEnumUnknown(iface
);
57 if(IsEqualGUID(&IID_IUnknown
, riid
)) {
58 TRACE("(%p)->(IID_IUnknown %p)\n", This
, ppv
);
59 *ppv
= &This
->IEnumUnknown_iface
;
60 }else if(IsEqualGUID(&IID_IEnumUnknown
, riid
)) {
61 TRACE("(%p)->(IID_IEnumUnknown %p)\n", This
, ppv
);
62 *ppv
= &This
->IEnumUnknown_iface
;
64 WARN("(%p)->(%s %p)\n", This
, debugstr_guid(riid
), ppv
);
69 IUnknown_AddRef((IUnknown
*)*ppv
);
73 static ULONG WINAPI
EnumUnknown_AddRef(IEnumUnknown
*iface
)
75 EnumUnknown
*This
= impl_from_IEnumUnknown(iface
);
76 LONG ref
= InterlockedIncrement(&This
->ref
);
78 TRACE("(%p) ref=%ld\n", This
, ref
);
83 static ULONG WINAPI
EnumUnknown_Release(IEnumUnknown
*iface
)
85 EnumUnknown
*This
= impl_from_IEnumUnknown(iface
);
86 LONG ref
= InterlockedDecrement(&This
->ref
);
88 TRACE("(%p) ref=%ld\n", This
, ref
);
96 static HRESULT WINAPI
EnumUnknown_Next(IEnumUnknown
*iface
, ULONG celt
, IUnknown
**rgelt
, ULONG
*pceltFetched
)
98 EnumUnknown
*This
= impl_from_IEnumUnknown(iface
);
100 TRACE("(%p)->(%lu %p %p)\n", This
, celt
, rgelt
, pceltFetched
);
102 /* FIXME: It's not clear if we should ever return something here */
108 static HRESULT WINAPI
EnumUnknown_Skip(IEnumUnknown
*iface
, ULONG celt
)
110 EnumUnknown
*This
= impl_from_IEnumUnknown(iface
);
111 FIXME("(%p)->(%lu)\n", This
, celt
);
115 static HRESULT WINAPI
EnumUnknown_Reset(IEnumUnknown
*iface
)
117 EnumUnknown
*This
= impl_from_IEnumUnknown(iface
);
118 FIXME("(%p)\n", This
);
122 static HRESULT WINAPI
EnumUnknown_Clone(IEnumUnknown
*iface
, IEnumUnknown
**ppenum
)
124 EnumUnknown
*This
= impl_from_IEnumUnknown(iface
);
125 FIXME("(%p)->(%p)\n", This
, ppenum
);
129 static const IEnumUnknownVtbl EnumUnknownVtbl
= {
130 EnumUnknown_QueryInterface
,
139 /**********************************************************
140 * IOleObject implementation
143 static inline HTMLDocumentNode
*HTMLDocumentNode_from_IOleObject(IOleObject
*iface
)
145 return CONTAINING_RECORD(iface
, HTMLDocumentNode
, IOleObject_iface
);
148 static HRESULT WINAPI
DocNodeOleObject_QueryInterface(IOleObject
*iface
, REFIID riid
, void **ppv
)
150 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
151 return IHTMLDOMNode_QueryInterface(&This
->node
.IHTMLDOMNode_iface
, riid
, ppv
);
154 static ULONG WINAPI
DocNodeOleObject_AddRef(IOleObject
*iface
)
156 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
157 return IHTMLDOMNode_AddRef(&This
->node
.IHTMLDOMNode_iface
);
160 static ULONG WINAPI
DocNodeOleObject_Release(IOleObject
*iface
)
162 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
163 return IHTMLDOMNode_Release(&This
->node
.IHTMLDOMNode_iface
);
166 static HRESULT WINAPI
DocNodeOleObject_SetClientSite(IOleObject
*iface
, IOleClientSite
*pClientSite
)
168 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
169 return IOleObject_SetClientSite(&This
->doc_obj
->IOleObject_iface
, pClientSite
);
172 static HRESULT WINAPI
DocNodeOleObject_GetClientSite(IOleObject
*iface
, IOleClientSite
**ppClientSite
)
174 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
175 return IOleObject_GetClientSite(&This
->doc_obj
->IOleObject_iface
, ppClientSite
);
178 static HRESULT WINAPI
DocNodeOleObject_SetHostNames(IOleObject
*iface
, LPCOLESTR szContainerApp
, LPCOLESTR szContainerObj
)
180 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
181 FIXME("(%p)->(%s %s)\n", This
, debugstr_w(szContainerApp
), debugstr_w(szContainerObj
));
185 static HRESULT WINAPI
DocNodeOleObject_Close(IOleObject
*iface
, DWORD dwSaveOption
)
187 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
188 return IOleObject_Close(&This
->doc_obj
->IOleObject_iface
, dwSaveOption
);
191 static HRESULT WINAPI
DocNodeOleObject_SetMoniker(IOleObject
*iface
, DWORD dwWhichMoniker
, IMoniker
*pmk
)
193 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
194 FIXME("(%p %ld %p)->()\n", This
, dwWhichMoniker
, pmk
);
198 static HRESULT WINAPI
DocNodeOleObject_GetMoniker(IOleObject
*iface
, DWORD dwAssign
, DWORD dwWhichMoniker
, IMoniker
**ppmk
)
200 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
201 FIXME("(%p)->(%ld %ld %p)\n", This
, dwAssign
, dwWhichMoniker
, ppmk
);
205 static HRESULT WINAPI
DocNodeOleObject_InitFromData(IOleObject
*iface
, IDataObject
*pDataObject
, BOOL fCreation
,
208 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
209 FIXME("(%p)->(%p %x %ld)\n", This
, pDataObject
, fCreation
, dwReserved
);
213 static HRESULT WINAPI
DocNodeOleObject_GetClipboardData(IOleObject
*iface
, DWORD dwReserved
, IDataObject
**ppDataObject
)
215 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
216 FIXME("(%p)->(%ld %p)\n", This
, dwReserved
, ppDataObject
);
220 static HRESULT WINAPI
DocNodeOleObject_DoVerb(IOleObject
*iface
, LONG iVerb
, LPMSG lpmsg
, IOleClientSite
*pActiveSite
,
221 LONG lindex
, HWND hwndParent
, LPCRECT lprcPosRect
)
223 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
224 return IOleObject_DoVerb(&This
->doc_obj
->IOleObject_iface
, iVerb
, lpmsg
, pActiveSite
, lindex
, hwndParent
, lprcPosRect
);
227 static HRESULT WINAPI
DocNodeOleObject_EnumVerbs(IOleObject
*iface
, IEnumOLEVERB
**ppEnumOleVerb
)
229 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
230 FIXME("(%p)->(%p)\n", This
, ppEnumOleVerb
);
234 static HRESULT WINAPI
DocNodeOleObject_Update(IOleObject
*iface
)
236 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
237 FIXME("(%p)\n", This
);
241 static HRESULT WINAPI
DocNodeOleObject_IsUpToDate(IOleObject
*iface
)
243 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
244 FIXME("(%p)\n", This
);
248 static HRESULT WINAPI
DocNodeOleObject_GetUserClassID(IOleObject
*iface
, CLSID
*pClsid
)
250 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
251 return IOleObject_GetUserClassID(&This
->doc_obj
->IOleObject_iface
, pClsid
);
254 static HRESULT WINAPI
DocNodeOleObject_GetUserType(IOleObject
*iface
, DWORD dwFormOfType
, LPOLESTR
*pszUserType
)
256 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
257 FIXME("(%p)->(%ld %p)\n", This
, dwFormOfType
, pszUserType
);
261 static HRESULT WINAPI
DocNodeOleObject_SetExtent(IOleObject
*iface
, DWORD dwDrawAspect
, SIZEL
*psizel
)
263 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
264 return IOleObject_SetExtent(&This
->doc_obj
->IOleObject_iface
, dwDrawAspect
, psizel
);
267 static HRESULT WINAPI
DocNodeOleObject_GetExtent(IOleObject
*iface
, DWORD dwDrawAspect
, SIZEL
*psizel
)
269 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
270 return IOleObject_GetExtent(&This
->doc_obj
->IOleObject_iface
, dwDrawAspect
, psizel
);
273 static HRESULT WINAPI
DocNodeOleObject_Advise(IOleObject
*iface
, IAdviseSink
*pAdvSink
, DWORD
*pdwConnection
)
275 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
276 return IOleObject_Advise(&This
->doc_obj
->IOleObject_iface
, pAdvSink
, pdwConnection
);
279 static HRESULT WINAPI
DocNodeOleObject_Unadvise(IOleObject
*iface
, DWORD dwConnection
)
281 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
282 return IOleObject_Unadvise(&This
->doc_obj
->IOleObject_iface
, dwConnection
);
285 static HRESULT WINAPI
DocNodeOleObject_EnumAdvise(IOleObject
*iface
, IEnumSTATDATA
**ppenumAdvise
)
287 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
288 return IOleObject_EnumAdvise(&This
->doc_obj
->IOleObject_iface
, ppenumAdvise
);
291 static HRESULT WINAPI
DocNodeOleObject_GetMiscStatus(IOleObject
*iface
, DWORD dwAspect
, DWORD
*pdwStatus
)
293 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
294 FIXME("(%p)->(%ld %p)\n", This
, dwAspect
, pdwStatus
);
298 static HRESULT WINAPI
DocNodeOleObject_SetColorScheme(IOleObject
*iface
, LOGPALETTE
*pLogpal
)
300 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleObject(iface
);
301 FIXME("(%p)->(%p)\n", This
, pLogpal
);
305 static const IOleObjectVtbl DocNodeOleObjectVtbl
= {
306 DocNodeOleObject_QueryInterface
,
307 DocNodeOleObject_AddRef
,
308 DocNodeOleObject_Release
,
309 DocNodeOleObject_SetClientSite
,
310 DocNodeOleObject_GetClientSite
,
311 DocNodeOleObject_SetHostNames
,
312 DocNodeOleObject_Close
,
313 DocNodeOleObject_SetMoniker
,
314 DocNodeOleObject_GetMoniker
,
315 DocNodeOleObject_InitFromData
,
316 DocNodeOleObject_GetClipboardData
,
317 DocNodeOleObject_DoVerb
,
318 DocNodeOleObject_EnumVerbs
,
319 DocNodeOleObject_Update
,
320 DocNodeOleObject_IsUpToDate
,
321 DocNodeOleObject_GetUserClassID
,
322 DocNodeOleObject_GetUserType
,
323 DocNodeOleObject_SetExtent
,
324 DocNodeOleObject_GetExtent
,
325 DocNodeOleObject_Advise
,
326 DocNodeOleObject_Unadvise
,
327 DocNodeOleObject_EnumAdvise
,
328 DocNodeOleObject_GetMiscStatus
,
329 DocNodeOleObject_SetColorScheme
332 static inline HTMLDocumentObj
*HTMLDocumentObj_from_IOleObject(IOleObject
*iface
)
334 return CONTAINING_RECORD(iface
, HTMLDocumentObj
, IOleObject_iface
);
337 static HRESULT WINAPI
DocObjOleObject_QueryInterface(IOleObject
*iface
, REFIID riid
, void **ppv
)
339 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
340 return IUnknown_QueryInterface(This
->outer_unk
, riid
, ppv
);
343 static ULONG WINAPI
DocObjOleObject_AddRef(IOleObject
*iface
)
345 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
346 return IUnknown_AddRef(This
->outer_unk
);
349 static ULONG WINAPI
DocObjOleObject_Release(IOleObject
*iface
)
351 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
352 return IUnknown_Release(This
->outer_unk
);
355 static void update_hostinfo(HTMLDocumentObj
*This
, DOCHOSTUIINFO
*hostinfo
)
357 nsIScrollable
*scrollable
;
360 if(!This
->nscontainer
)
363 nsres
= nsIWebBrowser_QueryInterface(This
->nscontainer
->webbrowser
, &IID_nsIScrollable
, (void**)&scrollable
);
364 if(NS_SUCCEEDED(nsres
)) {
365 nsres
= nsIScrollable_SetDefaultScrollbarPreferences(scrollable
, ScrollOrientation_Y
,
366 (hostinfo
->dwFlags
& DOCHOSTUIFLAG_SCROLL_NO
) ? Scrollbar_Never
: Scrollbar_Auto
);
368 ERR("Could not set default Y scrollbar prefs: %08lx\n", nsres
);
370 nsres
= nsIScrollable_SetDefaultScrollbarPreferences(scrollable
, ScrollOrientation_X
,
371 hostinfo
->dwFlags
& DOCHOSTUIFLAG_SCROLL_NO
? Scrollbar_Never
: Scrollbar_Auto
);
373 ERR("Could not set default X scrollbar prefs: %08lx\n", nsres
);
375 nsIScrollable_Release(scrollable
);
377 ERR("Could not get nsIScrollable: %08lx\n", nsres
);
381 /* Calls undocumented 84 cmd of CGID_ShellDocView */
382 void call_docview_84(HTMLDocumentObj
*doc
)
384 IOleCommandTarget
*olecmd
;
391 hres
= IOleClientSite_QueryInterface(doc
->client
, &IID_IOleCommandTarget
, (void**)&olecmd
);
396 hres
= IOleCommandTarget_Exec(olecmd
, &CGID_ShellDocView
, 84, 0, NULL
, &var
);
397 IOleCommandTarget_Release(olecmd
);
398 if(SUCCEEDED(hres
) && V_VT(&var
) != VT_NULL
)
399 FIXME("handle result\n");
402 void set_document_navigation(HTMLDocumentObj
*doc
, BOOL doc_can_navigate
)
406 if(!doc
->client_cmdtrg
)
409 if(doc_can_navigate
) {
410 V_VT(&var
) = VT_UNKNOWN
;
411 V_UNKNOWN(&var
) = (IUnknown
*)&doc
->window
->base
.IHTMLWindow2_iface
;
414 IOleCommandTarget_Exec(doc
->client_cmdtrg
, &CGID_DocHostCmdPriv
, DOCHOST_DOCCANNAVIGATE
, 0,
415 doc_can_navigate
? &var
: NULL
, NULL
);
418 static void load_settings(HTMLDocumentObj
*doc
)
424 res
= RegOpenKeyW(HKEY_CURRENT_USER
, L
"SOFTWARE\\Microsoft\\Internet Explorer", &settings_key
);
425 if(res
!= ERROR_SUCCESS
)
429 res
= RegGetValueW(settings_key
, L
"Zoom", L
"ZoomFactor", RRF_RT_REG_DWORD
, NULL
, &val
, &size
);
430 RegCloseKey(settings_key
);
431 if(res
== ERROR_SUCCESS
)
432 set_viewer_zoom(doc
->nscontainer
, (float)val
/100000);
435 static HRESULT WINAPI
DocObjOleObject_SetClientSite(IOleObject
*iface
, IOleClientSite
*pClientSite
)
437 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
438 IBrowserService
*browser_service
;
439 IOleCommandTarget
*cmdtrg
= NULL
;
440 IOleWindow
*ole_window
;
446 TRACE("(%p)->(%p)\n", This
, pClientSite
);
448 if(pClientSite
== This
->client
)
452 This
->nscontainer
->usermode
= UNKNOWN_USERMODE
;
454 unlink_ref(&This
->client
);
455 unlink_ref(&This
->client_cmdtrg
);
456 if(!This
->custom_hostui
)
457 unlink_ref(&This
->hostui
);
458 unlink_ref(&This
->doc_object_service
);
459 unlink_ref(&This
->webbrowser
);
460 unlink_ref(&This
->browser_service
);
461 unlink_ref(&This
->travel_log
);
463 memset(&This
->hostinfo
, 0, sizeof(DOCHOSTUIINFO
));
468 IOleClientSite_AddRef(pClientSite
);
469 This
->client
= pClientSite
;
471 hostui_setup
= This
->hostui_setup
;
474 IDocHostUIHandler
*uihandler
;
476 This
->custom_hostui
= FALSE
;
478 hres
= IOleClientSite_QueryInterface(pClientSite
, &IID_IDocHostUIHandler
, (void**)&uihandler
);
480 This
->hostui
= uihandler
;
484 DOCHOSTUIINFO hostinfo
;
485 LPOLESTR key_path
= NULL
, override_key_path
= NULL
;
486 IDocHostUIHandler2
*uihandler2
;
488 memset(&hostinfo
, 0, sizeof(DOCHOSTUIINFO
));
489 hostinfo
.cbSize
= sizeof(DOCHOSTUIINFO
);
490 hres
= IDocHostUIHandler_GetHostInfo(This
->hostui
, &hostinfo
);
491 if(SUCCEEDED(hres
)) {
492 TRACE("hostinfo = {%lu %08lx %08lx %s %s}\n",
493 hostinfo
.cbSize
, hostinfo
.dwFlags
, hostinfo
.dwDoubleClick
,
494 debugstr_w(hostinfo
.pchHostCss
), debugstr_w(hostinfo
.pchHostNS
));
495 update_hostinfo(This
, &hostinfo
);
496 This
->hostinfo
= hostinfo
;
500 hres
= IDocHostUIHandler_GetOptionKeyPath(This
->hostui
, &key_path
, 0);
501 if(hres
== S_OK
&& key_path
) {
503 /* FIXME: use key_path */
504 FIXME("key_path = %s\n", debugstr_w(key_path
));
506 CoTaskMemFree(key_path
);
509 hres
= IDocHostUIHandler_QueryInterface(This
->hostui
, &IID_IDocHostUIHandler2
,
510 (void**)&uihandler2
);
511 if(SUCCEEDED(hres
)) {
512 hres
= IDocHostUIHandler2_GetOverrideKeyPath(uihandler2
, &override_key_path
, 0);
513 if(hres
== S_OK
&& override_key_path
) {
514 if(override_key_path
[0]) {
515 /*FIXME: use override_key_path */
516 FIXME("override_key_path = %s\n", debugstr_w(override_key_path
));
518 CoTaskMemFree(override_key_path
);
520 IDocHostUIHandler2_Release(uihandler2
);
523 This
->hostui_setup
= TRUE
;
529 /* Native calls here GetWindow. What is it for?
530 * We don't have anything to do with it here (yet). */
531 hres
= IOleClientSite_QueryInterface(pClientSite
, &IID_IOleWindow
, (void**)&ole_window
);
532 if(SUCCEEDED(hres
)) {
533 IOleWindow_GetWindow(ole_window
, &hwnd
);
534 IOleWindow_Release(ole_window
);
537 hres
= do_query_service((IUnknown
*)pClientSite
, &IID_IShellBrowser
,
538 &IID_IBrowserService
, (void**)&browser_service
);
539 if(SUCCEEDED(hres
)) {
540 ITravelLog
*travel_log
;
542 This
->browser_service
= (IUnknown
*)browser_service
;
544 hres
= IBrowserService_GetTravelLog(browser_service
, &travel_log
);
546 This
->travel_log
= travel_log
;
548 browser_service
= NULL
;
551 hres
= IOleClientSite_QueryInterface(pClientSite
, &IID_IOleCommandTarget
, (void**)&cmdtrg
);
552 if(SUCCEEDED(hres
)) {
554 OLECMD cmd
= {OLECMDID_SETPROGRESSTEXT
, 0};
556 This
->client_cmdtrg
= cmdtrg
;
559 IDocObjectService
*doc_object_service
;
562 set_document_navigation(This
, TRUE
);
564 if(browser_service
) {
565 hres
= IBrowserService_QueryInterface(browser_service
,
566 &IID_IDocObjectService
, (void**)&doc_object_service
);
567 if(SUCCEEDED(hres
)) {
568 This
->doc_object_service
= doc_object_service
;
571 * Some embedding routines, esp. in regards to use of IDocObjectService, differ if
572 * embedder supports IWebBrowserApp.
574 hres
= do_query_service((IUnknown
*)pClientSite
, &IID_IWebBrowserApp
, &IID_IWebBrowser2
, (void**)&wb
);
576 This
->webbrowser
= (IUnknown
*)wb
;
581 call_docview_84(This
);
583 IOleCommandTarget_QueryStatus(cmdtrg
, NULL
, 1, &cmd
, NULL
);
587 IOleCommandTarget_Exec(cmdtrg
, NULL
, OLECMDID_SETPROGRESSMAX
,
588 OLECMDEXECOPT_DONTPROMPTUSER
, &var
, NULL
);
589 IOleCommandTarget_Exec(cmdtrg
, NULL
, OLECMDID_SETPROGRESSPOS
,
590 OLECMDEXECOPT_DONTPROMPTUSER
, &var
, NULL
);
593 if(This
->nscontainer
->usermode
== UNKNOWN_USERMODE
)
594 IOleControl_OnAmbientPropertyChange(&This
->IOleControl_iface
, DISPID_AMBIENT_USERMODE
);
596 IOleControl_OnAmbientPropertyChange(&This
->IOleControl_iface
,
597 DISPID_AMBIENT_OFFLINEIFNOTCONNECTED
);
599 hres
= get_client_disp_property(This
->client
, DISPID_AMBIENT_SILENT
, &silent
);
600 if(SUCCEEDED(hres
)) {
601 if(V_VT(&silent
) != VT_BOOL
)
602 WARN("silent = %s\n", debugstr_variant(&silent
));
603 else if(V_BOOL(&silent
))
604 FIXME("silent == true\n");
607 IOleControl_OnAmbientPropertyChange(&This
->IOleControl_iface
, DISPID_AMBIENT_USERAGENT
);
608 IOleControl_OnAmbientPropertyChange(&This
->IOleControl_iface
, DISPID_AMBIENT_PALETTE
);
613 static HRESULT WINAPI
DocObjOleObject_GetClientSite(IOleObject
*iface
, IOleClientSite
**ppClientSite
)
615 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
617 TRACE("(%p)->(%p)\n", This
, ppClientSite
);
623 IOleClientSite_AddRef(This
->client
);
624 *ppClientSite
= This
->client
;
629 static HRESULT WINAPI
DocObjOleObject_SetHostNames(IOleObject
*iface
, LPCOLESTR szContainerApp
, LPCOLESTR szContainerObj
)
631 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
632 FIXME("(%p)->(%s %s)\n", This
, debugstr_w(szContainerApp
), debugstr_w(szContainerObj
));
636 static HRESULT WINAPI
DocObjOleObject_Close(IOleObject
*iface
, DWORD dwSaveOption
)
638 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
640 TRACE("(%p)->(%08lx)\n", This
, dwSaveOption
);
642 if(dwSaveOption
== OLECLOSE_PROMPTSAVE
)
643 FIXME("OLECLOSE_PROMPTSAVE not implemented\n");
645 if(This
->in_place_active
)
646 IOleInPlaceObjectWindowless_InPlaceDeactivate(&This
->IOleInPlaceObjectWindowless_iface
);
648 HTMLDocument_LockContainer(This
, FALSE
);
650 if(This
->advise_holder
)
651 IOleAdviseHolder_SendOnClose(This
->advise_holder
);
656 static HRESULT WINAPI
DocObjOleObject_SetMoniker(IOleObject
*iface
, DWORD dwWhichMoniker
, IMoniker
*pmk
)
658 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
659 FIXME("(%p %ld %p)->()\n", This
, dwWhichMoniker
, pmk
);
663 static HRESULT WINAPI
DocObjOleObject_GetMoniker(IOleObject
*iface
, DWORD dwAssign
, DWORD dwWhichMoniker
, IMoniker
**ppmk
)
665 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
666 FIXME("(%p)->(%ld %ld %p)\n", This
, dwAssign
, dwWhichMoniker
, ppmk
);
670 static HRESULT WINAPI
DocObjOleObject_InitFromData(IOleObject
*iface
, IDataObject
*pDataObject
, BOOL fCreation
,
673 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
674 FIXME("(%p)->(%p %x %ld)\n", This
, pDataObject
, fCreation
, dwReserved
);
678 static HRESULT WINAPI
DocObjOleObject_GetClipboardData(IOleObject
*iface
, DWORD dwReserved
, IDataObject
**ppDataObject
)
680 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
681 FIXME("(%p)->(%ld %p)\n", This
, dwReserved
, ppDataObject
);
685 static HRESULT WINAPI
DocObjOleObject_DoVerb(IOleObject
*iface
, LONG iVerb
, LPMSG lpmsg
, IOleClientSite
*pActiveSite
,
686 LONG lindex
, HWND hwndParent
, LPCRECT lprcPosRect
)
688 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
689 IOleDocumentSite
*pDocSite
;
692 TRACE("(%p)->(%ld %p %p %ld %p %p)\n", This
, iVerb
, lpmsg
, pActiveSite
, lindex
, hwndParent
, lprcPosRect
);
694 if(iVerb
!= OLEIVERB_SHOW
&& iVerb
!= OLEIVERB_UIACTIVATE
&& iVerb
!= OLEIVERB_INPLACEACTIVATE
) {
695 FIXME("iVerb = %ld not supported\n", iVerb
);
700 pActiveSite
= This
->client
;
702 hres
= IOleClientSite_QueryInterface(pActiveSite
, &IID_IOleDocumentSite
, (void**)&pDocSite
);
703 if(SUCCEEDED(hres
)) {
704 HTMLDocument_LockContainer(This
, TRUE
);
706 /* FIXME: Create new IOleDocumentView. See CreateView for more info. */
707 hres
= IOleDocumentSite_ActivateMe(pDocSite
, &This
->IOleDocumentView_iface
);
708 IOleDocumentSite_Release(pDocSite
);
710 hres
= IOleDocumentView_UIActivate(&This
->IOleDocumentView_iface
, TRUE
);
711 if(SUCCEEDED(hres
)) {
713 RECT rect
; /* We need to pass rect as not const pointer */
715 IOleDocumentView_SetRect(&This
->IOleDocumentView_iface
, &rect
);
717 IOleDocumentView_Show(&This
->IOleDocumentView_iface
, TRUE
);
724 static HRESULT WINAPI
DocObjOleObject_EnumVerbs(IOleObject
*iface
, IEnumOLEVERB
**ppEnumOleVerb
)
726 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
727 FIXME("(%p)->(%p)\n", This
, ppEnumOleVerb
);
731 static HRESULT WINAPI
DocObjOleObject_Update(IOleObject
*iface
)
733 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
734 FIXME("(%p)\n", This
);
738 static HRESULT WINAPI
DocObjOleObject_IsUpToDate(IOleObject
*iface
)
740 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
741 FIXME("(%p)\n", This
);
745 static HRESULT WINAPI
DocObjOleObject_GetUserClassID(IOleObject
*iface
, CLSID
*pClsid
)
747 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
749 TRACE("(%p)->(%p)\n", This
, pClsid
);
754 *pClsid
= CLSID_HTMLDocument
;
758 static HRESULT WINAPI
DocObjOleObject_GetUserType(IOleObject
*iface
, DWORD dwFormOfType
, LPOLESTR
*pszUserType
)
760 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
761 FIXME("(%p)->(%ld %p)\n", This
, dwFormOfType
, pszUserType
);
765 static HRESULT WINAPI
DocObjOleObject_SetExtent(IOleObject
*iface
, DWORD dwDrawAspect
, SIZEL
*psizel
)
767 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
769 TRACE("(%p)->(%ld %p)\n", This
, dwDrawAspect
, psizel
);
771 if (dwDrawAspect
!= DVASPECT_CONTENT
)
774 This
->extent
= *psizel
;
778 static HRESULT WINAPI
DocObjOleObject_GetExtent(IOleObject
*iface
, DWORD dwDrawAspect
, SIZEL
*psizel
)
780 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
782 TRACE("(%p)->(%ld %p)\n", This
, dwDrawAspect
, psizel
);
784 if (dwDrawAspect
!= DVASPECT_CONTENT
)
787 *psizel
= This
->extent
;
791 static HRESULT WINAPI
DocObjOleObject_Advise(IOleObject
*iface
, IAdviseSink
*pAdvSink
, DWORD
*pdwConnection
)
793 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
794 TRACE("(%p)->(%p %p)\n", This
, pAdvSink
, pdwConnection
);
804 if(!This
->advise_holder
) {
805 CreateOleAdviseHolder(&This
->advise_holder
);
806 if(!This
->advise_holder
)
807 return E_OUTOFMEMORY
;
810 return IOleAdviseHolder_Advise(This
->advise_holder
, pAdvSink
, pdwConnection
);
813 static HRESULT WINAPI
DocObjOleObject_Unadvise(IOleObject
*iface
, DWORD dwConnection
)
815 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
816 TRACE("(%p)->(%ld)\n", This
, dwConnection
);
818 if(!This
->advise_holder
)
819 return OLE_E_NOCONNECTION
;
821 return IOleAdviseHolder_Unadvise(This
->advise_holder
, dwConnection
);
824 static HRESULT WINAPI
DocObjOleObject_EnumAdvise(IOleObject
*iface
, IEnumSTATDATA
**ppenumAdvise
)
826 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
828 if(!This
->advise_holder
) {
829 *ppenumAdvise
= NULL
;
833 return IOleAdviseHolder_EnumAdvise(This
->advise_holder
, ppenumAdvise
);
836 static HRESULT WINAPI
DocObjOleObject_GetMiscStatus(IOleObject
*iface
, DWORD dwAspect
, DWORD
*pdwStatus
)
838 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
839 FIXME("(%p)->(%ld %p)\n", This
, dwAspect
, pdwStatus
);
843 static HRESULT WINAPI
DocObjOleObject_SetColorScheme(IOleObject
*iface
, LOGPALETTE
*pLogpal
)
845 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleObject(iface
);
846 FIXME("(%p)->(%p)\n", This
, pLogpal
);
850 static const IOleObjectVtbl DocObjOleObjectVtbl
= {
851 DocObjOleObject_QueryInterface
,
852 DocObjOleObject_AddRef
,
853 DocObjOleObject_Release
,
854 DocObjOleObject_SetClientSite
,
855 DocObjOleObject_GetClientSite
,
856 DocObjOleObject_SetHostNames
,
857 DocObjOleObject_Close
,
858 DocObjOleObject_SetMoniker
,
859 DocObjOleObject_GetMoniker
,
860 DocObjOleObject_InitFromData
,
861 DocObjOleObject_GetClipboardData
,
862 DocObjOleObject_DoVerb
,
863 DocObjOleObject_EnumVerbs
,
864 DocObjOleObject_Update
,
865 DocObjOleObject_IsUpToDate
,
866 DocObjOleObject_GetUserClassID
,
867 DocObjOleObject_GetUserType
,
868 DocObjOleObject_SetExtent
,
869 DocObjOleObject_GetExtent
,
870 DocObjOleObject_Advise
,
871 DocObjOleObject_Unadvise
,
872 DocObjOleObject_EnumAdvise
,
873 DocObjOleObject_GetMiscStatus
,
874 DocObjOleObject_SetColorScheme
877 /**********************************************************
878 * IOleDocument implementation
881 static inline HTMLDocumentNode
*HTMLDocumentNode_from_IOleDocument(IOleDocument
*iface
)
883 return CONTAINING_RECORD(iface
, HTMLDocumentNode
, IOleDocument_iface
);
886 static HRESULT WINAPI
DocNodeOleDocument_QueryInterface(IOleDocument
*iface
, REFIID riid
, void **ppv
)
888 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleDocument(iface
);
889 return IHTMLDOMNode_QueryInterface(&This
->node
.IHTMLDOMNode_iface
, riid
, ppv
);
892 static ULONG WINAPI
DocNodeOleDocument_AddRef(IOleDocument
*iface
)
894 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleDocument(iface
);
895 return IHTMLDOMNode_AddRef(&This
->node
.IHTMLDOMNode_iface
);
898 static ULONG WINAPI
DocNodeOleDocument_Release(IOleDocument
*iface
)
900 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleDocument(iface
);
901 return IHTMLDOMNode_Release(&This
->node
.IHTMLDOMNode_iface
);
904 static HRESULT WINAPI
DocNodeOleDocument_CreateView(IOleDocument
*iface
, IOleInPlaceSite
*pIPSite
, IStream
*pstm
,
905 DWORD dwReserved
, IOleDocumentView
**ppView
)
907 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleDocument(iface
);
908 return IOleDocument_CreateView(&This
->doc_obj
->IOleDocument_iface
, pIPSite
, pstm
, dwReserved
, ppView
);
911 static HRESULT WINAPI
DocNodeOleDocument_GetDocMiscStatus(IOleDocument
*iface
, DWORD
*pdwStatus
)
913 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleDocument(iface
);
914 FIXME("(%p)->(%p)\n", This
, pdwStatus
);
918 static HRESULT WINAPI
DocNodeOleDocument_EnumViews(IOleDocument
*iface
, IEnumOleDocumentViews
**ppEnum
,
919 IOleDocumentView
**ppView
)
921 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleDocument(iface
);
922 FIXME("(%p)->(%p %p)\n", This
, ppEnum
, ppView
);
926 static const IOleDocumentVtbl DocNodeOleDocumentVtbl
= {
927 DocNodeOleDocument_QueryInterface
,
928 DocNodeOleDocument_AddRef
,
929 DocNodeOleDocument_Release
,
930 DocNodeOleDocument_CreateView
,
931 DocNodeOleDocument_GetDocMiscStatus
,
932 DocNodeOleDocument_EnumViews
935 static inline HTMLDocumentObj
*HTMLDocumentObj_from_IOleDocument(IOleDocument
*iface
)
937 return CONTAINING_RECORD(iface
, HTMLDocumentObj
, IOleDocument_iface
);
940 static HRESULT WINAPI
DocObjOleDocument_QueryInterface(IOleDocument
*iface
, REFIID riid
, void **ppv
)
942 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleDocument(iface
);
943 return IUnknown_QueryInterface(This
->outer_unk
, riid
, ppv
);
946 static ULONG WINAPI
DocObjOleDocument_AddRef(IOleDocument
*iface
)
948 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleDocument(iface
);
949 return IUnknown_AddRef(This
->outer_unk
);
952 static ULONG WINAPI
DocObjOleDocument_Release(IOleDocument
*iface
)
954 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleDocument(iface
);
955 return IUnknown_Release(This
->outer_unk
);
958 static HRESULT WINAPI
DocObjOleDocument_CreateView(IOleDocument
*iface
, IOleInPlaceSite
*pIPSite
, IStream
*pstm
,
959 DWORD dwReserved
, IOleDocumentView
**ppView
)
961 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleDocument(iface
);
964 TRACE("(%p)->(%p %p %ld %p)\n", This
, pIPSite
, pstm
, dwReserved
, ppView
);
970 * Windows implementation creates new IOleDocumentView when function is called for the
971 * first time and returns E_FAIL when it is called for the second time, but it doesn't matter
972 * if the application uses returned interfaces, passed to ActivateMe or returned by
973 * QueryInterface, so there is no reason to create new interface. This needs more testing.
977 hres
= IOleDocumentView_SetInPlaceSite(&This
->IOleDocumentView_iface
, pIPSite
);
983 FIXME("pstm is not supported\n");
985 IOleDocumentView_AddRef(&This
->IOleDocumentView_iface
);
986 *ppView
= &This
->IOleDocumentView_iface
;
990 static HRESULT WINAPI
DocObjOleDocument_GetDocMiscStatus(IOleDocument
*iface
, DWORD
*pdwStatus
)
992 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleDocument(iface
);
993 FIXME("(%p)->(%p)\n", This
, pdwStatus
);
997 static HRESULT WINAPI
DocObjOleDocument_EnumViews(IOleDocument
*iface
, IEnumOleDocumentViews
**ppEnum
,
998 IOleDocumentView
**ppView
)
1000 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleDocument(iface
);
1001 FIXME("(%p)->(%p %p)\n", This
, ppEnum
, ppView
);
1005 static const IOleDocumentVtbl DocObjOleDocumentVtbl
= {
1006 DocObjOleDocument_QueryInterface
,
1007 DocObjOleDocument_AddRef
,
1008 DocObjOleDocument_Release
,
1009 DocObjOleDocument_CreateView
,
1010 DocObjOleDocument_GetDocMiscStatus
,
1011 DocObjOleDocument_EnumViews
1014 /**********************************************************
1015 * IOleControl implementation
1018 static inline HTMLDocumentNode
*HTMLDocumentNode_from_IOleControl(IOleControl
*iface
)
1020 return CONTAINING_RECORD(iface
, HTMLDocumentNode
, IOleControl_iface
);
1023 static HRESULT WINAPI
DocNodeOleControl_QueryInterface(IOleControl
*iface
, REFIID riid
, void **ppv
)
1025 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleControl(iface
);
1026 return IHTMLDOMNode_QueryInterface(&This
->node
.IHTMLDOMNode_iface
, riid
, ppv
);
1029 static ULONG WINAPI
DocNodeOleControl_AddRef(IOleControl
*iface
)
1031 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleControl(iface
);
1032 return IHTMLDOMNode_AddRef(&This
->node
.IHTMLDOMNode_iface
);
1035 static ULONG WINAPI
DocNodeOleControl_Release(IOleControl
*iface
)
1037 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleControl(iface
);
1038 return IHTMLDOMNode_Release(&This
->node
.IHTMLDOMNode_iface
);
1041 static HRESULT WINAPI
DocNodeOleControl_GetControlInfo(IOleControl
*iface
, CONTROLINFO
*pCI
)
1043 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleControl(iface
);
1044 FIXME("(%p)->(%p)\n", This
, pCI
);
1048 static HRESULT WINAPI
DocNodeOleControl_OnMnemonic(IOleControl
*iface
, MSG
*pMsg
)
1050 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleControl(iface
);
1051 FIXME("(%p)->(%p)\n", This
, pMsg
);
1055 static HRESULT WINAPI
DocNodeOleControl_OnAmbientPropertyChange(IOleControl
*iface
, DISPID dispID
)
1057 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleControl(iface
);
1058 return IOleControl_OnAmbientPropertyChange(&This
->doc_obj
->IOleControl_iface
, dispID
);
1061 static HRESULT WINAPI
DocNodeOleControl_FreezeEvents(IOleControl
*iface
, BOOL bFreeze
)
1063 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleControl(iface
);
1064 FIXME("(%p)->(%x)\n", This
, bFreeze
);
1068 static const IOleControlVtbl DocNodeOleControlVtbl
= {
1069 DocNodeOleControl_QueryInterface
,
1070 DocNodeOleControl_AddRef
,
1071 DocNodeOleControl_Release
,
1072 DocNodeOleControl_GetControlInfo
,
1073 DocNodeOleControl_OnMnemonic
,
1074 DocNodeOleControl_OnAmbientPropertyChange
,
1075 DocNodeOleControl_FreezeEvents
1078 static inline HTMLDocumentObj
*HTMLDocumentObj_from_IOleControl(IOleControl
*iface
)
1080 return CONTAINING_RECORD(iface
, HTMLDocumentObj
, IOleControl_iface
);
1083 static HRESULT WINAPI
DocObjOleControl_QueryInterface(IOleControl
*iface
, REFIID riid
, void **ppv
)
1085 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleControl(iface
);
1086 return IUnknown_QueryInterface(This
->outer_unk
, riid
, ppv
);
1089 static ULONG WINAPI
DocObjOleControl_AddRef(IOleControl
*iface
)
1091 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleControl(iface
);
1092 return IUnknown_AddRef(This
->outer_unk
);
1095 static ULONG WINAPI
DocObjOleControl_Release(IOleControl
*iface
)
1097 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleControl(iface
);
1098 return IUnknown_Release(This
->outer_unk
);
1101 static HRESULT WINAPI
DocObjOleControl_GetControlInfo(IOleControl
*iface
, CONTROLINFO
*pCI
)
1103 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleControl(iface
);
1104 FIXME("(%p)->(%p)\n", This
, pCI
);
1108 static HRESULT WINAPI
DocObjOleControl_OnMnemonic(IOleControl
*iface
, MSG
*pMsg
)
1110 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleControl(iface
);
1111 FIXME("(%p)->(%p)\n", This
, pMsg
);
1115 HRESULT
get_client_disp_property(IOleClientSite
*client
, DISPID dispid
, VARIANT
*res
)
1117 IDispatch
*disp
= NULL
;
1118 DISPPARAMS dispparams
= {NULL
, 0};
1122 hres
= IOleClientSite_QueryInterface(client
, &IID_IDispatch
, (void**)&disp
);
1124 TRACE("Could not get IDispatch\n");
1130 hres
= IDispatch_Invoke(disp
, dispid
, &IID_NULL
, LOCALE_SYSTEM_DEFAULT
,
1131 DISPATCH_PROPERTYGET
, &dispparams
, res
, NULL
, &err
);
1133 IDispatch_Release(disp
);
1138 static HRESULT
on_change_dlcontrol(HTMLDocumentObj
*This
)
1143 hres
= get_client_disp_property(This
->client
, DISPID_AMBIENT_DLCONTROL
, &res
);
1145 FIXME("unsupported dlcontrol %08lx\n", V_I4(&res
));
1150 static HRESULT WINAPI
DocObjOleControl_OnAmbientPropertyChange(IOleControl
*iface
, DISPID dispID
)
1152 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleControl(iface
);
1153 IOleClientSite
*client
;
1157 client
= This
->client
;
1159 TRACE("client = NULL\n");
1164 case DISPID_AMBIENT_USERMODE
:
1165 TRACE("(%p)->(DISPID_AMBIENT_USERMODE)\n", This
);
1166 hres
= get_client_disp_property(client
, DISPID_AMBIENT_USERMODE
, &res
);
1170 if(V_VT(&res
) == VT_BOOL
) {
1172 This
->nscontainer
->usermode
= BROWSEMODE
;
1174 FIXME("edit mode is not supported\n");
1175 This
->nscontainer
->usermode
= EDITMODE
;
1178 FIXME("usermode=%s\n", debugstr_variant(&res
));
1181 case DISPID_AMBIENT_DLCONTROL
:
1182 TRACE("(%p)->(DISPID_AMBIENT_DLCONTROL)\n", This
);
1183 return on_change_dlcontrol(This
);
1184 case DISPID_AMBIENT_OFFLINEIFNOTCONNECTED
:
1185 TRACE("(%p)->(DISPID_AMBIENT_OFFLINEIFNOTCONNECTED)\n", This
);
1186 on_change_dlcontrol(This
);
1187 hres
= get_client_disp_property(client
, DISPID_AMBIENT_OFFLINEIFNOTCONNECTED
, &res
);
1191 if(V_VT(&res
) == VT_BOOL
) {
1193 FIXME("offline connection is not supported\n");
1197 FIXME("offlineconnected=%s\n", debugstr_variant(&res
));
1200 case DISPID_AMBIENT_SILENT
:
1201 TRACE("(%p)->(DISPID_AMBIENT_SILENT)\n", This
);
1202 on_change_dlcontrol(This
);
1203 hres
= get_client_disp_property(client
, DISPID_AMBIENT_SILENT
, &res
);
1207 if(V_VT(&res
) == VT_BOOL
) {
1209 FIXME("silent mode is not supported\n");
1212 FIXME("silent=%s\n", debugstr_variant(&res
));
1215 case DISPID_AMBIENT_USERAGENT
:
1216 TRACE("(%p)->(DISPID_AMBIENT_USERAGENT)\n", This
);
1217 hres
= get_client_disp_property(client
, DISPID_AMBIENT_USERAGENT
, &res
);
1221 FIXME("not supported AMBIENT_USERAGENT\n");
1223 case DISPID_AMBIENT_PALETTE
:
1224 TRACE("(%p)->(DISPID_AMBIENT_PALETTE)\n", This
);
1225 hres
= get_client_disp_property(client
, DISPID_AMBIENT_PALETTE
, &res
);
1229 FIXME("not supported AMBIENT_PALETTE\n");
1233 FIXME("(%p) unsupported dispID=%ld\n", This
, dispID
);
1237 static HRESULT WINAPI
DocObjOleControl_FreezeEvents(IOleControl
*iface
, BOOL bFreeze
)
1239 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleControl(iface
);
1240 FIXME("(%p)->(%x)\n", This
, bFreeze
);
1244 static const IOleControlVtbl DocObjOleControlVtbl
= {
1245 DocObjOleControl_QueryInterface
,
1246 DocObjOleControl_AddRef
,
1247 DocObjOleControl_Release
,
1248 DocObjOleControl_GetControlInfo
,
1249 DocObjOleControl_OnMnemonic
,
1250 DocObjOleControl_OnAmbientPropertyChange
,
1251 DocObjOleControl_FreezeEvents
1254 /**********************************************************
1255 * IOleInPlaceActiveObject implementation
1258 static inline HTMLDocumentNode
*HTMLDocumentNode_from_IOleInPlaceActiveObject(IOleInPlaceActiveObject
*iface
)
1260 return CONTAINING_RECORD(iface
, HTMLDocumentNode
, IOleInPlaceActiveObject_iface
);
1263 static HRESULT WINAPI
DocNodeOleInPlaceActiveObject_QueryInterface(IOleInPlaceActiveObject
*iface
, REFIID riid
, void **ppv
)
1265 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceActiveObject(iface
);
1266 return IHTMLDOMNode_QueryInterface(&This
->node
.IHTMLDOMNode_iface
, riid
, ppv
);
1269 static ULONG WINAPI
DocNodeOleInPlaceActiveObject_AddRef(IOleInPlaceActiveObject
*iface
)
1271 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceActiveObject(iface
);
1272 return IHTMLDOMNode_AddRef(&This
->node
.IHTMLDOMNode_iface
);
1275 static ULONG WINAPI
DocNodeOleInPlaceActiveObject_Release(IOleInPlaceActiveObject
*iface
)
1277 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceActiveObject(iface
);
1278 return IHTMLDOMNode_Release(&This
->node
.IHTMLDOMNode_iface
);
1281 static HRESULT WINAPI
DocNodeOleInPlaceActiveObject_GetWindow(IOleInPlaceActiveObject
*iface
, HWND
*phwnd
)
1283 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceActiveObject(iface
);
1284 return IOleInPlaceActiveObject_GetWindow(&This
->doc_obj
->IOleInPlaceActiveObject_iface
, phwnd
);
1287 static HRESULT WINAPI
DocNodeOleInPlaceActiveObject_ContextSensitiveHelp(IOleInPlaceActiveObject
*iface
, BOOL fEnterMode
)
1289 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceActiveObject(iface
);
1290 FIXME("(%p)->(%x)\n", This
, fEnterMode
);
1294 static HRESULT WINAPI
DocNodeOleInPlaceActiveObject_TranslateAccelerator(IOleInPlaceActiveObject
*iface
, LPMSG lpmsg
)
1296 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceActiveObject(iface
);
1297 FIXME("(%p)->(%p)\n", This
, lpmsg
);
1301 static HRESULT WINAPI
DocNodeOleInPlaceActiveObject_OnFrameWindowActivate(IOleInPlaceActiveObject
*iface
,
1304 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceActiveObject(iface
);
1305 return IOleInPlaceActiveObject_OnFrameWindowActivate(&This
->doc_obj
->IOleInPlaceActiveObject_iface
, fActivate
);
1308 static HRESULT WINAPI
DocNodeOleInPlaceActiveObject_OnDocWindowActivate(IOleInPlaceActiveObject
*iface
, BOOL fActivate
)
1310 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceActiveObject(iface
);
1311 FIXME("(%p)->(%x)\n", This
, fActivate
);
1315 static HRESULT WINAPI
DocNodeOleInPlaceActiveObject_ResizeBorder(IOleInPlaceActiveObject
*iface
, LPCRECT prcBorder
,
1316 IOleInPlaceUIWindow
*pUIWindow
, BOOL fFrameWindow
)
1318 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceActiveObject(iface
);
1319 FIXME("(%p)->(%p %p %x)\n", This
, prcBorder
, pUIWindow
, fFrameWindow
);
1323 static HRESULT WINAPI
DocNodeOleInPlaceActiveObject_EnableModeless(IOleInPlaceActiveObject
*iface
, BOOL fEnable
)
1325 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceActiveObject(iface
);
1326 FIXME("(%p)->(%x)\n", This
, fEnable
);
1330 static const IOleInPlaceActiveObjectVtbl DocNodeOleInPlaceActiveObjectVtbl
= {
1331 DocNodeOleInPlaceActiveObject_QueryInterface
,
1332 DocNodeOleInPlaceActiveObject_AddRef
,
1333 DocNodeOleInPlaceActiveObject_Release
,
1334 DocNodeOleInPlaceActiveObject_GetWindow
,
1335 DocNodeOleInPlaceActiveObject_ContextSensitiveHelp
,
1336 DocNodeOleInPlaceActiveObject_TranslateAccelerator
,
1337 DocNodeOleInPlaceActiveObject_OnFrameWindowActivate
,
1338 DocNodeOleInPlaceActiveObject_OnDocWindowActivate
,
1339 DocNodeOleInPlaceActiveObject_ResizeBorder
,
1340 DocNodeOleInPlaceActiveObject_EnableModeless
1343 static inline HTMLDocumentObj
*HTMLDocumentObj_from_IOleInPlaceActiveObject(IOleInPlaceActiveObject
*iface
)
1345 return CONTAINING_RECORD(iface
, HTMLDocumentObj
, IOleInPlaceActiveObject_iface
);
1348 static HRESULT WINAPI
DocObjOleInPlaceActiveObject_QueryInterface(IOleInPlaceActiveObject
*iface
, REFIID riid
, void **ppv
)
1350 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceActiveObject(iface
);
1351 return IUnknown_QueryInterface(This
->outer_unk
, riid
, ppv
);
1354 static ULONG WINAPI
DocObjOleInPlaceActiveObject_AddRef(IOleInPlaceActiveObject
*iface
)
1356 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceActiveObject(iface
);
1357 return IUnknown_AddRef(This
->outer_unk
);
1360 static ULONG WINAPI
DocObjOleInPlaceActiveObject_Release(IOleInPlaceActiveObject
*iface
)
1362 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceActiveObject(iface
);
1363 return IUnknown_Release(This
->outer_unk
);
1366 static HRESULT WINAPI
DocObjOleInPlaceActiveObject_GetWindow(IOleInPlaceActiveObject
*iface
, HWND
*phwnd
)
1368 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceActiveObject(iface
);
1370 TRACE("(%p)->(%p)\n", This
, phwnd
);
1373 return E_INVALIDARG
;
1375 if(!This
->in_place_active
) {
1380 *phwnd
= This
->hwnd
;
1384 static HRESULT WINAPI
DocObjOleInPlaceActiveObject_ContextSensitiveHelp(IOleInPlaceActiveObject
*iface
, BOOL fEnterMode
)
1386 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceActiveObject(iface
);
1387 FIXME("(%p)->(%x)\n", This
, fEnterMode
);
1391 static HRESULT WINAPI
DocObjOleInPlaceActiveObject_TranslateAccelerator(IOleInPlaceActiveObject
*iface
, LPMSG lpmsg
)
1393 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceActiveObject(iface
);
1394 FIXME("(%p)->(%p)\n", This
, lpmsg
);
1398 static HRESULT WINAPI
DocObjOleInPlaceActiveObject_OnFrameWindowActivate(IOleInPlaceActiveObject
*iface
,
1401 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceActiveObject(iface
);
1403 TRACE("(%p)->(%x)\n", This
, fActivate
);
1406 IDocHostUIHandler_OnFrameWindowActivate(This
->hostui
, fActivate
);
1411 static HRESULT WINAPI
DocObjOleInPlaceActiveObject_OnDocWindowActivate(IOleInPlaceActiveObject
*iface
, BOOL fActivate
)
1413 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceActiveObject(iface
);
1414 FIXME("(%p)->(%x)\n", This
, fActivate
);
1418 static HRESULT WINAPI
DocObjOleInPlaceActiveObject_ResizeBorder(IOleInPlaceActiveObject
*iface
, LPCRECT prcBorder
,
1419 IOleInPlaceUIWindow
*pUIWindow
, BOOL fFrameWindow
)
1421 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceActiveObject(iface
);
1422 FIXME("(%p)->(%p %p %x)\n", This
, prcBorder
, pUIWindow
, fFrameWindow
);
1426 static HRESULT WINAPI
DocObjOleInPlaceActiveObject_EnableModeless(IOleInPlaceActiveObject
*iface
, BOOL fEnable
)
1428 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceActiveObject(iface
);
1429 FIXME("(%p)->(%x)\n", This
, fEnable
);
1433 static const IOleInPlaceActiveObjectVtbl DocObjOleInPlaceActiveObjectVtbl
= {
1434 DocObjOleInPlaceActiveObject_QueryInterface
,
1435 DocObjOleInPlaceActiveObject_AddRef
,
1436 DocObjOleInPlaceActiveObject_Release
,
1437 DocObjOleInPlaceActiveObject_GetWindow
,
1438 DocObjOleInPlaceActiveObject_ContextSensitiveHelp
,
1439 DocObjOleInPlaceActiveObject_TranslateAccelerator
,
1440 DocObjOleInPlaceActiveObject_OnFrameWindowActivate
,
1441 DocObjOleInPlaceActiveObject_OnDocWindowActivate
,
1442 DocObjOleInPlaceActiveObject_ResizeBorder
,
1443 DocObjOleInPlaceActiveObject_EnableModeless
1446 /**********************************************************
1447 * IOleInPlaceObjectWindowless implementation
1450 static inline HTMLDocumentNode
*HTMLDocumentNode_from_IOleInPlaceObjectWindowless(IOleInPlaceObjectWindowless
*iface
)
1452 return CONTAINING_RECORD(iface
, HTMLDocumentNode
, IOleInPlaceObjectWindowless_iface
);
1455 static HRESULT WINAPI
DocNodeOleInPlaceObjectWindowless_QueryInterface(IOleInPlaceObjectWindowless
*iface
,
1456 REFIID riid
, void **ppv
)
1458 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceObjectWindowless(iface
);
1459 return IHTMLDOMNode_QueryInterface(&This
->node
.IHTMLDOMNode_iface
, riid
, ppv
);
1462 static ULONG WINAPI
DocNodeOleInPlaceObjectWindowless_AddRef(IOleInPlaceObjectWindowless
*iface
)
1464 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceObjectWindowless(iface
);
1465 return IHTMLDOMNode_AddRef(&This
->node
.IHTMLDOMNode_iface
);
1468 static ULONG WINAPI
DocNodeOleInPlaceObjectWindowless_Release(IOleInPlaceObjectWindowless
*iface
)
1470 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceObjectWindowless(iface
);
1471 return IHTMLDOMNode_Release(&This
->node
.IHTMLDOMNode_iface
);
1474 static HRESULT WINAPI
DocNodeOleInPlaceObjectWindowless_GetWindow(IOleInPlaceObjectWindowless
*iface
,
1477 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceObjectWindowless(iface
);
1478 return IOleInPlaceActiveObject_GetWindow(&This
->IOleInPlaceActiveObject_iface
, phwnd
);
1481 static HRESULT WINAPI
DocNodeOleInPlaceObjectWindowless_ContextSensitiveHelp(IOleInPlaceObjectWindowless
*iface
,
1484 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceObjectWindowless(iface
);
1485 return IOleInPlaceActiveObject_ContextSensitiveHelp(&This
->IOleInPlaceActiveObject_iface
, fEnterMode
);
1488 static HRESULT WINAPI
DocNodeOleInPlaceObjectWindowless_InPlaceDeactivate(IOleInPlaceObjectWindowless
*iface
)
1490 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceObjectWindowless(iface
);
1491 return IOleInPlaceObjectWindowless_InPlaceDeactivate(&This
->doc_obj
->IOleInPlaceObjectWindowless_iface
);
1494 static HRESULT WINAPI
DocNodeOleInPlaceObjectWindowless_UIDeactivate(IOleInPlaceObjectWindowless
*iface
)
1496 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceObjectWindowless(iface
);
1497 FIXME("(%p)\n", This
);
1501 static HRESULT WINAPI
DocNodeOleInPlaceObjectWindowless_SetObjectRects(IOleInPlaceObjectWindowless
*iface
,
1502 const RECT
*pos
, const RECT
*clip
)
1504 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceObjectWindowless(iface
);
1505 return IOleInPlaceObjectWindowless_SetObjectRects(&This
->doc_obj
->IOleInPlaceObjectWindowless_iface
, pos
, clip
);
1508 static HRESULT WINAPI
DocNodeOleInPlaceObjectWindowless_ReactivateAndUndo(IOleInPlaceObjectWindowless
*iface
)
1510 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceObjectWindowless(iface
);
1511 FIXME("(%p)\n", This
);
1515 static HRESULT WINAPI
DocNodeOleInPlaceObjectWindowless_OnWindowMessage(IOleInPlaceObjectWindowless
*iface
,
1516 UINT msg
, WPARAM wParam
, LPARAM lParam
, LRESULT
*lpResult
)
1518 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceObjectWindowless(iface
);
1519 FIXME("(%p)->(%u %Iu %Iu %p)\n", This
, msg
, wParam
, lParam
, lpResult
);
1523 static HRESULT WINAPI
DocNodeOleInPlaceObjectWindowless_GetDropTarget(IOleInPlaceObjectWindowless
*iface
,
1524 IDropTarget
**ppDropTarget
)
1526 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleInPlaceObjectWindowless(iface
);
1527 FIXME("(%p)->(%p)\n", This
, ppDropTarget
);
1531 static const IOleInPlaceObjectWindowlessVtbl DocNodeOleInPlaceObjectWindowlessVtbl
= {
1532 DocNodeOleInPlaceObjectWindowless_QueryInterface
,
1533 DocNodeOleInPlaceObjectWindowless_AddRef
,
1534 DocNodeOleInPlaceObjectWindowless_Release
,
1535 DocNodeOleInPlaceObjectWindowless_GetWindow
,
1536 DocNodeOleInPlaceObjectWindowless_ContextSensitiveHelp
,
1537 DocNodeOleInPlaceObjectWindowless_InPlaceDeactivate
,
1538 DocNodeOleInPlaceObjectWindowless_UIDeactivate
,
1539 DocNodeOleInPlaceObjectWindowless_SetObjectRects
,
1540 DocNodeOleInPlaceObjectWindowless_ReactivateAndUndo
,
1541 DocNodeOleInPlaceObjectWindowless_OnWindowMessage
,
1542 DocNodeOleInPlaceObjectWindowless_GetDropTarget
1545 static inline HTMLDocumentObj
*HTMLDocumentObj_from_IOleInPlaceObjectWindowless(IOleInPlaceObjectWindowless
*iface
)
1547 return CONTAINING_RECORD(iface
, HTMLDocumentObj
, IOleInPlaceObjectWindowless_iface
);
1550 static HRESULT WINAPI
DocObjOleInPlaceObjectWindowless_QueryInterface(IOleInPlaceObjectWindowless
*iface
,
1551 REFIID riid
, void **ppv
)
1553 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceObjectWindowless(iface
);
1554 return IUnknown_QueryInterface(This
->outer_unk
, riid
, ppv
);
1557 static ULONG WINAPI
DocObjOleInPlaceObjectWindowless_AddRef(IOleInPlaceObjectWindowless
*iface
)
1559 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceObjectWindowless(iface
);
1560 return IUnknown_AddRef(This
->outer_unk
);
1563 static ULONG WINAPI
DocObjOleInPlaceObjectWindowless_Release(IOleInPlaceObjectWindowless
*iface
)
1565 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceObjectWindowless(iface
);
1566 return IUnknown_Release(This
->outer_unk
);
1569 static HRESULT WINAPI
DocObjOleInPlaceObjectWindowless_GetWindow(IOleInPlaceObjectWindowless
*iface
,
1572 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceObjectWindowless(iface
);
1573 return IOleInPlaceActiveObject_GetWindow(&This
->IOleInPlaceActiveObject_iface
, phwnd
);
1576 static HRESULT WINAPI
DocObjOleInPlaceObjectWindowless_ContextSensitiveHelp(IOleInPlaceObjectWindowless
*iface
,
1579 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceObjectWindowless(iface
);
1580 return IOleInPlaceActiveObject_ContextSensitiveHelp(&This
->IOleInPlaceActiveObject_iface
, fEnterMode
);
1583 static HRESULT WINAPI
DocObjOleInPlaceObjectWindowless_InPlaceDeactivate(IOleInPlaceObjectWindowless
*iface
)
1585 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceObjectWindowless(iface
);
1587 TRACE("(%p)\n", This
);
1590 IOleDocumentView_UIActivate(&This
->IOleDocumentView_iface
, FALSE
);
1591 This
->window_active
= FALSE
;
1593 if(!This
->in_place_active
)
1596 unlink_ref(&This
->frame
);
1598 ShowWindow(This
->hwnd
, SW_HIDE
);
1599 SetWindowPos(This
->hwnd
, HWND_TOPMOST
, 0, 0, 0, 0, SWP_NOSIZE
| SWP_NOMOVE
| SWP_NOACTIVATE
);
1602 This
->focus
= FALSE
;
1605 This
->in_place_active
= FALSE
;
1607 IOleInPlaceSiteEx
*ipsiteex
;
1610 hres
= IOleInPlaceSite_QueryInterface(This
->ipsite
, &IID_IOleInPlaceSiteEx
, (void**)&ipsiteex
);
1611 if(SUCCEEDED(hres
)) {
1612 IOleInPlaceSiteEx_OnInPlaceDeactivateEx(ipsiteex
, TRUE
);
1613 IOleInPlaceSiteEx_Release(ipsiteex
);
1615 IOleInPlaceSite_OnInPlaceDeactivate(This
->ipsite
);
1622 static HRESULT WINAPI
DocObjOleInPlaceObjectWindowless_UIDeactivate(IOleInPlaceObjectWindowless
*iface
)
1624 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceObjectWindowless(iface
);
1625 FIXME("(%p)\n", This
);
1629 static HRESULT WINAPI
DocObjOleInPlaceObjectWindowless_SetObjectRects(IOleInPlaceObjectWindowless
*iface
,
1630 const RECT
*pos
, const RECT
*clip
)
1632 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceObjectWindowless(iface
);
1635 TRACE("(%p)->(%s %s)\n", This
, wine_dbgstr_rect(pos
), wine_dbgstr_rect(clip
));
1637 if(clip
&& !EqualRect(clip
, pos
))
1638 FIXME("Ignoring clip rect %s\n", wine_dbgstr_rect(clip
));
1641 return IOleDocumentView_SetRect(&This
->IOleDocumentView_iface
, &r
);
1644 static HRESULT WINAPI
DocObjOleInPlaceObjectWindowless_ReactivateAndUndo(IOleInPlaceObjectWindowless
*iface
)
1646 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceObjectWindowless(iface
);
1647 FIXME("(%p)\n", This
);
1651 static HRESULT WINAPI
DocObjOleInPlaceObjectWindowless_OnWindowMessage(IOleInPlaceObjectWindowless
*iface
,
1652 UINT msg
, WPARAM wParam
, LPARAM lParam
, LRESULT
*lpResult
)
1654 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceObjectWindowless(iface
);
1655 FIXME("(%p)->(%u %Iu %Iu %p)\n", This
, msg
, wParam
, lParam
, lpResult
);
1659 static HRESULT WINAPI
DocObjOleInPlaceObjectWindowless_GetDropTarget(IOleInPlaceObjectWindowless
*iface
,
1660 IDropTarget
**ppDropTarget
)
1662 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleInPlaceObjectWindowless(iface
);
1663 FIXME("(%p)->(%p)\n", This
, ppDropTarget
);
1667 static const IOleInPlaceObjectWindowlessVtbl DocObjOleInPlaceObjectWindowlessVtbl
= {
1668 DocObjOleInPlaceObjectWindowless_QueryInterface
,
1669 DocObjOleInPlaceObjectWindowless_AddRef
,
1670 DocObjOleInPlaceObjectWindowless_Release
,
1671 DocObjOleInPlaceObjectWindowless_GetWindow
,
1672 DocObjOleInPlaceObjectWindowless_ContextSensitiveHelp
,
1673 DocObjOleInPlaceObjectWindowless_InPlaceDeactivate
,
1674 DocObjOleInPlaceObjectWindowless_UIDeactivate
,
1675 DocObjOleInPlaceObjectWindowless_SetObjectRects
,
1676 DocObjOleInPlaceObjectWindowless_ReactivateAndUndo
,
1677 DocObjOleInPlaceObjectWindowless_OnWindowMessage
,
1678 DocObjOleInPlaceObjectWindowless_GetDropTarget
1681 /**********************************************************
1682 * IObjectWithSite implementation
1685 static inline HTMLDocumentNode
*HTMLDocumentNode_from_IObjectWithSite(IObjectWithSite
*iface
)
1687 return CONTAINING_RECORD(iface
, HTMLDocumentNode
, IObjectWithSite_iface
);
1690 static HRESULT WINAPI
DocNodeObjectWithSite_QueryInterface(IObjectWithSite
*iface
, REFIID riid
, void **ppv
)
1692 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IObjectWithSite(iface
);
1693 return IHTMLDOMNode_QueryInterface(&This
->node
.IHTMLDOMNode_iface
, riid
, ppv
);
1696 static ULONG WINAPI
DocNodeObjectWithSite_AddRef(IObjectWithSite
*iface
)
1698 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IObjectWithSite(iface
);
1699 return IHTMLDOMNode_AddRef(&This
->node
.IHTMLDOMNode_iface
);
1702 static ULONG WINAPI
DocNodeObjectWithSite_Release(IObjectWithSite
*iface
)
1704 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IObjectWithSite(iface
);
1705 return IHTMLDOMNode_Release(&This
->node
.IHTMLDOMNode_iface
);
1708 static HRESULT WINAPI
DocNodeObjectWithSite_SetSite(IObjectWithSite
*iface
, IUnknown
*pUnkSite
)
1710 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IObjectWithSite(iface
);
1711 FIXME("(%p)->(%p)\n", This
, pUnkSite
);
1715 static HRESULT WINAPI
DocNodeObjectWithSite_GetSite(IObjectWithSite
* iface
, REFIID riid
, PVOID
*ppvSite
)
1717 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IObjectWithSite(iface
);
1718 FIXME("(%p)->(%p)\n", This
, ppvSite
);
1722 static const IObjectWithSiteVtbl DocNodeObjectWithSiteVtbl
= {
1723 DocNodeObjectWithSite_QueryInterface
,
1724 DocNodeObjectWithSite_AddRef
,
1725 DocNodeObjectWithSite_Release
,
1726 DocNodeObjectWithSite_SetSite
,
1727 DocNodeObjectWithSite_GetSite
1730 static inline HTMLDocumentObj
*HTMLDocumentObj_from_IObjectWithSite(IObjectWithSite
*iface
)
1732 return CONTAINING_RECORD(iface
, HTMLDocumentObj
, IObjectWithSite_iface
);
1735 static HRESULT WINAPI
DocObjObjectWithSite_QueryInterface(IObjectWithSite
*iface
, REFIID riid
, void **ppv
)
1737 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IObjectWithSite(iface
);
1738 return IUnknown_QueryInterface(This
->outer_unk
, riid
, ppv
);
1741 static ULONG WINAPI
DocObjObjectWithSite_AddRef(IObjectWithSite
*iface
)
1743 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IObjectWithSite(iface
);
1744 return IUnknown_AddRef(This
->outer_unk
);
1747 static ULONG WINAPI
DocObjObjectWithSite_Release(IObjectWithSite
*iface
)
1749 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IObjectWithSite(iface
);
1750 return IUnknown_Release(This
->outer_unk
);
1753 static HRESULT WINAPI
DocObjObjectWithSite_SetSite(IObjectWithSite
*iface
, IUnknown
*pUnkSite
)
1755 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IObjectWithSite(iface
);
1756 FIXME("(%p)->(%p)\n", This
, pUnkSite
);
1760 static HRESULT WINAPI
DocObjObjectWithSite_GetSite(IObjectWithSite
* iface
, REFIID riid
, PVOID
*ppvSite
)
1762 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IObjectWithSite(iface
);
1763 FIXME("(%p)->(%p)\n", This
, ppvSite
);
1767 static const IObjectWithSiteVtbl DocObjObjectWithSiteVtbl
= {
1768 DocObjObjectWithSite_QueryInterface
,
1769 DocObjObjectWithSite_AddRef
,
1770 DocObjObjectWithSite_Release
,
1771 DocObjObjectWithSite_SetSite
,
1772 DocObjObjectWithSite_GetSite
1775 /**********************************************************
1776 * IOleContainer implementation
1779 static inline HTMLDocumentNode
*HTMLDocumentNode_from_IOleContainer(IOleContainer
*iface
)
1781 return CONTAINING_RECORD(iface
, HTMLDocumentNode
, IOleContainer_iface
);
1784 static HRESULT WINAPI
DocNodeOleContainer_QueryInterface(IOleContainer
*iface
, REFIID riid
, void **ppv
)
1786 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleContainer(iface
);
1787 return IHTMLDOMNode_QueryInterface(&This
->node
.IHTMLDOMNode_iface
, riid
, ppv
);
1790 static ULONG WINAPI
DocNodeOleContainer_AddRef(IOleContainer
*iface
)
1792 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleContainer(iface
);
1793 return IHTMLDOMNode_AddRef(&This
->node
.IHTMLDOMNode_iface
);
1796 static ULONG WINAPI
DocNodeOleContainer_Release(IOleContainer
*iface
)
1798 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleContainer(iface
);
1799 return IHTMLDOMNode_Release(&This
->node
.IHTMLDOMNode_iface
);
1802 static HRESULT WINAPI
DocNodeOleContainer_ParseDisplayName(IOleContainer
*iface
, IBindCtx
*pbc
, LPOLESTR pszDisplayName
,
1803 ULONG
*pchEaten
, IMoniker
**ppmkOut
)
1805 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleContainer(iface
);
1806 FIXME("(%p)->(%p %s %p %p)\n", This
, pbc
, debugstr_w(pszDisplayName
), pchEaten
, ppmkOut
);
1810 static HRESULT WINAPI
DocNodeOleContainer_EnumObjects(IOleContainer
*iface
, DWORD grfFlags
, IEnumUnknown
**ppenum
)
1812 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleContainer(iface
);
1813 return IOleContainer_EnumObjects(&This
->doc_obj
->IOleContainer_iface
, grfFlags
, ppenum
);
1816 static HRESULT WINAPI
DocNodeOleContainer_LockContainer(IOleContainer
*iface
, BOOL fLock
)
1818 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IOleContainer(iface
);
1819 FIXME("(%p)->(%x)\n", This
, fLock
);
1823 static const IOleContainerVtbl DocNodeOleContainerVtbl
= {
1824 DocNodeOleContainer_QueryInterface
,
1825 DocNodeOleContainer_AddRef
,
1826 DocNodeOleContainer_Release
,
1827 DocNodeOleContainer_ParseDisplayName
,
1828 DocNodeOleContainer_EnumObjects
,
1829 DocNodeOleContainer_LockContainer
1832 static inline HTMLDocumentObj
*HTMLDocumentObj_from_IOleContainer(IOleContainer
*iface
)
1834 return CONTAINING_RECORD(iface
, HTMLDocumentObj
, IOleContainer_iface
);
1837 static HRESULT WINAPI
DocObjOleContainer_QueryInterface(IOleContainer
*iface
, REFIID riid
, void **ppv
)
1839 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleContainer(iface
);
1840 return IUnknown_QueryInterface(This
->outer_unk
, riid
, ppv
);
1843 static ULONG WINAPI
DocObjOleContainer_AddRef(IOleContainer
*iface
)
1845 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleContainer(iface
);
1846 return IUnknown_AddRef(This
->outer_unk
);
1849 static ULONG WINAPI
DocObjOleContainer_Release(IOleContainer
*iface
)
1851 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleContainer(iface
);
1852 return IUnknown_Release(This
->outer_unk
);
1855 static HRESULT WINAPI
DocObjOleContainer_ParseDisplayName(IOleContainer
*iface
, IBindCtx
*pbc
, LPOLESTR pszDisplayName
,
1856 ULONG
*pchEaten
, IMoniker
**ppmkOut
)
1858 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleContainer(iface
);
1859 FIXME("(%p)->(%p %s %p %p)\n", This
, pbc
, debugstr_w(pszDisplayName
), pchEaten
, ppmkOut
);
1863 static HRESULT WINAPI
DocObjOleContainer_EnumObjects(IOleContainer
*iface
, DWORD grfFlags
, IEnumUnknown
**ppenum
)
1865 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleContainer(iface
);
1868 TRACE("(%p)->(%lx %p)\n", This
, grfFlags
, ppenum
);
1870 ret
= malloc(sizeof(*ret
));
1872 return E_OUTOFMEMORY
;
1874 ret
->IEnumUnknown_iface
.lpVtbl
= &EnumUnknownVtbl
;
1877 *ppenum
= &ret
->IEnumUnknown_iface
;
1881 static HRESULT WINAPI
DocObjOleContainer_LockContainer(IOleContainer
*iface
, BOOL fLock
)
1883 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IOleContainer(iface
);
1884 FIXME("(%p)->(%x)\n", This
, fLock
);
1888 static const IOleContainerVtbl DocObjOleContainerVtbl
= {
1889 DocObjOleContainer_QueryInterface
,
1890 DocObjOleContainer_AddRef
,
1891 DocObjOleContainer_Release
,
1892 DocObjOleContainer_ParseDisplayName
,
1893 DocObjOleContainer_EnumObjects
,
1894 DocObjOleContainer_LockContainer
1897 static inline HTMLDocumentObj
*impl_from_ITargetContainer(ITargetContainer
*iface
)
1899 return CONTAINING_RECORD(iface
, HTMLDocumentObj
, ITargetContainer_iface
);
1902 static HRESULT WINAPI
TargetContainer_QueryInterface(ITargetContainer
*iface
, REFIID riid
, void **ppv
)
1904 HTMLDocumentObj
*This
= impl_from_ITargetContainer(iface
);
1905 return ICustomDoc_QueryInterface(&This
->ICustomDoc_iface
, riid
, ppv
);
1908 static ULONG WINAPI
TargetContainer_AddRef(ITargetContainer
*iface
)
1910 HTMLDocumentObj
*This
= impl_from_ITargetContainer(iface
);
1911 return ICustomDoc_AddRef(&This
->ICustomDoc_iface
);
1914 static ULONG WINAPI
TargetContainer_Release(ITargetContainer
*iface
)
1916 HTMLDocumentObj
*This
= impl_from_ITargetContainer(iface
);
1917 return ICustomDoc_Release(&This
->ICustomDoc_iface
);
1920 static HRESULT WINAPI
TargetContainer_GetFrameUrl(ITargetContainer
*iface
, LPWSTR
*ppszFrameSrc
)
1922 HTMLDocumentObj
*This
= impl_from_ITargetContainer(iface
);
1923 FIXME("(%p)->(%p)\n", This
, ppszFrameSrc
);
1927 static HRESULT WINAPI
TargetContainer_GetFramesContainer(ITargetContainer
*iface
, IOleContainer
**ppContainer
)
1929 HTMLDocumentObj
*This
= impl_from_ITargetContainer(iface
);
1931 TRACE("(%p)->(%p)\n", This
, ppContainer
);
1933 /* NOTE: we should return wrapped interface here */
1934 IOleContainer_AddRef(&This
->IOleContainer_iface
);
1935 *ppContainer
= &This
->IOleContainer_iface
;
1939 static const ITargetContainerVtbl TargetContainerVtbl
= {
1940 TargetContainer_QueryInterface
,
1941 TargetContainer_AddRef
,
1942 TargetContainer_Release
,
1943 TargetContainer_GetFrameUrl
,
1944 TargetContainer_GetFramesContainer
1947 void TargetContainer_Init(HTMLDocumentObj
*This
)
1949 This
->ITargetContainer_iface
.lpVtbl
= &TargetContainerVtbl
;
1952 /**********************************************************
1953 * IObjectSafety implementation
1956 static inline HTMLDocumentNode
*HTMLDocumentNode_from_IObjectSafety(IObjectSafety
*iface
)
1958 return CONTAINING_RECORD(iface
, HTMLDocumentNode
, IObjectSafety_iface
);
1961 static HRESULT WINAPI
DocNodeObjectSafety_QueryInterface(IObjectSafety
*iface
, REFIID riid
, void **ppv
)
1963 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IObjectSafety(iface
);
1964 return IHTMLDOMNode_QueryInterface(&This
->node
.IHTMLDOMNode_iface
, riid
, ppv
);
1967 static ULONG WINAPI
DocNodeObjectSafety_AddRef(IObjectSafety
*iface
)
1969 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IObjectSafety(iface
);
1970 return IHTMLDOMNode_AddRef(&This
->node
.IHTMLDOMNode_iface
);
1973 static ULONG WINAPI
DocNodeObjectSafety_Release(IObjectSafety
*iface
)
1975 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IObjectSafety(iface
);
1976 return IHTMLDOMNode_Release(&This
->node
.IHTMLDOMNode_iface
);
1979 static HRESULT WINAPI
DocNodeObjectSafety_GetInterfaceSafetyOptions(IObjectSafety
*iface
,
1980 REFIID riid
, DWORD
*pdwSupportedOptions
, DWORD
*pdwEnabledOptions
)
1982 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IObjectSafety(iface
);
1983 FIXME("(%p)->(%s %p %p)\n", This
, debugstr_guid(riid
), pdwSupportedOptions
, pdwEnabledOptions
);
1987 static HRESULT WINAPI
DocNodeObjectSafety_SetInterfaceSafetyOptions(IObjectSafety
*iface
,
1988 REFIID riid
, DWORD dwOptionSetMask
, DWORD dwEnabledOptions
)
1990 HTMLDocumentNode
*This
= HTMLDocumentNode_from_IObjectSafety(iface
);
1991 return IObjectSafety_SetInterfaceSafetyOptions(&This
->doc_obj
->IObjectSafety_iface
,
1992 riid
, dwOptionSetMask
, dwEnabledOptions
);
1995 static const IObjectSafetyVtbl DocNodeObjectSafetyVtbl
= {
1996 DocNodeObjectSafety_QueryInterface
,
1997 DocNodeObjectSafety_AddRef
,
1998 DocNodeObjectSafety_Release
,
1999 DocNodeObjectSafety_GetInterfaceSafetyOptions
,
2000 DocNodeObjectSafety_SetInterfaceSafetyOptions
2003 static inline HTMLDocumentObj
*HTMLDocumentObj_from_IObjectSafety(IObjectSafety
*iface
)
2005 return CONTAINING_RECORD(iface
, HTMLDocumentObj
, IObjectSafety_iface
);
2008 static HRESULT WINAPI
DocObjObjectSafety_QueryInterface(IObjectSafety
*iface
, REFIID riid
, void **ppv
)
2010 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IObjectSafety(iface
);
2011 return IUnknown_QueryInterface(This
->outer_unk
, riid
, ppv
);
2014 static ULONG WINAPI
DocObjObjectSafety_AddRef(IObjectSafety
*iface
)
2016 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IObjectSafety(iface
);
2017 return IUnknown_AddRef(This
->outer_unk
);
2020 static ULONG WINAPI
DocObjObjectSafety_Release(IObjectSafety
*iface
)
2022 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IObjectSafety(iface
);
2023 return IUnknown_Release(This
->outer_unk
);
2026 static HRESULT WINAPI
DocObjObjectSafety_GetInterfaceSafetyOptions(IObjectSafety
*iface
,
2027 REFIID riid
, DWORD
*pdwSupportedOptions
, DWORD
*pdwEnabledOptions
)
2029 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IObjectSafety(iface
);
2030 FIXME("(%p)->(%s %p %p)\n", This
, debugstr_guid(riid
), pdwSupportedOptions
, pdwEnabledOptions
);
2034 static HRESULT WINAPI
DocObjObjectSafety_SetInterfaceSafetyOptions(IObjectSafety
*iface
,
2035 REFIID riid
, DWORD dwOptionSetMask
, DWORD dwEnabledOptions
)
2037 HTMLDocumentObj
*This
= HTMLDocumentObj_from_IObjectSafety(iface
);
2038 FIXME("(%p)->(%s %lx %lx)\n", This
, debugstr_guid(riid
), dwOptionSetMask
, dwEnabledOptions
);
2040 if(IsEqualGUID(&IID_IPersistMoniker
, riid
) &&
2041 dwOptionSetMask
==INTERFACESAFE_FOR_UNTRUSTED_DATA
&&
2042 dwEnabledOptions
==INTERFACESAFE_FOR_UNTRUSTED_DATA
)
2048 static const IObjectSafetyVtbl DocObjObjectSafetyVtbl
= {
2049 DocObjObjectSafety_QueryInterface
,
2050 DocObjObjectSafety_AddRef
,
2051 DocObjObjectSafety_Release
,
2052 DocObjObjectSafety_GetInterfaceSafetyOptions
,
2053 DocObjObjectSafety_SetInterfaceSafetyOptions
2056 void HTMLDocument_LockContainer(HTMLDocumentObj
*This
, BOOL fLock
)
2058 IOleContainer
*container
;
2061 if(!This
->client
|| This
->container_locked
== fLock
)
2064 hres
= IOleClientSite_GetContainer(This
->client
, &container
);
2065 if(SUCCEEDED(hres
)) {
2066 IOleContainer_LockContainer(container
, fLock
);
2067 This
->container_locked
= fLock
;
2068 IOleContainer_Release(container
);
2072 void HTMLDocumentNode_OleObj_Init(HTMLDocumentNode
*This
)
2074 This
->IOleObject_iface
.lpVtbl
= &DocNodeOleObjectVtbl
;
2075 This
->IOleDocument_iface
.lpVtbl
= &DocNodeOleDocumentVtbl
;
2076 This
->IOleControl_iface
.lpVtbl
= &DocNodeOleControlVtbl
;
2077 This
->IOleInPlaceActiveObject_iface
.lpVtbl
= &DocNodeOleInPlaceActiveObjectVtbl
;
2078 This
->IOleInPlaceObjectWindowless_iface
.lpVtbl
= &DocNodeOleInPlaceObjectWindowlessVtbl
;
2079 This
->IObjectWithSite_iface
.lpVtbl
= &DocNodeObjectWithSiteVtbl
;
2080 This
->IOleContainer_iface
.lpVtbl
= &DocNodeOleContainerVtbl
;
2081 This
->IObjectSafety_iface
.lpVtbl
= &DocNodeObjectSafetyVtbl
;
2082 This
->doc_obj
->extent
.cx
= 1;
2083 This
->doc_obj
->extent
.cy
= 1;
2086 static void HTMLDocumentObj_OleObj_Init(HTMLDocumentObj
*This
)
2088 This
->IOleObject_iface
.lpVtbl
= &DocObjOleObjectVtbl
;
2089 This
->IOleDocument_iface
.lpVtbl
= &DocObjOleDocumentVtbl
;
2090 This
->IOleControl_iface
.lpVtbl
= &DocObjOleControlVtbl
;
2091 This
->IOleInPlaceActiveObject_iface
.lpVtbl
= &DocObjOleInPlaceActiveObjectVtbl
;
2092 This
->IOleInPlaceObjectWindowless_iface
.lpVtbl
= &DocObjOleInPlaceObjectWindowlessVtbl
;
2093 This
->IObjectWithSite_iface
.lpVtbl
= &DocObjObjectWithSiteVtbl
;
2094 This
->IOleContainer_iface
.lpVtbl
= &DocObjOleContainerVtbl
;
2095 This
->IObjectSafety_iface
.lpVtbl
= &DocObjObjectSafetyVtbl
;
2096 This
->extent
.cx
= 1;
2097 This
->extent
.cy
= 1;
2100 #define HTMLDOCUMENTOBJ_IUNKNOWN_METHODS(iface) \
2101 static HRESULT WINAPI DocObj##iface##_QueryInterface(I##iface *_0, REFIID riid, void **ppv) \
2103 HTMLDocumentObj *This = CONTAINING_RECORD(_0, HTMLDocumentObj, I##iface##_iface); \
2104 return IUnknown_QueryInterface(This->outer_unk, riid, ppv); \
2106 static ULONG WINAPI DocObj##iface##_AddRef(I##iface *_0) \
2108 HTMLDocumentObj *This = CONTAINING_RECORD(_0, HTMLDocumentObj, I##iface##_iface); \
2109 return IUnknown_AddRef(This->outer_unk); \
2111 static ULONG WINAPI DocObj##iface##_Release(I##iface *_0) \
2113 HTMLDocumentObj *This = CONTAINING_RECORD(_0, HTMLDocumentObj, I##iface##_iface); \
2114 return IUnknown_Release(This->outer_unk); \
2117 #define HTMLDOCUMENTOBJ_IDISPATCH_METHODS(iface) HTMLDOCUMENTOBJ_IUNKNOWN_METHODS(iface) \
2118 static HRESULT WINAPI DocObj##iface##_GetTypeInfoCount(I##iface *_0, UINT *pctinfo) \
2120 HTMLDocumentObj *This = CONTAINING_RECORD(_0, HTMLDocumentObj, I##iface##_iface); \
2121 return IDispatchEx_GetTypeInfoCount(&This->IDispatchEx_iface, pctinfo); \
2123 static HRESULT WINAPI DocObj##iface##_GetTypeInfo(I##iface *_0, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) \
2125 HTMLDocumentObj *This = CONTAINING_RECORD(_0, HTMLDocumentObj, I##iface##_iface); \
2126 return IDispatchEx_GetTypeInfo(&This->IDispatchEx_iface, iTInfo, lcid, ppTInfo); \
2128 static HRESULT WINAPI DocObj##iface##_GetIDsOfNames(I##iface *_0, REFIID riid, LPOLESTR *rgszNames, UINT cNames, \
2129 LCID lcid, DISPID *rgDispId) \
2131 HTMLDocumentObj *This = CONTAINING_RECORD(_0, HTMLDocumentObj, I##iface##_iface); \
2132 return IDispatchEx_GetIDsOfNames(&This->IDispatchEx_iface, riid, rgszNames, cNames, lcid, rgDispId); \
2134 static HRESULT WINAPI DocObj##iface##_Invoke(I##iface *_0, DISPID dispIdMember, REFIID riid, LCID lcid, \
2135 WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) \
2137 HTMLDocumentObj *This = CONTAINING_RECORD(_0, HTMLDocumentObj, I##iface##_iface); \
2138 return IDispatchEx_Invoke(&This->IDispatchEx_iface, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); \
2141 #define HTMLDOCUMENTOBJ_FWD_TO_NODE_0(iface, method) static HRESULT WINAPI DocObj##iface##_##method(I##iface *_0) \
2143 HTMLDocumentObj *This = CONTAINING_RECORD(_0, HTMLDocumentObj, I##iface##_iface); \
2144 return This->doc_node->I##iface##_iface.lpVtbl->method(&This->doc_node->I##iface##_iface); \
2147 #define HTMLDOCUMENTOBJ_FWD_TO_NODE_1(iface, method, a) static HRESULT WINAPI DocObj##iface##_##method(I##iface *_0, a _1) \
2149 HTMLDocumentObj *This = CONTAINING_RECORD(_0, HTMLDocumentObj, I##iface##_iface); \
2150 return This->doc_node->I##iface##_iface.lpVtbl->method(&This->doc_node->I##iface##_iface, _1); \
2153 #define HTMLDOCUMENTOBJ_FWD_TO_NODE_2(iface, method, a,b) static HRESULT WINAPI DocObj##iface##_##method(I##iface *_0, a _1, b _2) \
2155 HTMLDocumentObj *This = CONTAINING_RECORD(_0, HTMLDocumentObj, I##iface##_iface); \
2156 return This->doc_node->I##iface##_iface.lpVtbl->method(&This->doc_node->I##iface##_iface, _1, _2); \
2159 #define HTMLDOCUMENTOBJ_FWD_TO_NODE_3(iface, method, a,b,c) static HRESULT WINAPI DocObj##iface##_##method(I##iface *_0, a _1, b _2, c _3) \
2161 HTMLDocumentObj *This = CONTAINING_RECORD(_0, HTMLDocumentObj, I##iface##_iface); \
2162 return This->doc_node->I##iface##_iface.lpVtbl->method(&This->doc_node->I##iface##_iface, _1, _2, _3); \
2165 #define HTMLDOCUMENTOBJ_FWD_TO_NODE_4(iface, method, a,b,c,d) static HRESULT WINAPI DocObj##iface##_##method(I##iface *_0, a _1, b _2, c _3, d _4) \
2167 HTMLDocumentObj *This = CONTAINING_RECORD(_0, HTMLDocumentObj, I##iface##_iface); \
2168 return This->doc_node->I##iface##_iface.lpVtbl->method(&This->doc_node->I##iface##_iface, _1, _2, _3, _4); \
2171 #define HTMLDOCUMENTOBJ_FWD_TO_NODE_5(iface, method, a,b,c,d,e) static HRESULT WINAPI DocObj##iface##_##method(I##iface *_0, a _1, b _2, c _3, d _4, e _5) \
2173 HTMLDocumentObj *This = CONTAINING_RECORD(_0, HTMLDocumentObj, I##iface##_iface); \
2174 return This->doc_node->I##iface##_iface.lpVtbl->method(&This->doc_node->I##iface##_iface, _1, _2, _3, _4, _5); \
2177 /**********************************************************
2178 * IHTMLDocument2 implementation
2180 static inline HTMLDocumentObj
*impl_from_IHTMLDocument2(IHTMLDocument2
*iface
)
2182 return CONTAINING_RECORD(iface
, HTMLDocumentObj
, IHTMLDocument2_iface
);
2185 HTMLDOCUMENTOBJ_IDISPATCH_METHODS(HTMLDocument2
)
2187 static HRESULT WINAPI
DocObjHTMLDocument2_get_Script(IHTMLDocument2
*iface
, IDispatch
**p
)
2189 HTMLDocumentObj
*This
= impl_from_IHTMLDocument2(iface
);
2192 TRACE("(%p)->(%p)\n", This
, p
);
2194 hres
= IHTMLDocument7_get_parentWindow(&This
->IHTMLDocument7_iface
, (IHTMLWindow2
**)p
);
2195 return hres
== S_OK
&& !*p
? E_PENDING
: hres
;
2198 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_all
, IHTMLElementCollection
**)
2199 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_body
, IHTMLElement
**)
2200 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_activeElement
, IHTMLElement
**)
2201 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_images
, IHTMLElementCollection
**)
2202 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_applets
, IHTMLElementCollection
**)
2203 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_links
, IHTMLElementCollection
**)
2204 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_forms
, IHTMLElementCollection
**)
2205 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_anchors
, IHTMLElementCollection
**)
2206 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_title
, BSTR
)
2207 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_title
, BSTR
*)
2208 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_scripts
, IHTMLElementCollection
**)
2210 static HRESULT WINAPI
DocObjHTMLDocument2_put_designMode(IHTMLDocument2
*iface
, BSTR v
)
2212 HTMLDocumentObj
*This
= impl_from_IHTMLDocument2(iface
);
2215 TRACE("(%p)->(%s)\n", This
, debugstr_w(v
));
2217 if(wcsicmp(v
, L
"on")) {
2218 FIXME("Unsupported arg %s\n", debugstr_w(v
));
2222 hres
= setup_edit_mode(This
);
2226 call_property_onchanged(&This
->cp_container
, DISPID_IHTMLDOCUMENT2_DESIGNMODE
);
2230 static HRESULT WINAPI
DocObjHTMLDocument2_get_designMode(IHTMLDocument2
*iface
, BSTR
*p
)
2232 HTMLDocumentObj
*This
= impl_from_IHTMLDocument2(iface
);
2234 FIXME("(%p)->(%p) always returning Off\n", This
, p
);
2237 return E_INVALIDARG
;
2239 *p
= SysAllocString(L
"Off");
2243 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_selection
, IHTMLSelectionObject
**)
2244 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_readyState
, BSTR
*)
2246 static HRESULT WINAPI
DocObjHTMLDocument2_get_frames(IHTMLDocument2
*iface
, IHTMLFramesCollection2
**p
)
2248 HTMLDocumentObj
*This
= impl_from_IHTMLDocument2(iface
);
2250 TRACE("(%p)->(%p)\n", This
, p
);
2253 /* Not implemented by IE */
2256 return IHTMLWindow2_get_frames(&This
->window
->base
.IHTMLWindow2_iface
, p
);
2259 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_embeds
, IHTMLElementCollection
**)
2260 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_plugins
, IHTMLElementCollection
**)
2261 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_alinkColor
, VARIANT
)
2262 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_alinkColor
, VARIANT
*)
2263 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_bgColor
, VARIANT
)
2264 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_bgColor
, VARIANT
*)
2265 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_fgColor
, VARIANT
)
2266 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_fgColor
, VARIANT
*)
2267 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_linkColor
, VARIANT
)
2268 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_linkColor
, VARIANT
*)
2269 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_vlinkColor
, VARIANT
)
2270 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_vlinkColor
, VARIANT
*)
2271 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_referrer
, BSTR
*)
2272 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_location
, IHTMLLocation
**)
2273 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_lastModified
, BSTR
*)
2274 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_URL
, BSTR
)
2275 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_URL
, BSTR
*)
2276 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_domain
, BSTR
)
2277 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_domain
, BSTR
*)
2278 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_cookie
, BSTR
)
2279 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_cookie
, BSTR
*)
2280 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_expando
, VARIANT_BOOL
)
2281 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_expando
, VARIANT_BOOL
*)
2282 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_charset
, BSTR
)
2283 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_charset
, BSTR
*)
2284 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_defaultCharset
, BSTR
)
2285 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_defaultCharset
, BSTR
*)
2286 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_mimeType
, BSTR
*)
2287 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_fileSize
, BSTR
*)
2288 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_fileCreatedDate
, BSTR
*)
2289 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_fileModifiedDate
, BSTR
*)
2290 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_fileUpdatedDate
, BSTR
*)
2291 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_security
, BSTR
*)
2292 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_protocol
, BSTR
*)
2293 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_nameProp
, BSTR
*)
2294 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, write
, SAFEARRAY
*)
2295 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, writeln
, SAFEARRAY
*)
2296 HTMLDOCUMENTOBJ_FWD_TO_NODE_5(HTMLDocument2
, open
, BSTR
,VARIANT
,VARIANT
,VARIANT
,IDispatch
**)
2297 HTMLDOCUMENTOBJ_FWD_TO_NODE_0(HTMLDocument2
, close
)
2298 HTMLDOCUMENTOBJ_FWD_TO_NODE_0(HTMLDocument2
, clear
)
2299 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument2
, queryCommandSupported
, BSTR
,VARIANT_BOOL
*)
2300 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument2
, queryCommandEnabled
, BSTR
,VARIANT_BOOL
*)
2301 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument2
, queryCommandState
, BSTR
,VARIANT_BOOL
*)
2302 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument2
, queryCommandIndeterm
, BSTR
,VARIANT_BOOL
*)
2303 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument2
, queryCommandText
, BSTR
,BSTR
*)
2304 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument2
, queryCommandValue
, BSTR
,VARIANT
*)
2305 HTMLDOCUMENTOBJ_FWD_TO_NODE_4(HTMLDocument2
, execCommand
, BSTR
,VARIANT_BOOL
,VARIANT
,VARIANT_BOOL
*)
2306 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument2
, execCommandShowHelp
, BSTR
,VARIANT_BOOL
*)
2307 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument2
, createElement
, BSTR
,IHTMLElement
**)
2308 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_onhelp
, VARIANT
)
2309 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_onhelp
, VARIANT
*)
2310 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_onclick
, VARIANT
)
2311 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_onclick
, VARIANT
*)
2312 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_ondblclick
, VARIANT
)
2313 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_ondblclick
, VARIANT
*)
2314 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_onkeyup
, VARIANT
)
2315 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_onkeyup
, VARIANT
*)
2316 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_onkeydown
, VARIANT
)
2317 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_onkeydown
, VARIANT
*)
2318 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_onkeypress
, VARIANT
)
2319 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_onkeypress
, VARIANT
*)
2320 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_onmouseup
, VARIANT
)
2321 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_onmouseup
, VARIANT
*)
2322 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_onmousedown
, VARIANT
)
2323 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_onmousedown
, VARIANT
*)
2324 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_onmousemove
, VARIANT
)
2325 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_onmousemove
, VARIANT
*)
2326 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_onmouseout
, VARIANT
)
2327 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_onmouseout
, VARIANT
*)
2328 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_onmouseover
, VARIANT
)
2329 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_onmouseover
, VARIANT
*)
2330 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_onreadystatechange
, VARIANT
)
2331 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_onreadystatechange
, VARIANT
*)
2332 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_onafterupdate
, VARIANT
)
2333 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_onafterupdate
, VARIANT
*)
2334 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_onrowexit
, VARIANT
)
2335 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_onrowexit
, VARIANT
*)
2336 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_onrowenter
, VARIANT
)
2337 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_onrowenter
, VARIANT
*)
2338 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_ondragstart
, VARIANT
)
2339 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_ondragstart
, VARIANT
*)
2340 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_onselectstart
, VARIANT
)
2341 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_onselectstart
, VARIANT
*)
2342 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(HTMLDocument2
, elementFromPoint
, LONG
,LONG
,IHTMLElement
**)
2344 static HRESULT WINAPI
DocObjHTMLDocument2_get_parentWindow(IHTMLDocument2
*iface
, IHTMLWindow2
**p
)
2346 HTMLDocumentObj
*This
= impl_from_IHTMLDocument2(iface
);
2349 TRACE("(%p)->(%p)\n", This
, p
);
2351 hres
= IHTMLDocument7_get_defaultView(&This
->IHTMLDocument7_iface
, p
);
2352 return hres
== S_OK
&& !*p
? E_FAIL
: hres
;
2355 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_styleSheets
, IHTMLStyleSheetsCollection
**)
2356 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_onbeforeupdate
, VARIANT
)
2357 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_onbeforeupdate
, VARIANT
*)
2358 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, put_onerrorupdate
, VARIANT
)
2359 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, get_onerrorupdate
, VARIANT
*)
2360 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument2
, toString
, BSTR
*)
2361 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(HTMLDocument2
, createStyleSheet
, BSTR
,LONG
,IHTMLStyleSheet
**)
2363 static const IHTMLDocument2Vtbl DocObjHTMLDocument2Vtbl
= {
2364 DocObjHTMLDocument2_QueryInterface
,
2365 DocObjHTMLDocument2_AddRef
,
2366 DocObjHTMLDocument2_Release
,
2367 DocObjHTMLDocument2_GetTypeInfoCount
,
2368 DocObjHTMLDocument2_GetTypeInfo
,
2369 DocObjHTMLDocument2_GetIDsOfNames
,
2370 DocObjHTMLDocument2_Invoke
,
2371 DocObjHTMLDocument2_get_Script
,
2372 DocObjHTMLDocument2_get_all
,
2373 DocObjHTMLDocument2_get_body
,
2374 DocObjHTMLDocument2_get_activeElement
,
2375 DocObjHTMLDocument2_get_images
,
2376 DocObjHTMLDocument2_get_applets
,
2377 DocObjHTMLDocument2_get_links
,
2378 DocObjHTMLDocument2_get_forms
,
2379 DocObjHTMLDocument2_get_anchors
,
2380 DocObjHTMLDocument2_put_title
,
2381 DocObjHTMLDocument2_get_title
,
2382 DocObjHTMLDocument2_get_scripts
,
2383 DocObjHTMLDocument2_put_designMode
,
2384 DocObjHTMLDocument2_get_designMode
,
2385 DocObjHTMLDocument2_get_selection
,
2386 DocObjHTMLDocument2_get_readyState
,
2387 DocObjHTMLDocument2_get_frames
,
2388 DocObjHTMLDocument2_get_embeds
,
2389 DocObjHTMLDocument2_get_plugins
,
2390 DocObjHTMLDocument2_put_alinkColor
,
2391 DocObjHTMLDocument2_get_alinkColor
,
2392 DocObjHTMLDocument2_put_bgColor
,
2393 DocObjHTMLDocument2_get_bgColor
,
2394 DocObjHTMLDocument2_put_fgColor
,
2395 DocObjHTMLDocument2_get_fgColor
,
2396 DocObjHTMLDocument2_put_linkColor
,
2397 DocObjHTMLDocument2_get_linkColor
,
2398 DocObjHTMLDocument2_put_vlinkColor
,
2399 DocObjHTMLDocument2_get_vlinkColor
,
2400 DocObjHTMLDocument2_get_referrer
,
2401 DocObjHTMLDocument2_get_location
,
2402 DocObjHTMLDocument2_get_lastModified
,
2403 DocObjHTMLDocument2_put_URL
,
2404 DocObjHTMLDocument2_get_URL
,
2405 DocObjHTMLDocument2_put_domain
,
2406 DocObjHTMLDocument2_get_domain
,
2407 DocObjHTMLDocument2_put_cookie
,
2408 DocObjHTMLDocument2_get_cookie
,
2409 DocObjHTMLDocument2_put_expando
,
2410 DocObjHTMLDocument2_get_expando
,
2411 DocObjHTMLDocument2_put_charset
,
2412 DocObjHTMLDocument2_get_charset
,
2413 DocObjHTMLDocument2_put_defaultCharset
,
2414 DocObjHTMLDocument2_get_defaultCharset
,
2415 DocObjHTMLDocument2_get_mimeType
,
2416 DocObjHTMLDocument2_get_fileSize
,
2417 DocObjHTMLDocument2_get_fileCreatedDate
,
2418 DocObjHTMLDocument2_get_fileModifiedDate
,
2419 DocObjHTMLDocument2_get_fileUpdatedDate
,
2420 DocObjHTMLDocument2_get_security
,
2421 DocObjHTMLDocument2_get_protocol
,
2422 DocObjHTMLDocument2_get_nameProp
,
2423 DocObjHTMLDocument2_write
,
2424 DocObjHTMLDocument2_writeln
,
2425 DocObjHTMLDocument2_open
,
2426 DocObjHTMLDocument2_close
,
2427 DocObjHTMLDocument2_clear
,
2428 DocObjHTMLDocument2_queryCommandSupported
,
2429 DocObjHTMLDocument2_queryCommandEnabled
,
2430 DocObjHTMLDocument2_queryCommandState
,
2431 DocObjHTMLDocument2_queryCommandIndeterm
,
2432 DocObjHTMLDocument2_queryCommandText
,
2433 DocObjHTMLDocument2_queryCommandValue
,
2434 DocObjHTMLDocument2_execCommand
,
2435 DocObjHTMLDocument2_execCommandShowHelp
,
2436 DocObjHTMLDocument2_createElement
,
2437 DocObjHTMLDocument2_put_onhelp
,
2438 DocObjHTMLDocument2_get_onhelp
,
2439 DocObjHTMLDocument2_put_onclick
,
2440 DocObjHTMLDocument2_get_onclick
,
2441 DocObjHTMLDocument2_put_ondblclick
,
2442 DocObjHTMLDocument2_get_ondblclick
,
2443 DocObjHTMLDocument2_put_onkeyup
,
2444 DocObjHTMLDocument2_get_onkeyup
,
2445 DocObjHTMLDocument2_put_onkeydown
,
2446 DocObjHTMLDocument2_get_onkeydown
,
2447 DocObjHTMLDocument2_put_onkeypress
,
2448 DocObjHTMLDocument2_get_onkeypress
,
2449 DocObjHTMLDocument2_put_onmouseup
,
2450 DocObjHTMLDocument2_get_onmouseup
,
2451 DocObjHTMLDocument2_put_onmousedown
,
2452 DocObjHTMLDocument2_get_onmousedown
,
2453 DocObjHTMLDocument2_put_onmousemove
,
2454 DocObjHTMLDocument2_get_onmousemove
,
2455 DocObjHTMLDocument2_put_onmouseout
,
2456 DocObjHTMLDocument2_get_onmouseout
,
2457 DocObjHTMLDocument2_put_onmouseover
,
2458 DocObjHTMLDocument2_get_onmouseover
,
2459 DocObjHTMLDocument2_put_onreadystatechange
,
2460 DocObjHTMLDocument2_get_onreadystatechange
,
2461 DocObjHTMLDocument2_put_onafterupdate
,
2462 DocObjHTMLDocument2_get_onafterupdate
,
2463 DocObjHTMLDocument2_put_onrowexit
,
2464 DocObjHTMLDocument2_get_onrowexit
,
2465 DocObjHTMLDocument2_put_onrowenter
,
2466 DocObjHTMLDocument2_get_onrowenter
,
2467 DocObjHTMLDocument2_put_ondragstart
,
2468 DocObjHTMLDocument2_get_ondragstart
,
2469 DocObjHTMLDocument2_put_onselectstart
,
2470 DocObjHTMLDocument2_get_onselectstart
,
2471 DocObjHTMLDocument2_elementFromPoint
,
2472 DocObjHTMLDocument2_get_parentWindow
,
2473 DocObjHTMLDocument2_get_styleSheets
,
2474 DocObjHTMLDocument2_put_onbeforeupdate
,
2475 DocObjHTMLDocument2_get_onbeforeupdate
,
2476 DocObjHTMLDocument2_put_onerrorupdate
,
2477 DocObjHTMLDocument2_get_onerrorupdate
,
2478 DocObjHTMLDocument2_toString
,
2479 DocObjHTMLDocument2_createStyleSheet
2482 /**********************************************************
2483 * IHTMLDocument3 implementation
2485 static inline HTMLDocumentObj
*impl_from_IHTMLDocument3(IHTMLDocument3
*iface
)
2487 return CONTAINING_RECORD(iface
, HTMLDocumentObj
, IHTMLDocument3_iface
);
2490 HTMLDOCUMENTOBJ_IDISPATCH_METHODS(HTMLDocument3
)
2491 HTMLDOCUMENTOBJ_FWD_TO_NODE_0(HTMLDocument3
, releaseCapture
)
2492 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, recalc
, VARIANT_BOOL
)
2493 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument3
, createTextNode
, BSTR
,IHTMLDOMNode
**)
2494 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, get_documentElement
, IHTMLElement
**)
2495 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, get_uniqueID
, BSTR
*)
2496 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(HTMLDocument3
, attachEvent
, BSTR
,IDispatch
*,VARIANT_BOOL
*)
2497 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument3
, detachEvent
, BSTR
,IDispatch
*)
2498 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, put_onrowsdelete
, VARIANT
)
2499 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, get_onrowsdelete
, VARIANT
*)
2500 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, put_onrowsinserted
, VARIANT
)
2501 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, get_onrowsinserted
, VARIANT
*)
2502 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, put_oncellchange
, VARIANT
)
2503 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, get_oncellchange
, VARIANT
*)
2504 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, put_ondatasetchanged
, VARIANT
)
2505 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, get_ondatasetchanged
, VARIANT
*)
2506 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, put_ondataavailable
, VARIANT
)
2507 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, get_ondataavailable
, VARIANT
*)
2508 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, put_ondatasetcomplete
, VARIANT
)
2509 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, get_ondatasetcomplete
, VARIANT
*)
2510 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, put_onpropertychange
, VARIANT
)
2511 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, get_onpropertychange
, VARIANT
*)
2512 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, put_dir
, BSTR
)
2513 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, get_dir
, BSTR
*)
2514 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, put_oncontextmenu
, VARIANT
)
2515 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, get_oncontextmenu
, VARIANT
*)
2516 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, put_onstop
, VARIANT
)
2517 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, get_onstop
, VARIANT
*)
2518 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, createDocumentFragment
, IHTMLDocument2
**)
2520 static HRESULT WINAPI
DocObjHTMLDocument3_get_parentDocument(IHTMLDocument3
*iface
, IHTMLDocument2
**p
)
2522 HTMLDocumentObj
*This
= impl_from_IHTMLDocument3(iface
);
2523 FIXME("(%p)->(%p)\n", This
, p
);
2527 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, put_enableDownload
, VARIANT_BOOL
)
2528 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, get_enableDownload
, VARIANT_BOOL
*)
2529 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, put_baseUrl
, BSTR
)
2530 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, get_baseUrl
, BSTR
*)
2531 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, get_childNodes
, IDispatch
**)
2532 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, put_inheritStyleSheets
, VARIANT_BOOL
)
2533 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, get_inheritStyleSheets
, VARIANT_BOOL
*)
2534 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, put_onbeforeeditfocus
, VARIANT
)
2535 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument3
, get_onbeforeeditfocus
, VARIANT
*)
2536 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument3
, getElementsByName
, BSTR
,IHTMLElementCollection
**)
2537 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument3
, getElementById
, BSTR
,IHTMLElement
**)
2538 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument3
, getElementsByTagName
, BSTR
,IHTMLElementCollection
**)
2540 static const IHTMLDocument3Vtbl DocObjHTMLDocument3Vtbl
= {
2541 DocObjHTMLDocument3_QueryInterface
,
2542 DocObjHTMLDocument3_AddRef
,
2543 DocObjHTMLDocument3_Release
,
2544 DocObjHTMLDocument3_GetTypeInfoCount
,
2545 DocObjHTMLDocument3_GetTypeInfo
,
2546 DocObjHTMLDocument3_GetIDsOfNames
,
2547 DocObjHTMLDocument3_Invoke
,
2548 DocObjHTMLDocument3_releaseCapture
,
2549 DocObjHTMLDocument3_recalc
,
2550 DocObjHTMLDocument3_createTextNode
,
2551 DocObjHTMLDocument3_get_documentElement
,
2552 DocObjHTMLDocument3_get_uniqueID
,
2553 DocObjHTMLDocument3_attachEvent
,
2554 DocObjHTMLDocument3_detachEvent
,
2555 DocObjHTMLDocument3_put_onrowsdelete
,
2556 DocObjHTMLDocument3_get_onrowsdelete
,
2557 DocObjHTMLDocument3_put_onrowsinserted
,
2558 DocObjHTMLDocument3_get_onrowsinserted
,
2559 DocObjHTMLDocument3_put_oncellchange
,
2560 DocObjHTMLDocument3_get_oncellchange
,
2561 DocObjHTMLDocument3_put_ondatasetchanged
,
2562 DocObjHTMLDocument3_get_ondatasetchanged
,
2563 DocObjHTMLDocument3_put_ondataavailable
,
2564 DocObjHTMLDocument3_get_ondataavailable
,
2565 DocObjHTMLDocument3_put_ondatasetcomplete
,
2566 DocObjHTMLDocument3_get_ondatasetcomplete
,
2567 DocObjHTMLDocument3_put_onpropertychange
,
2568 DocObjHTMLDocument3_get_onpropertychange
,
2569 DocObjHTMLDocument3_put_dir
,
2570 DocObjHTMLDocument3_get_dir
,
2571 DocObjHTMLDocument3_put_oncontextmenu
,
2572 DocObjHTMLDocument3_get_oncontextmenu
,
2573 DocObjHTMLDocument3_put_onstop
,
2574 DocObjHTMLDocument3_get_onstop
,
2575 DocObjHTMLDocument3_createDocumentFragment
,
2576 DocObjHTMLDocument3_get_parentDocument
,
2577 DocObjHTMLDocument3_put_enableDownload
,
2578 DocObjHTMLDocument3_get_enableDownload
,
2579 DocObjHTMLDocument3_put_baseUrl
,
2580 DocObjHTMLDocument3_get_baseUrl
,
2581 DocObjHTMLDocument3_get_childNodes
,
2582 DocObjHTMLDocument3_put_inheritStyleSheets
,
2583 DocObjHTMLDocument3_get_inheritStyleSheets
,
2584 DocObjHTMLDocument3_put_onbeforeeditfocus
,
2585 DocObjHTMLDocument3_get_onbeforeeditfocus
,
2586 DocObjHTMLDocument3_getElementsByName
,
2587 DocObjHTMLDocument3_getElementById
,
2588 DocObjHTMLDocument3_getElementsByTagName
2591 /**********************************************************
2592 * IHTMLDocument4 implementation
2594 HTMLDOCUMENTOBJ_IDISPATCH_METHODS(HTMLDocument4
)
2595 HTMLDOCUMENTOBJ_FWD_TO_NODE_0(HTMLDocument4
, focus
)
2596 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument4
, hasFocus
, VARIANT_BOOL
*)
2597 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument4
, put_onselectionchange
, VARIANT
)
2598 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument4
, get_onselectionchange
, VARIANT
*)
2599 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument4
, get_namespaces
, IDispatch
**)
2600 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(HTMLDocument4
, createDocumentFromUrl
, BSTR
,BSTR
,IHTMLDocument2
**)
2601 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument4
, put_media
, BSTR
)
2602 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument4
, get_media
, BSTR
*)
2603 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument4
, createEventObject
, VARIANT
*,IHTMLEventObj
**)
2604 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(HTMLDocument4
, fireEvent
, BSTR
,VARIANT
*,VARIANT_BOOL
*)
2605 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument4
, createRenderStyle
, BSTR
,IHTMLRenderStyle
**)
2606 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument4
, put_oncontrolselect
, VARIANT
)
2607 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument4
, get_oncontrolselect
, VARIANT
*)
2608 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument4
, get_URLUnencoded
, BSTR
*)
2610 static const IHTMLDocument4Vtbl DocObjHTMLDocument4Vtbl
= {
2611 DocObjHTMLDocument4_QueryInterface
,
2612 DocObjHTMLDocument4_AddRef
,
2613 DocObjHTMLDocument4_Release
,
2614 DocObjHTMLDocument4_GetTypeInfoCount
,
2615 DocObjHTMLDocument4_GetTypeInfo
,
2616 DocObjHTMLDocument4_GetIDsOfNames
,
2617 DocObjHTMLDocument4_Invoke
,
2618 DocObjHTMLDocument4_focus
,
2619 DocObjHTMLDocument4_hasFocus
,
2620 DocObjHTMLDocument4_put_onselectionchange
,
2621 DocObjHTMLDocument4_get_onselectionchange
,
2622 DocObjHTMLDocument4_get_namespaces
,
2623 DocObjHTMLDocument4_createDocumentFromUrl
,
2624 DocObjHTMLDocument4_put_media
,
2625 DocObjHTMLDocument4_get_media
,
2626 DocObjHTMLDocument4_createEventObject
,
2627 DocObjHTMLDocument4_fireEvent
,
2628 DocObjHTMLDocument4_createRenderStyle
,
2629 DocObjHTMLDocument4_put_oncontrolselect
,
2630 DocObjHTMLDocument4_get_oncontrolselect
,
2631 DocObjHTMLDocument4_get_URLUnencoded
2634 /**********************************************************
2635 * IHTMLDocument5 implementation
2637 HTMLDOCUMENTOBJ_IDISPATCH_METHODS(HTMLDocument5
)
2638 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument5
, put_onmousewheel
, VARIANT
)
2639 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument5
, get_onmousewheel
, VARIANT
*)
2640 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument5
, get_doctype
, IHTMLDOMNode
**)
2641 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument5
, get_implementation
, IHTMLDOMImplementation
**)
2642 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument5
, createAttribute
, BSTR
,IHTMLDOMAttribute
**)
2643 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument5
, createComment
, BSTR
,IHTMLDOMNode
**)
2644 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument5
, put_onfocusin
, VARIANT
)
2645 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument5
, get_onfocusin
, VARIANT
*)
2646 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument5
, put_onfocusout
, VARIANT
)
2647 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument5
, get_onfocusout
, VARIANT
*)
2648 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument5
, put_onactivate
, VARIANT
)
2649 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument5
, get_onactivate
, VARIANT
*)
2650 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument5
, put_ondeactivate
, VARIANT
)
2651 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument5
, get_ondeactivate
, VARIANT
*)
2652 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument5
, put_onbeforeactivate
, VARIANT
)
2653 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument5
, get_onbeforeactivate
, VARIANT
*)
2654 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument5
, put_onbeforedeactivate
, VARIANT
)
2655 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument5
, get_onbeforedeactivate
, VARIANT
*)
2656 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument5
, get_compatMode
, BSTR
*)
2658 static const IHTMLDocument5Vtbl DocObjHTMLDocument5Vtbl
= {
2659 DocObjHTMLDocument5_QueryInterface
,
2660 DocObjHTMLDocument5_AddRef
,
2661 DocObjHTMLDocument5_Release
,
2662 DocObjHTMLDocument5_GetTypeInfoCount
,
2663 DocObjHTMLDocument5_GetTypeInfo
,
2664 DocObjHTMLDocument5_GetIDsOfNames
,
2665 DocObjHTMLDocument5_Invoke
,
2666 DocObjHTMLDocument5_put_onmousewheel
,
2667 DocObjHTMLDocument5_get_onmousewheel
,
2668 DocObjHTMLDocument5_get_doctype
,
2669 DocObjHTMLDocument5_get_implementation
,
2670 DocObjHTMLDocument5_createAttribute
,
2671 DocObjHTMLDocument5_createComment
,
2672 DocObjHTMLDocument5_put_onfocusin
,
2673 DocObjHTMLDocument5_get_onfocusin
,
2674 DocObjHTMLDocument5_put_onfocusout
,
2675 DocObjHTMLDocument5_get_onfocusout
,
2676 DocObjHTMLDocument5_put_onactivate
,
2677 DocObjHTMLDocument5_get_onactivate
,
2678 DocObjHTMLDocument5_put_ondeactivate
,
2679 DocObjHTMLDocument5_get_ondeactivate
,
2680 DocObjHTMLDocument5_put_onbeforeactivate
,
2681 DocObjHTMLDocument5_get_onbeforeactivate
,
2682 DocObjHTMLDocument5_put_onbeforedeactivate
,
2683 DocObjHTMLDocument5_get_onbeforedeactivate
,
2684 DocObjHTMLDocument5_get_compatMode
2687 /**********************************************************
2688 * IHTMLDocument6 implementation
2690 HTMLDOCUMENTOBJ_IDISPATCH_METHODS(HTMLDocument6
)
2691 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument6
, get_compatible
, IHTMLDocumentCompatibleInfoCollection
**)
2692 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument6
, get_documentMode
, VARIANT
*)
2693 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument6
, put_onstorage
, VARIANT
)
2694 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument6
, get_onstorage
, VARIANT
*)
2695 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument6
, put_onstoragecommit
, VARIANT
)
2696 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument6
, get_onstoragecommit
, VARIANT
*)
2697 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument6
, getElementById
, BSTR
,IHTMLElement2
**)
2698 HTMLDOCUMENTOBJ_FWD_TO_NODE_0(HTMLDocument6
, updateSettings
)
2700 static const IHTMLDocument6Vtbl DocObjHTMLDocument6Vtbl
= {
2701 DocObjHTMLDocument6_QueryInterface
,
2702 DocObjHTMLDocument6_AddRef
,
2703 DocObjHTMLDocument6_Release
,
2704 DocObjHTMLDocument6_GetTypeInfoCount
,
2705 DocObjHTMLDocument6_GetTypeInfo
,
2706 DocObjHTMLDocument6_GetIDsOfNames
,
2707 DocObjHTMLDocument6_Invoke
,
2708 DocObjHTMLDocument6_get_compatible
,
2709 DocObjHTMLDocument6_get_documentMode
,
2710 DocObjHTMLDocument6_put_onstorage
,
2711 DocObjHTMLDocument6_get_onstorage
,
2712 DocObjHTMLDocument6_put_onstoragecommit
,
2713 DocObjHTMLDocument6_get_onstoragecommit
,
2714 DocObjHTMLDocument6_getElementById
,
2715 DocObjHTMLDocument6_updateSettings
2718 /**********************************************************
2719 * IHTMLDocument7 implementation
2721 static inline HTMLDocumentObj
*impl_from_IHTMLDocument7(IHTMLDocument7
*iface
)
2723 return CONTAINING_RECORD(iface
, HTMLDocumentObj
, IHTMLDocument7_iface
);
2726 HTMLDOCUMENTOBJ_IDISPATCH_METHODS(HTMLDocument7
)
2728 static HRESULT WINAPI
DocObjHTMLDocument7_get_defaultView(IHTMLDocument7
*iface
, IHTMLWindow2
**p
)
2730 HTMLDocumentObj
*This
= impl_from_IHTMLDocument7(iface
);
2732 TRACE("(%p)->(%p)\n", This
, p
);
2735 *p
= &This
->window
->base
.IHTMLWindow2_iface
;
2736 IHTMLWindow2_AddRef(*p
);
2743 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument7
, createCDATASection
, BSTR
,IHTMLDOMNode
**)
2744 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, getSelection
, IHTMLSelection
**)
2745 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(HTMLDocument7
, getElementsByTagNameNS
, VARIANT
*,BSTR
,IHTMLElementCollection
**)
2746 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(HTMLDocument7
, createElementNS
, VARIANT
*,BSTR
,IHTMLElement
**)
2747 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(HTMLDocument7
, createAttributeNS
, VARIANT
*,BSTR
,IHTMLDOMAttribute
**)
2748 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onmsthumbnailclick
, VARIANT
)
2749 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onmsthumbnailclick
, VARIANT
*)
2750 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_characterSet
, BSTR
*)
2751 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument7
, createElement
, BSTR
,IHTMLElement
**)
2752 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument7
, createAttribute
, BSTR
,IHTMLDOMAttribute
**)
2753 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument7
, getElementsByClassName
, BSTR
,IHTMLElementCollection
**)
2754 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(HTMLDocument7
, createProcessingInstruction
, BSTR
,BSTR
,IDOMProcessingInstruction
**)
2755 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(HTMLDocument7
, adoptNode
, IHTMLDOMNode
*,IHTMLDOMNode3
**)
2756 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onmssitemodejumplistitemremoved
, VARIANT
)
2757 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onmssitemodejumplistitemremoved
, VARIANT
*)
2758 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_all
, IHTMLElementCollection
**)
2759 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_inputEncoding
, BSTR
*)
2760 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_xmlEncoding
, BSTR
*)
2761 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_xmlStandalone
, VARIANT_BOOL
)
2762 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_xmlStandalone
, VARIANT_BOOL
*)
2763 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_xmlVersion
, BSTR
)
2764 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_xmlVersion
, BSTR
*)
2765 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, hasAttributes
, VARIANT_BOOL
*)
2766 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onabort
, VARIANT
)
2767 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onabort
, VARIANT
*)
2768 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onblur
, VARIANT
)
2769 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onblur
, VARIANT
*)
2770 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_oncanplay
, VARIANT
)
2771 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_oncanplay
, VARIANT
*)
2772 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_oncanplaythrough
, VARIANT
)
2773 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_oncanplaythrough
, VARIANT
*)
2774 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onchange
, VARIANT
)
2775 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onchange
, VARIANT
*)
2776 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_ondrag
, VARIANT
)
2777 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_ondrag
, VARIANT
*)
2778 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_ondragend
, VARIANT
)
2779 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_ondragend
, VARIANT
*)
2780 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_ondragenter
, VARIANT
)
2781 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_ondragenter
, VARIANT
*)
2782 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_ondragleave
, VARIANT
)
2783 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_ondragleave
, VARIANT
*)
2784 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_ondragover
, VARIANT
)
2785 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_ondragover
, VARIANT
*)
2786 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_ondrop
, VARIANT
)
2787 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_ondrop
, VARIANT
*)
2788 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_ondurationchange
, VARIANT
)
2789 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_ondurationchange
, VARIANT
*)
2790 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onemptied
, VARIANT
)
2791 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onemptied
, VARIANT
*)
2792 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onended
, VARIANT
)
2793 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onended
, VARIANT
*)
2794 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onerror
, VARIANT
)
2795 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onerror
, VARIANT
*)
2796 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onfocus
, VARIANT
)
2797 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onfocus
, VARIANT
*)
2798 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_oninput
, VARIANT
)
2799 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_oninput
, VARIANT
*)
2800 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onload
, VARIANT
)
2801 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onload
, VARIANT
*)
2802 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onloadeddata
, VARIANT
)
2803 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onloadeddata
, VARIANT
*)
2804 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onloadedmetadata
, VARIANT
)
2805 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onloadedmetadata
, VARIANT
*)
2806 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onloadstart
, VARIANT
)
2807 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onloadstart
, VARIANT
*)
2808 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onpause
, VARIANT
)
2809 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onpause
, VARIANT
*)
2810 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onplay
, VARIANT
)
2811 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onplay
, VARIANT
*)
2812 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onplaying
, VARIANT
)
2813 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onplaying
, VARIANT
*)
2814 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onprogress
, VARIANT
)
2815 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onprogress
, VARIANT
*)
2816 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onratechange
, VARIANT
)
2817 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onratechange
, VARIANT
*)
2818 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onreset
, VARIANT
)
2819 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onreset
, VARIANT
*)
2820 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onscroll
, VARIANT
)
2821 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onscroll
, VARIANT
*)
2822 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onseeked
, VARIANT
)
2823 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onseeked
, VARIANT
*)
2824 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onseeking
, VARIANT
)
2825 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onseeking
, VARIANT
*)
2826 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onselect
, VARIANT
)
2827 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onselect
, VARIANT
*)
2828 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onstalled
, VARIANT
)
2829 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onstalled
, VARIANT
*)
2830 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onsubmit
, VARIANT
)
2831 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onsubmit
, VARIANT
*)
2832 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onsuspend
, VARIANT
)
2833 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onsuspend
, VARIANT
*)
2834 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_ontimeupdate
, VARIANT
)
2835 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_ontimeupdate
, VARIANT
*)
2836 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onvolumechange
, VARIANT
)
2837 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onvolumechange
, VARIANT
*)
2838 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, put_onwaiting
, VARIANT
)
2839 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_onwaiting
, VARIANT
*)
2840 HTMLDOCUMENTOBJ_FWD_TO_NODE_0(HTMLDocument7
, normalize
)
2841 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(HTMLDocument7
, importNode
, IHTMLDOMNode
*,VARIANT_BOOL
,IHTMLDOMNode3
**)
2843 static HRESULT WINAPI
DocObjHTMLDocument7_get_parentWindow(IHTMLDocument7
*iface
, IHTMLWindow2
**p
)
2845 HTMLDocumentObj
*This
= impl_from_IHTMLDocument7(iface
);
2847 TRACE("(%p)->(%p)\n", This
, p
);
2849 return IHTMLDocument7_get_defaultView(&This
->IHTMLDocument7_iface
, p
);
2852 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, putref_body
, IHTMLElement
*)
2853 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_body
, IHTMLElement
**)
2854 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(HTMLDocument7
, get_head
, IHTMLElement
**)
2856 static const IHTMLDocument7Vtbl DocObjHTMLDocument7Vtbl
= {
2857 DocObjHTMLDocument7_QueryInterface
,
2858 DocObjHTMLDocument7_AddRef
,
2859 DocObjHTMLDocument7_Release
,
2860 DocObjHTMLDocument7_GetTypeInfoCount
,
2861 DocObjHTMLDocument7_GetTypeInfo
,
2862 DocObjHTMLDocument7_GetIDsOfNames
,
2863 DocObjHTMLDocument7_Invoke
,
2864 DocObjHTMLDocument7_get_defaultView
,
2865 DocObjHTMLDocument7_createCDATASection
,
2866 DocObjHTMLDocument7_getSelection
,
2867 DocObjHTMLDocument7_getElementsByTagNameNS
,
2868 DocObjHTMLDocument7_createElementNS
,
2869 DocObjHTMLDocument7_createAttributeNS
,
2870 DocObjHTMLDocument7_put_onmsthumbnailclick
,
2871 DocObjHTMLDocument7_get_onmsthumbnailclick
,
2872 DocObjHTMLDocument7_get_characterSet
,
2873 DocObjHTMLDocument7_createElement
,
2874 DocObjHTMLDocument7_createAttribute
,
2875 DocObjHTMLDocument7_getElementsByClassName
,
2876 DocObjHTMLDocument7_createProcessingInstruction
,
2877 DocObjHTMLDocument7_adoptNode
,
2878 DocObjHTMLDocument7_put_onmssitemodejumplistitemremoved
,
2879 DocObjHTMLDocument7_get_onmssitemodejumplistitemremoved
,
2880 DocObjHTMLDocument7_get_all
,
2881 DocObjHTMLDocument7_get_inputEncoding
,
2882 DocObjHTMLDocument7_get_xmlEncoding
,
2883 DocObjHTMLDocument7_put_xmlStandalone
,
2884 DocObjHTMLDocument7_get_xmlStandalone
,
2885 DocObjHTMLDocument7_put_xmlVersion
,
2886 DocObjHTMLDocument7_get_xmlVersion
,
2887 DocObjHTMLDocument7_hasAttributes
,
2888 DocObjHTMLDocument7_put_onabort
,
2889 DocObjHTMLDocument7_get_onabort
,
2890 DocObjHTMLDocument7_put_onblur
,
2891 DocObjHTMLDocument7_get_onblur
,
2892 DocObjHTMLDocument7_put_oncanplay
,
2893 DocObjHTMLDocument7_get_oncanplay
,
2894 DocObjHTMLDocument7_put_oncanplaythrough
,
2895 DocObjHTMLDocument7_get_oncanplaythrough
,
2896 DocObjHTMLDocument7_put_onchange
,
2897 DocObjHTMLDocument7_get_onchange
,
2898 DocObjHTMLDocument7_put_ondrag
,
2899 DocObjHTMLDocument7_get_ondrag
,
2900 DocObjHTMLDocument7_put_ondragend
,
2901 DocObjHTMLDocument7_get_ondragend
,
2902 DocObjHTMLDocument7_put_ondragenter
,
2903 DocObjHTMLDocument7_get_ondragenter
,
2904 DocObjHTMLDocument7_put_ondragleave
,
2905 DocObjHTMLDocument7_get_ondragleave
,
2906 DocObjHTMLDocument7_put_ondragover
,
2907 DocObjHTMLDocument7_get_ondragover
,
2908 DocObjHTMLDocument7_put_ondrop
,
2909 DocObjHTMLDocument7_get_ondrop
,
2910 DocObjHTMLDocument7_put_ondurationchange
,
2911 DocObjHTMLDocument7_get_ondurationchange
,
2912 DocObjHTMLDocument7_put_onemptied
,
2913 DocObjHTMLDocument7_get_onemptied
,
2914 DocObjHTMLDocument7_put_onended
,
2915 DocObjHTMLDocument7_get_onended
,
2916 DocObjHTMLDocument7_put_onerror
,
2917 DocObjHTMLDocument7_get_onerror
,
2918 DocObjHTMLDocument7_put_onfocus
,
2919 DocObjHTMLDocument7_get_onfocus
,
2920 DocObjHTMLDocument7_put_oninput
,
2921 DocObjHTMLDocument7_get_oninput
,
2922 DocObjHTMLDocument7_put_onload
,
2923 DocObjHTMLDocument7_get_onload
,
2924 DocObjHTMLDocument7_put_onloadeddata
,
2925 DocObjHTMLDocument7_get_onloadeddata
,
2926 DocObjHTMLDocument7_put_onloadedmetadata
,
2927 DocObjHTMLDocument7_get_onloadedmetadata
,
2928 DocObjHTMLDocument7_put_onloadstart
,
2929 DocObjHTMLDocument7_get_onloadstart
,
2930 DocObjHTMLDocument7_put_onpause
,
2931 DocObjHTMLDocument7_get_onpause
,
2932 DocObjHTMLDocument7_put_onplay
,
2933 DocObjHTMLDocument7_get_onplay
,
2934 DocObjHTMLDocument7_put_onplaying
,
2935 DocObjHTMLDocument7_get_onplaying
,
2936 DocObjHTMLDocument7_put_onprogress
,
2937 DocObjHTMLDocument7_get_onprogress
,
2938 DocObjHTMLDocument7_put_onratechange
,
2939 DocObjHTMLDocument7_get_onratechange
,
2940 DocObjHTMLDocument7_put_onreset
,
2941 DocObjHTMLDocument7_get_onreset
,
2942 DocObjHTMLDocument7_put_onscroll
,
2943 DocObjHTMLDocument7_get_onscroll
,
2944 DocObjHTMLDocument7_put_onseeked
,
2945 DocObjHTMLDocument7_get_onseeked
,
2946 DocObjHTMLDocument7_put_onseeking
,
2947 DocObjHTMLDocument7_get_onseeking
,
2948 DocObjHTMLDocument7_put_onselect
,
2949 DocObjHTMLDocument7_get_onselect
,
2950 DocObjHTMLDocument7_put_onstalled
,
2951 DocObjHTMLDocument7_get_onstalled
,
2952 DocObjHTMLDocument7_put_onsubmit
,
2953 DocObjHTMLDocument7_get_onsubmit
,
2954 DocObjHTMLDocument7_put_onsuspend
,
2955 DocObjHTMLDocument7_get_onsuspend
,
2956 DocObjHTMLDocument7_put_ontimeupdate
,
2957 DocObjHTMLDocument7_get_ontimeupdate
,
2958 DocObjHTMLDocument7_put_onvolumechange
,
2959 DocObjHTMLDocument7_get_onvolumechange
,
2960 DocObjHTMLDocument7_put_onwaiting
,
2961 DocObjHTMLDocument7_get_onwaiting
,
2962 DocObjHTMLDocument7_normalize
,
2963 DocObjHTMLDocument7_importNode
,
2964 DocObjHTMLDocument7_get_parentWindow
,
2965 DocObjHTMLDocument7_putref_body
,
2966 DocObjHTMLDocument7_get_body
,
2967 DocObjHTMLDocument7_get_head
2970 /**********************************************************
2971 * ISupportErrorInfo implementation
2973 HTMLDOCUMENTOBJ_IUNKNOWN_METHODS(SupportErrorInfo
)
2975 static HRESULT WINAPI
DocObjSupportErrorInfo_InterfaceSupportsErrorInfo(ISupportErrorInfo
*iface
, REFIID riid
)
2977 FIXME("(%p)->(%s)\n", iface
, debugstr_mshtml_guid(riid
));
2981 static const ISupportErrorInfoVtbl DocObjSupportErrorInfoVtbl
= {
2982 DocObjSupportErrorInfo_QueryInterface
,
2983 DocObjSupportErrorInfo_AddRef
,
2984 DocObjSupportErrorInfo_Release
,
2985 DocObjSupportErrorInfo_InterfaceSupportsErrorInfo
2988 /**********************************************************
2989 * IProvideMultipleClassInfo implementation
2991 static inline HTMLDocumentObj
*impl_from_IProvideMultipleClassInfo(IProvideMultipleClassInfo
*iface
)
2993 return CONTAINING_RECORD(iface
, HTMLDocumentObj
, IProvideMultipleClassInfo_iface
);
2996 HTMLDOCUMENTOBJ_IUNKNOWN_METHODS(ProvideMultipleClassInfo
)
2998 static HRESULT WINAPI
DocObjProvideMultipleClassInfo_GetClassInfo(IProvideMultipleClassInfo
*iface
, ITypeInfo
**ppTI
)
3000 HTMLDocumentObj
*This
= impl_from_IProvideMultipleClassInfo(iface
);
3001 TRACE("(%p)->(%p)\n", This
, ppTI
);
3002 return get_class_typeinfo(&CLSID_HTMLDocument
, ppTI
);
3005 static HRESULT WINAPI
DocObjProvideMultipleClassInfo_GetGUID(IProvideMultipleClassInfo
*iface
, DWORD dwGuidKind
, GUID
*pGUID
)
3007 HTMLDocumentObj
*This
= impl_from_IProvideMultipleClassInfo(iface
);
3008 FIXME("(%p)->(%lu %p)\n", This
, dwGuidKind
, pGUID
);
3012 static HRESULT WINAPI
DocObjProvideMultipleClassInfo_GetMultiTypeInfoCount(IProvideMultipleClassInfo
*iface
, ULONG
*pcti
)
3014 HTMLDocumentObj
*This
= impl_from_IProvideMultipleClassInfo(iface
);
3015 FIXME("(%p)->(%p)\n", This
, pcti
);
3020 static HRESULT WINAPI
DocObjProvideMultipleClassInfo_GetInfoOfIndex(IProvideMultipleClassInfo
*iface
, ULONG iti
,
3021 DWORD dwFlags
, ITypeInfo
**pptiCoClass
, DWORD
*pdwTIFlags
, ULONG
*pcdispidReserved
, IID
*piidPrimary
, IID
*piidSource
)
3023 HTMLDocumentObj
*This
= impl_from_IProvideMultipleClassInfo(iface
);
3024 FIXME("(%p)->(%lu %lx %p %p %p %p %p)\n", This
, iti
, dwFlags
, pptiCoClass
, pdwTIFlags
, pcdispidReserved
, piidPrimary
, piidSource
);
3028 static const IProvideMultipleClassInfoVtbl DocObjProvideMultipleClassInfoVtbl
= {
3029 DocObjProvideMultipleClassInfo_QueryInterface
,
3030 DocObjProvideMultipleClassInfo_AddRef
,
3031 DocObjProvideMultipleClassInfo_Release
,
3032 DocObjProvideMultipleClassInfo_GetClassInfo
,
3033 DocObjProvideMultipleClassInfo_GetGUID
,
3034 DocObjProvideMultipleClassInfo_GetMultiTypeInfoCount
,
3035 DocObjProvideMultipleClassInfo_GetInfoOfIndex
3038 /**********************************************************
3039 * IMarkupServices implementation
3041 static inline HTMLDocumentObj
*impl_from_IMarkupServices(IMarkupServices
*iface
)
3043 return CONTAINING_RECORD(iface
, HTMLDocumentObj
, IMarkupServices_iface
);
3046 HTMLDOCUMENTOBJ_IUNKNOWN_METHODS(MarkupServices
)
3048 static HRESULT WINAPI
DocObjMarkupServices_CreateMarkupPointer(IMarkupServices
*iface
, IMarkupPointer
**ppPointer
)
3050 HTMLDocumentObj
*This
= impl_from_IMarkupServices(iface
);
3052 TRACE("(%p)->(%p)\n", This
, ppPointer
);
3054 return create_markup_pointer(ppPointer
);
3057 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(MarkupServices
, CreateMarkupContainer
, IMarkupContainer
**)
3058 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(MarkupServices
, CreateElement
, ELEMENT_TAG_ID
,OLECHAR
*,IHTMLElement
**)
3059 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(MarkupServices
, CloneElement
, IHTMLElement
*,IHTMLElement
**)
3060 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(MarkupServices
, InsertElement
, IHTMLElement
*,IMarkupPointer
*,IMarkupPointer
*)
3061 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(MarkupServices
, RemoveElement
, IHTMLElement
*)
3062 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(MarkupServices
, Remove
, IMarkupPointer
*,IMarkupPointer
*)
3063 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(MarkupServices
, Copy
, IMarkupPointer
*,IMarkupPointer
*,IMarkupPointer
*)
3064 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(MarkupServices
, Move
, IMarkupPointer
*,IMarkupPointer
*,IMarkupPointer
*)
3065 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(MarkupServices
, InsertText
, OLECHAR
*,LONG
,IMarkupPointer
*)
3066 HTMLDOCUMENTOBJ_FWD_TO_NODE_5(MarkupServices
, ParseString
, OLECHAR
*,DWORD
,IMarkupContainer
**,IMarkupPointer
*,IMarkupPointer
*)
3067 HTMLDOCUMENTOBJ_FWD_TO_NODE_5(MarkupServices
, ParseGlobal
, HGLOBAL
,DWORD
,IMarkupContainer
**,IMarkupPointer
*,IMarkupPointer
*)
3068 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(MarkupServices
, IsScopedElement
, IHTMLElement
*,BOOL
*)
3069 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(MarkupServices
, GetElementTagId
, IHTMLElement
*,ELEMENT_TAG_ID
*)
3070 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(MarkupServices
, GetTagIDForName
, BSTR
,ELEMENT_TAG_ID
*)
3071 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(MarkupServices
, GetNameForTagID
, ELEMENT_TAG_ID
,BSTR
*)
3072 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(MarkupServices
, MovePointersToRange
, IHTMLTxtRange
*,IMarkupPointer
*,IMarkupPointer
*)
3073 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(MarkupServices
, MoveRangeToPointers
, IMarkupPointer
*,IMarkupPointer
*,IHTMLTxtRange
*)
3074 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(MarkupServices
, BeginUndoUnit
, OLECHAR
*)
3075 HTMLDOCUMENTOBJ_FWD_TO_NODE_0(MarkupServices
, EndUndoUnit
)
3077 static const IMarkupServicesVtbl DocObjMarkupServicesVtbl
= {
3078 DocObjMarkupServices_QueryInterface
,
3079 DocObjMarkupServices_AddRef
,
3080 DocObjMarkupServices_Release
,
3081 DocObjMarkupServices_CreateMarkupPointer
,
3082 DocObjMarkupServices_CreateMarkupContainer
,
3083 DocObjMarkupServices_CreateElement
,
3084 DocObjMarkupServices_CloneElement
,
3085 DocObjMarkupServices_InsertElement
,
3086 DocObjMarkupServices_RemoveElement
,
3087 DocObjMarkupServices_Remove
,
3088 DocObjMarkupServices_Copy
,
3089 DocObjMarkupServices_Move
,
3090 DocObjMarkupServices_InsertText
,
3091 DocObjMarkupServices_ParseString
,
3092 DocObjMarkupServices_ParseGlobal
,
3093 DocObjMarkupServices_IsScopedElement
,
3094 DocObjMarkupServices_GetElementTagId
,
3095 DocObjMarkupServices_GetTagIDForName
,
3096 DocObjMarkupServices_GetNameForTagID
,
3097 DocObjMarkupServices_MovePointersToRange
,
3098 DocObjMarkupServices_MoveRangeToPointers
,
3099 DocObjMarkupServices_BeginUndoUnit
,
3100 DocObjMarkupServices_EndUndoUnit
3103 /**********************************************************
3104 * IMarkupContainer implementation
3106 static inline HTMLDocumentObj
*impl_from_IMarkupContainer(IMarkupContainer
*iface
)
3108 return CONTAINING_RECORD(iface
, HTMLDocumentObj
, IMarkupContainer_iface
);
3111 HTMLDOCUMENTOBJ_IUNKNOWN_METHODS(MarkupContainer
)
3113 static HRESULT WINAPI
DocObjMarkupContainer_OwningDoc(IMarkupContainer
*iface
, IHTMLDocument2
**ppDoc
)
3115 HTMLDocumentObj
*This
= impl_from_IMarkupContainer(iface
);
3116 FIXME("(%p)->(%p)\n", This
, ppDoc
);
3120 static const IMarkupContainerVtbl DocObjMarkupContainerVtbl
= {
3121 DocObjMarkupContainer_QueryInterface
,
3122 DocObjMarkupContainer_AddRef
,
3123 DocObjMarkupContainer_Release
,
3124 DocObjMarkupContainer_OwningDoc
3127 /**********************************************************
3128 * IDisplayServices implementation
3130 HTMLDOCUMENTOBJ_IUNKNOWN_METHODS(DisplayServices
)
3131 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(DisplayServices
, CreateDisplayPointer
, IDisplayPointer
**)
3132 HTMLDOCUMENTOBJ_FWD_TO_NODE_4(DisplayServices
, TransformRect
, RECT
*,COORD_SYSTEM
,COORD_SYSTEM
,IHTMLElement
*)
3133 HTMLDOCUMENTOBJ_FWD_TO_NODE_4(DisplayServices
, TransformPoint
, POINT
*,COORD_SYSTEM
,COORD_SYSTEM
,IHTMLElement
*)
3134 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(DisplayServices
, GetCaret
, IHTMLCaret
**)
3135 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(DisplayServices
, GetComputedStyle
, IMarkupPointer
*,IHTMLComputedStyle
**)
3136 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(DisplayServices
, ScrollRectIntoView
, IHTMLElement
*,RECT
)
3137 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(DisplayServices
, HasFlowLayout
, IHTMLElement
*,BOOL
*)
3139 static const IDisplayServicesVtbl DocObjDisplayServicesVtbl
= {
3140 DocObjDisplayServices_QueryInterface
,
3141 DocObjDisplayServices_AddRef
,
3142 DocObjDisplayServices_Release
,
3143 DocObjDisplayServices_CreateDisplayPointer
,
3144 DocObjDisplayServices_TransformRect
,
3145 DocObjDisplayServices_TransformPoint
,
3146 DocObjDisplayServices_GetCaret
,
3147 DocObjDisplayServices_GetComputedStyle
,
3148 DocObjDisplayServices_ScrollRectIntoView
,
3149 DocObjDisplayServices_HasFlowLayout
3152 /**********************************************************
3153 * IDocumentSelector implementation
3155 HTMLDOCUMENTOBJ_IDISPATCH_METHODS(DocumentSelector
)
3156 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(DocumentSelector
, querySelector
, BSTR
,IHTMLElement
**)
3157 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(DocumentSelector
, querySelectorAll
, BSTR
,IHTMLDOMChildrenCollection
**)
3159 static const IDocumentSelectorVtbl DocObjDocumentSelectorVtbl
= {
3160 DocObjDocumentSelector_QueryInterface
,
3161 DocObjDocumentSelector_AddRef
,
3162 DocObjDocumentSelector_Release
,
3163 DocObjDocumentSelector_GetTypeInfoCount
,
3164 DocObjDocumentSelector_GetTypeInfo
,
3165 DocObjDocumentSelector_GetIDsOfNames
,
3166 DocObjDocumentSelector_Invoke
,
3167 DocObjDocumentSelector_querySelector
,
3168 DocObjDocumentSelector_querySelectorAll
3171 /**********************************************************
3172 * IDocumentEvent implementation
3174 HTMLDOCUMENTOBJ_IDISPATCH_METHODS(DocumentEvent
)
3175 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(DocumentEvent
, createEvent
, BSTR
,IDOMEvent
**)
3177 static const IDocumentEventVtbl DocObjDocumentEventVtbl
= {
3178 DocObjDocumentEvent_QueryInterface
,
3179 DocObjDocumentEvent_AddRef
,
3180 DocObjDocumentEvent_Release
,
3181 DocObjDocumentEvent_GetTypeInfoCount
,
3182 DocObjDocumentEvent_GetTypeInfo
,
3183 DocObjDocumentEvent_GetIDsOfNames
,
3184 DocObjDocumentEvent_Invoke
,
3185 DocObjDocumentEvent_createEvent
3188 /**********************************************************
3189 * IDocumentRange implementation
3191 HTMLDOCUMENTOBJ_IDISPATCH_METHODS(DocumentRange
)
3192 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(DocumentRange
, createRange
, IHTMLDOMRange
**)
3194 static const IDocumentRangeVtbl DocObjDocumentRangeVtbl
= {
3195 DocObjDocumentRange_QueryInterface
,
3196 DocObjDocumentRange_AddRef
,
3197 DocObjDocumentRange_Release
,
3198 DocObjDocumentRange_GetTypeInfoCount
,
3199 DocObjDocumentRange_GetTypeInfo
,
3200 DocObjDocumentRange_GetIDsOfNames
,
3201 DocObjDocumentRange_Invoke
,
3202 DocObjDocumentRange_createRange
3205 /**********************************************************
3206 * IEventTarget implementation
3208 static inline HTMLDocumentObj
*impl_from_IEventTarget(IEventTarget
*iface
)
3210 return CONTAINING_RECORD(iface
, HTMLDocumentObj
, IEventTarget_iface
);
3213 HTMLDOCUMENTOBJ_IDISPATCH_METHODS(EventTarget
)
3215 static HRESULT WINAPI
DocObjEventTarget_addEventListener(IEventTarget
*iface
, BSTR type
, IDispatch
*listener
,
3216 VARIANT_BOOL capture
)
3218 HTMLDocumentObj
*This
= impl_from_IEventTarget(iface
);
3220 return IEventTarget_addEventListener(&This
->doc_node
->node
.event_target
.IEventTarget_iface
, type
, listener
, capture
);
3223 static HRESULT WINAPI
DocObjEventTarget_removeEventListener(IEventTarget
*iface
, BSTR type
, IDispatch
*listener
,
3224 VARIANT_BOOL capture
)
3226 HTMLDocumentObj
*This
= impl_from_IEventTarget(iface
);
3228 return IEventTarget_removeEventListener(&This
->doc_node
->node
.event_target
.IEventTarget_iface
, type
, listener
, capture
);
3231 static HRESULT WINAPI
DocObjEventTarget_dispatchEvent(IEventTarget
*iface
, IDOMEvent
*event_iface
, VARIANT_BOOL
*result
)
3233 HTMLDocumentObj
*This
= impl_from_IEventTarget(iface
);
3235 return IEventTarget_dispatchEvent(&This
->doc_node
->node
.event_target
.IEventTarget_iface
, event_iface
, result
);
3238 static const IEventTargetVtbl DocObjEventTargetVtbl
= {
3239 DocObjEventTarget_QueryInterface
,
3240 DocObjEventTarget_AddRef
,
3241 DocObjEventTarget_Release
,
3242 DocObjEventTarget_GetTypeInfoCount
,
3243 DocObjEventTarget_GetTypeInfo
,
3244 DocObjEventTarget_GetIDsOfNames
,
3245 DocObjEventTarget_Invoke
,
3246 DocObjEventTarget_addEventListener
,
3247 DocObjEventTarget_removeEventListener
,
3248 DocObjEventTarget_dispatchEvent
3251 static inline HTMLDocumentObj
*impl_from_IUnknown(IUnknown
*iface
)
3253 return CONTAINING_RECORD(iface
, HTMLDocumentObj
, IUnknown_inner
);
3256 static HRESULT WINAPI
HTMLDocumentObj_QueryInterface(IUnknown
*iface
, REFIID riid
, void **ppv
)
3258 HTMLDocumentObj
*This
= impl_from_IUnknown(iface
);
3260 TRACE("(%p)->(%s %p)\n", This
, debugstr_mshtml_guid(riid
), ppv
);
3262 if(IsEqualGUID(&IID_IUnknown
, riid
)) {
3263 *ppv
= &This
->IUnknown_inner
;
3264 }else if(IsEqualGUID(&IID_IDispatch
, riid
) || IsEqualGUID(&IID_IDispatchEx
, riid
)) {
3265 *ppv
= &This
->IDispatchEx_iface
;
3266 }else if(IsEqualGUID(&IID_IHTMLDocument
, riid
) || IsEqualGUID(&IID_IHTMLDocument2
, riid
)) {
3267 *ppv
= &This
->IHTMLDocument2_iface
;
3268 }else if(IsEqualGUID(&IID_IHTMLDocument3
, riid
)) {
3269 *ppv
= &This
->IHTMLDocument3_iface
;
3270 }else if(IsEqualGUID(&IID_IHTMLDocument4
, riid
)) {
3271 *ppv
= &This
->IHTMLDocument4_iface
;
3272 }else if(IsEqualGUID(&IID_IHTMLDocument5
, riid
)) {
3273 *ppv
= &This
->IHTMLDocument5_iface
;
3274 }else if(IsEqualGUID(&IID_IHTMLDocument6
, riid
)) {
3275 *ppv
= &This
->IHTMLDocument6_iface
;
3276 }else if(IsEqualGUID(&IID_IHTMLDocument7
, riid
)) {
3277 *ppv
= &This
->IHTMLDocument7_iface
;
3278 }else if(IsEqualGUID(&IID_ICustomDoc
, riid
)) {
3279 *ppv
= &This
->ICustomDoc_iface
;
3280 }else if(IsEqualGUID(&IID_IDocumentSelector
, riid
)) {
3281 *ppv
= &This
->IDocumentSelector_iface
;
3282 }else if(IsEqualGUID(&IID_IDocumentEvent
, riid
)) {
3283 *ppv
= &This
->IDocumentEvent_iface
;
3284 }else if(IsEqualGUID(&DIID_DispHTMLDocument
, riid
)) {
3285 *ppv
= &This
->IHTMLDocument2_iface
;
3286 }else if(IsEqualGUID(&IID_ISupportErrorInfo
, riid
)) {
3287 *ppv
= &This
->ISupportErrorInfo_iface
;
3288 }else if(IsEqualGUID(&IID_IProvideClassInfo
, riid
)) {
3289 *ppv
= &This
->IProvideMultipleClassInfo_iface
;
3290 }else if(IsEqualGUID(&IID_IProvideClassInfo2
, riid
)) {
3291 *ppv
= &This
->IProvideMultipleClassInfo_iface
;
3292 }else if(IsEqualGUID(&IID_IProvideMultipleClassInfo
, riid
)) {
3293 *ppv
= &This
->IProvideMultipleClassInfo_iface
;
3294 }else if(IsEqualGUID(&IID_IMarkupServices
, riid
)) {
3295 *ppv
= &This
->IMarkupServices_iface
;
3296 }else if(IsEqualGUID(&IID_IMarkupContainer
, riid
)) {
3297 *ppv
= &This
->IMarkupContainer_iface
;
3298 }else if(IsEqualGUID(&IID_IDisplayServices
, riid
)) {
3299 *ppv
= &This
->IDisplayServices_iface
;
3300 }else if(IsEqualGUID(&IID_IDocumentRange
, riid
)) {
3301 *ppv
= &This
->IDocumentRange_iface
;
3302 }else if(IsEqualGUID(&IID_IOleDocumentView
, riid
)) {
3303 *ppv
= &This
->IOleDocumentView_iface
;
3304 }else if(IsEqualGUID(&IID_IViewObject
, riid
)) {
3305 *ppv
= &This
->IViewObjectEx_iface
;
3306 }else if(IsEqualGUID(&IID_IViewObject2
, riid
)) {
3307 *ppv
= &This
->IViewObjectEx_iface
;
3308 }else if(IsEqualGUID(&IID_IViewObjectEx
, riid
)) {
3309 *ppv
= &This
->IViewObjectEx_iface
;
3310 }else if(IsEqualGUID(&IID_IPersist
, riid
)) {
3311 *ppv
= &This
->IPersistFile_iface
;
3312 }else if(IsEqualGUID(&IID_IPersistMoniker
, riid
)) {
3313 *ppv
= &This
->IPersistMoniker_iface
;
3314 }else if(IsEqualGUID(&IID_IPersistFile
, riid
)) {
3315 *ppv
= &This
->IPersistFile_iface
;
3316 }else if(IsEqualGUID(&IID_IMonikerProp
, riid
)) {
3317 *ppv
= &This
->IMonikerProp_iface
;
3318 }else if(IsEqualGUID(&IID_IPersistStreamInit
, riid
)) {
3319 *ppv
= &This
->IPersistStreamInit_iface
;
3320 }else if(IsEqualGUID(&IID_IPersistHistory
, riid
)) {
3321 *ppv
= &This
->IPersistHistory_iface
;
3322 }else if(IsEqualGUID(&IID_IHlinkTarget
, riid
)) {
3323 *ppv
= &This
->IHlinkTarget_iface
;
3324 }else if(IsEqualGUID(&IID_IOleCommandTarget
, riid
)) {
3325 *ppv
= &This
->IOleCommandTarget_iface
;
3326 }else if(IsEqualGUID(&IID_IOleObject
, riid
)) {
3327 *ppv
= &This
->IOleObject_iface
;
3328 }else if(IsEqualGUID(&IID_IOleDocument
, riid
)) {
3329 *ppv
= &This
->IOleDocument_iface
;
3330 }else if(IsEqualGUID(&IID_IOleInPlaceActiveObject
, riid
)) {
3331 *ppv
= &This
->IOleInPlaceActiveObject_iface
;
3332 }else if(IsEqualGUID(&IID_IOleWindow
, riid
)) {
3333 *ppv
= &This
->IOleInPlaceActiveObject_iface
;
3334 }else if(IsEqualGUID(&IID_IOleInPlaceObject
, riid
)) {
3335 *ppv
= &This
->IOleInPlaceObjectWindowless_iface
;
3336 }else if(IsEqualGUID(&IID_IOleInPlaceObjectWindowless
, riid
)) {
3337 *ppv
= &This
->IOleInPlaceObjectWindowless_iface
;
3338 }else if(IsEqualGUID(&IID_IOleControl
, riid
)) {
3339 *ppv
= &This
->IOleControl_iface
;
3340 }else if(IsEqualGUID(&IID_IObjectWithSite
, riid
)) {
3341 *ppv
= &This
->IObjectWithSite_iface
;
3342 }else if(IsEqualGUID(&IID_IOleContainer
, riid
)) {
3343 *ppv
= &This
->IOleContainer_iface
;
3344 }else if(IsEqualGUID(&IID_IObjectSafety
, riid
)) {
3345 *ppv
= &This
->IObjectSafety_iface
;
3346 }else if(IsEqualGUID(&IID_IServiceProvider
, riid
)) {
3347 *ppv
= &This
->IServiceProvider_iface
;
3348 }else if(IsEqualGUID(&IID_ITargetContainer
, riid
)) {
3349 *ppv
= &This
->ITargetContainer_iface
;
3350 }else if(IsEqualGUID(&IID_IConnectionPointContainer
, riid
)) {
3351 *ppv
= &This
->cp_container
.IConnectionPointContainer_iface
;
3352 }else if(IsEqualGUID(&IID_IEventTarget
, riid
)) {
3353 /* IEventTarget is conditionally exposed. This breaks COM rules when
3354 it changes its compat mode, but it is how native works (see tests). */
3355 if(!This
->doc_node
|| This
->doc_node
->document_mode
< COMPAT_MODE_IE9
) {
3357 return E_NOINTERFACE
;
3359 *ppv
= &This
->IEventTarget_iface
;
3360 }else if(IsEqualGUID(&CLSID_CMarkup
, riid
)) {
3361 FIXME("(%p)->(CLSID_CMarkup %p)\n", This
, ppv
);
3363 return E_NOINTERFACE
;
3364 }else if(IsEqualGUID(&IID_IRunnableObject
, riid
)) {
3365 TRACE("(%p)->(IID_IRunnableObject %p) returning NULL\n", This
, ppv
);
3367 return E_NOINTERFACE
;
3368 }else if(IsEqualGUID(&IID_IPersistPropertyBag
, riid
)) {
3369 TRACE("(%p)->(IID_IPersistPropertyBag %p) returning NULL\n", This
, ppv
);
3371 return E_NOINTERFACE
;
3372 }else if(IsEqualGUID(&IID_IExternalConnection
, riid
)) {
3373 TRACE("(%p)->(IID_IExternalConnection %p) returning NULL\n", This
, ppv
);
3375 return E_NOINTERFACE
;
3376 }else if(IsEqualGUID(&IID_IStdMarshalInfo
, riid
)) {
3377 TRACE("(%p)->(IID_IStdMarshalInfo %p) returning NULL\n", This
, ppv
);
3379 return E_NOINTERFACE
;
3380 }else if(IsEqualGUID(&IID_IDispatchJS
, riid
) ||
3381 IsEqualGUID(&IID_UndocumentedScriptIface
, riid
) ||
3382 IsEqualGUID(&IID_IMarshal
, riid
) ||
3383 IsEqualGUID(&IID_IManagedObject
, riid
)) {
3385 return E_NOINTERFACE
;
3387 FIXME("Unimplemented interface %s\n", debugstr_mshtml_guid(riid
));
3389 return E_NOINTERFACE
;
3392 IUnknown_AddRef((IUnknown
*)*ppv
);
3396 static ULONG WINAPI
HTMLDocumentObj_AddRef(IUnknown
*iface
)
3398 HTMLDocumentObj
*This
= impl_from_IUnknown(iface
);
3399 ULONG ref
= InterlockedIncrement(&This
->ref
);
3401 TRACE("(%p) ref = %lu\n", This
, ref
);
3406 static ULONG WINAPI
HTMLDocumentObj_Release(IUnknown
*iface
)
3408 HTMLDocumentObj
*This
= impl_from_IUnknown(iface
);
3409 ULONG ref
= InterlockedDecrement(&This
->ref
);
3411 TRACE("(%p) ref = %lu\n", This
, ref
);
3414 if(This
->doc_node
) {
3415 This
->doc_node
->doc_obj
= NULL
;
3416 IHTMLDOMNode_Release(&This
->doc_node
->node
.IHTMLDOMNode_iface
);
3419 IHTMLWindow2_Release(&This
->window
->base
.IHTMLWindow2_iface
);
3420 if(This
->advise_holder
)
3421 IOleAdviseHolder_Release(This
->advise_holder
);
3424 IAdviseSink_Release(This
->view_sink
);
3426 IOleObject_SetClientSite(&This
->IOleObject_iface
, NULL
);
3428 ICustomDoc_SetUIHandler(&This
->ICustomDoc_iface
, NULL
);
3429 if(This
->in_place_active
)
3430 IOleInPlaceObjectWindowless_InPlaceDeactivate(&This
->IOleInPlaceObjectWindowless_iface
);
3432 IOleDocumentView_SetInPlaceSite(&This
->IOleDocumentView_iface
, NULL
);
3434 IOleUndoManager_Release(This
->undomgr
);
3436 IHTMLEditServices_Release(This
->editsvcs
);
3437 if(This
->tooltips_hwnd
)
3438 DestroyWindow(This
->tooltips_hwnd
);
3441 DestroyWindow(This
->hwnd
);
3444 remove_target_tasks(This
->task_magic
);
3445 ConnectionPointContainer_Destroy(&This
->cp_container
);
3447 if(This
->nscontainer
)
3448 detach_gecko_browser(This
->nscontainer
);
3455 static const IUnknownVtbl HTMLDocumentObjVtbl
= {
3456 HTMLDocumentObj_QueryInterface
,
3457 HTMLDocumentObj_AddRef
,
3458 HTMLDocumentObj_Release
3461 /**********************************************************
3462 * IDispatchEx implementation
3464 * Forwarding this breaks Dispatch rules by potentially retrieving
3465 * a different DISPID for the same name, if the node was changed
3466 * while using the same doc obj, but it is how native works.
3468 static inline HTMLDocumentObj
*impl_from_IDispatchEx(IDispatchEx
*iface
)
3470 return CONTAINING_RECORD(iface
, HTMLDocumentObj
, IDispatchEx_iface
);
3473 HTMLDOCUMENTOBJ_IUNKNOWN_METHODS(DispatchEx
)
3474 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(DispatchEx
, GetTypeInfoCount
, UINT
*)
3475 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(DispatchEx
, GetTypeInfo
, UINT
,LCID
,ITypeInfo
**)
3476 HTMLDOCUMENTOBJ_FWD_TO_NODE_5(DispatchEx
, GetIDsOfNames
, REFIID
,LPOLESTR
*,UINT
,LCID
,DISPID
*)
3478 static HRESULT WINAPI
DocObjDispatchEx_Invoke(IDispatchEx
*iface
, DISPID dispIdMember
, REFIID riid
, LCID lcid
,
3479 WORD wFlags
, DISPPARAMS
*pDispParams
, VARIANT
*pVarResult
, EXCEPINFO
*pExcepInfo
, UINT
*puArgErr
)
3481 HTMLDocumentObj
*This
= impl_from_IDispatchEx(iface
);
3483 return IDispatchEx_InvokeEx(&This
->doc_node
->IDispatchEx_iface
, dispIdMember
, lcid
, wFlags
, pDispParams
,
3484 pVarResult
, pExcepInfo
, NULL
);
3487 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(DispatchEx
, GetDispID
, BSTR
,DWORD
,DISPID
*)
3489 static HRESULT WINAPI
DocObjDispatchEx_InvokeEx(IDispatchEx
*iface
, DISPID id
, LCID lcid
, WORD wFlags
, DISPPARAMS
*pdp
,
3490 VARIANT
*pvarRes
, EXCEPINFO
*pei
, IServiceProvider
*pspCaller
)
3492 HTMLDocumentObj
*This
= impl_from_IDispatchEx(iface
);
3494 return IDispatchEx_InvokeEx(&This
->doc_node
->IDispatchEx_iface
, id
, lcid
, wFlags
, pdp
, pvarRes
, pei
, pspCaller
);
3497 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(DispatchEx
, DeleteMemberByName
, BSTR
,DWORD
)
3498 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(DispatchEx
, DeleteMemberByDispID
, DISPID
)
3499 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(DispatchEx
, GetMemberProperties
, DISPID
,DWORD
,DWORD
*)
3500 HTMLDOCUMENTOBJ_FWD_TO_NODE_2(DispatchEx
, GetMemberName
, DISPID
,BSTR
*)
3501 HTMLDOCUMENTOBJ_FWD_TO_NODE_3(DispatchEx
, GetNextDispID
, DWORD
,DISPID
,DISPID
*)
3502 HTMLDOCUMENTOBJ_FWD_TO_NODE_1(DispatchEx
, GetNameSpaceParent
, IUnknown
**)
3504 static const IDispatchExVtbl DocObjDispatchExVtbl
= {
3505 DocObjDispatchEx_QueryInterface
,
3506 DocObjDispatchEx_AddRef
,
3507 DocObjDispatchEx_Release
,
3508 DocObjDispatchEx_GetTypeInfoCount
,
3509 DocObjDispatchEx_GetTypeInfo
,
3510 DocObjDispatchEx_GetIDsOfNames
,
3511 DocObjDispatchEx_Invoke
,
3512 DocObjDispatchEx_GetDispID
,
3513 DocObjDispatchEx_InvokeEx
,
3514 DocObjDispatchEx_DeleteMemberByName
,
3515 DocObjDispatchEx_DeleteMemberByDispID
,
3516 DocObjDispatchEx_GetMemberProperties
,
3517 DocObjDispatchEx_GetMemberName
,
3518 DocObjDispatchEx_GetNextDispID
,
3519 DocObjDispatchEx_GetNameSpaceParent
3522 /**********************************************************
3523 * ICustomDoc implementation
3526 static inline HTMLDocumentObj
*impl_from_ICustomDoc(ICustomDoc
*iface
)
3528 return CONTAINING_RECORD(iface
, HTMLDocumentObj
, ICustomDoc_iface
);
3531 static HRESULT WINAPI
CustomDoc_QueryInterface(ICustomDoc
*iface
, REFIID riid
, void **ppv
)
3533 HTMLDocumentObj
*This
= impl_from_ICustomDoc(iface
);
3535 return IUnknown_QueryInterface(This
->outer_unk
, riid
, ppv
);
3538 static ULONG WINAPI
CustomDoc_AddRef(ICustomDoc
*iface
)
3540 HTMLDocumentObj
*This
= impl_from_ICustomDoc(iface
);
3542 return IUnknown_AddRef(This
->outer_unk
);
3545 static ULONG WINAPI
CustomDoc_Release(ICustomDoc
*iface
)
3547 HTMLDocumentObj
*This
= impl_from_ICustomDoc(iface
);
3549 return IUnknown_Release(This
->outer_unk
);
3552 static HRESULT WINAPI
CustomDoc_SetUIHandler(ICustomDoc
*iface
, IDocHostUIHandler
*pUIHandler
)
3554 HTMLDocumentObj
*This
= impl_from_ICustomDoc(iface
);
3555 IOleCommandTarget
*cmdtrg
;
3558 TRACE("(%p)->(%p)\n", This
, pUIHandler
);
3560 if(This
->custom_hostui
&& This
->hostui
== pUIHandler
)
3563 This
->custom_hostui
= TRUE
;
3566 IDocHostUIHandler_Release(This
->hostui
);
3568 IDocHostUIHandler_AddRef(pUIHandler
);
3569 This
->hostui
= pUIHandler
;
3573 hres
= IDocHostUIHandler_QueryInterface(pUIHandler
, &IID_IOleCommandTarget
, (void**)&cmdtrg
);
3574 if(SUCCEEDED(hres
)) {
3575 FIXME("custom UI handler supports IOleCommandTarget\n");
3576 IOleCommandTarget_Release(cmdtrg
);
3582 static const ICustomDocVtbl CustomDocVtbl
= {
3583 CustomDoc_QueryInterface
,
3586 CustomDoc_SetUIHandler
3589 static void HTMLDocumentObj_on_advise(IUnknown
*iface
, cp_static_data_t
*cp
)
3591 HTMLDocumentObj
*This
= impl_from_IUnknown(iface
);
3594 update_doc_cp_events(This
->doc_node
, cp
);
3597 static cp_static_data_t HTMLDocumentObjEvents_data
= { HTMLDocumentEvents_tid
, HTMLDocumentObj_on_advise
};
3598 static cp_static_data_t HTMLDocumentObjEvents2_data
= { HTMLDocumentEvents2_tid
, HTMLDocumentObj_on_advise
, TRUE
};
3600 static const cpc_entry_t HTMLDocumentObj_cpc
[] = {
3601 {&IID_IDispatch
, &HTMLDocumentObjEvents_data
},
3602 {&IID_IPropertyNotifySink
},
3603 {&DIID_HTMLDocumentEvents
, &HTMLDocumentObjEvents_data
},
3604 {&DIID_HTMLDocumentEvents2
, &HTMLDocumentObjEvents2_data
},
3608 static HRESULT
create_document_object(BOOL is_mhtml
, IUnknown
*outer
, REFIID riid
, void **ppv
)
3610 HTMLDocumentObj
*doc
;
3613 if(outer
&& !IsEqualGUID(&IID_IUnknown
, riid
)) {
3615 return E_INVALIDARG
;
3618 /* ensure that security manager is initialized */
3619 if(!get_security_manager())
3620 return E_OUTOFMEMORY
;
3622 doc
= calloc(1, sizeof(HTMLDocumentObj
));
3624 return E_OUTOFMEMORY
;
3627 doc
->IUnknown_inner
.lpVtbl
= &HTMLDocumentObjVtbl
;
3628 doc
->IDispatchEx_iface
.lpVtbl
= &DocObjDispatchExVtbl
;
3629 doc
->ICustomDoc_iface
.lpVtbl
= &CustomDocVtbl
;
3630 doc
->IHTMLDocument2_iface
.lpVtbl
= &DocObjHTMLDocument2Vtbl
;
3631 doc
->IHTMLDocument3_iface
.lpVtbl
= &DocObjHTMLDocument3Vtbl
;
3632 doc
->IHTMLDocument4_iface
.lpVtbl
= &DocObjHTMLDocument4Vtbl
;
3633 doc
->IHTMLDocument5_iface
.lpVtbl
= &DocObjHTMLDocument5Vtbl
;
3634 doc
->IHTMLDocument6_iface
.lpVtbl
= &DocObjHTMLDocument6Vtbl
;
3635 doc
->IHTMLDocument7_iface
.lpVtbl
= &DocObjHTMLDocument7Vtbl
;
3636 doc
->IDocumentSelector_iface
.lpVtbl
= &DocObjDocumentSelectorVtbl
;
3637 doc
->IDocumentEvent_iface
.lpVtbl
= &DocObjDocumentEventVtbl
;
3638 doc
->ISupportErrorInfo_iface
.lpVtbl
= &DocObjSupportErrorInfoVtbl
;
3639 doc
->IProvideMultipleClassInfo_iface
.lpVtbl
= &DocObjProvideMultipleClassInfoVtbl
;
3640 doc
->IMarkupServices_iface
.lpVtbl
= &DocObjMarkupServicesVtbl
;
3641 doc
->IMarkupContainer_iface
.lpVtbl
= &DocObjMarkupContainerVtbl
;
3642 doc
->IDisplayServices_iface
.lpVtbl
= &DocObjDisplayServicesVtbl
;
3643 doc
->IDocumentRange_iface
.lpVtbl
= &DocObjDocumentRangeVtbl
;
3644 doc
->IEventTarget_iface
.lpVtbl
= &DocObjEventTargetVtbl
;
3646 doc
->outer_unk
= outer
? outer
: &doc
->IUnknown_inner
;
3648 ConnectionPointContainer_Init(&doc
->cp_container
, &doc
->IUnknown_inner
, HTMLDocumentObj_cpc
);
3649 HTMLDocumentObj_Persist_Init(doc
);
3650 HTMLDocumentObj_Service_Init(doc
);
3651 HTMLDocumentObj_OleCmd_Init(doc
);
3652 HTMLDocumentObj_OleObj_Init(doc
);
3653 TargetContainer_Init(doc
);
3654 doc
->is_mhtml
= is_mhtml
;
3656 doc
->task_magic
= get_task_target_magic();
3658 HTMLDocument_View_Init(doc
);
3660 hres
= create_gecko_browser(doc
, &doc
->nscontainer
);
3662 ERR("Failed to init Gecko, returning CLASS_E_CLASSNOTAVAILABLE\n");
3663 IUnknown_Release(&doc
->IUnknown_inner
);
3667 if(IsEqualGUID(&IID_IUnknown
, riid
)) {
3668 *ppv
= &doc
->IUnknown_inner
;
3670 hres
= IUnknown_QueryInterface(doc
->outer_unk
, riid
, ppv
);
3671 IUnknown_Release(doc
->outer_unk
);
3676 doc
->window
= doc
->nscontainer
->content_window
;
3677 IHTMLWindow2_AddRef(&doc
->window
->base
.IHTMLWindow2_iface
);
3679 if(!doc
->doc_node
) {
3680 doc
->doc_node
= doc
->window
->base
.inner_window
->doc
;
3681 IHTMLDOMNode_AddRef(&doc
->doc_node
->node
.IHTMLDOMNode_iface
);
3689 HRESULT
HTMLDocument_Create(IUnknown
*outer
, REFIID riid
, void **ppv
)
3691 TRACE("(%p %s %p)\n", outer
, debugstr_mshtml_guid(riid
), ppv
);
3692 return create_document_object(FALSE
, outer
, riid
, ppv
);
3695 HRESULT
MHTMLDocument_Create(IUnknown
*outer
, REFIID riid
, void **ppv
)
3697 TRACE("(%p %s %p)\n", outer
, debugstr_mshtml_guid(riid
), ppv
);
3698 return create_document_object(TRUE
, outer
, riid
, ppv
);