MSHTML: Added exec_on_unload implementation

Jacek Caban jack at itma.pwr.wroc.pl
Wed Aug 31 06:54:15 CDT 2005


Changelog:
    Added exec_on_unload implementation
-------------- next part --------------
Index: dlls/mshtml/oleobj.c
===================================================================
RCS file: /home/wine/wine/dlls/mshtml/oleobj.c,v
retrieving revision 1.18
diff -u -p -r1.18 oleobj.c
--- dlls/mshtml/oleobj.c	22 Aug 2005 14:07:49 -0000	1.18
+++ dlls/mshtml/oleobj.c	31 Aug 2005 09:49:45 -0000
@@ -634,8 +634,16 @@ static HRESULT exec_enable_interaction(H
 
 static HRESULT exec_on_unload(HTMLDocument *This, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
 {
-    FIXME("(%p)->(%ld %p %p)\n", This, nCmdexecopt, pvaIn, pvaOut);
-    return E_NOTIMPL;
+    TRACE("(%p)->(%ld %p %p)\n", This, nCmdexecopt, pvaIn, pvaOut);
+
+    /* Tests show that we have nothing more to do here */
+
+    if(pvaOut) {
+        V_VT(pvaOut) = VT_BOOL;
+        V_BOOL(pvaOut) = VARIANT_TRUE;
+    }
+
+    return S_OK;
 }
 
 static HRESULT exec_show_page_setup(HTMLDocument *This, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
@@ -775,7 +783,7 @@ static HRESULT WINAPI OleCommandTarget_Q
             }
         }
 
-        if(pguidCmdGroup)
+        if(pCmdText)
             FIXME("Set pCmdText\n");
     }else {
         FIXME("Unsupported pguidCmdGroup %s\n", debugstr_guid(pguidCmdGroup));
@@ -797,9 +805,13 @@ static HRESULT WINAPI OleCommandTarget_E
         }
 
         return exec_table[nCmdID].func(This, nCmdexecopt, pvaIn, pvaOut);
+    }else if(IsEqualGUID(&CGID_Explorer, pguidCmdGroup)) {
+        FIXME("unsupported nCmdID %ld of CGID_Explorer group\n", nCmdID);
+        TRACE("%p %p\n", pvaIn, pvaOut);
+        return OLECMDERR_E_NOTSUPPORTED;
     }else if(IsEqualGUID(&CGID_ShellDocView, pguidCmdGroup)) {
         FIXME("unsupported nCmdID %ld of CGID_ShellDocView group\n", nCmdID);
-        return OLECMDERR_E_UNKNOWNGROUP;
+        return OLECMDERR_E_NOTSUPPORTED;
     }
 
     FIXME("Unsupported pguidCmdGroup %s\n", debugstr_guid(pguidCmdGroup));
Index: dlls/mshtml/tests/htmldoc.c
===================================================================
RCS file: /home/wine/wine/dlls/mshtml/tests/htmldoc.c,v
retrieving revision 1.14
diff -u -p -r1.14 htmldoc.c
--- dlls/mshtml/tests/htmldoc.c	29 Aug 2005 09:29:58 -0000	1.14
+++ dlls/mshtml/tests/htmldoc.c	31 Aug 2005 09:49:46 -0000
@@ -210,8 +210,7 @@ static HRESULT WINAPI InPlaceFrame_SetAc
     static const WCHAR wszHTML_Document[] =
         {'H','T','M','L',' ','D','o','c','u','m','e','n','t',0};
 
-    ok(expect_SetActiveObject, "unexpected call\n");
-    called_SetActiveObject = TRUE;
+    CHECK_EXPECT2(SetActiveObject);
 
     if(expect_SetActiveObject_active) {
         ok(pActiveObject != NULL, "pActiveObject = NULL\n");
@@ -1077,6 +1076,7 @@ static HRESULT QueryInterface(REFIID rii
 
     /* TODO:
      * IServiceProvider
+     * IOleInPlaceSiteEx
      * {D48A6EC6-6A4A-11CF-94A7-444553540000}
      * {7BB0B520-B1A7-11D2-BB23-00C04F79ABCD}
      * {000670BA-0000-0000-C000-000000000046}
@@ -1365,6 +1365,31 @@ static void test_OleCommandTarget_fail(I
     IOleCommandTarget_Release(cmdtrg);
 }
 
+static void test_exec_onunload(IUnknown *unk)
+{
+    IOleCommandTarget *cmdtrg;
+    VARIANT var;
+    HRESULT hres;
+
+    hres = IUnknown_QueryInterface(unk, &IID_IOleCommandTarget, (void**)&cmdtrg);
+    ok(hres == S_OK, "QueryInterface(IID_IOleCommandTarget) failed: %08lx\n", hres);
+    if(FAILED(hres))
+        return;
+
+    memset(&var, 0x0a, sizeof(var));
+    hres = IOleCommandTarget_Exec(cmdtrg, NULL, OLECMDID_ONUNLOAD,
+            OLECMDEXECOPT_DODEFAULT, NULL, &var);
+    ok(hres == S_OK, "Exec(..., OLECMDID_ONUNLOAD, ...) failed: %08lx\n", hres);
+    ok(V_VT(&var) == VT_BOOL, "V_VT(var)=%d, expected VT_BOOL\n", V_VT(&var));
+    ok(V_BOOL(&var) == VARIANT_TRUE, "V_BOOL(var)=%x, expected VARIANT_TRUE\n", V_BOOL(&var));
+
+    hres = IOleCommandTarget_Exec(cmdtrg, NULL, OLECMDID_ONUNLOAD,
+            OLECMDEXECOPT_DODEFAULT, NULL, NULL);
+    ok(hres == S_OK, "Exec(..., OLECMDID_ONUNLOAD, ...) failed: %08lx\n", hres);
+
+    IOleCommandTarget_Release(cmdtrg);
+}
+
 static HWND create_container_window(void)
 {
     static const WCHAR wszHTMLDocumentTest[] =
@@ -1825,6 +1850,7 @@ static void test_HTMLDocument_hlink(void
     test_download();
 #endif
 
+    test_exec_onunload(unk);
     test_Window(unk, TRUE);
     test_InPlaceDeactivate(unk, TRUE);
     test_Close(unk, FALSE);
@@ -1835,7 +1861,6 @@ static void test_HTMLDocument_hlink(void
 
     ref = IUnknown_Release(unk);
     ok(ref == 0, "ref=%ld, expected 0\n", ref);
-
 }
 
 START_TEST(htmldoc)


More information about the wine-patches mailing list