MSHTML: Added IHlinkTarget::Navigate test

Jacek Caban jack at itma.pwr.wroc.pl
Sat Aug 27 09:38:24 CDT 2005


Changelog:
    - Added IHlinkTarget::Navigate test
    - Added downloading test (disabled)
-------------- next part --------------
Index: dlls/mshtml/tests/htmldoc.c
===================================================================
RCS file: /home/wine/wine/dlls/mshtml/tests/htmldoc.c,v
retrieving revision 1.13
diff -u -p -r1.13 htmldoc.c
--- dlls/mshtml/tests/htmldoc.c	27 Aug 2005 09:19:52 -0000	1.13
+++ dlls/mshtml/tests/htmldoc.c	27 Aug 2005 12:32:57 -0000
@@ -28,11 +28,13 @@
 #include "docobj.h"
 #include "mshtmhst.h"
 #include "mshtmdid.h"
+#include "hlink.h"
 #include "idispids.h"
 #include "shlguid.h"
 
 #include "initguid.h"
 DEFINE_SHLGUID(CGID_Undocumented, 0x000214D4L, 0, 0);
+DEFINE_GUID(CGID_MSHTML, 0xDE4BA900,0x59CA,0x11CF,0x95,0x92, 0x44,0x45,0x53,0x54,0x00,0x00);
 
 #define DEFINE_EXPECT(func) \
     static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
@@ -78,17 +80,33 @@ DEFINE_EXPECT(QueryStatus_OPEN);
 DEFINE_EXPECT(QueryStatus_NEW);
 DEFINE_EXPECT(Exec_SETPROGRESSMAX);
 DEFINE_EXPECT(Exec_SETPROGRESSPOS);
+DEFINE_EXPECT(Exec_HTTPEQUIV_DONE); 
+DEFINE_EXPECT(Exec_SETDOWNLOADSTATE);
 DEFINE_EXPECT(Exec_ShellDocView_37);
