From 17bec80f71f04115cfa80d8785aa516cab132df0 Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Tue, 15 Dec 2009 23:46:24 +0100 Subject: [PATCH] mshtml: Added IObjectWithSite stubs. --- dlls/mshtml/htmldoc.c | 3 +++ dlls/mshtml/mshtml_private.h | 2 ++ dlls/mshtml/oleobj.c | 49 ++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c index 57d4fc6e517..84f6cc81d97 100644 --- a/dlls/mshtml/htmldoc.c +++ b/dlls/mshtml/htmldoc.c @@ -1748,6 +1748,9 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv) }else if(IsEqualGUID(&IID_IMarshal, riid)) { TRACE("(%p)->(IID_IMarshal %p) returning NULL\n", This, ppv); *ppv = NULL; + }else if(IsEqualGUID(&IID_IObjectWithSite, riid)) { + TRACE("(%p)->(IID_IObjectWithSite %p)\n", This, ppv); + *ppv = OBJSITE(This); }else { return FALSE; } diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index afd0bff74b7..98abec268aa 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -323,6 +323,7 @@ struct HTMLDocument { const IPersistStreamInitVtbl *lpPersistStreamInitVtbl; const IDispatchExVtbl *lpIDispatchExVtbl; const ISupportErrorInfoVtbl *lpSupportErrorInfoVtbl; + const IObjectWithSiteVtbl *lpObjectWithSiteVtbl; IUnknown *unk_impl; IDispatchEx *dispex; @@ -577,6 +578,7 @@ struct HTMLDocumentNode { #define PERSTRINIT(x) ((IPersistStreamInit*) &(x)->lpPersistStreamInitVtbl) #define PERSISTHIST(x) ((IPersistHistory*) &(x)->lpPersistHistoryVtbl) #define CUSTOMDOC(x) ((ICustomDoc*) &(x)->lpCustomDocVtbl) +#define OBJSITE(x) ((IObjectWithSite*) &(x)->lpObjectWithSiteVtbl) #define NSWBCHROME(x) ((nsIWebBrowserChrome*) &(x)->lpWebBrowserChromeVtbl) #define NSCML(x) ((nsIContextMenuListener*) &(x)->lpContextMenuListenerVtbl) diff --git a/dlls/mshtml/oleobj.c b/dlls/mshtml/oleobj.c index 872d766489d..3dec3dc62dd 100644 --- a/dlls/mshtml/oleobj.c +++ b/dlls/mshtml/oleobj.c @@ -732,6 +732,54 @@ static const IOleControlVtbl OleControlVtbl = { OleControl_FreezeEvents }; +/********************************************************** + * IObjectWithSite implementation + */ + +#define OBJSITE_THIS(iface) DEFINE_THIS(HTMLDocument, ObjectWithSite, iface) + +static HRESULT WINAPI ObjectWithSite_QueryInterface(IObjectWithSite *iface, REFIID riid, void **ppvObject) +{ + HTMLDocument *This = OBJSITE_THIS(iface); + return IHTMLDocument2_QueryInterface(HTMLDOC(This), riid, ppvObject); +} + +static ULONG WINAPI ObjectWithSite_AddRef(IObjectWithSite *iface) +{ + HTMLDocument *This = OBJSITE_THIS(iface); + return IHTMLDocument2_AddRef(HTMLDOC(This)); +} + +static ULONG WINAPI ObjectWithSite_Release(IObjectWithSite *iface) +{ + HTMLDocument *This = OBJSITE_THIS(iface); + return IHTMLDocument2_Release(HTMLDOC(This)); +} + +static HRESULT WINAPI ObjectWithSite_SetSite(IObjectWithSite *iface, IUnknown *pUnkSite) +{ + HTMLDocument *This = OBJSITE_THIS(iface); + FIXME("(%p)->(%p)\n", This, pUnkSite); + return E_NOTIMPL; +} + +static HRESULT WINAPI ObjectWithSite_GetSite(IObjectWithSite* iface, REFIID riid, PVOID *ppvSite) +{ + HTMLDocument *This = OBJSITE_THIS(iface); + FIXME("(%p)->(%p)\n", This, ppvSite); + return E_NOTIMPL; +} + +#undef OBJSITE_THIS + +static const IObjectWithSiteVtbl ObjectWithSiteVtbl = { + ObjectWithSite_QueryInterface, + ObjectWithSite_AddRef, + ObjectWithSite_Release, + ObjectWithSite_SetSite, + ObjectWithSite_GetSite +}; + void HTMLDocument_LockContainer(HTMLDocumentObj *This, BOOL fLock) { IOleContainer *container; @@ -753,4 +801,5 @@ void HTMLDocument_OleObj_Init(HTMLDocument *This) This->lpOleObjectVtbl = &OleObjectVtbl; This->lpOleDocumentVtbl = &OleDocumentVtbl; This->lpOleControlVtbl = &OleControlVtbl; + This->lpObjectWithSiteVtbl = &ObjectWithSiteVtbl; }