diff --git a/dlls/mshtml/protocol.c b/dlls/mshtml/protocol.c
index cf600044b15..04ecda02b40 100644
--- a/dlls/mshtml/protocol.c
+++ b/dlls/mshtml/protocol.c
@@ -91,6 +91,17 @@ static ULONG WINAPI InternetProtocolInfo_Release(IInternetProtocolInfo *iface)
return 1;
}
+static HRESULT WINAPI InternetProtocolInfo_CombineUrl(IInternetProtocolInfo *iface,
+ LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, LPWSTR pwzResult,
+ DWORD cchResult, DWORD* pcchResult, DWORD dwReserved)
+{
+ TRACE("%p)->(%s %s %08lx %p %ld %p %ld)\n", iface, debugstr_w(pwzBaseUrl),
+ debugstr_w(pwzRelativeUrl), dwCombineFlags, pwzResult, cchResult,
+ pcchResult, dwReserved);
+
+ return INET_E_USE_DEFAULT_PROTOCOLHANDLER;
+}
+
#undef PROTOCOLINFO_THIS
#define CLASSFACTORY_THIS(iface) DEFINE_THIS(ProtocolFactory, ClassFactory, iface)
@@ -427,15 +438,6 @@ static HRESULT WINAPI AboutProtocolInfo_ParseUrl(IInternetProtocolInfo *iface, L
return INET_E_DEFAULT_ACTION;
}
-static HRESULT WINAPI AboutProtocolInfo_CombineUrl(IInternetProtocolInfo *iface, LPCWSTR pwzBaseUrl,
- LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, LPWSTR pwzResult, DWORD cchResult,
- DWORD* pcchResult, DWORD dwReserved)
-{
- FIXME("%p)->(%s %s %08lx %p %ld %p %ld)\n", iface, debugstr_w(pwzBaseUrl), debugstr_w(pwzRelativeUrl),
- dwCombineFlags, pwzResult, cchResult, pcchResult, dwReserved);
- return E_NOTIMPL;
-}
-
static HRESULT WINAPI AboutProtocolInfo_CompareUrl(IInternetProtocolInfo *iface, LPCWSTR pwzUrl1,
LPCWSTR pwzUrl2, DWORD dwCompareFlags)
{
@@ -457,7 +459,7 @@ static const IInternetProtocolInfoVtbl AboutProtocolInfoVtbl = {
InternetProtocolInfo_AddRef,
InternetProtocolInfo_Release,
AboutProtocolInfo_ParseUrl,
- AboutProtocolInfo_CombineUrl,
+ InternetProtocolInfo_CombineUrl,
AboutProtocolInfo_CompareUrl,
AboutProtocolInfo_QueryInfo
};
@@ -837,16 +839,6 @@ static HRESULT WINAPI ResProtocolInfo_ParseUrl(IInternetProtocolInfo *iface, LPC
return INET_E_DEFAULT_ACTION;
}
-static HRESULT WINAPI ResProtocolInfo_CombineUrl(IInternetProtocolInfo *iface, LPCWSTR pwzBaseUrl,
- LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, LPWSTR pwzResult, DWORD cchResult,
- DWORD* pcchResult, DWORD dwReserved)
-{
- TRACE("%p)->(%s %s %08lx %p %ld %p %ld)\n", iface, debugstr_w(pwzBaseUrl), debugstr_w(pwzRelativeUrl),
- dwCombineFlags, pwzResult, cchResult, pcchResult, dwReserved);
-
- return INET_E_USE_DEFAULT_PROTOCOLHANDLER;
-}
-
static HRESULT WINAPI ResProtocolInfo_CompareUrl(IInternetProtocolInfo *iface, LPCWSTR pwzUrl1,
LPCWSTR pwzUrl2, DWORD dwCompareFlags)
{
@@ -868,7 +860,7 @@ static const IInternetProtocolInfoVtbl ResProtocolInfoVtbl = {
InternetProtocolInfo_AddRef,
InternetProtocolInfo_Release,
ResProtocolInfo_ParseUrl,
- ResProtocolInfo_CombineUrl,
+ InternetProtocolInfo_CombineUrl,
ResProtocolInfo_CompareUrl,
ResProtocolInfo_QueryInfo
};
diff --git a/dlls/mshtml/tests/protocol.c b/dlls/mshtml/tests/protocol.c
index 845101981b5..65078198772 100644
--- a/dlls/mshtml/tests/protocol.c
+++ b/dlls/mshtml/tests/protocol.c
@@ -340,16 +340,19 @@ static void test_res_protocol(void)
hres = IInternetProtocolInfo_CombineUrl(protocol_info, blank_url, test_part_url,
0, buf, sizeof(buf)/sizeof(buf[0]), &size, 0);
ok(hres == INET_E_USE_DEFAULT_PROTOCOLHANDLER, "CombineUrl failed: %08lx\n", hres);
+ ok(size == 0xdeadbeef, "size=%ld\n", size);
size = 0xdeadbeef;
hres = IInternetProtocolInfo_CombineUrl(protocol_info, blank_url, test_part_url,
URL_FILE_USE_PATHURL, buf, sizeof(buf)/sizeof(buf[0]), &size, 0);
ok(hres == INET_E_USE_DEFAULT_PROTOCOLHANDLER, "CombineUrl failed: %08lx\n", hres);
+ ok(size == 0xdeadbeef, "size=%ld\n", size);
size = 0xdeadbeef;
hres = IInternetProtocolInfo_CombineUrl(protocol_info, NULL, NULL,
URL_FILE_USE_PATHURL, NULL, 0xdeadbeef, NULL, 0);
ok(hres == INET_E_USE_DEFAULT_PROTOCOLHANDLER, "CombineUrl failed: %08lx\n", hres);
+ ok(size == 0xdeadbeef, "size=%ld\n", size);
IInternetProtocolInfo_Release(protocol_info);
}
@@ -517,6 +520,24 @@ static void test_about_protocol(void)
ok(hres == INET_E_DEFAULT_ACTION,
"ParseUrl failed: %08lx, expected INET_E_DEFAULT_ACTION\n", hres);
+ size = 0xdeadbeef;
+ hres = IInternetProtocolInfo_CombineUrl(protocol_info, blank_url, test_url,
+ 0, buf, sizeof(buf)/sizeof(buf[0]), &size, 0);
+ ok(hres == INET_E_USE_DEFAULT_PROTOCOLHANDLER, "CombineUrl failed: %08lx\n", hres);
+ ok(size == 0xdeadbeef, "size=%ld\n", size);
+
+ size = 0xdeadbeef;
+ hres = IInternetProtocolInfo_CombineUrl(protocol_info, blank_url, test_url,
+ URL_FILE_USE_PATHURL, buf, sizeof(buf)/sizeof(buf[0]), &size, 0);
+ ok(hres == INET_E_USE_DEFAULT_PROTOCOLHANDLER, "CombineUrl failed: %08lx\n", hres);
+ ok(size == 0xdeadbeef, "size=%ld\n", size);
+
+ size = 0xdeadbeef;
+ hres = IInternetProtocolInfo_CombineUrl(protocol_info, NULL, NULL,
+ URL_FILE_USE_PATHURL, buf, sizeof(buf)/sizeof(buf[0]), &size, 0);
+ ok(hres == INET_E_USE_DEFAULT_PROTOCOLHANDLER, "CombineUrl failed: %08lx\n", hres);
+ ok(size == 0xdeadbeef, "size=%ld\n", size);
+
IInternetProtocolInfo_Release(protocol_info);
}