Jacek Caban : mshtml: Added more QueryStatus tests.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Nov 2 15:47:24 CST 2006


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Nov  2 17:34:33 2006 +0100

mshtml: Added more QueryStatus tests.

---

 dlls/mshtml/tests/htmldoc.c |   45 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 45 insertions(+), 0 deletions(-)

diff --git a/dlls/mshtml/tests/htmldoc.c b/dlls/mshtml/tests/htmldoc.c
index d2d9d92..db56d24 100644
--- a/dlls/mshtml/tests/htmldoc.c
+++ b/dlls/mshtml/tests/htmldoc.c
@@ -115,6 +115,7 @@ static BOOL expect_LockContainer_fLock;
 static BOOL expect_SetActiveObject_active;
 static BOOL set_clientsite = FALSE, container_locked = FALSE;
 static BOOL readystate_set_loading = FALSE;
+static BOOL editmode = FALSE;
 static enum load_state_t {
     LD_DOLOAD,
     LD_LOADING,
@@ -127,6 +128,7 @@ static LPCOLESTR expect_status_text = NU
 
 static HRESULT QueryInterface(REFIID riid, void **ppv);
 static void test_readyState(IUnknown*);
+static void test_MSHTML_QueryStatus(IUnknown*,DWORD);
 
 static HRESULT WINAPI HlinkFrame_QueryInterface(IHlinkFrame *iface, REFIID riid, void **ppv)
 {
@@ -249,6 +251,10 @@ static HRESULT WINAPI PropertyNotifySink
     switch(dispID) {
     case DISPID_READYSTATE:
         CHECK_EXPECT2(OnChanged_READYSTATE);
+        test_MSHTML_QueryStatus(NULL, OLECMDF_SUPPORTED
+            | (editmode && (load_state == LD_INTERACTIVE || load_state == LD_COMPLETE)
+               ? OLECMDF_ENABLED : 0));
+
         if(readystate_set_loading) {
             readystate_set_loading = FALSE;
             load_state = LD_LOADING;
@@ -2006,6 +2012,36 @@ static const OLECMDF expect_cmds[OLECMDI
     OLECMDF_SUPPORTED                   /* OLECMDID_GETPRINTTEMPLATE */
 };
 
+static void test_QueryStatus(IUnknown *unk, REFIID cgid, ULONG cmdid, DWORD cmdf)
+{
+    IOleCommandTarget *cmdtrg;
+    OLECMD olecmd = {cmdid, 0};
+    HRESULT hres;
+
+    hres = IUnknown_QueryInterface(unk, &IID_IOleCommandTarget, (void**)&cmdtrg);
+    ok(hres == S_OK, "QueryInterface(IID_IOleCommandTarget failed: %08x\n", hres);
+    if(FAILED(hres))
+        return;
+
+    hres = IOleCommandTarget_QueryStatus(cmdtrg, cgid, 1, &olecmd, NULL);
+    ok(hres == S_OK, "QueryStatus failed: %08x\n", hres);
+
+    IOleCommandTarget_Release(cmdtrg);
+
+    ok(olecmd.cmdID == cmdid, "cmdID changed\n");
+    ok(olecmd.cmdf == cmdf, "cmdf=%08x, expected %08x\n", olecmd.cmdf, cmdf);
+}
+
+static void test_MSHTML_QueryStatus(IUnknown *unk, DWORD cmdf)
+{
+    static IUnknown *_unk;
+
+    if(unk) _unk = unk;
+    else unk = _unk;
+
+    test_QueryStatus(unk, &CGID_MSHTML, IDM_BOLD, cmdf);
+}
+
 static void test_OleCommandTarget(IUnknown *unk)
 {
     IOleCommandTarget *cmdtrg;
@@ -2147,6 +2183,8 @@ static void test_exec_editmode(IUnknown
     CHECK_CALLED(OnChanged_READYSTATE);
 
     IOleCommandTarget_Release(cmdtrg);
+
+    editmode = TRUE;
 }
 
 static HWND create_container_window(void)
@@ -2577,6 +2615,7 @@ static void init_test(enum load_state_t
     set_clientsite = FALSE;
     call_UIActivate = FALSE;
     load_state = ls;
+    editmode = FALSE;
 }
 
 static void test_HTMLDocument(enum load_state_t ls)
@@ -2594,6 +2633,7 @@ static void test_HTMLDocument(enum load_
         return;
 
     test_QueryInterface(unk);
+    test_MSHTML_QueryStatus(unk, OLECMDF_SUPPORTED);
     test_ConnectionPointContainer(unk);
     test_Persist(unk);
     if(load_state == LD_NO)
@@ -2608,6 +2648,7 @@ static void test_HTMLDocument(enum load_
     if(load_state == LD_LOADING)
         test_download(FALSE);
 
+    test_MSHTML_QueryStatus(unk, OLECMDF_SUPPORTED);
     test_OleCommandTarget_fail(unk);
     test_OleCommandTarget(unk);
     test_OnAmbientPropertyChange(unk);
@@ -2677,6 +2718,7 @@ static void test_HTMLDocument_hlink(void
 
     test_download(FALSE);
 
+    test_MSHTML_QueryStatus(unk, OLECMDF_SUPPORTED);
     test_exec_onunload(unk);
     test_Window(unk, TRUE);
     test_InPlaceDeactivate(unk, TRUE);
@@ -2712,11 +2754,14 @@ static void test_editing_mode(void)
     test_ConnectionPointContainer(unk);
     test_ClientSite(oleobj, CLIENTSITE_EXPECTPATH);
     test_DoVerb(oleobj);
+    test_MSHTML_QueryStatus(unk, OLECMDF_SUPPORTED);
 
     IOleObject_Release(oleobj);
 
     test_exec_editmode(unk);
+    test_MSHTML_QueryStatus(unk, OLECMDF_SUPPORTED);
     test_download(TRUE);
+    test_MSHTML_QueryStatus(unk, OLECMDF_SUPPORTED|OLECMDF_ENABLED);
 
     test_UIDeactivate();
     test_InPlaceDeactivate(unk, TRUE);




More information about the wine-cvs mailing list