Jacek Caban : ieframe: Added GetExternal tests.

Alexandre Julliard julliard at winehq.org
Wed May 16 14:22:39 CDT 2012


Module: wine
Branch: master
Commit: eb29e30188baf925a473ad75b770fa80838212fc
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=eb29e30188baf925a473ad75b770fa80838212fc

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed May 16 13:21:12 2012 +0200

ieframe: Added GetExternal tests.

---

 dlls/ieframe/tests/webbrowser.c |   75 +++++++++++++++++++++++++++++++-------
 1 files changed, 61 insertions(+), 14 deletions(-)

diff --git a/dlls/ieframe/tests/webbrowser.c b/dlls/ieframe/tests/webbrowser.c
index 4b2404a..12d2bba 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();
 




More information about the wine-cvs mailing list