Module: wine Branch: master Commit: 46aba9564282789a43e2e49b9f839297b4920cfe URL: http://source.winehq.org/git/wine.git/?a=commit;h=46aba9564282789a43e2e49b9f...
Author: Zebediah Figura zfigura@codeweavers.com Date: Thu Nov 30 10:21:01 2017 -0600
hlink/tests: Add tests for navigating from a string reference.
Signed-off-by: Zebediah Figura zfigura@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/hlink/tests/hlink.c | 79 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 67 insertions(+), 12 deletions(-)
diff --git a/dlls/hlink/tests/hlink.c b/dlls/hlink/tests/hlink.c index 50f61d5..c19de13 100644 --- a/dlls/hlink/tests/hlink.c +++ b/dlls/hlink/tests/hlink.c @@ -67,6 +67,9 @@ DEFINE_EXPECT(GetClassID); DEFINE_EXPECT(Save);
DEFINE_EXPECT(HBC_QueryInterface_IHlinkHistory); +DEFINE_EXPECT(HBC_QueryInterface_IMarshal); +DEFINE_EXPECT(HBC_QueryInterface_IdentityUnmarshal); +DEFINE_EXPECT(HBC_QueryInterface_IUnknown); DEFINE_EXPECT(HBC_GetObject); DEFINE_EXPECT(HBC_UpdateHlink);
@@ -77,8 +80,16 @@ DEFINE_EXPECT(HT_GetFriendlyName);
DEFINE_EXPECT(HLF_UpdateHlink);
+DEFINE_GUID(CLSID_IdentityUnmarshal,0x0000001b,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46); DEFINE_GUID(IID_IHlinkHistory,0x79eac9c8,0xbaf9,0x11ce,0x8c,0x82,0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+static const WCHAR winehq_urlW[] = + {'h','t','t','p',':','/','/','t','e','s','t','.','w','i','n','e','h','q','.','o','r','g', + '/','t','e','s','t','s','/','h','e','l','l','o','.','h','t','m','l',0}; +static const WCHAR winehq_404W[] = + {'h','t','t','p',':','/','/','t','e','s','t','.','w','i','n','e','h','q','.','o','r','g', + '/','t','e','s','t','s','/','f','a','k','e','u','r','l',0}; + static void test_HlinkIsShortcut(void) { UINT i; @@ -627,9 +638,6 @@ static void test_HlinkParseDisplayName(void) IBindCtx *bctx; HRESULT hres;
- static const WCHAR winehq_urlW[] = - {'h','t','t','p',':','/','/','w','w','w','.','w','i','n','e','h','q','.','o','r','g', - '/','s','i','t','e','/','a','b','o','u','t',0}; static const WCHAR invalid_urlW[] = {'t','e','s','t',':','1','2','3','a','b','c',0}; static const WCHAR clsid_nameW[] = {'c','l','s','i','d',':', '2','0','D','0','4','F','E','0','-','3','A','E','A','-','1','0','6','9','-','A','2','D','8', @@ -829,12 +837,17 @@ static HRESULT WINAPI HlinkBrowseContext_QueryInterface( { *ppv = NULL;
- if(IsEqualGUID(&IID_IHlinkHistory, riid)) { + if (IsEqualGUID(&IID_IHlinkHistory, riid)) CHECK_EXPECT(HBC_QueryInterface_IHlinkHistory); - return E_NOINTERFACE; - } + else if (IsEqualGUID(&IID_IMarshal, riid)) + CHECK_EXPECT2(HBC_QueryInterface_IMarshal); + else if (IsEqualGUID(&CLSID_IdentityUnmarshal, riid)) + CHECK_EXPECT(HBC_QueryInterface_IdentityUnmarshal); + else if (IsEqualGUID(&IID_IUnknown, riid)) + CHECK_EXPECT(HBC_QueryInterface_IUnknown); + else + ok(0, "unexpected interface: %s\n", wine_dbgstr_guid(riid));
- ok(0, "unexpected interface: %s\n", wine_dbgstr_guid(riid)); return E_NOINTERFACE; }
@@ -859,9 +872,17 @@ static IMoniker Moniker; static HRESULT WINAPI HlinkBrowseContext_GetObject(IHlinkBrowseContext *iface, IMoniker *pimk, BOOL fBindIfRootRegistered, IUnknown **ppiunk) { + IBindCtx *bctx; + WCHAR *name; + CHECK_EXPECT(HBC_GetObject);
- ok(pimk == &Moniker, "pimk != &Moniker\n"); + CreateBindCtx(0, &bctx); + IMoniker_GetDisplayName(pimk, bctx, NULL, &name); + ok(!lstrcmpW(winehq_urlW, name) || !lstrcmpW(winehq_404W, name), "got unexpected url\n"); + CoTaskMemFree(name); + IBindCtx_Release(bctx); + ok(fBindIfRootRegistered == 1, "fBindIfRootRegistered = %x\n", fBindIfRootRegistered); *ppiunk = NULL; return S_FALSE; @@ -1205,10 +1226,6 @@ static HRESULT WINAPI Moniker_RelativePathTo(IMoniker *iface, IMoniker *pmkOther static HRESULT WINAPI Moniker_GetDisplayName(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR *ppszDisplayName) { - static const WCHAR winehq_urlW[] = - {'h','t','t','p',':','/','/','w','w','w','.','w','i','n','e','h','q','.','o','r','g', - '/','s','i','t','e','/','a','b','o','u','t',0}; - CHECK_EXPECT2(GetDisplayName);
ok(pbc != NULL, "pbc == NULL\n"); @@ -2206,6 +2223,44 @@ static void test_Hlink_Navigate(void) CHECK_CALLED(HT_Navigate); todo_wine CHECK_CALLED(HT_GetFriendlyName);
+if (0) { /* these currently open a browser window on wine */ + /* Test from string */ + SET_EXPECT(HBC_GetObject); + hres = HlinkNavigateToStringReference(winehq_404W, NULL, NULL, 0, NULL, 0, pbc, NULL, &HlinkBrowseContext); + todo_wine ok(hres == INET_E_OBJECT_NOT_FOUND, "Expected INET_E_OBJECT_NOT_FOUND, got %08x\n", hres); + todo_wine CHECK_CALLED(HBC_GetObject); + + /* MSDN claims browse context and bind context can't be null, but they can */ + SET_EXPECT(HBC_GetObject); + hres = HlinkNavigateToStringReference(winehq_404W, NULL, NULL, 0, NULL, 0, NULL, NULL, &HlinkBrowseContext); + todo_wine ok(hres == INET_E_OBJECT_NOT_FOUND, "Expected INET_E_OBJECT_NOT_FOUND, got %08x\n", hres); + todo_wine CHECK_CALLED(HBC_GetObject); +} + + /* these open a browser window, so mark them interactive only */ + if (winetest_interactive) + { + /* both parameters null */ + hres = HlinkNavigateToStringReference(winehq_404W, NULL, NULL, 0, NULL, 0, NULL, NULL, NULL); + todo_wine ok(hres == DRAGDROP_S_DROP, "Expected DRAGDROP_S_DROP, got %08x\n", hres); + + /* try basic test with valid URL */ + SET_EXPECT(HBC_GetObject); + SET_EXPECT(HBC_QueryInterface_IHlinkHistory); + SET_EXPECT(HBC_QueryInterface_IMarshal); + SET_EXPECT(HBC_QueryInterface_IdentityUnmarshal); + SET_EXPECT(HBC_QueryInterface_IUnknown); + hres = HlinkNavigateToStringReference(winehq_urlW, NULL, NULL, 0, NULL, 0, pbc, NULL, &HlinkBrowseContext); + ok(hres == S_OK, "Expected S_OK, got %08x\n", hres); + todo_wine CHECK_CALLED(HBC_GetObject); + todo_wine CHECK_CALLED(HBC_QueryInterface_IHlinkHistory); + todo_wine CHECK_CALLED(HBC_QueryInterface_IMarshal); + todo_wine CHECK_CALLED(HBC_QueryInterface_IdentityUnmarshal); + todo_wine CHECK_CALLED(HBC_QueryInterface_IUnknown); + } + else + skip("interactive IHlink_Navigate tests\n"); + IHlink_Release(hlink); IBindCtx_Release(pbc); _bctx = NULL;