Jacek Caban : mshtml: Added OLECMDID_OPTICAL_ZOOM tests and stub.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Jan 22 15:20:46 CST 2015


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Jan 22 20:04:52 2015 +0100

mshtml: Added OLECMDID_OPTICAL_ZOOM tests and stub.

---

 dlls/mshtml/olecmd.c        | 14 +++++++++++---
 dlls/mshtml/tests/htmldoc.c | 37 ++++++++++++++++++++++++++++++++-----
 2 files changed, 43 insertions(+), 8 deletions(-)

diff --git a/dlls/mshtml/olecmd.c b/dlls/mshtml/olecmd.c
index 9417311..5916010 100644
--- a/dlls/mshtml/olecmd.c
+++ b/dlls/mshtml/olecmd.c
@@ -546,6 +546,12 @@ static HRESULT exec_get_print_template(HTMLDocument *This, DWORD nCmdexecopt, VA
     return E_NOTIMPL;
 }
 
+static HRESULT exec_optical_zoom(HTMLDocument *This, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
+{
+    FIXME("(%p)->(%d %p %p)\n", This, nCmdexecopt, pvaIn, pvaOut);
+    return E_NOTIMPL;
+}
+
 static HRESULT query_mshtml_copy(HTMLDocument *This, OLECMD *cmd)
 {
     FIXME("(%p)\n", This);
@@ -695,7 +701,7 @@ static HRESULT query_enabled_stub(HTMLDocument *This, OLECMD *cmd)
 static const struct {
     OLECMDF cmdf;
     HRESULT (*func)(HTMLDocument*,DWORD,VARIANT*,VARIANT*);
-} exec_table[OLECMDID_GETPRINTTEMPLATE+1] = {
+} exec_table[] = {
     {0},
     { OLECMDF_SUPPORTED,                  exec_open                 }, /* OLECMDID_OPEN */
     { OLECMDF_SUPPORTED,                  exec_new                  }, /* OLECMDID_NEW */
@@ -735,7 +741,9 @@ static const struct {
     { OLECMDF_SUPPORTED,                  exec_close                }, /* OLECMDID_CLOSE */
     {0},{0},{0},
     { OLECMDF_SUPPORTED,                  exec_set_print_template   }, /* OLECMDID_SETPRINTTEMPLATE */
-    { OLECMDF_SUPPORTED,                  exec_get_print_template   }  /* OLECMDID_GETPRINTTEMPLATE */
+    { OLECMDF_SUPPORTED,                  exec_get_print_template   }, /* OLECMDID_GETPRINTTEMPLATE */
+    {0},{0},{0},{0},{0},{0},{0},{0},{0},{0},
+    { 0, /* not reported as supported */  exec_optical_zoom         }  /* OLECMDID_OPTICAL_ZOOM */
 };
 
 static const cmdtable_t base_cmds[] = {
@@ -874,7 +882,7 @@ static HRESULT WINAPI OleCommandTarget_Exec(IOleCommandTarget *iface, const GUID
     HTMLDocument *This = impl_from_IOleCommandTarget(iface);
 
     if(!pguidCmdGroup) {
-        if(nCmdID<OLECMDID_OPEN || nCmdID>OLECMDID_GETPRINTTEMPLATE || !exec_table[nCmdID].func) {
+        if(nCmdID < OLECMDID_OPEN || nCmdID >= sizeof(exec_table)/sizeof(*exec_table) || !exec_table[nCmdID].func) {
             WARN("Unsupported cmdID = %d\n", nCmdID);
             return OLECMDERR_E_NOTSUPPORTED;
         }
diff --git a/dlls/mshtml/tests/htmldoc.c b/dlls/mshtml/tests/htmldoc.c
index ace3128..16d6b45 100644
--- a/dlls/mshtml/tests/htmldoc.c
+++ b/dlls/mshtml/tests/htmldoc.c
@@ -6292,7 +6292,7 @@ static void test_clear(IHTMLDocument2 *doc)
     ok(hres == S_OK, "clear failed: %08x\n", hres);
 }
 
-static const OLECMDF expect_cmds[OLECMDID_GETPRINTTEMPLATE+1] = {
+static const OLECMDF expect_cmds[] = {
     0,
     OLECMDF_SUPPORTED,                  /* OLECMDID_OPEN */
     OLECMDF_SUPPORTED,                  /* OLECMDID_NEW */
@@ -6347,7 +6347,7 @@ static void _test_QueryStatus(unsigned line, IUnknown *unk, REFIID cgid, ULONG c
         return;
 
     hres = IOleCommandTarget_QueryStatus(cmdtrg, cgid, 1, &olecmd, NULL);
-    ok(hres == S_OK, "QueryStatus(%u) failed: %08x\n", cmdid, hres);
+    ok(hres == cmdf ? S_OK : OLECMDERR_E_NOTSUPPORTED, "QueryStatus(%u) failed: %08x\n", cmdid, hres);
 
     IOleCommandTarget_Release(cmdtrg);
 
@@ -6380,7 +6380,7 @@ static void test_MSHTML_QueryStatus(IHTMLDocument2 *doc, DWORD cmdf)
 static void test_OleCommandTarget(IHTMLDocument2 *doc)
 {
     IOleCommandTarget *cmdtrg;
-    OLECMD cmds[OLECMDID_GETPRINTTEMPLATE];
+    OLECMD cmds[sizeof(expect_cmds)/sizeof(*expect_cmds)-1];
     int i;
     HRESULT hres;
 
@@ -6389,7 +6389,7 @@ static void test_OleCommandTarget(IHTMLDocument2 *doc)
     if(FAILED(hres))
         return;
 
-    for(i=0; i<OLECMDID_GETPRINTTEMPLATE; i++) {
+    for(i=0; i < sizeof(cmds)/sizeof(*cmds); i++) {
         cmds[i].cmdID = i+1;
         cmds[i].cmdf = 0xf0f0;
     }
@@ -6401,7 +6401,7 @@ static void test_OleCommandTarget(IHTMLDocument2 *doc)
     CHECK_CALLED(QueryStatus_OPEN);
     CHECK_CALLED(QueryStatus_NEW);
 
-    for(i=0; i<OLECMDID_GETPRINTTEMPLATE; i++) {
+    for(i=0; i < sizeof(cmds)/sizeof(*cmds); i++) {
         ok(cmds[i].cmdID == i+1, "cmds[%d].cmdID canged to %x\n", i, cmds[i].cmdID);
         if(i+1 == OLECMDID_FIND)
             continue;
@@ -6624,6 +6624,31 @@ static void test_exec_noargs(IUnknown *unk, DWORD cmdid)
     IOleCommandTarget_Release(cmdtrg);
 }
 
+static void test_exec_optical_zoom(IHTMLDocument2 *doc, int factor)
+{
+    IOleCommandTarget *cmdtrg;
+    VARIANT v;
+    HRESULT hres;
+
+    hres = IHTMLDocument2_QueryInterface(doc, &IID_IOleCommandTarget, (void**)&cmdtrg);
+    ok(hres == S_OK, "QueryInterface(IID_IOleCommandTarget) failed: %08x\n", hres);
+    if(FAILED(hres))
+        return;
+
+    V_VT(&v) = VT_I4;
+    V_I4(&v) = factor;
+
+    SET_EXPECT(GetOverrideKeyPath);
+    hres = IOleCommandTarget_Exec(cmdtrg, NULL, OLECMDID_OPTICAL_ZOOM,
+            OLECMDEXECOPT_DODEFAULT, &v, NULL);
+    todo_wine ok(hres == S_OK || broken(hres == OLECMDERR_E_NOTSUPPORTED) /* IE6 */, "Exec failed: %08x\n", hres);
+    CLEAR_CALLED(GetOverrideKeyPath);
+
+    IOleCommandTarget_Release(cmdtrg);
+
+    test_QueryStatus((IUnknown*)doc, NULL, OLECMDID_OPTICAL_ZOOM, 0);
+}
+
 static void test_IsDirty(IHTMLDocument2 *doc, HRESULT exhres)
 {
     IPersistStreamInit *perinit;
@@ -7489,6 +7514,8 @@ static void test_HTMLDocument(BOOL do_load, BOOL mime)
     test_MSHTML_QueryStatus(doc, OLECMDF_SUPPORTED);
     test_OleCommandTarget_fail(doc);
     test_OleCommandTarget(doc);
+    test_exec_optical_zoom(doc, 200);
+    test_exec_optical_zoom(doc, 100);
     test_OnAmbientPropertyChange(doc);
     test_Window(doc, TRUE);
     test_external(doc, TRUE);




More information about the wine-cvs mailing list