+DEFINE_EXPECT(Exec_UPDATECOMMANDS);
+DEFINE_EXPECT(Exec_SETTITLE);
+DEFINE_EXPECT(Exec_HTTPEQUIV);
+DEFINE_EXPECT(Exec_MSHTML_2315);
 DEFINE_EXPECT(Invoke_AMBIENT_USERMODE);
 DEFINE_EXPECT(Invoke_AMBIENT_DLCONTROL);
 DEFINE_EXPECT(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
 DEFINE_EXPECT(Invoke_AMBIENT_SILENT);
 DEFINE_EXPECT(Invoke_AMBIENT_USERAGENT);
 DEFINE_EXPECT(Invoke_AMBIENT_PALETTE);
+DEFINE_EXPECT(GetDropTarget);
+DEFINE_EXPECT(UpdateUI);
 
 static BOOL expect_LockContainer_fLock;
 static BOOL expect_SetActiveObject_active;
-static BOOL do_load = FALSE, set_clientsite = FALSE, container_locked = FALSE;
+static BOOL set_clientsite = FALSE, container_locked = FALSE;
+static enum {
+    LD_NO = 0,
+    LD_DOLOAD,
+    LD_LOADING,
+    LD_LOADED
+} load_state;
+
+static LPCOLESTR expect_status_text = NULL;
 
 static HRESULT QueryInterface(REFIID riid, void **ppv);
 
@@ -229,8 +247,9 @@ static HRESULT WINAPI InPlaceFrame_Remov
 
 static HRESULT WINAPI InPlaceFrame_SetStatusText(IOleInPlaceFrame *iface, LPCOLESTR pszStatusText)
 {
-    CHECK_EXPECT(SetStatusText);
-    ok(pszStatusText == NULL, "pszStatusText=%p, expected NULL\n", pszStatusText);
+    CHECK_EXPECT2(SetStatusText);
+    if(!expect_status_text)
+        ok(pszStatusText == NULL, "pszStatusText=%p, expected NULL\n", pszStatusText);
     return S_OK;
 }
 
@@ -541,6 +560,7 @@ static HRESULT WINAPI DocumentSite_Activ
                 SET_EXPECT(SetActiveObject);
                 SET_EXPECT(ShowUI);
                 expect_SetActiveObject_active = TRUE;
+                expect_status_text = NULL;
 
                 hres = IOleDocumentView_UIActivate(view, TRUE);
 
@@ -594,8 +614,11 @@ static HRESULT WINAPI DocumentSite_Activ
                 SET_EXPECT(Exec_SETPROGRESSMAX);
                 SET_EXPECT(Exec_SETPROGRESSPOS);
                 SET_EXPECT(OnUIActivate);
+                expect_status_text = (load_state == LD_LOADED ? (LPCOLESTR)0xdeadbeef : NULL);
+
                 hres = IOleDocumentView_Show(view, TRUE);
                 ok(hres == S_OK, "Show failed: %08lx\n", hres);
+
                 CHECK_CALLED(CanInPlaceActivate);
                 CHECK_CALLED(GetWindowContext);
                 CHECK_CALLED(GetWindow);
@@ -695,8 +718,8 @@ static HRESULT WINAPI DocHostUIHandler_H
 
 static HRESULT WINAPI DocHostUIHandler_UpdateUI(IDocHostUIHandler2 *iface)
 {
-    ok(0, "unexpected call\n");
-    return E_NOTIMPL;
+    CHECK_EXPECT(UpdateUI);
+    return S_OK;
 }
 
 static HRESULT WINAPI DocHostUIHandler_EnableModeless(IDocHostUIHandler2 *iface, BOOL fEnable)
@@ -745,7 +768,8 @@ static HRESULT WINAPI DocHostUIHandler_G
 static HRESULT WINAPI DocHostUIHandler_GetDropTarget(IDocHostUIHandler2 *iface,
         IDropTarget *pDropTarget, IDropTarget **ppDropTarget)
 {
-    ok(0, "unexpected call\n");
+    CHECK_EXPECT(GetDropTarget);
+    /* TODO */
     return E_NOTIMPL;
 }
 
@@ -853,23 +877,45 @@ static HRESULT WINAPI OleCommandTarget_E
     if(!pguidCmdGroup) {
         switch(nCmdID) {
         case OLECMDID_SETPROGRESSMAX:
-            CHECK_EXPECT(Exec_SETPROGRESSMAX);
+            CHECK_EXPECT2(Exec_SETPROGRESSMAX);
             ok(pvaIn != NULL, "pvaIn == NULL\n");
             if(pvaIn) {
                 ok(V_VT(pvaIn) == VT_I4, "V_VT(pvaIn)=%d, expected VT_I4\n", V_VT(pvaIn));
-                ok(V_I4(pvaIn) == 0, "V_I4(pvaIn)=%ld, expected 0\n", V_I4(pvaIn));
+                if(load_state == LD_NO)
+                    ok(V_I4(pvaIn) == 0, "V_I4(pvaIn)=%ld, expected 0\n", V_I4(pvaIn));
             }
             ok(pvaOut == NULL, "pvaOut=%p, expected NULL\n", pvaOut);
             return S_OK;
         case OLECMDID_SETPROGRESSPOS:
-            CHECK_EXPECT(Exec_SETPROGRESSPOS);
+            CHECK_EXPECT2(Exec_SETPROGRESSPOS);
             ok(pvaIn != NULL, "pvaIn == NULL\n");
             if(pvaIn) {
                 ok(V_VT(pvaIn) == VT_I4, "V_VT(pvaIn)=%d, expected VT_I4\n", V_VT(pvaIn));
-                ok(V_I4(pvaIn) == 0, "V_I4(pvaIn)=%ld, expected 0\n", V_I4(pvaIn));
+                if(load_state == LD_NO)
+                    ok(V_I4(pvaIn) == 0, "V_I4(pvaIn)=%ld, expected 0\n", V_I4(pvaIn));
             }
             ok(pvaOut == NULL, "pvaOut=%p, expected NULL\n", pvaOut);
             return S_OK;
+        case OLECMDID_HTTPEQUIV_DONE:
+            CHECK_EXPECT(Exec_HTTPEQUIV_DONE);
+            /* TODO */
+            return S_OK;
+        case OLECMDID_SETDOWNLOADSTATE:
+            CHECK_EXPECT2(Exec_SETDOWNLOADSTATE);
+            /* TODO */
+            return S_OK;
+        case OLECMDID_UPDATECOMMANDS:
+            CHECK_EXPECT(Exec_UPDATECOMMANDS);
+            /* TODO */
+            return S_OK;
+        case OLECMDID_SETTITLE:
+            CHECK_EXPECT2(Exec_SETTITLE);
+            /* TODO */
+            return S_OK;
+        case OLECMDID_HTTPEQUIV:
+            CHECK_EXPECT2(Exec_HTTPEQUIV);
+            /* TODO */
+            return S_OK;
         default:
             ok(0, "unexpected command %ld\n", nCmdID);
             return E_FAIL;
@@ -893,11 +939,21 @@ static HRESULT WINAPI OleCommandTarget_E
         };
     }
 
+    if(IsEqualGUID(&CGID_MSHTML, pguidCmdGroup)) {
+        switch(nCmdID) {
+        case 2315:
+            CHECK_EXPECT(Exec_MSHTML_2315);
+            /* TODO */
+            return S_OK;
+        default:
+            ok(0, "unexpected command %ld\n", nCmdID);
+        };
+    }
+
     if(IsEqualGUID(&CGID_Undocumented, pguidCmdGroup))
         return E_FAIL; /* TODO */
 
     ok(0, "unexpected call\n");
-
     return E_NOTIMPL;
 }
 
@@ -1102,6 +1158,49 @@ static void test_Load(IPersistMoniker *p
     IMoniker_Release(mon);
 }
 
+#ifdef DOWNLOAD_TEST
+
+static void test_download(void)
+{
+    MSG msg;
+
+    load_state = LD_LOADING;
+
+    SET_EXPECT(Exec_SETDOWNLOADSTATE);
+    SET_EXPECT(GetDropTarget);
+    SET_EXPECT(SetStatusText);
+    SET_EXPECT(UpdateUI);
+    SET_EXPECT(Exec_UPDATECOMMANDS);
+    SET_EXPECT(Exec_SETTITLE);
+    SET_EXPECT(Exec_HTTPEQUIV);
+    SET_EXPECT(Exec_SETPROGRESSMAX);
+    SET_EXPECT(Exec_SETPROGRESSPOS);
+    SET_EXPECT(Exec_MSHTML_2315);
+    SET_EXPECT(Exec_HTTPEQUIV_DONE);
+    expect_status_text = (LPCOLESTR)0xdeadbeef; /* TODO */
+
+    while(!called_Exec_HTTPEQUIV_DONE && GetMessage(&msg, NULL, 0, 0)) {
+        TranslateMessage(&msg);
+        DispatchMessage(&msg);
+    }
+
+    CHECK_CALLED(Exec_SETDOWNLOADSTATE);
+    CHECK_CALLED(GetDropTarget);
+    CHECK_CALLED(SetStatusText);
+    CHECK_CALLED(UpdateUI);
+    CHECK_CALLED(Exec_UPDATECOMMANDS);
+    CHECK_CALLED(Exec_SETTITLE);
+    CHECK_CALLED(Exec_HTTPEQUIV);
+    CHECK_CALLED(Exec_SETPROGRESSMAX);
+    CHECK_CALLED(Exec_SETPROGRESSPOS);
+    CHECK_CALLED(Exec_MSHTML_2315);
+    CHECK_CALLED(Exec_HTTPEQUIV_DONE);
+
+    load_state = LD_LOADED;
+}
+
+#endif
+
 static void test_Persist(IUnknown *unk)
 {
     IPersistMoniker *persist_mon;
@@ -1132,7 +1231,7 @@ static void test_Persist(IUnknown *unk)
         ok(hres == S_OK, "GetClassID failed: %08lx\n", hres);
         ok(IsEqualGUID(&CLSID_HTMLDocument, &guid), "guid != CLSID_HTMLDocument\n");
 
-        if(do_load)
+        if(load_state == LD_DOLOAD)
             test_Load(persist_mon);
 
         IPersistMoniker_Release(persist_mon);
@@ -1606,6 +1705,30 @@ static void test_Hide(void)
     ok(hres == S_OK, "Show failed: %08lx\n", hres);
 }
 
