mshtml: Added PluginHost::GetContainer implementation.

This commit is contained in:
Jacek Caban 2010-12-15 00:42:44 +01:00 committed by Alexandre Julliard
parent dc25bca4ed
commit 94b591cdf2
2 changed files with 38 additions and 2 deletions

View File

@ -364,8 +364,17 @@ static HRESULT WINAPI PHClientSite_GetMoniker(IOleClientSite *iface, DWORD dwAss
static HRESULT WINAPI PHClientSite_GetContainer(IOleClientSite *iface, IOleContainer **ppContainer) static HRESULT WINAPI PHClientSite_GetContainer(IOleClientSite *iface, IOleContainer **ppContainer)
{ {
PluginHost *This = impl_from_IOleClientSite(iface); PluginHost *This = impl_from_IOleClientSite(iface);
FIXME("(%p)->(%p)\n", This, ppContainer);
return E_NOTIMPL; TRACE("(%p)->(%p)\n", This, ppContainer);
if(!This->doc) {
ERR("Called on detached object\n");
return E_UNEXPECTED;
}
*ppContainer = &This->doc->basedoc.IOleContainer_iface;
IOleContainer_AddRef(*ppContainer);
return S_OK;
} }
static HRESULT WINAPI PHClientSite_ShowObject(IOleClientSite *iface) static HRESULT WINAPI PHClientSite_ShowObject(IOleClientSite *iface)

View File

@ -1164,6 +1164,32 @@ static const IClassFactoryVtbl ClassFactoryVtbl = {
static IClassFactory activex_cf = { &ClassFactoryVtbl }; static IClassFactory activex_cf = { &ClassFactoryVtbl };
static void test_container(IHTMLDocument2 *doc_obj)
{
IHTMLWindow2 *parent_window;
IOleContainer *container;
IHTMLDocument2 *doc;
HRESULT hres;
container = NULL;
hres = IOleClientSite_GetContainer(client_site, &container);
ok(hres == S_OK, "GetContainer failed: %08x\n", hres);
ok(container != NULL, "container == NULL\n");
hres = IHTMLDocument2_get_parentWindow(doc_obj, &parent_window);
ok(hres == S_OK, "get_parentWindow failed: %08x\n", hres);
ok(parent_window != NULL, "parentWindow == NULL\n");
hres = IHTMLWindow2_get_document(parent_window, &doc);
ok(hres == S_OK, "get_document failed: %08x\n", hres);
ok(doc != NULL, "doc == NULL\n");
ok(iface_cmp((IUnknown*)doc, (IUnknown*)container), "container != doc\n");
IHTMLDocument2_Release(doc);
IHTMLWindow2_Release(parent_window);
IOleContainer_Release(container);
}
static void test_ui_activate(void) static void test_ui_activate(void)
{ {
IOleInPlaceSite *ip_site; IOleInPlaceSite *ip_site;
@ -1779,6 +1805,7 @@ static void test_object_ax(void)
CHECK_CALLED(SetObjectRects); CHECK_CALLED(SetObjectRects);
test_ui_activate(); test_ui_activate();
test_container(notif_doc);
SET_EXPECT(UIDeactivate); SET_EXPECT(UIDeactivate);
SET_EXPECT(Invoke_ENABLED); SET_EXPECT(Invoke_ENABLED);