static void test_reference(void) { HRESULT r; IHlink *lnk = NULL; IMoniker *mk = NULL; const WCHAR url[] = { 'h','t','t','p',':','/','/','w','i','n','e','h','q','.','o','r','g',0 }; const WCHAR url2[] = { 'h','t','t','p',':','/','/','w','i','n','e','h','q','.','o','r','g','/',0 }; LPWSTR str = NULL; r = HlinkCreateFromString(url, NULL, NULL, NULL, 0, NULL, &IID_IHlink, (LPVOID*) &lnk); ok(r == S_OK, "failed to create link\n"); if (FAILED(r)) return; r = IHlink_GetMonikerReference(lnk, HLINKGETREF_DEFAULT, NULL, NULL); ok(r == S_OK, "failed\n"); r = IHlink_GetMonikerReference(lnk, HLINKGETREF_DEFAULT, &mk, &str); ok(r == S_OK, "failed\n"); ok(mk != NULL, "no moniker\n"); ok(str == NULL, "string should be null\n"); r = IMoniker_Release(mk); ok( r == 1, "moniker refcount wrong\n"); r = IHlink_GetStringReference(lnk, -1, &str, NULL); ok(r == S_OK, "failed\n"); CoTaskMemFree(str); r = IHlink_GetStringReference(lnk, HLINKGETREF_DEFAULT, &str, NULL); ok(r == S_OK, "failed\n"); todo_wine { ok(!lstrcmpW(str, url2), "url wrong\n"); } CoTaskMemFree(str); r = IHlink_GetStringReference(lnk, HLINKGETREF_DEFAULT, NULL, NULL); ok(r == S_OK, "failed\n"); r = IHlink_GetStringReference(lnk, HLINKGETREF_DEFAULT, NULL, &str); ok(r == S_OK, "failed\n"); ok(str == NULL, "string should be null\n"); /* Unimplented functions checks */ r = IHlink_GetAdditionalParams(lnk, NULL); ok(r == E_NOTIMPL, "failed\n"); r = IHlink_SetAdditionalParams(lnk, NULL); ok(r == E_NOTIMPL, "failed\n"); IHlink_Release(lnk); }
/*********************************************************************** * HlinkNavigateToStringReference (HLINK.@) */ HRESULT WINAPI HlinkNavigateToStringReference( LPCWSTR pwzTarget, LPCWSTR pwzLocation, IHlinkSite *pihlsite, DWORD dwSiteData, IHlinkFrame *pihlframe, DWORD grfHLNF, LPBC pibc, IBindStatusCallback *pibsc, IHlinkBrowseContext *pihlbc) { HRESULT r; IHlink *hlink = NULL; FIXME("%s %s %p %08x %p %08x %p %p %p\n", debugstr_w(pwzTarget), debugstr_w(pwzLocation), pihlsite, dwSiteData, pihlframe, grfHLNF, pibc, pibsc, pihlbc); r = HlinkCreateFromString( pwzTarget, pwzLocation, NULL, pihlsite, dwSiteData, NULL, &IID_IHlink, (LPVOID*) &hlink ); if (SUCCEEDED(r)) r = HlinkNavigate(hlink, pihlframe, grfHLNF, pibc, pibsc, pihlbc); return r; }
static void test_persist(void) { static const WCHAR url[] = { 'h','t','t','p',':','/','/','w','i','n','e','h','q','.','o','r','g',0 }; static const WCHAR rel_url[] = { 'i','n','d','e','x','.','h','t','m','l',0 }; static const WCHAR filename[] = { 'c',':','\\',0 }; static const WCHAR friendly_name[] = { 'W','i','n','e',' ','H','Q',0 }; static const WCHAR location[] = { '_','b','l','a','n','k',0 }; static const WCHAR target_frame_name[] = { 't','g','t','f','r','m',0 }; HRESULT hr; IHlink *lnk; hr = HlinkCreateFromString(url, NULL, NULL, NULL, 0, NULL, &IID_IHlink, (LPVOID*) &lnk); ok(hr == S_OK, "IHlinkCreateFromString failed with error 0x%08x\n", hr); if (!lnk) { skip("Can't create lnk, skipping test_persist. Was wineprefixcreate run properly?\n"); return; } test_persist_save_data("url only", lnk, expected_hlink_data, sizeof(expected_hlink_data), expected_hlink_data_ie7, sizeof(expected_hlink_data_ie7)); IHlink_Release(lnk); hr = HlinkCreateFromString(url, NULL, friendly_name, NULL, 0, NULL, &IID_IHlink, (LPVOID*) &lnk); ok(hr == S_OK, "IHlinCreateFromString failed with error 0x%08x\n", hr); test_persist_save_data("url + friendly name", lnk, expected_hlink_data2, sizeof(expected_hlink_data2), expected_hlink_data2_ie7, sizeof(expected_hlink_data2_ie7)); IHlink_Release(lnk); hr = HlinkCreateFromString(url, location, friendly_name, NULL, 0, NULL, &IID_IHlink, (LPVOID*) &lnk); ok(hr == S_OK, "IHlinCreateFromString failed with error 0x%08x\n", hr); test_persist_save_data("url + friendly_name + location", lnk, expected_hlink_data3, sizeof(expected_hlink_data3), expected_hlink_data3_ie7, sizeof(expected_hlink_data3_ie7)); IHlink_Release(lnk); hr = HlinkCreateFromString(rel_url, NULL, NULL, NULL, 0, NULL, &IID_IHlink, (LPVOID*) &lnk); ok(hr == S_OK, "IHlinCreateFromString failed with error 0x%08x\n", hr); test_persist_save_data("relative url", lnk, expected_hlink_data4, sizeof(expected_hlink_data4), expected_hlink_data4, sizeof(expected_hlink_data4)); IHlink_Release(lnk); hr = HlinkCreateFromString(url, NULL, NULL, NULL, 0, NULL, &IID_IHlink, (LPVOID*) &lnk); ok(hr == S_OK, "IHlinCreateFromString failed with error 0x%08x\n", hr); hr = IHlink_SetTargetFrameName(lnk, target_frame_name); ok(hr == S_OK, "IHlink_SetTargetFrameName failed with error 0x%08x\n", hr); test_persist_save_data("url + target frame name", lnk, expected_hlink_data5, sizeof(expected_hlink_data5), expected_hlink_data5_ie7, sizeof(expected_hlink_data5_ie7)); IHlink_Release(lnk); hr = HlinkCreateFromString(filename, NULL, NULL, NULL, 0, NULL, &IID_IHlink, (LPVOID*) &lnk); ok(hr == S_OK, "IHlinCreateFromString failed with error 0x%08x\n", hr); test_persist_save_data("filename", lnk, expected_hlink_data6, sizeof(expected_hlink_data6), expected_hlink_data6, sizeof(expected_hlink_data6)); IHlink_Release(lnk); }