+static HRESULT create_document(IUnknown **unk)
+{
+    HRESULT hres = CoCreateInstance(&CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
+            &IID_IUnknown, (void**)unk);
+    ok(hres == S_OK, "CoCreateInstance failed: %08lx\n", hres);
+    return hres;
+}
+
+static void test_Navigate(IUnknown *unk)
+{
+    IHlinkTarget *hlink;
+    HRESULT hres;
+
+    hres = IUnknown_QueryInterface(unk, &IID_IHlinkTarget, (void**)&hlink);
+    ok(hres == S_OK, "QueryInterface(IID_IHlinkTarget) failed: %08lx\n", hres);
+
+    SET_EXPECT(ActivateMe);
+    hres = IHlinkTarget_Navigate(hlink, 0, NULL);
+    ok(hres == S_OK, "Navigate failed: %08lx\n", hres);
+    CHECK_CALLED(ActivateMe);
+
+    IHlinkTarget_Release(hlink);
+}
+
 static void test_HTMLDocument(void)
 {
     IUnknown *unk;
@@ -1614,14 +1737,12 @@ static void test_HTMLDocument(void)
 
     hwnd = last_hwnd = NULL;
 
-    hres = CoCreateInstance(&CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
-            &IID_IUnknown, (void**)&unk);
-    ok(hres == S_OK, "CoCreateInstance failed: %08lx\n", hres);
+    hres = create_document(&unk);
     if(FAILED(hres))
         return;
 
     test_Persist(unk);
-    if(!do_load)
+    if(load_state == LD_NO)
         test_OnAmbientPropertyChange2(unk);
 
     hres = test_Activate(unk, CLIENTSITE_EXPECTPATH);
@@ -1630,6 +1751,11 @@ static void test_HTMLDocument(void)
         return;
     }
 
+#ifdef DOWNLOAD_TEST
+    if(load_state == LD_DOLOAD)
+        test_download();
+#endif
+
     test_OleCommandTarget_fail(unk);
     test_OleCommandTarget(unk);
     test_OnAmbientPropertyChange(unk);
@@ -1680,15 +1806,49 @@ static void test_HTMLDocument(void)
 
 }
 
+static void test_HTMLDocument_hlink(void)
+{
+    IUnknown *unk;
+    HRESULT hres;
+    ULONG ref;
+
+    hwnd = last_hwnd = NULL;
+
+    hres = create_document(&unk);
+    if(FAILED(hres))
+        return;
+
+    test_Persist(unk);
+    test_Navigate(unk);
+
+#ifdef DOWNLOAD_TEST
+    test_download();
+#endif
+
+    test_Window(unk, TRUE);
+    test_InPlaceDeactivate(unk, TRUE);
+    test_Close(unk, FALSE);
+
+    if(view)
+        IOleDocumentView_Release(view);
+    view = NULL;
+
+    ref = IUnknown_Release(unk);
+    ok(ref == 0, "ref=%ld, expected 0\n", ref);
+
+}
+
 START_TEST(htmldoc)
 {
     CoInitialize(NULL);
     container_hwnd = create_container_window();
 
-    do_load = FALSE;
+    load_state = LD_NO;
     test_HTMLDocument();
-    do_load = TRUE;
+    load_state = LD_DOLOAD;
     test_HTMLDocument();
+    load_state = LD_DOLOAD;
+    test_HTMLDocument_hlink();
 
     DestroyWindow(container_hwnd);
     CoUninitialize();


More information about the wine-patches mailing list