Jacek Caban : shdocvw: Added client site's IOleCommandTarget tests.
Alexandre Julliard
julliard at winehq.org
Tue Dec 11 11:37:20 CST 2007
Module: wine
Branch: master
Commit: 69805b12456f8c62d0906365f7c08b0bcc1b9601
URL: http://source.winehq.org/git/wine.git/?a=commit;h=69805b12456f8c62d0906365f7c08b0bcc1b9601
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Dec 11 01:40:17 2007 +0100
shdocvw: Added client site's IOleCommandTarget tests.
---
dlls/shdocvw/tests/webbrowser.c | 154 +++++++++++++++++++++++++++++++++++++--
1 files changed, 146 insertions(+), 8 deletions(-)
diff --git a/dlls/shdocvw/tests/webbrowser.c b/dlls/shdocvw/tests/webbrowser.c
index dacd6fd..9908df8 100644
--- a/dlls/shdocvw/tests/webbrowser.c
+++ b/dlls/shdocvw/tests/webbrowser.c
@@ -21,6 +21,7 @@
#include <wine/test.h>
#include <stdarg.h>
+#include <stdio.h>
#include "windef.h"
#include "winbase.h"
@@ -31,6 +32,7 @@
#include "idispids.h"
#include "olectl.h"
#include "mshtmdid.h"
+#include "shlguid.h"
#define DEFINE_EXPECT(func) \
static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
@@ -38,17 +40,16 @@
#define SET_EXPECT(func) \
expect_ ## func = TRUE
-#define CHECK_EXPECT(func) \
+#define CHECK_EXPECT2(func) \
do { \
ok(expect_ ##func, "unexpected call " #func "\n"); \
- expect_ ## func = FALSE; \
called_ ## func = TRUE; \
}while(0)
-#define CHECK_EXPECT2(func) \
+#define CHECK_EXPECT(func) \
do { \
- ok(expect_ ##func, "unexpected call " #func "\n"); \
- called_ ## func = TRUE; \
+ CHECK_EXPECT2(func); \
+ expect_ ## func = FALSE; \
}while(0)
#define CHECK_CALLED(func) \
@@ -81,19 +82,139 @@ DEFINE_EXPECT(GetOptionKeyPath);
DEFINE_EXPECT(GetOverridesKeyPath);
DEFINE_EXPECT(SetStatusText);
DEFINE_EXPECT(UpdateUI);
+DEFINE_EXPECT(Exec_SETDOWNLOADSTATE_0);
+DEFINE_EXPECT(Exec_SETDOWNLOADSTATE_1);
+DEFINE_EXPECT(Exec_SETPROGRESSMAX);
+DEFINE_EXPECT(Exec_SETPROGRESSPOS);
+DEFINE_EXPECT(QueryStatus_SETPROGRESSTEXT);
static const WCHAR wszItem[] = {'i','t','e','m',0};
static HWND container_hwnd, shell_embedding_hwnd;
+static const char *debugstr_guid(REFIID riid)
+{
+ static char buf[50];
+
+ sprintf(buf, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
+ riid->Data1, riid->Data2, riid->Data3, riid->Data4[0],
+ riid->Data4[1], riid->Data4[2], riid->Data4[3], riid->Data4[4],
+ riid->Data4[5], riid->Data4[6], riid->Data4[7]);
+
+ return buf;
+}
+
static HRESULT QueryInterface(REFIID,void**);
+static HRESULT WINAPI OleCommandTarget_QueryInterface(IOleCommandTarget *iface,
+ REFIID riid, void **ppv)
+{
+ ok(0, "unexpected call\n");
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI OleCommandTarget_AddRef(IOleCommandTarget *iface)
+{
+ return 2;
+}
+
+static ULONG WINAPI OleCommandTarget_Release(IOleCommandTarget *iface)
+{
+ return 1;
+}
+
+static HRESULT WINAPI OleCommandTarget_QueryStatus(IOleCommandTarget *iface, const GUID *pguidCmdGroup,
+ ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText)
+{
+ ok(!pguidCmdGroup, "pguidCmdGroup != MULL\n");
+ ok(cCmds == 1, "cCmds=%d, expected 1\n", cCmds);
+ ok(!pCmdText, "pCmdText != NULL\n");
+
+ switch(prgCmds[0].cmdID) {
+ case OLECMDID_SETPROGRESSTEXT:
+ CHECK_EXPECT(QueryStatus_SETPROGRESSTEXT);
+ prgCmds[0].cmdf = OLECMDF_ENABLED;
+ return S_OK;
+ default:
+ ok(0, "unexpected command %d\n", prgCmds[0].cmdID);
+ }
+
+ return E_FAIL;
+}
+
+static HRESULT WINAPI OleCommandTarget_Exec(IOleCommandTarget *iface, const GUID *pguidCmdGroup,
+ DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
+{
+ if(!pguidCmdGroup) {
+ switch(nCmdID) {
+ case OLECMDID_SETPROGRESSMAX:
+ CHECK_EXPECT(Exec_SETPROGRESSMAX);
+ ok(nCmdexecopt == OLECMDEXECOPT_DONTPROMPTUSER, "nCmdexecopts=%08x\n", nCmdexecopt);
+ 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(pvaOut == NULL, "pvaOut=%p, expected NULL\n", pvaOut);
+ return S_OK;
+ case OLECMDID_SETPROGRESSPOS:
+ CHECK_EXPECT(Exec_SETPROGRESSPOS);
+ ok(nCmdexecopt == OLECMDEXECOPT_DONTPROMPTUSER, "nCmdexecopts=%08x\n", nCmdexecopt);
+ 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(pvaOut == NULL, "pvaOut=%p, expected NULL\n", pvaOut);
+ return S_OK;
+ case OLECMDID_SETDOWNLOADSTATE:
+ ok(!nCmdexecopt, "nCmdexecopts=%08x\n", nCmdexecopt);
+ ok(pvaOut == NULL, "pvaOut=%p\n", pvaOut);
+ ok(pvaIn != NULL, "pvaIn == NULL\n");
+ ok(V_VT(pvaIn) == VT_I4, "V_VT(pvaIn)=%d\n", V_VT(pvaIn));
+ switch(V_I4(pvaIn)) {
+ case 0:
+ CHECK_EXPECT(Exec_SETDOWNLOADSTATE_0);
+ break;
+ case 1:
+ CHECK_EXPECT2(Exec_SETDOWNLOADSTATE_1);
+ break;
+ default:
+ ok(0, "unexpevted V_I4(pvaIn)=%d\n", V_I4(pvaIn));
+ }
+ return S_OK;
+ default:
+ ok(0, "unexpected nsCmdID %d\n", nCmdID);
+ }
+ }else if(IsEqualGUID(&CGID_Explorer, pguidCmdGroup)) {
+ switch(nCmdID) {
+ case 24:
+ return E_FAIL; /* TODO */
+ default:
+ ok(0, "unexpected nCmdID %d\n", nCmdID);
+ }
+ }else {
+ ok(0, "unepected pguidCmdGroup %s\n", debugstr_guid(pguidCmdGroup));
+ }
+
+ return E_FAIL;
+}
+
+static IOleCommandTargetVtbl OleCommandTargetVtbl = {
+ OleCommandTarget_QueryInterface,
+ OleCommandTarget_AddRef,
+ OleCommandTarget_Release,
+ OleCommandTarget_QueryStatus,
+ OleCommandTarget_Exec
+};
+
+static IOleCommandTarget OleCommandTarget = { &OleCommandTargetVtbl };
+
static HRESULT WINAPI OleContainer_QueryInterface(IOleContainer *iface, REFIID riid, void **ppv)
{
if(IsEqualGUID(&IID_ITargetContainer, riid))
return E_NOINTERFACE; /* TODO */
- if(IsEqualGUID(&IID_IOleCommandTarget, riid))
- return E_NOINTERFACE; /* TODO */
+
+ if(IsEqualGUID(&IID_IOleCommandTarget, riid)) {
+ *ppv = &OleCommandTarget;
+ return S_OK;
+ }
ok(0, "unexpected call\n");
return E_NOINTERFACE;
@@ -646,6 +767,7 @@ static HRESULT WINAPI DocHostUIHandler_ShowContextMenu(IDocHostUIHandler2 *iface
IUnknown *pcmdtReserved, IDispatch *pdicpReserved)
{
ok(0, "unexpected call %d %p %p %p\n", dwID, ppt, pcmdtReserved, pdicpReserved);
+ trace("%x\n", dwID);
return S_FALSE;
}
@@ -927,6 +1049,8 @@ static void test_ClientSite(IUnknown *unk, IOleClientSite *client)
SET_EXPECT(Site_GetWindow);
SET_EXPECT(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
SET_EXPECT(Invoke_AMBIENT_SILENT);
+ }else {
+ SET_EXPECT(Exec_SETDOWNLOADSTATE_0);
}
hres = IOleObject_SetClientSite(oleobj, client);
@@ -937,7 +1061,9 @@ static void test_ClientSite(IUnknown *unk, IOleClientSite *client)
CHECK_CALLED(Site_GetWindow);
CHECK_CALLED(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
CHECK_CALLED(Invoke_AMBIENT_SILENT);
- }
+ }else {
+ todo_wine CHECK_CALLED(Exec_SETDOWNLOADSTATE_0);
+ }
hres = IOleInPlaceObject_GetWindow(inplace, &hwnd);
ok(hres == S_OK, "GetWindow failed: %08x\n", hres);
@@ -1381,6 +1507,7 @@ static void test_Navigate2(IUnknown *unk)
V_BSTR(&url) = SysAllocString(wszAboutBlank);
SET_EXPECT(Invoke_AMBIENT_USERMODE);
+ SET_EXPECT(Exec_SETDOWNLOADSTATE_1);
SET_EXPECT(EnableModeless_FALSE);
SET_EXPECT(GetHostInfo);
SET_EXPECT(Invoke_AMBIENT_DLCONTROL);
@@ -1388,6 +1515,10 @@ static void test_Navigate2(IUnknown *unk)
SET_EXPECT(Invoke_AMBIENT_PALETTE);
SET_EXPECT(GetOptionKeyPath);
SET_EXPECT(GetOverridesKeyPath);
+ SET_EXPECT(QueryStatus_SETPROGRESSTEXT);
+ SET_EXPECT(Exec_SETPROGRESSMAX);
+ SET_EXPECT(Exec_SETPROGRESSPOS);
+ SET_EXPECT(Exec_SETDOWNLOADSTATE_0);
SET_EXPECT(SetStatusText);
SET_EXPECT(EnableModeless_TRUE);
@@ -1395,6 +1526,7 @@ static void test_Navigate2(IUnknown *unk)
ok(hres == S_OK, "Navigate2 failed: %08x\n", hres);
CHECK_CALLED(Invoke_AMBIENT_USERMODE);
+ todo_wine CHECK_CALLED(Exec_SETDOWNLOADSTATE_1);
CHECK_CALLED(EnableModeless_FALSE);
CHECK_CALLED(GetHostInfo);
CHECK_CALLED(Invoke_AMBIENT_DLCONTROL);
@@ -1402,6 +1534,12 @@ static void test_Navigate2(IUnknown *unk)
CHECK_CALLED(Invoke_AMBIENT_PALETTE);
CHECK_CALLED(GetOptionKeyPath);
CHECK_CALLED(GetOverridesKeyPath);
+ todo_wine {
+ CHECK_CALLED(QueryStatus_SETPROGRESSTEXT);
+ CHECK_CALLED(Exec_SETPROGRESSMAX);
+ CHECK_CALLED(Exec_SETPROGRESSPOS);
+ CHECK_CALLED(Exec_SETDOWNLOADSTATE_0);
+ }
CHECK_CALLED(SetStatusText);
CHECK_CALLED(EnableModeless_TRUE);
More information about the wine-cvs
mailing list