Piotr Caban : shdocvw/tests: Added OleObject_Close tests.

Alexandre Julliard julliard at winehq.org
Mon Aug 1 13:22:13 CDT 2011


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Mon Aug  1 12:28:49 2011 +0200

shdocvw/tests: Added OleObject_Close tests.

---

 dlls/shdocvw/tests/webbrowser.c |   89 +++++++++++++++++++++++++++++++++------
 1 files changed, 76 insertions(+), 13 deletions(-)

diff --git a/dlls/shdocvw/tests/webbrowser.c b/dlls/shdocvw/tests/webbrowser.c
index 06d0ded..eeb0a49 100644
--- a/dlls/shdocvw/tests/webbrowser.c
+++ b/dlls/shdocvw/tests/webbrowser.c
@@ -135,6 +135,8 @@ DEFINE_EXPECT(GetDropTarget);
 DEFINE_EXPECT(TranslateUrl);
 DEFINE_EXPECT(ShowUI);
 DEFINE_EXPECT(HideUI);
+DEFINE_EXPECT(OnUIDeactivate);
+DEFINE_EXPECT(OnInPlaceDeactivate);
 DEFINE_EXPECT(RequestUIActivate);
 DEFINE_EXPECT(ControlSite_TranslateAccelerator);
 DEFINE_EXPECT(OnFocus);
@@ -147,7 +149,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;
+static BOOL is_downloading, is_first_load, use_container_olecmd, test_close;
 static HRESULT hr_dochost_TranslateAccelerator = E_NOTIMPL;
 static HRESULT hr_site_TranslateAccelerator = E_NOTIMPL;
 static const char *current_url;
@@ -1106,8 +1108,13 @@ static HRESULT WINAPI InPlaceUIWindow_SetActiveObject(IOleInPlaceFrame *iface,
         IOleInPlaceActiveObject *pActiveObject, LPCOLESTR pszObjName)
 {
     CHECK_EXPECT(UIWindow_SetActiveObject);
-    ok(pActiveObject != NULL, "pActiveObject = NULL\n");
-    ok(!lstrcmpW(pszObjName, wszItem), "unexpected pszObjName\n");
+    if(!test_close) {
+        ok(pActiveObject != NULL, "pActiveObject = NULL\n");
+        ok(!lstrcmpW(pszObjName, wszItem), "unexpected pszObjName\n");
+    } else {
+        ok(!pActiveObject, "pActiveObject != NULL\n");
+        ok(!pszObjName, "pszObjName != NULL\n");
+    }
     return S_OK;
 }
 
@@ -1115,8 +1122,13 @@ static HRESULT WINAPI InPlaceFrame_SetActiveObject(IOleInPlaceFrame *iface,
         IOleInPlaceActiveObject *pActiveObject, LPCOLESTR pszObjName)
 {
     CHECK_EXPECT(Frame_SetActiveObject);
-    ok(pActiveObject != NULL, "pActiveObject = NULL\n");
-    ok(!lstrcmpW(pszObjName, wszItem), "unexpected pszObjName\n");
+    if(!test_close) {
+        ok(pActiveObject != NULL, "pActiveObject = NULL\n");
+        ok(!lstrcmpW(pszObjName, wszItem), "unexpected pszObjName\n");
+    } else {
+        ok(!pActiveObject, "pActiveObject != NULL\n");
+        ok(!pszObjName, "pszObjName != NULL\n");
+    }
     return S_OK;
 }
 
@@ -1293,14 +1305,15 @@ static HRESULT WINAPI InPlaceSite_Scroll(IOleInPlaceSiteEx *iface, SIZE scrollEx
 
 static HRESULT WINAPI InPlaceSite_OnUIDeactivate(IOleInPlaceSiteEx *iface, BOOL fUndoable)
 {
-    ok(0, "unexpected call\n");
-    return E_NOTIMPL;
+    CHECK_EXPECT(OnUIDeactivate);
+    ok(!fUndoable, "fUndoable should be FALSE\n");
+    return S_OK;
 }
 
 static HRESULT WINAPI InPlaceSite_OnInPlaceDeactivate(IOleInPlaceSiteEx *iface)
 {
-    ok(0, "unexpected call\n");
-    return E_NOTIMPL;
+    CHECK_EXPECT(OnInPlaceDeactivate);
+    return S_OK;
 }
 
 static HRESULT WINAPI InPlaceSite_DiscardUndoState(IOleInPlaceSiteEx *iface)
@@ -2979,7 +2992,52 @@ static void test_dochost_qs(IUnknown *unk)
     IServiceProvider_Release(serv_prov);
 }
 
-static void test_WebBrowser(BOOL do_download)
+static void test_Close(IWebBrowser2 *wb, BOOL do_download)
+{
+    IOleObject *oo;
+    IOleClientSite *ocs;
+    HRESULT hres;
+
+    hres = IWebBrowser2_QueryInterface(wb, &IID_IOleObject, (void**)&oo);
+    ok(hres == S_OK, "QueryInterface failed: %08x\n", hres);
+    if(hres != S_OK)
+        return;
+
+    test_close = TRUE;
+
+    SET_EXPECT(Frame_SetActiveObject);
+    SET_EXPECT(UIWindow_SetActiveObject);
+    SET_EXPECT(OnUIDeactivate);
+    SET_EXPECT(OnFocus);
+    SET_EXPECT(OnInPlaceDeactivate);
+    if(!do_download) {
+        SET_EXPECT(Invoke_COMMANDSTATECHANGE);
+        SET_EXPECT(Invoke_DOWNLOADCOMPLETE);
+    }
+    hres = IOleObject_Close(oo, OLECLOSE_NOSAVE);
+    ok(hres == S_OK, "OleObject_Close failed: %x\n", hres);
+    CHECK_CALLED(Frame_SetActiveObject);
+    CHECK_CALLED(UIWindow_SetActiveObject);
+    CHECK_CALLED(OnUIDeactivate);
+    todo_wine CHECK_CALLED(OnFocus);
+    CHECK_CALLED(OnInPlaceDeactivate);
+    if(!do_download) {
+        todo_wine CHECK_CALLED(Invoke_COMMANDSTATECHANGE);
+        todo_wine CHECK_CALLED(Invoke_DOWNLOADCOMPLETE);
+    }
+
+    hres = IOleObject_GetClientSite(oo, &ocs);
+    ok(hres == S_OK, "hres = %x\n", hres);
+    ok(!ocs, "ocs != NULL\n");
+
+    hres = IOleObject_Close(oo, OLECLOSE_NOSAVE);
+    ok(hres == S_OK, "OleObject_Close failed: %x\n", hres);
+
+    test_close = FALSE;
+    IOleObject_Release(oo);
+}
+
+static void test_WebBrowser(BOOL do_download, BOOL do_close)
 {
     IUnknown *unk = NULL;
     ULONG ref;
@@ -3035,7 +3093,10 @@ static void test_WebBrowser(BOOL do_download)
         test_dochost_qs(unk);
     }
 
-    test_ClientSite(unk, NULL, !do_download);
+    if(do_close)
+        test_Close(wb, do_download);
+    else
+        test_ClientSite(unk, NULL, !do_download);
     test_ie_funcs(unk);
     test_GetControlInfo(unk);
     test_wb_funcs(unk, FALSE);
@@ -3103,9 +3164,11 @@ START_TEST(webbrowser)
       container_hwnd = create_container_window();
 
       trace("Testing WebBrowser (no download)...\n");
-      test_WebBrowser(FALSE);
+      test_WebBrowser(FALSE, FALSE);
+      test_WebBrowser(FALSE, TRUE);
       trace("Testing WebBrowser...\n");
-      test_WebBrowser(TRUE);
+      test_WebBrowser(TRUE, FALSE);
+      test_WebBrowser(TRUE, TRUE);
       trace("Testing WebBrowser w/o container-based olecmd...\n");
       test_WebBrowser_NoContainerOlecmd();
     }else {




More information about the wine-cvs mailing list