shdocvw: Added Navigate2 test.
This commit is contained in:
parent
a01a20c090
commit
1790fdeeff
|
@ -3,7 +3,7 @@ TOPOBJDIR = ../../..
|
||||||
SRCDIR = @srcdir@
|
SRCDIR = @srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
TESTDLL = shdocvw.dll
|
TESTDLL = shdocvw.dll
|
||||||
IMPORTS = shell32 ole32 user32 advapi32 kernel32
|
IMPORTS = shell32 ole32 oleaut32 user32 advapi32 kernel32
|
||||||
EXTRALIBS = -luuid
|
EXTRALIBS = -luuid
|
||||||
|
|
||||||
CTESTS = \
|
CTESTS = \
|
||||||
|
|
|
@ -29,6 +29,8 @@
|
||||||
#include "htiframe.h"
|
#include "htiframe.h"
|
||||||
#include "mshtmhst.h"
|
#include "mshtmhst.h"
|
||||||
#include "idispids.h"
|
#include "idispids.h"
|
||||||
|
#include "olectl.h"
|
||||||
|
#include "mshtmdid.h"
|
||||||
|
|
||||||
#define DEFINE_EXPECT(func) \
|
#define DEFINE_EXPECT(func) \
|
||||||
static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
|
static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
|
||||||
|
@ -66,8 +68,18 @@ DEFINE_EXPECT(Frame_GetWindow);
|
||||||
DEFINE_EXPECT(Frame_SetActiveObject);
|
DEFINE_EXPECT(Frame_SetActiveObject);
|
||||||
DEFINE_EXPECT(UIWindow_SetActiveObject);
|
DEFINE_EXPECT(UIWindow_SetActiveObject);
|
||||||
DEFINE_EXPECT(SetMenu);
|
DEFINE_EXPECT(SetMenu);
|
||||||
|
DEFINE_EXPECT(Invoke_AMBIENT_USERMODE);
|
||||||
|
DEFINE_EXPECT(Invoke_AMBIENT_DLCONTROL);
|
||||||
|
DEFINE_EXPECT(Invoke_AMBIENT_USERAGENT);
|
||||||
|
DEFINE_EXPECT(Invoke_AMBIENT_PALETTE);
|
||||||
DEFINE_EXPECT(Invoke_AMBIENT_SILENT);
|
DEFINE_EXPECT(Invoke_AMBIENT_SILENT);
|
||||||
DEFINE_EXPECT(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
|
DEFINE_EXPECT(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
|
||||||
|
DEFINE_EXPECT(EnableModeless_TRUE);
|
||||||
|
DEFINE_EXPECT(EnableModeless_FALSE);
|
||||||
|
DEFINE_EXPECT(GetHostInfo);
|
||||||
|
DEFINE_EXPECT(GetOptionKeyPath);
|
||||||
|
DEFINE_EXPECT(GetOverridesKeyPath);
|
||||||
|
DEFINE_EXPECT(SetStatusText);
|
||||||
|
|
||||||
static const WCHAR wszItem[] = {'i','t','e','m',0};
|
static const WCHAR wszItem[] = {'i','t','e','m',0};
|
||||||
|
|
||||||
|
@ -169,7 +181,6 @@ static HRESULT WINAPI Dispatch_Invoke(IDispatch *iface, DISPID dispIdMember, REF
|
||||||
ok(IsEqualGUID(&IID_NULL, riid), "riid != IID_NULL\n");
|
ok(IsEqualGUID(&IID_NULL, riid), "riid != IID_NULL\n");
|
||||||
ok(pDispParams != NULL, "pDispParams == NULL\n");
|
ok(pDispParams != NULL, "pDispParams == NULL\n");
|
||||||
ok(pExcepInfo == NULL, "pExcepInfo=%p, expected NULL\n", pExcepInfo);
|
ok(pExcepInfo == NULL, "pExcepInfo=%p, expected NULL\n", pExcepInfo);
|
||||||
ok(puArgErr == NULL, "puArgErr=%p\n", puArgErr);
|
|
||||||
ok(V_VT(pVarResult) == VT_EMPTY, "V_VT(pVarResult)=%d\n", V_VT(pVarResult));
|
ok(V_VT(pVarResult) == VT_EMPTY, "V_VT(pVarResult)=%d\n", V_VT(pVarResult));
|
||||||
ok(wFlags == DISPATCH_PROPERTYGET, "wFlags=%08x, expected DISPATCH_PROPERTYGET\n", wFlags);
|
ok(wFlags == DISPATCH_PROPERTYGET, "wFlags=%08x, expected DISPATCH_PROPERTYGET\n", wFlags);
|
||||||
ok(pDispParams->rgvarg == NULL, "pDispParams->rgvarg = %p\n", pDispParams->rgvarg);
|
ok(pDispParams->rgvarg == NULL, "pDispParams->rgvarg = %p\n", pDispParams->rgvarg);
|
||||||
|
@ -179,13 +190,30 @@ static HRESULT WINAPI Dispatch_Invoke(IDispatch *iface, DISPID dispIdMember, REF
|
||||||
ok(pDispParams->cNamedArgs == 0, "pDispParams->cNamedArgs = %d\n", pDispParams->cNamedArgs);
|
ok(pDispParams->cNamedArgs == 0, "pDispParams->cNamedArgs = %d\n", pDispParams->cNamedArgs);
|
||||||
|
|
||||||
switch(dispIdMember) {
|
switch(dispIdMember) {
|
||||||
|
case DISPID_AMBIENT_USERMODE:
|
||||||
|
CHECK_EXPECT2(Invoke_AMBIENT_USERMODE);
|
||||||
|
return E_FAIL;
|
||||||
|
case DISPID_AMBIENT_DLCONTROL:
|
||||||
|
CHECK_EXPECT(Invoke_AMBIENT_DLCONTROL);
|
||||||
|
ok(puArgErr != NULL, "puArgErr=%p\n", puArgErr);
|
||||||
|
return E_FAIL;
|
||||||
|
case DISPID_AMBIENT_USERAGENT:
|
||||||
|
CHECK_EXPECT(Invoke_AMBIENT_USERAGENT);
|
||||||
|
ok(puArgErr != NULL, "puArgErr=%p\n", puArgErr);
|
||||||
|
return E_FAIL;
|
||||||
|
case DISPID_AMBIENT_PALETTE:
|
||||||
|
CHECK_EXPECT(Invoke_AMBIENT_PALETTE);
|
||||||
|
ok(puArgErr != NULL, "puArgErr=%p\n", puArgErr);
|
||||||
|
return E_FAIL;
|
||||||
case DISPID_AMBIENT_OFFLINEIFNOTCONNECTED:
|
case DISPID_AMBIENT_OFFLINEIFNOTCONNECTED:
|
||||||
CHECK_EXPECT(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
|
CHECK_EXPECT(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
|
||||||
|
ok(puArgErr == NULL, "puArgErr=%p\n", puArgErr);
|
||||||
V_VT(pVarResult) = VT_BOOL;
|
V_VT(pVarResult) = VT_BOOL;
|
||||||
V_BOOL(pVarResult) = VARIANT_FALSE;
|
V_BOOL(pVarResult) = VARIANT_FALSE;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
case DISPID_AMBIENT_SILENT:
|
case DISPID_AMBIENT_SILENT:
|
||||||
CHECK_EXPECT(Invoke_AMBIENT_SILENT);
|
CHECK_EXPECT(Invoke_AMBIENT_SILENT);
|
||||||
|
ok(puArgErr == NULL, "puArgErr=%p\n", puArgErr);
|
||||||
V_VT(pVarResult) = VT_BOOL;
|
V_VT(pVarResult) = VT_BOOL;
|
||||||
V_BOOL(pVarResult) = VARIANT_FALSE;
|
V_BOOL(pVarResult) = VARIANT_FALSE;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
@ -380,14 +408,18 @@ static HRESULT WINAPI InPlaceFrame_RemoveMenus(IOleInPlaceFrame *iface, HMENU hm
|
||||||
|
|
||||||
static HRESULT WINAPI InPlaceFrame_SetStatusText(IOleInPlaceFrame *iface, LPCOLESTR pszStatusText)
|
static HRESULT WINAPI InPlaceFrame_SetStatusText(IOleInPlaceFrame *iface, LPCOLESTR pszStatusText)
|
||||||
{
|
{
|
||||||
ok(0, "unexpected call\n");
|
CHECK_EXPECT2(SetStatusText);
|
||||||
return E_NOTIMPL;
|
/* FIXME: Check pszStatusText */
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI InPlaceFrame_EnableModeless(IOleInPlaceFrame *iface, BOOL fEnable)
|
static HRESULT WINAPI InPlaceFrame_EnableModeless(IOleInPlaceFrame *iface, BOOL fEnable)
|
||||||
{
|
{
|
||||||
ok(0, "unexpected call\n");
|
if(fEnable)
|
||||||
return E_NOTIMPL;
|
CHECK_EXPECT(EnableModeless_TRUE);
|
||||||
|
else
|
||||||
|
CHECK_EXPECT(EnableModeless_FALSE);
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI InPlaceFrame_TranslateAccelerator(IOleInPlaceFrame *iface, LPMSG lpmsg, WORD wID)
|
static HRESULT WINAPI InPlaceFrame_TranslateAccelerator(IOleInPlaceFrame *iface, LPMSG lpmsg, WORD wID)
|
||||||
|
@ -618,8 +650,17 @@ static HRESULT WINAPI DocHostUIHandler_ShowContextMenu(IDocHostUIHandler2 *iface
|
||||||
|
|
||||||
static HRESULT WINAPI DocHostUIHandler_GetHostInfo(IDocHostUIHandler2 *iface, DOCHOSTUIINFO *pInfo)
|
static HRESULT WINAPI DocHostUIHandler_GetHostInfo(IDocHostUIHandler2 *iface, DOCHOSTUIINFO *pInfo)
|
||||||
{
|
{
|
||||||
ok(0, "unexpected call\n");
|
CHECK_EXPECT(GetHostInfo);
|
||||||
return E_NOTIMPL;
|
ok(pInfo != NULL, "pInfo=NULL\n");
|
||||||
|
if(pInfo) {
|
||||||
|
ok(pInfo->cbSize == sizeof(DOCHOSTUIINFO), "pInfo->cbSize=%u, expected %u\n",
|
||||||
|
pInfo->cbSize, sizeof(DOCHOSTUIINFO));
|
||||||
|
ok(!pInfo->dwFlags, "pInfo->dwFlags=%08x, expected 0\n", pInfo->dwFlags);
|
||||||
|
ok(!pInfo->dwDoubleClick, "pInfo->dwDoubleClick=%08x, expected 0\n", pInfo->dwDoubleClick);
|
||||||
|
ok(!pInfo->pchHostCss, "pInfo->pchHostCss=%p, expected NULL\n", pInfo->pchHostCss);
|
||||||
|
ok(!pInfo->pchHostNS, "pInfo->pchhostNS=%p, expected NULL\n", pInfo->pchHostNS);
|
||||||
|
}
|
||||||
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI DocHostUIHandler_ShowUI(IDocHostUIHandler2 *iface, DWORD dwID,
|
static HRESULT WINAPI DocHostUIHandler_ShowUI(IDocHostUIHandler2 *iface, DWORD dwID,
|
||||||
|
@ -677,7 +718,11 @@ static HRESULT WINAPI DocHostUIHandler_TranslateAccelerator(IDocHostUIHandler2 *
|
||||||
static HRESULT WINAPI DocHostUIHandler_GetOptionKeyPath(IDocHostUIHandler2 *iface,
|
static HRESULT WINAPI DocHostUIHandler_GetOptionKeyPath(IDocHostUIHandler2 *iface,
|
||||||
LPOLESTR *pchKey, DWORD dw)
|
LPOLESTR *pchKey, DWORD dw)
|
||||||
{
|
{
|
||||||
ok(0, "unexpected call\n");
|
CHECK_EXPECT(GetOptionKeyPath);
|
||||||
|
ok(pchKey != NULL, "pchKey==NULL\n");
|
||||||
|
if(pchKey)
|
||||||
|
ok(*pchKey == NULL, "*pchKey=%p\n", *pchKey);
|
||||||
|
ok(!dw, "dw=%x\n", dw);
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -711,7 +756,11 @@ static HRESULT WINAPI DocHostUIHandler_FilterDataObject(IDocHostUIHandler2 *ifac
|
||||||
static HRESULT WINAPI DocHostUIHandler_GetOverrideKeyPath(IDocHostUIHandler2 *iface,
|
static HRESULT WINAPI DocHostUIHandler_GetOverrideKeyPath(IDocHostUIHandler2 *iface,
|
||||||
LPOLESTR *pchKey, DWORD dw)
|
LPOLESTR *pchKey, DWORD dw)
|
||||||
{
|
{
|
||||||
ok(0, "unexpected call\n");
|
CHECK_EXPECT(GetOverridesKeyPath);
|
||||||
|
ok(pchKey != NULL, "pchKey==NULL\n");
|
||||||
|
if(pchKey)
|
||||||
|
ok(*pchKey == NULL, "*pchKey=%p\n", *pchKey);
|
||||||
|
ok(!dw, "dw=%x\n", dw);
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1256,6 +1305,51 @@ static void test_Extent(IUnknown *unk)
|
||||||
IOleObject_Release(oleobj);
|
IOleObject_Release(oleobj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_Navigate2(IUnknown *unk)
|
||||||
|
{
|
||||||
|
IWebBrowser2 *webbrowser;
|
||||||
|
VARIANT url;
|
||||||
|
HRESULT hres;
|
||||||
|
|
||||||
|
static const WCHAR wszAboutBlank[] =
|
||||||
|
{'a','b','o','u','t',':','b','l','a','n','k',0};
|
||||||
|
|
||||||
|
hres = IUnknown_QueryInterface(unk, &IID_IWebBrowser2, (void**)&webbrowser);
|
||||||
|
ok(hres == S_OK, "QueryInterface(IID_IWebBrowser) failed: %08x\n", hres);
|
||||||
|
if(FAILED(hres))
|
||||||
|
return;
|
||||||
|
|
||||||
|
V_VT(&url) = VT_BSTR;
|
||||||
|
V_BSTR(&url) = SysAllocString(wszAboutBlank);
|
||||||
|
|
||||||
|
SET_EXPECT(Invoke_AMBIENT_USERMODE);
|
||||||
|
SET_EXPECT(EnableModeless_FALSE);
|
||||||
|
SET_EXPECT(GetHostInfo);
|
||||||
|
SET_EXPECT(Invoke_AMBIENT_DLCONTROL);
|
||||||
|
SET_EXPECT(Invoke_AMBIENT_USERAGENT);
|
||||||
|
SET_EXPECT(Invoke_AMBIENT_PALETTE);
|
||||||
|
SET_EXPECT(GetOptionKeyPath);
|
||||||
|
SET_EXPECT(GetOverridesKeyPath);
|
||||||
|
SET_EXPECT(SetStatusText);
|
||||||
|
SET_EXPECT(EnableModeless_TRUE);
|
||||||
|
|
||||||
|
hres = IWebBrowser2_Navigate2(webbrowser, &url, NULL, NULL, NULL, NULL);
|
||||||
|
ok(hres == S_OK, "Navigate2 failed: %08x\n", hres);
|
||||||
|
|
||||||
|
CHECK_CALLED(Invoke_AMBIENT_USERMODE);
|
||||||
|
CHECK_CALLED(EnableModeless_FALSE);
|
||||||
|
CHECK_CALLED(GetHostInfo);
|
||||||
|
CHECK_CALLED(Invoke_AMBIENT_DLCONTROL);
|
||||||
|
CHECK_CALLED(Invoke_AMBIENT_USERAGENT);
|
||||||
|
CHECK_CALLED(Invoke_AMBIENT_PALETTE);
|
||||||
|
CHECK_CALLED(GetOptionKeyPath);
|
||||||
|
CHECK_CALLED(GetOverridesKeyPath);
|
||||||
|
CHECK_CALLED(SetStatusText);
|
||||||
|
CHECK_CALLED(EnableModeless_TRUE);
|
||||||
|
|
||||||
|
IWebBrowser2_Release(webbrowser);
|
||||||
|
}
|
||||||
|
|
||||||
static void test_QueryInterface(IUnknown *unk)
|
static void test_QueryInterface(IUnknown *unk)
|
||||||
{
|
{
|
||||||
IQuickActivate *qa = (IQuickActivate*)0xdeadbeef;
|
IQuickActivate *qa = (IQuickActivate*)0xdeadbeef;
|
||||||
|
@ -1289,6 +1383,7 @@ static void test_WebBrowser(void)
|
||||||
test_Extent(unk);
|
test_Extent(unk);
|
||||||
test_wb_funcs(unk, TRUE);
|
test_wb_funcs(unk, TRUE);
|
||||||
test_DoVerb(unk);
|
test_DoVerb(unk);
|
||||||
|
test_Navigate2(unk);
|
||||||
test_ClientSite(unk, NULL);
|
test_ClientSite(unk, NULL);
|
||||||
test_ie_funcs(unk);
|
test_ie_funcs(unk);
|
||||||
test_GetControlInfo(unk);
|
test_GetControlInfo(unk);
|
||||||
|
@ -1298,8 +1393,40 @@ static void test_WebBrowser(void)
|
||||||
ok(ref == 0, "ref=%d, expected 0\n", ref);
|
ok(ref == 0, "ref=%d, expected 0\n", ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void gecko_installer_workaround(BOOL disable)
|
||||||
|
{
|
||||||
|
HKEY hkey;
|
||||||
|
DWORD res;
|
||||||
|
|
||||||
|
static BOOL has_url = FALSE;
|
||||||
|
static char url[2048];
|
||||||
|
|
||||||
|
if(!disable && !has_url)
|
||||||
|
return;
|
||||||
|
|
||||||
|
res = RegOpenKey(HKEY_CURRENT_USER, "Software\\Wine\\MSHTML", &hkey);
|
||||||
|
if(res != ERROR_SUCCESS)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(disable) {
|
||||||
|
DWORD type, size = sizeof(url);
|
||||||
|
|
||||||
|
res = RegQueryValueEx(hkey, "GeckoUrl", NULL, &type, (PVOID)url, &size);
|
||||||
|
if(res == ERROR_SUCCESS && type == REG_SZ)
|
||||||
|
has_url = TRUE;
|
||||||
|
|
||||||
|
RegDeleteValue(hkey, "GeckoUrl");
|
||||||
|
}else {
|
||||||
|
RegSetValueEx(hkey, "GeckoUrl", 0, REG_SZ, (PVOID)url, lstrlenA(url)+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
RegCloseKey(hkey);
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST(webbrowser)
|
START_TEST(webbrowser)
|
||||||
{
|
{
|
||||||
|
gecko_installer_workaround(TRUE);
|
||||||
|
|
||||||
container_hwnd = create_container_window();
|
container_hwnd = create_container_window();
|
||||||
|
|
||||||
OleInitialize(NULL);
|
OleInitialize(NULL);
|
||||||
|
@ -1307,4 +1434,6 @@ START_TEST(webbrowser)
|
||||||
test_WebBrowser();
|
test_WebBrowser();
|
||||||
|
|
||||||
OleUninitialize();
|
OleUninitialize();
|
||||||
|
|
||||||
|
gecko_installer_workaround(FALSE);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue