Jacek Caban : ieframe: Added more DoVerb tests.

Alexandre Julliard julliard at winehq.org
Mon Jul 9 14:56:39 CDT 2012


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Jul  9 17:46:10 2012 +0200

ieframe: Added more DoVerb tests.

---

 dlls/ieframe/tests/webbrowser.c |   95 ++++++++++++++++++++++++++++++++++++++-
 1 files changed, 93 insertions(+), 2 deletions(-)

diff --git a/dlls/ieframe/tests/webbrowser.c b/dlls/ieframe/tests/webbrowser.c
index 12d2bba..6711c77 100644
--- a/dlls/ieframe/tests/webbrowser.c
+++ b/dlls/ieframe/tests/webbrowser.c
@@ -1753,8 +1753,7 @@ static HWND create_container_window(void)
 
     RegisterClassExW(&wndclass);
     return CreateWindowW(wszWebBrowserContainer, wszWebBrowserContainer,
-            WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
-            CW_USEDEFAULT, NULL, NULL, NULL, NULL);
+            WS_OVERLAPPEDWINDOW, 10, 10, 600, 600, NULL, NULL, NULL, NULL);
 }
 
 static void test_DoVerb(IUnknown *unk)
@@ -1805,6 +1804,40 @@ static void test_DoVerb(IUnknown *unk)
     IOleObject_Release(oleobj);
 }
 
+static void call_DoVerb(IUnknown *unk, LONG verb)
+{
+    IOleObject *oleobj;
+    RECT rect = {60,60,600,600};
+    HRESULT hres;
+
+    hres = IUnknown_QueryInterface(unk, &IID_IOleObject, (void**)&oleobj);
+    ok(hres == S_OK, "QueryInterface(IID_OleObject) failed: %08x\n", hres);
+    if(FAILED(hres))
+        return;
+
+    hres = IOleObject_DoVerb(oleobj, verb, NULL, &ClientSite,
+                             -1, container_hwnd, &rect);
+    ok(hres == S_OK, "DoVerb failed: %08x\n", hres);
+
+    IOleObject_Release(oleobj);
+}
+
+static HWND get_hwnd(IUnknown *unk)
+{
+    IOleInPlaceObject *inplace;
+    HWND hwnd;
+    HRESULT hres;
+
+    hres = IUnknown_QueryInterface(unk, &IID_IOleInPlaceObject, (void**)&inplace);
+    ok(hres == S_OK, "QueryInterface(IID_OleInPlaceObject) failed: %08x\n", hres);
+
+    hres = IOleInPlaceObject_GetWindow(inplace, &hwnd);
+    ok(hres == S_OK, "GetWindow failed: %08x\n", hres);
+
+    IOleInPlaceObject_Release(inplace);
+    return hwnd;
+}
+
 static void test_GetMiscStatus(IOleObject *oleobj)
 {
     DWORD st, i;
@@ -3423,6 +3456,62 @@ static void test_WebBrowser_slim_container(void)
     ok(ref == 0, "ref=%d, expected 0\n", ref);
 }
 
+static void test_WebBrowser_DoVerb(void)
+{
+    IUnknown *unk = NULL;
+    HRESULT hres;
+    RECT rect;
+    HWND hwnd;
+    ULONG ref;
+    BOOL res;
+
+    is_downloading = FALSE;
+    is_first_load = TRUE;
+    use_container_olecmd = FALSE;
+
+    if (FAILED(create_WebBrowser(&unk)))
+        return;
+    hres = IUnknown_QueryInterface(unk, &IID_IWebBrowser2, (void**)&wb);
+    ok(hres == S_OK, "QueryInterface(IID_IWebBrowser) failed: %08x\n", hres);
+    if(FAILED(hres))
+        return;
+
+    test_ClientSite(unk, &ClientSite, FALSE);
+
+    SET_EXPECT(CanInPlaceActivate);
+    SET_EXPECT(Site_GetWindow);
+    SET_EXPECT(OnInPlaceActivate);
+    SET_EXPECT(GetWindowContext);
+    SET_EXPECT(ShowObject);
+    SET_EXPECT(GetContainer);
+    SET_EXPECT(Frame_GetWindow);
+    call_DoVerb(unk, OLEIVERB_INPLACEACTIVATE);
+    CHECK_CALLED(CanInPlaceActivate);
+    CHECK_CALLED(Site_GetWindow);
+    CHECK_CALLED(OnInPlaceActivate);
+    CHECK_CALLED(GetWindowContext);
+    CHECK_CALLED(ShowObject);
+    CHECK_CALLED(GetContainer);
+    CHECK_CALLED(Frame_GetWindow);
+
+    hwnd = get_hwnd(unk);
+
+    memset(&rect, 0xa, sizeof(rect));
+    res = GetWindowRect(hwnd, &rect);
+    ok(res, "GetWindowRect failed: %u\n", GetLastError());
+
+    SET_EXPECT(OnInPlaceDeactivate);
+    call_DoVerb(unk, OLEIVERB_HIDE);
+    CHECK_CALLED(OnInPlaceDeactivate);
+
+    test_ClientSite(unk, NULL, FALSE);
+
+    IWebBrowser2_Release(wb);
+    ref = IUnknown_Release(unk);
+    ok(ref == 0, "ref=%d, expected 0\n", ref);
+}
+
+
 /* Check if Internet Explorer is configured to run in "Enhanced Security Configuration" (aka hardened mode) */
 /* Note: this code is duplicated in dlls/mshtml/tests/mshtml_test.h and dlls/urlmon/tests/sec_mgr.c */
 static BOOL is_ie_hardened(void)
@@ -3461,6 +3550,8 @@ START_TEST(webbrowser)
         win_skip("Skipping http tests in hardened mode\n");
     }
 
+    trace("Testing WebBrowser DoVerb\n");
+    test_WebBrowser_DoVerb();
     trace("Testing WebBrowser (with close)...\n");
     test_WebBrowser(TRUE, TRUE);
     trace("Testing WebBrowser w/o container-based olecmd...\n");




More information about the wine-cvs mailing list