mshtml: COM cleanup for all the IServiceProvider ifaces.

This commit is contained in:
Michael Stefaniuc 2010-12-27 01:43:10 +01:00 committed by Alexandre Julliard
parent 22022d13d1
commit 389a7f547e
7 changed files with 49 additions and 42 deletions

View File

@ -1773,7 +1773,7 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
*ppv = &This->IOleInPlaceObjectWindowless_iface; *ppv = &This->IOleInPlaceObjectWindowless_iface;
}else if(IsEqualGUID(&IID_IServiceProvider, riid)) { }else if(IsEqualGUID(&IID_IServiceProvider, riid)) {
TRACE("(%p)->(IID_IServiceProvider, %p)\n", This, ppv); TRACE("(%p)->(IID_IServiceProvider, %p)\n", This, ppv);
*ppv = SERVPROV(This); *ppv = &This->IServiceProvider_iface;
}else if(IsEqualGUID(&IID_IOleCommandTarget, riid)) { }else if(IsEqualGUID(&IID_IOleCommandTarget, riid)) {
TRACE("(%p)->(IID_IOleCommandTarget, %p)\n", This, ppv); TRACE("(%p)->(IID_IOleCommandTarget, %p)\n", This, ppv);
*ppv = CMDTARGET(This); *ppv = CMDTARGET(This);

View File

@ -193,7 +193,7 @@ static HRESULT WINAPI HTMLWindow2_QueryInterface(IHTMLWindow2 *iface, REFIID rii
*ppv = HTMLPRIVWINDOW(This); *ppv = HTMLPRIVWINDOW(This);
}else if(IsEqualGUID(&IID_IServiceProvider, riid)) { }else if(IsEqualGUID(&IID_IServiceProvider, riid)) {
TRACE("(%p)->(IID_IServiceProvider %p)\n", This, ppv); TRACE("(%p)->(IID_IServiceProvider %p)\n", This, ppv);
*ppv = SERVPROV(This); *ppv = &This->IServiceProvider_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) { }else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE; return *ppv ? S_OK : E_NOINTERFACE;
} }
@ -2119,29 +2119,32 @@ static const IDispatchExVtbl WindowDispExVtbl = {
WindowDispEx_GetNameSpaceParent WindowDispEx_GetNameSpaceParent
}; };
#define SERVPROV_THIS(iface) DEFINE_THIS(HTMLWindow, ServiceProvider, iface) static inline HTMLWindow *impl_from_IServiceProvider(IServiceProvider *iface)
{
return CONTAINING_RECORD(iface, HTMLWindow, IServiceProvider_iface);
}
static HRESULT WINAPI HTMLWindowSP_QueryInterface(IServiceProvider *iface, REFIID riid, void **ppv) static HRESULT WINAPI HTMLWindowSP_QueryInterface(IServiceProvider *iface, REFIID riid, void **ppv)
{ {
HTMLWindow *This = SERVPROV_THIS(iface); HTMLWindow *This = impl_from_IServiceProvider(iface);
return IHTMLWindow2_QueryInterface(HTMLWINDOW2(This), riid, ppv); return IHTMLWindow2_QueryInterface(HTMLWINDOW2(This), riid, ppv);
} }
static ULONG WINAPI HTMLWindowSP_AddRef(IServiceProvider *iface) static ULONG WINAPI HTMLWindowSP_AddRef(IServiceProvider *iface)
{ {
HTMLWindow *This = SERVPROV_THIS(iface); HTMLWindow *This = impl_from_IServiceProvider(iface);
return IHTMLWindow2_AddRef(HTMLWINDOW2(This)); return IHTMLWindow2_AddRef(HTMLWINDOW2(This));
} }
static ULONG WINAPI HTMLWindowSP_Release(IServiceProvider *iface) static ULONG WINAPI HTMLWindowSP_Release(IServiceProvider *iface)
{ {
HTMLWindow *This = SERVPROV_THIS(iface); HTMLWindow *This = impl_from_IServiceProvider(iface);
return IHTMLWindow2_Release(HTMLWINDOW2(This)); return IHTMLWindow2_Release(HTMLWINDOW2(This));
} }
static HRESULT WINAPI HTMLWindowSP_QueryService(IServiceProvider *iface, REFGUID guidService, REFIID riid, void **ppv) static HRESULT WINAPI HTMLWindowSP_QueryService(IServiceProvider *iface, REFGUID guidService, REFIID riid, void **ppv)
{ {
HTMLWindow *This = SERVPROV_THIS(iface); HTMLWindow *This = impl_from_IServiceProvider(iface);
if(IsEqualGUID(guidService, &IID_IHTMLWindow2)) { if(IsEqualGUID(guidService, &IID_IHTMLWindow2)) {
TRACE("IID_IHTMLWindow2\n"); TRACE("IID_IHTMLWindow2\n");
@ -2153,11 +2156,10 @@ static HRESULT WINAPI HTMLWindowSP_QueryService(IServiceProvider *iface, REFGUID
if(!This->doc_obj) if(!This->doc_obj)
return E_NOINTERFACE; return E_NOINTERFACE;
return IServiceProvider_QueryService(SERVPROV(&This->doc_obj->basedoc), guidService, riid, ppv); return IServiceProvider_QueryService(&This->doc_obj->basedoc.IServiceProvider_iface,
guidService, riid, ppv);
} }
#undef SERVPROV_THIS
static const IServiceProviderVtbl ServiceProviderVtbl = { static const IServiceProviderVtbl ServiceProviderVtbl = {
HTMLWindowSP_QueryInterface, HTMLWindowSP_QueryInterface,
HTMLWindowSP_AddRef, HTMLWindowSP_AddRef,
@ -2204,7 +2206,7 @@ HRESULT HTMLWindow_Create(HTMLDocumentObj *doc_obj, nsIDOMWindow *nswindow, HTML
window->lpHTMLWindow4Vtbl = &HTMLWindow4Vtbl; window->lpHTMLWindow4Vtbl = &HTMLWindow4Vtbl;
window->lpIHTMLPrivateWindowVtbl = &HTMLPrivateWindowVtbl; window->lpIHTMLPrivateWindowVtbl = &HTMLPrivateWindowVtbl;
window->lpIDispatchExVtbl = &WindowDispExVtbl; window->lpIDispatchExVtbl = &WindowDispExVtbl;
window->lpServiceProviderVtbl = &ServiceProviderVtbl; window->IServiceProvider_iface.lpVtbl = &ServiceProviderVtbl;
window->ref = 1; window->ref = 1;
window->doc_obj = doc_obj; window->doc_obj = doc_obj;

View File

@ -265,7 +265,7 @@ struct HTMLWindow {
const IHTMLWindow4Vtbl *lpHTMLWindow4Vtbl; const IHTMLWindow4Vtbl *lpHTMLWindow4Vtbl;
const IHTMLPrivateWindowVtbl *lpIHTMLPrivateWindowVtbl; const IHTMLPrivateWindowVtbl *lpIHTMLPrivateWindowVtbl;
const IDispatchExVtbl *lpIDispatchExVtbl; const IDispatchExVtbl *lpIDispatchExVtbl;
const IServiceProviderVtbl *lpServiceProviderVtbl; IServiceProvider IServiceProvider_iface;
LONG ref; LONG ref;
@ -357,7 +357,7 @@ struct HTMLDocument {
IOleInPlaceActiveObject IOleInPlaceActiveObject_iface; IOleInPlaceActiveObject IOleInPlaceActiveObject_iface;
IViewObjectEx IViewObjectEx_iface; IViewObjectEx IViewObjectEx_iface;
IOleInPlaceObjectWindowless IOleInPlaceObjectWindowless_iface; IOleInPlaceObjectWindowless IOleInPlaceObjectWindowless_iface;
const IServiceProviderVtbl *lpServiceProviderVtbl; IServiceProvider IServiceProvider_iface;
const IOleCommandTargetVtbl *lpOleCommandTargetVtbl; const IOleCommandTargetVtbl *lpOleCommandTargetVtbl;
const IOleControlVtbl *lpOleControlVtbl; const IOleControlVtbl *lpOleControlVtbl;
const IHlinkTargetVtbl *lpHlinkTargetVtbl; const IHlinkTargetVtbl *lpHlinkTargetVtbl;
@ -625,7 +625,6 @@ struct HTMLDocumentNode {
#define HTMLWINDOW2(x) ((IHTMLWindow2*) &(x)->lpHTMLWindow2Vtbl) #define HTMLWINDOW2(x) ((IHTMLWindow2*) &(x)->lpHTMLWindow2Vtbl)
#define HTMLWINDOW3(x) ((IHTMLWindow3*) &(x)->lpHTMLWindow3Vtbl) #define HTMLWINDOW3(x) ((IHTMLWindow3*) &(x)->lpHTMLWindow3Vtbl)
#define HTMLWINDOW4(x) ((IHTMLWindow4*) &(x)->lpHTMLWindow4Vtbl) #define HTMLWINDOW4(x) ((IHTMLWindow4*) &(x)->lpHTMLWindow4Vtbl)
#define SERVPROV(x) ((IServiceProvider*) &(x)->lpServiceProviderVtbl)
#define CMDTARGET(x) ((IOleCommandTarget*) &(x)->lpOleCommandTargetVtbl) #define CMDTARGET(x) ((IOleCommandTarget*) &(x)->lpOleCommandTargetVtbl)
#define CONTROL(x) ((IOleControl*) &(x)->lpOleControlVtbl) #define CONTROL(x) ((IOleControl*) &(x)->lpOleControlVtbl)
#define HLNKTARGET(x) ((IHlinkTarget*) &(x)->lpHlinkTargetVtbl) #define HLNKTARGET(x) ((IHlinkTarget*) &(x)->lpHlinkTargetVtbl)

View File

@ -68,7 +68,7 @@ typedef struct {
struct BSCallback { struct BSCallback {
const IBindStatusCallbackVtbl *lpBindStatusCallbackVtbl; const IBindStatusCallbackVtbl *lpBindStatusCallbackVtbl;
const IServiceProviderVtbl *lpServiceProviderVtbl; IServiceProvider IServiceProvider_iface;
const IHttpNegotiate2Vtbl *lpHttpNegotiate2Vtbl; const IHttpNegotiate2Vtbl *lpHttpNegotiate2Vtbl;
const IInternetBindInfoVtbl *lpInternetBindInfoVtbl; const IInternetBindInfoVtbl *lpInternetBindInfoVtbl;
@ -252,7 +252,7 @@ static HRESULT WINAPI BindStatusCallback_QueryInterface(IBindStatusCallback *ifa
*ppv = STATUSCLB(This); *ppv = STATUSCLB(This);
}else if(IsEqualGUID(&IID_IServiceProvider, riid)) { }else if(IsEqualGUID(&IID_IServiceProvider, riid)) {
TRACE("(%p)->(IID_IServiceProvider %p)\n", This, ppv); TRACE("(%p)->(IID_IServiceProvider %p)\n", This, ppv);
*ppv = SERVPROV(This); *ppv = &This->IServiceProvider_iface;
}else if(IsEqualGUID(&IID_IHttpNegotiate, riid)) { }else if(IsEqualGUID(&IID_IHttpNegotiate, riid)) {
TRACE("(%p)->(IID_IHttpNegotiate %p)\n", This, ppv); TRACE("(%p)->(IID_IHttpNegotiate %p)\n", This, ppv);
*ppv = HTTPNEG(This); *ppv = HTTPNEG(This);
@ -570,37 +570,38 @@ static const IInternetBindInfoVtbl InternetBindInfoVtbl = {
InternetBindInfo_GetBindString InternetBindInfo_GetBindString
}; };
#define SERVPROV_THIS(iface) DEFINE_THIS(BSCallback, ServiceProvider, iface) static inline BSCallback *impl_from_IServiceProvider(IServiceProvider *iface)
{
return CONTAINING_RECORD(iface, BSCallback, IServiceProvider_iface);
}
static HRESULT WINAPI BSCServiceProvider_QueryInterface(IServiceProvider *iface, static HRESULT WINAPI BSCServiceProvider_QueryInterface(IServiceProvider *iface,
REFIID riid, void **ppv) REFIID riid, void **ppv)
{ {
BSCallback *This = SERVPROV_THIS(iface); BSCallback *This = impl_from_IServiceProvider(iface);
return IBindStatusCallback_QueryInterface(STATUSCLB(This), riid, ppv); return IBindStatusCallback_QueryInterface(STATUSCLB(This), riid, ppv);
} }
static ULONG WINAPI BSCServiceProvider_AddRef(IServiceProvider *iface) static ULONG WINAPI BSCServiceProvider_AddRef(IServiceProvider *iface)
{ {
BSCallback *This = SERVPROV_THIS(iface); BSCallback *This = impl_from_IServiceProvider(iface);
return IBindStatusCallback_AddRef(STATUSCLB(This)); return IBindStatusCallback_AddRef(STATUSCLB(This));
} }
static ULONG WINAPI BSCServiceProvider_Release(IServiceProvider *iface) static ULONG WINAPI BSCServiceProvider_Release(IServiceProvider *iface)
{ {
BSCallback *This = SERVPROV_THIS(iface); BSCallback *This = impl_from_IServiceProvider(iface);
return IBindStatusCallback_Release(STATUSCLB(This)); return IBindStatusCallback_Release(STATUSCLB(This));
} }
static HRESULT WINAPI BSCServiceProvider_QueryService(IServiceProvider *iface, static HRESULT WINAPI BSCServiceProvider_QueryService(IServiceProvider *iface,
REFGUID guidService, REFIID riid, void **ppv) REFGUID guidService, REFIID riid, void **ppv)
{ {
BSCallback *This = SERVPROV_THIS(iface); BSCallback *This = impl_from_IServiceProvider(iface);
TRACE("(%p)->(%s %s %p)\n", This, debugstr_guid(guidService), debugstr_guid(riid), ppv); TRACE("(%p)->(%s %s %p)\n", This, debugstr_guid(guidService), debugstr_guid(riid), ppv);
return E_NOINTERFACE; return E_NOINTERFACE;
} }
#undef SERVPROV_THIS
static const IServiceProviderVtbl ServiceProviderVtbl = { static const IServiceProviderVtbl ServiceProviderVtbl = {
BSCServiceProvider_QueryInterface, BSCServiceProvider_QueryInterface,
BSCServiceProvider_AddRef, BSCServiceProvider_AddRef,
@ -611,7 +612,7 @@ static const IServiceProviderVtbl ServiceProviderVtbl = {
static void init_bscallback(BSCallback *This, const BSCallbackVtbl *vtbl, IMoniker *mon, DWORD bindf) static void init_bscallback(BSCallback *This, const BSCallbackVtbl *vtbl, IMoniker *mon, DWORD bindf)
{ {
This->lpBindStatusCallbackVtbl = &BindStatusCallbackVtbl; This->lpBindStatusCallbackVtbl = &BindStatusCallbackVtbl;
This->lpServiceProviderVtbl = &ServiceProviderVtbl; This->IServiceProvider_iface.lpVtbl = &ServiceProviderVtbl;
This->lpHttpNegotiate2Vtbl = &HttpNegotiate2Vtbl; This->lpHttpNegotiate2Vtbl = &HttpNegotiate2Vtbl;
This->lpInternetBindInfoVtbl = &InternetBindInfoVtbl; This->lpInternetBindInfoVtbl = &InternetBindInfoVtbl;
This->vtbl = vtbl; This->vtbl = vtbl;

View File

@ -1180,7 +1180,8 @@ static HRESULT WINAPI PHServiceProvider_QueryService(IServiceProvider *iface, RE
return E_NOINTERFACE; return E_NOINTERFACE;
} }
return IServiceProvider_QueryService(SERVPROV(This->doc->basedoc.window), guidService, riid, ppv); return IServiceProvider_QueryService(&This->doc->basedoc.window->IServiceProvider_iface,
guidService, riid, ppv);
} }
static const IServiceProviderVtbl ServiceProviderVtbl = { static const IServiceProviderVtbl ServiceProviderVtbl = {

View File

@ -55,7 +55,7 @@ struct ScriptHost {
const IActiveScriptSiteInterruptPollVtbl *lpIActiveScriptSiteInterruptPollVtbl; const IActiveScriptSiteInterruptPollVtbl *lpIActiveScriptSiteInterruptPollVtbl;
const IActiveScriptSiteWindowVtbl *lpIActiveScriptSiteWindowVtbl; const IActiveScriptSiteWindowVtbl *lpIActiveScriptSiteWindowVtbl;
const IActiveScriptSiteDebugVtbl *lpIActiveScriptSiteDebugVtbl; const IActiveScriptSiteDebugVtbl *lpIActiveScriptSiteDebugVtbl;
const IServiceProviderVtbl *lpServiceProviderVtbl; IServiceProvider IServiceProvider_iface;
LONG ref; LONG ref;
@ -250,7 +250,7 @@ static HRESULT WINAPI ActiveScriptSite_QueryInterface(IActiveScriptSite *iface,
*ppv = ACTSCPDBG(This); *ppv = ACTSCPDBG(This);
}else if(IsEqualGUID(&IID_IServiceProvider, riid)) { }else if(IsEqualGUID(&IID_IServiceProvider, riid)) {
TRACE("(%p)->(IID_IServiceProvider %p)\n", This, ppv); TRACE("(%p)->(IID_IServiceProvider %p)\n", This, ppv);
*ppv = SERVPROV(This); *ppv = &This->IServiceProvider_iface;
}else if(IsEqualGUID(&IID_ICanHandleException, riid)) { }else if(IsEqualGUID(&IID_ICanHandleException, riid)) {
TRACE("(%p)->(IID_ICanHandleException not supported %p)\n", This, ppv); TRACE("(%p)->(IID_ICanHandleException not supported %p)\n", This, ppv);
return E_NOINTERFACE; return E_NOINTERFACE;
@ -542,30 +542,33 @@ static const IActiveScriptSiteDebugVtbl ActiveScriptSiteDebugVtbl = {
ActiveScriptSiteDebug_OnScriptErrorDebug ActiveScriptSiteDebug_OnScriptErrorDebug
}; };
#define SERVPROV_THIS(iface) DEFINE_THIS(ScriptHost, ServiceProvider, iface) static inline ScriptHost *impl_from_IServiceProvider(IServiceProvider *iface)
{
return CONTAINING_RECORD(iface, ScriptHost, IServiceProvider_iface);
}
static HRESULT WINAPI ASServiceProvider_QueryInterface(IServiceProvider *iface, REFIID riid, void **ppv) static HRESULT WINAPI ASServiceProvider_QueryInterface(IServiceProvider *iface, REFIID riid, void **ppv)
{ {
ScriptHost *This = SERVPROV_THIS(iface); ScriptHost *This = impl_from_IServiceProvider(iface);
return IActiveScriptSite_QueryInterface(ACTSCPSITE(This), riid, ppv); return IActiveScriptSite_QueryInterface(ACTSCPSITE(This), riid, ppv);
} }
static ULONG WINAPI ASServiceProvider_AddRef(IServiceProvider *iface) static ULONG WINAPI ASServiceProvider_AddRef(IServiceProvider *iface)
{ {
ScriptHost *This = SERVPROV_THIS(iface); ScriptHost *This = impl_from_IServiceProvider(iface);
return IActiveScriptSite_AddRef(ACTSCPSITE(This)); return IActiveScriptSite_AddRef(ACTSCPSITE(This));
} }
static ULONG WINAPI ASServiceProvider_Release(IServiceProvider *iface) static ULONG WINAPI ASServiceProvider_Release(IServiceProvider *iface)
{ {
ScriptHost *This = SERVPROV_THIS(iface); ScriptHost *This = impl_from_IServiceProvider(iface);
return IActiveScriptSite_Release(ACTSCPSITE(This)); return IActiveScriptSite_Release(ACTSCPSITE(This));
} }
static HRESULT WINAPI ASServiceProvider_QueryService(IServiceProvider *iface, REFGUID guidService, static HRESULT WINAPI ASServiceProvider_QueryService(IServiceProvider *iface, REFGUID guidService,
REFIID riid, void **ppv) REFIID riid, void **ppv)
{ {
ScriptHost *This = SERVPROV_THIS(iface); ScriptHost *This = impl_from_IServiceProvider(iface);
if(IsEqualGUID(&SID_SInternetHostSecurityManager, guidService)) { if(IsEqualGUID(&SID_SInternetHostSecurityManager, guidService)) {
TRACE("(%p)->(SID_SInternetHostSecurityManager)\n", This); TRACE("(%p)->(SID_SInternetHostSecurityManager)\n", This);
@ -580,8 +583,6 @@ static HRESULT WINAPI ASServiceProvider_QueryService(IServiceProvider *iface, RE
return E_NOINTERFACE; return E_NOINTERFACE;
} }
#undef SERVPROV_THIS
static const IServiceProviderVtbl ASServiceProviderVtbl = { static const IServiceProviderVtbl ASServiceProviderVtbl = {
ASServiceProvider_QueryInterface, ASServiceProvider_QueryInterface,
ASServiceProvider_AddRef, ASServiceProvider_AddRef,
@ -599,7 +600,7 @@ static ScriptHost *create_script_host(HTMLWindow *window, const GUID *guid)
ret->lpIActiveScriptSiteInterruptPollVtbl = &ActiveScriptSiteInterruptPollVtbl; ret->lpIActiveScriptSiteInterruptPollVtbl = &ActiveScriptSiteInterruptPollVtbl;
ret->lpIActiveScriptSiteWindowVtbl = &ActiveScriptSiteWindowVtbl; ret->lpIActiveScriptSiteWindowVtbl = &ActiveScriptSiteWindowVtbl;
ret->lpIActiveScriptSiteDebugVtbl = &ActiveScriptSiteDebugVtbl; ret->lpIActiveScriptSiteDebugVtbl = &ActiveScriptSiteDebugVtbl;
ret->lpServiceProviderVtbl = &ASServiceProviderVtbl; ret->IServiceProvider_iface.lpVtbl = &ASServiceProviderVtbl;
ret->ref = 1; ret->ref = 1;
ret->window = window; ret->window = window;
ret->script_state = SCRIPTSTATE_UNINITIALIZED; ret->script_state = SCRIPTSTATE_UNINITIALIZED;

View File

@ -207,31 +207,34 @@ static IOleUndoManager *create_undomgr(void)
* IServiceProvider implementation * IServiceProvider implementation
*/ */
#define SERVPROV_THIS(iface) DEFINE_THIS(HTMLDocument, ServiceProvider, iface) static inline HTMLDocument *impl_from_IServiceProvider(IServiceProvider *iface)
{
return CONTAINING_RECORD(iface, HTMLDocument, IServiceProvider_iface);
}
static HRESULT WINAPI ServiceProvider_QueryInterface(IServiceProvider *iface, REFIID riid, void **ppv) static HRESULT WINAPI ServiceProvider_QueryInterface(IServiceProvider *iface, REFIID riid, void **ppv)
{ {
HTMLDocument *This = SERVPROV_THIS(iface); HTMLDocument *This = impl_from_IServiceProvider(iface);
return htmldoc_query_interface(This, riid, ppv); return htmldoc_query_interface(This, riid, ppv);
} }
static ULONG WINAPI ServiceProvider_AddRef(IServiceProvider *iface) static ULONG WINAPI ServiceProvider_AddRef(IServiceProvider *iface)
{ {
HTMLDocument *This = SERVPROV_THIS(iface); HTMLDocument *This = impl_from_IServiceProvider(iface);
return htmldoc_addref(This); return htmldoc_addref(This);
} }
static ULONG WINAPI ServiceProvider_Release(IServiceProvider *iface) static ULONG WINAPI ServiceProvider_Release(IServiceProvider *iface)
{ {
HTMLDocument *This = SERVPROV_THIS(iface); HTMLDocument *This = impl_from_IServiceProvider(iface);
return htmldoc_release(This); return htmldoc_release(This);
} }
static HRESULT WINAPI ServiceProvider_QueryService(IServiceProvider *iface, REFGUID guidService, static HRESULT WINAPI ServiceProvider_QueryService(IServiceProvider *iface, REFGUID guidService,
REFIID riid, void **ppv) REFIID riid, void **ppv)
{ {
HTMLDocument *This = SERVPROV_THIS(iface); HTMLDocument *This = impl_from_IServiceProvider(iface);
if(IsEqualGUID(&CLSID_CMarkup, guidService)) { if(IsEqualGUID(&CLSID_CMarkup, guidService)) {
FIXME("(%p)->(CLSID_CMarkup %s %p)\n", This, debugstr_guid(riid), ppv); FIXME("(%p)->(CLSID_CMarkup %s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE; return E_NOINTERFACE;
@ -276,5 +279,5 @@ static const IServiceProviderVtbl ServiceProviderVtbl = {
void HTMLDocument_Service_Init(HTMLDocument *This) void HTMLDocument_Service_Init(HTMLDocument *This)
{ {
This->lpServiceProviderVtbl = &ServiceProviderVtbl; This->IServiceProvider_iface.lpVtbl = &ServiceProviderVtbl;
} }