From 3314bd8f8aeacbd88f33c1534bdbbec9d4bb0d25 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Fri, 10 Dec 2010 16:37:39 +0100 Subject: [PATCH] mshtml: Added QueryService(SID_SBindHost) implementation. --- dlls/mshtml/pluginhost.c | 6 ++++++ dlls/mshtml/tests/activex.c | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/dlls/mshtml/pluginhost.c b/dlls/mshtml/pluginhost.c index d7a83e75adc..7b7e210b9bf 100644 --- a/dlls/mshtml/pluginhost.c +++ b/dlls/mshtml/pluginhost.c @@ -838,6 +838,12 @@ static ULONG WINAPI PHServiceProvider_Release(IServiceProvider *iface) static HRESULT WINAPI PHServiceProvider_QueryService(IServiceProvider *iface, REFGUID guidService, REFIID riid, void **ppv) { PluginHost *This = impl_from_IServiceProvider(iface); + + if(IsEqualGUID(guidService, &SID_SBindHost)) { + TRACE("SID_SBindHost service\n"); + return IOleClientSite_QueryInterface(&This->IOleClientSite_iface, riid, ppv); + } + FIXME("(%p)->(%s %s %p)\n", This, debugstr_guid(guidService), debugstr_guid(riid), ppv); return E_NOINTERFACE; } diff --git a/dlls/mshtml/tests/activex.c b/dlls/mshtml/tests/activex.c index 9d8e66875b9..3e5f7b85eb4 100644 --- a/dlls/mshtml/tests/activex.c +++ b/dlls/mshtml/tests/activex.c @@ -330,6 +330,8 @@ static HRESULT WINAPI PersistPropertyBag_InitNew(IPersistPropertyBag *face) static HRESULT WINAPI PersistPropertyBag_Load(IPersistPropertyBag *face, IPropertyBag *pPropBag, IErrorLog *pErrorLog) { + IBindHost *bind_host, *bind_host2; + IServiceProvider *sp; VARIANT v; HRESULT hres; @@ -384,6 +386,21 @@ static HRESULT WINAPI PersistPropertyBag_Load(IPersistPropertyBag *face, IProper ok(V_BSTR(&v) == (BSTR)0xdeadbeef, "V_BSTR(v) = %p\n", V_BSTR(&v)); set_plugin_readystate(READYSTATE_INTERACTIVE); + + hres = IOleClientSite_QueryInterface(client_site, &IID_IBindHost, (void**)&bind_host); + ok(hres == S_OK, "Could not get IBindHost iface: %08x\n", hres); + + hres = IOleClientSite_QueryInterface(client_site, &IID_IServiceProvider, (void**)&sp); + ok(hres == S_OK, "Could not get IServiceProvider iface: %08x\n", hres); + + hres = IServiceProvider_QueryService(sp, &IID_IBindHost, &SID_SBindHost, (void**)&bind_host2); + ok(hres == S_OK, "QueryService(SID_SBindHost) failed: %08x\n", hres); + IServiceProvider_Release(sp); + + ok(iface_cmp((IUnknown*)bind_host, (IUnknown*)bind_host2), "bind_host != bind_host2\n"); + IBindHost_Release(bind_host2); + IBindHost_Release(bind_host); + set_plugin_readystate(READYSTATE_COMPLETE); return S_OK;