urlmon: Implemented IUriBuilder_{Get/Set}Port.
This commit is contained in:
parent
23e312e324
commit
a4eee68818
|
@ -4315,7 +4315,7 @@ static const uri_builder_test uri_builder_tests[] = {
|
|||
{
|
||||
{TRUE,"test",NULL,Uri_PROPERTY_SCHEME_NAME,S_OK,TRUE}
|
||||
},
|
||||
{TRUE,TRUE,120,S_OK,TRUE},
|
||||
{TRUE,TRUE,120,S_OK,FALSE},
|
||||
0,S_OK,TRUE,
|
||||
0,S_OK,TRUE,
|
||||
0,0,0,S_OK,TRUE,
|
||||
|
@ -4568,6 +4568,109 @@ static const uri_builder_test uri_builder_tests[] = {
|
|||
{URL_SCHEME_UNKNOWN,S_OK},
|
||||
{URLZONE_INVALID,E_NOTIMPL}
|
||||
}
|
||||
},
|
||||
{ "http://google.com/",0,S_OK,FALSE,
|
||||
{
|
||||
{FALSE},
|
||||
},
|
||||
/* 555 will be returned from GetPort even though FALSE was passed as the hasPort parameter. */
|
||||
{TRUE,FALSE,555,S_OK,FALSE},
|
||||
0,S_OK,TRUE,
|
||||
0,S_OK,TRUE,
|
||||
0,0,0,S_OK,TRUE,
|
||||
{
|
||||
{"http://google.com/",S_OK},
|
||||
{"google.com",S_OK},
|
||||
{"http://google.com/",S_OK},
|
||||
{"google.com",S_OK},
|
||||
{"",S_FALSE},
|
||||
{"",S_FALSE},
|
||||
{"google.com",S_OK},
|
||||
{"",S_FALSE},
|
||||
{"/",S_OK},
|
||||
{"/",S_OK},
|
||||
{"",S_FALSE},
|
||||
{"http://google.com/",S_OK},
|
||||
{"http",S_OK},
|
||||
{"",S_FALSE},
|
||||
{"",S_FALSE}
|
||||
},
|
||||
{
|
||||
{Uri_HOST_DNS,S_OK},
|
||||
/* Still returns 80, even though earlier the port was disabled. */
|
||||
{80,S_OK},
|
||||
{URL_SCHEME_HTTP,S_OK},
|
||||
{URLZONE_INVALID,E_NOTIMPL}
|
||||
}
|
||||
},
|
||||
{ "http://google.com/",0,S_OK,FALSE,
|
||||
{
|
||||
{FALSE},
|
||||
},
|
||||
/* Instead of getting "TRUE" back as the "hasPort" parameter in GetPort,
|
||||
* you'll get 122345 instead.
|
||||
*/
|
||||
{TRUE,122345,222,S_OK,FALSE},
|
||||
0,S_OK,TRUE,
|
||||
0,S_OK,TRUE,
|
||||
0,0,0,S_OK,TRUE,
|
||||
{
|
||||
{"http://google.com:222/",S_OK},
|
||||
{"google.com:222",S_OK},
|
||||
{"http://google.com:222/",S_OK},
|
||||
{"google.com",S_OK},
|
||||
{"",S_FALSE},
|
||||
{"",S_FALSE},
|
||||
{"google.com",S_OK},
|
||||
{"",S_FALSE},
|
||||
{"/",S_OK},
|
||||
{"/",S_OK},
|
||||
{"",S_FALSE},
|
||||
{"http://google.com:222/",S_OK},
|
||||
{"http",S_OK},
|
||||
{"",S_FALSE},
|
||||
{"",S_FALSE}
|
||||
},
|
||||
{
|
||||
{Uri_HOST_DNS,S_OK},
|
||||
{222,S_OK},
|
||||
{URL_SCHEME_HTTP,S_OK},
|
||||
{URLZONE_INVALID,E_NOTIMPL}
|
||||
}
|
||||
},
|
||||
/* IUri's created with the IUriBuilder can have ports that exceed USHORT_MAX. */
|
||||
{ "http://google.com/",0,S_OK,FALSE,
|
||||
{
|
||||
{FALSE},
|
||||
},
|
||||
|
||||
{TRUE,TRUE,999999,S_OK,FALSE},
|
||||
0,S_OK,TRUE,
|
||||
0,S_OK,TRUE,
|
||||
0,0,0,S_OK,TRUE,
|
||||
{
|
||||
{"http://google.com:999999/",S_OK},
|
||||
{"google.com:999999",S_OK},
|
||||
{"http://google.com:999999/",S_OK},
|
||||
{"google.com",S_OK},
|
||||
{"",S_FALSE},
|
||||
{"",S_FALSE},
|
||||
{"google.com",S_OK},
|
||||
{"",S_FALSE},
|
||||
{"/",S_OK},
|
||||
{"/",S_OK},
|
||||
{"",S_FALSE},
|
||||
{"http://google.com:999999/",S_OK},
|
||||
{"http",S_OK},
|
||||
{"",S_FALSE},
|
||||
{"",S_FALSE}
|
||||
},
|
||||
{
|
||||
{Uri_HOST_DNS,S_OK},
|
||||
{999999,S_OK},
|
||||
{URL_SCHEME_HTTP,S_OK},
|
||||
{URLZONE_INVALID,E_NOTIMPL}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -7516,6 +7619,34 @@ static void test_IUriBuilder_RemoveProperties(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static void test_IUriBuilder_Misc(void) {
|
||||
HRESULT hr;
|
||||
IUri *uri;
|
||||
|
||||
hr = pCreateUri(http_urlW, 0, 0, &uri);
|
||||
if(SUCCEEDED(hr)) {
|
||||
IUriBuilder *builder;
|
||||
|
||||
hr = pCreateIUriBuilder(uri, 0, 0, &builder);
|
||||
ok(hr == S_OK, "Error: CreateIUriBuilder returned 0x%08x, expected 0x%08x.\n", hr, S_OK);
|
||||
if(SUCCEEDED(hr)) {
|
||||
BOOL has = -1;
|
||||
DWORD port = -1;
|
||||
|
||||
hr = IUriBuilder_GetPort(builder, &has, &port);
|
||||
ok(hr == S_OK, "Error: IUriBuilder_GetPort returned 0x%08x, expected 0x%08x.\n", hr, S_OK);
|
||||
if(SUCCEEDED(hr)) {
|
||||
/* 'has' will be set to FALSE, even though uri had a port. */
|
||||
ok(has == FALSE, "Error: Expected 'has' to be FALSE, was %d instead.\n", has);
|
||||
/* Still sets 'port' to 80. */
|
||||
ok(port == 80, "Error: Expected the port to be 80, but, was %d instead.\n", port);
|
||||
}
|
||||
}
|
||||
if(builder) IUriBuilder_Release(builder);
|
||||
}
|
||||
if(uri) IUri_Release(uri);
|
||||
}
|
||||
|
||||
START_TEST(uri) {
|
||||
HMODULE hurlmon;
|
||||
|
||||
|
@ -7591,4 +7722,7 @@ START_TEST(uri) {
|
|||
|
||||
trace("test IUriBuilder_RemoveProperties...\n");
|
||||
test_IUriBuilder_RemoveProperties();
|
||||
|
||||
trace("test IUriBuilder miscellaneous...\n");
|
||||
test_IUriBuilder_Misc();
|
||||
}
|
||||
|
|
|
@ -91,6 +91,9 @@ typedef struct {
|
|||
|
||||
WCHAR *path;
|
||||
DWORD path_len;
|
||||
|
||||
BOOL has_port;
|
||||
DWORD port;
|
||||
} UriBuilder;
|
||||
|
||||
typedef struct {
|
||||
|
@ -4506,8 +4509,9 @@ static HRESULT WINAPI UriBuilder_GetPort(IUriBuilder *iface, BOOL *pfHasPort, DW
|
|||
return E_POINTER;
|
||||
}
|
||||
|
||||
FIXME("(%p)->(%p %p)\n", This, pfHasPort, pdwPort);
|
||||
return E_NOTIMPL;
|
||||
*pfHasPort = This->has_port;
|
||||
*pdwPort = This->port;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI UriBuilder_GetQuery(IUriBuilder *iface, DWORD *pcchQuery, LPCWSTR *ppwzQuery)
|
||||
|
@ -4605,8 +4609,12 @@ static HRESULT WINAPI UriBuilder_SetPath(IUriBuilder *iface, LPCWSTR pwzNewValue
|
|||
static HRESULT WINAPI UriBuilder_SetPort(IUriBuilder *iface, BOOL fHasPort, DWORD dwNewValue)
|
||||
{
|
||||
UriBuilder *This = URIBUILDER_THIS(iface);
|
||||
FIXME("(%p)->(%d %d)\n", This, fHasPort, dwNewValue);
|
||||
return E_NOTIMPL;
|
||||
TRACE("(%p)->(%d %d)\n", This, fHasPort, dwNewValue);
|
||||
|
||||
This->has_port = fHasPort;
|
||||
This->port = dwNewValue;
|
||||
This->modified_props |= Uri_HAS_PORT;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI UriBuilder_SetQuery(IUriBuilder *iface, LPCWSTR pwzNewValue)
|
||||
|
@ -4705,6 +4713,11 @@ HRESULT WINAPI CreateIUriBuilder(IUri *pIUri, DWORD dwFlags, DWORD_PTR dwReserve
|
|||
if((uri = get_uri_obj(pIUri))) {
|
||||
IUri_AddRef(pIUri);
|
||||
ret->uri = uri;
|
||||
|
||||
if(uri->has_port)
|
||||
/* Windows doesn't set 'has_port' to TRUE in this case. */
|
||||
ret->port = uri->port;
|
||||
|
||||
} else {
|
||||
heap_free(ret);
|
||||
*ppIUriBuilder = NULL;
|
||||
|
|
Loading…
Reference in New Issue