From eb29e30188baf925a473ad75b770fa80838212fc Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Wed, 16 May 2012 13:21:12 +0200 Subject: [PATCH] ieframe: Added GetExternal tests. --- dlls/ieframe/tests/webbrowser.c | 75 +++++++++++++++++++++++++++------ 1 file changed, 61 insertions(+), 14 deletions(-) diff --git a/dlls/ieframe/tests/webbrowser.c b/dlls/ieframe/tests/webbrowser.c index 4b2404a7c7..12d2bba654 100644 --- a/dlls/ieframe/tests/webbrowser.c +++ b/dlls/ieframe/tests/webbrowser.c @@ -140,6 +140,7 @@ DEFINE_EXPECT(OnInPlaceDeactivate); DEFINE_EXPECT(RequestUIActivate); DEFINE_EXPECT(ControlSite_TranslateAccelerator); DEFINE_EXPECT(OnFocus); +DEFINE_EXPECT(GetExternal); static const WCHAR wszItem[] = {'i','t','e','m',0}; static const WCHAR emptyW[] = {0}; @@ -149,7 +150,7 @@ static VARIANT_BOOL exvb; static IWebBrowser2 *wb; static HWND container_hwnd, shell_embedding_hwnd; -static BOOL is_downloading, is_first_load, use_container_olecmd, test_close, is_http; +static BOOL is_downloading, is_first_load, use_container_olecmd, test_close, is_http, use_container_dochostui; static HRESULT hr_dochost_TranslateAccelerator = E_NOTIMPL; static HRESULT hr_site_TranslateAccelerator = E_NOTIMPL; static const char *current_url; @@ -1571,8 +1572,9 @@ static HRESULT WINAPI DocHostUIHandler_GetDropTarget(IDocHostUIHandler2 *iface, static HRESULT WINAPI DocHostUIHandler_GetExternal(IDocHostUIHandler2 *iface, IDispatch **ppDispatch) { - ok(0, "unexpected call\n"); - return E_NOTIMPL; + CHECK_EXPECT(GetExternal); + *ppDispatch = NULL; + return S_FALSE; } static HRESULT WINAPI DocHostUIHandler_TranslateUrl(IDocHostUIHandler2 *iface, DWORD dwTranslate, @@ -1708,7 +1710,7 @@ static HRESULT QueryInterface(REFIID riid, void **ppv) *ppv = &InPlaceSite; else if(IsEqualGUID(&IID_IDocHostUIHandler, riid) || IsEqualGUID(&IID_IDocHostUIHandler2, riid)) - *ppv = &DocHostUIHandler; + *ppv = use_container_dochostui ? &DocHostUIHandler : NULL; else if(IsEqualGUID(&IID_IDispatch, riid)) *ppv = &Dispatch; else if(IsEqualGUID(&IID_IServiceProvider, riid)) @@ -2550,12 +2552,15 @@ static void test_Navigate2(IUnknown *unk, const char *nav_url) SET_EXPECT(EnableModeless_FALSE); SET_EXPECT(Invoke_STATUSTEXTCHANGE); SET_EXPECT(SetStatusText); - SET_EXPECT(GetHostInfo); + if(use_container_dochostui) + SET_EXPECT(GetHostInfo); SET_EXPECT(Invoke_AMBIENT_DLCONTROL); SET_EXPECT(Invoke_AMBIENT_USERAGENT); SET_EXPECT(Invoke_AMBIENT_PALETTE); - SET_EXPECT(GetOptionKeyPath); - SET_EXPECT(GetOverridesKeyPath); + if(use_container_dochostui) { + SET_EXPECT(GetOptionKeyPath); + SET_EXPECT(GetOverridesKeyPath); + } if (use_container_olecmd) SET_EXPECT(QueryStatus_SETPROGRESSTEXT); if (use_container_olecmd) SET_EXPECT(Exec_SETPROGRESSMAX); if (use_container_olecmd) SET_EXPECT(Exec_SETPROGRESSPOS); @@ -2579,12 +2584,15 @@ static void test_Navigate2(IUnknown *unk, const char *nav_url) CHECK_CALLED(EnableModeless_FALSE); CHECK_CALLED(Invoke_STATUSTEXTCHANGE); CHECK_CALLED(SetStatusText); - CHECK_CALLED(GetHostInfo); + if(use_container_dochostui) + CHECK_CALLED(GetHostInfo); CHECK_CALLED(Invoke_AMBIENT_DLCONTROL); CHECK_CALLED(Invoke_AMBIENT_USERAGENT); CLEAR_CALLED(Invoke_AMBIENT_PALETTE); /* Not called by IE9 */ - CLEAR_CALLED(GetOptionKeyPath); - CHECK_CALLED(GetOverridesKeyPath); + if(use_container_dochostui) { + CLEAR_CALLED(GetOptionKeyPath); + CHECK_CALLED(GetOverridesKeyPath); + } if (use_container_olecmd) todo_wine CHECK_CALLED(QueryStatus_SETPROGRESSTEXT); if (use_container_olecmd) todo_wine CHECK_CALLED(Exec_SETPROGRESSMAX); if (use_container_olecmd) todo_wine CHECK_CALLED(Exec_SETPROGRESSPOS); @@ -3001,6 +3009,41 @@ static void test_UIActivate(IUnknown *unk, BOOL activate) IDispatch_Release(disp); } +static void test_external(IUnknown *unk) +{ + IDocHostUIHandler2 *dochost; + IOleClientSite *client; + IDispatch *disp; + HRESULT hres; + + client = get_dochost(unk); + + hres = IOleClientSite_QueryInterface(client, &IID_IDocHostUIHandler2, (void**)&dochost); + ok(hres == S_OK, "Could not get IDocHostUIHandler2 iface: %08x\n", hres); + IOleClientSite_Release(client); + + if(use_container_dochostui) + SET_EXPECT(GetExternal); + disp = (void*)0xdeadbeef; + hres = IDocHostUIHandler2_GetExternal(dochost, &disp); + if(use_container_dochostui) { + CHECK_CALLED(GetExternal); + ok(hres == S_FALSE, "GetExternal failed: %08x\n", hres); + ok(!disp, "disp = %p\n", disp); + }else { + IShellUIHelper *uihelper; + + ok(hres == S_OK, "GetExternal failed: %08x\n", hres); + ok(disp != NULL, "disp == NULL\n"); + + hres = IDispatch_QueryInterface(disp, &IID_IShellUIHelper, (void**)&uihelper); + ok(hres == S_OK, "Could not get IShellUIHelper iface: %08x\n", hres); + IShellUIHelper_Release(uihelper); + } + + IDocHostUIHandler2_Release(dochost); +} + static void test_TranslateAccelerator(IUnknown *unk) { IOleClientSite *doc_clientsite; @@ -3240,6 +3283,7 @@ static void test_WebBrowser(BOOL do_download, BOOL do_close) is_downloading = FALSE; is_first_load = TRUE; use_container_olecmd = TRUE; + use_container_dochostui = TRUE; hres = IUnknown_QueryInterface(unk, &IID_IWebBrowser2, (void**)&wb); ok(hres == S_OK, "Could not get IWebBrowser2 iface: %08x\n", hres); @@ -3303,6 +3347,8 @@ static void test_WebBrowser(BOOL do_download, BOOL do_close) test_dochost_qs(unk); } + test_external(unk); + if(do_close) test_Close(wb, do_download); else @@ -3329,7 +3375,6 @@ static void test_WebBrowserV1(void) hres = CoCreateInstance(&CLSID_WebBrowser_V1, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER, &IID_IWebBrowser2, (void**)&wb); ok(hres == S_OK, "Could not get WebBrowserV1 instance: %08x\n", hres); - trace("%08x %p\n", hres, wb); test_QueryStatusWB(wb, FALSE, FALSE); test_ExecWB(wb, FALSE, FALSE); @@ -3342,7 +3387,7 @@ static void test_WebBrowserV1(void) ok(ref == 0, "ref=%d, expected 0\n", ref); } -static void test_WebBrowser_NoContainerOlecmd(void) +static void test_WebBrowser_slim_container(void) { IUnknown *unk = NULL; HRESULT hres; @@ -3351,6 +3396,7 @@ static void test_WebBrowser_NoContainerOlecmd(void) is_downloading = FALSE; is_first_load = TRUE; use_container_olecmd = FALSE; + use_container_dochostui = FALSE; /* Setup stage */ if (FAILED(create_WebBrowser(&unk))) @@ -3367,6 +3413,7 @@ static void test_WebBrowser_NoContainerOlecmd(void) /* Tests of interest */ test_QueryStatusWB(wb, FALSE, TRUE); test_ExecWB(wb, FALSE, TRUE); + test_external(unk); /* Cleanup stage */ IWebBrowser2_Release(wb); @@ -3391,7 +3438,7 @@ static BOOL is_ie_hardened(void) type != REG_DWORD) { ie_harden = 0; } - RegCloseKey(zone_map); + RegCloseKey(zone_map); } return ie_harden != 0; @@ -3417,7 +3464,7 @@ START_TEST(webbrowser) trace("Testing WebBrowser (with close)...\n"); test_WebBrowser(TRUE, TRUE); trace("Testing WebBrowser w/o container-based olecmd...\n"); - test_WebBrowser_NoContainerOlecmd(); + test_WebBrowser_slim_container(); trace("Testing WebBrowserV1...\n"); test_WebBrowserV1(); -- 2.32.0.93.g670b81a890