Module: wine Branch: master Commit: a34700f0346ddad5f9347d604180769215311c33 URL: http://source.winehq.org/git/wine.git/?a=commit;h=a34700f0346ddad5f9347d6041...
Author: Thomas Mullaly thomas.mullaly@gmail.com Date: Mon Jun 7 21:41:19 2010 -0400
urlmon: Implemented functionality for retrieving the scheme type of a IUri.
---
dlls/urlmon/tests/uri.c | 24 ++++++++++++------------ dlls/urlmon/uri.c | 22 +++++++++++++++------- 2 files changed, 27 insertions(+), 19 deletions(-)
diff --git a/dlls/urlmon/tests/uri.c b/dlls/urlmon/tests/uri.c index 80a2593..d1e5163 100644 --- a/dlls/urlmon/tests/uri.c +++ b/dlls/urlmon/tests/uri.c @@ -112,7 +112,7 @@ static const uri_properties uri_tests[] = { { {Uri_HOST_DNS,S_OK,TRUE}, /* HOST_TYPE */ {80,S_OK,TRUE}, /* PORT */ - {URL_SCHEME_HTTP,S_OK,TRUE}, /* SCHEME */ + {URL_SCHEME_HTTP,S_OK,FALSE}, /* SCHEME */ {URLZONE_INVALID,E_NOTIMPL,FALSE} /* ZONE */ } }, @@ -141,7 +141,7 @@ static const uri_properties uri_tests[] = { { {Uri_HOST_DNS,S_OK,TRUE}, {80,S_OK,TRUE}, - {URL_SCHEME_HTTP,S_OK,TRUE}, + {URL_SCHEME_HTTP,S_OK,FALSE}, {URLZONE_INVALID,E_NOTIMPL,FALSE} } }, @@ -170,7 +170,7 @@ static const uri_properties uri_tests[] = { { {Uri_HOST_DNS,S_OK,TRUE}, {80,S_OK,TRUE}, - {URL_SCHEME_HTTP,S_OK,TRUE}, + {URL_SCHEME_HTTP,S_OK,FALSE}, {URLZONE_INVALID,E_NOTIMPL,FALSE}, } }, @@ -199,7 +199,7 @@ static const uri_properties uri_tests[] = { { {Uri_HOST_DNS,S_OK,TRUE}, {80,S_OK,TRUE}, - {URL_SCHEME_HTTP,S_OK,TRUE}, + {URL_SCHEME_HTTP,S_OK,FALSE}, {URLZONE_INVALID,E_NOTIMPL,FALSE}, } }, @@ -229,7 +229,7 @@ static const uri_properties uri_tests[] = { { {Uri_HOST_DNS,S_OK,TRUE}, {9999,S_OK,TRUE}, - {URL_SCHEME_FTP,S_OK,TRUE}, + {URL_SCHEME_FTP,S_OK,FALSE}, {URLZONE_INVALID,E_NOTIMPL,FALSE} } }, @@ -257,7 +257,7 @@ static const uri_properties uri_tests[] = { { {Uri_HOST_UNKNOWN,S_OK,TRUE}, {0,S_FALSE,TRUE}, - {URL_SCHEME_FILE,S_OK,TRUE}, + {URL_SCHEME_FILE,S_OK,FALSE}, {URLZONE_INVALID,E_NOTIMPL,FALSE} } }, @@ -285,7 +285,7 @@ static const uri_properties uri_tests[] = { { {Uri_HOST_UNKNOWN,S_OK,TRUE}, {0,S_FALSE,TRUE}, - {URL_SCHEME_FILE,S_OK,TRUE}, + {URL_SCHEME_FILE,S_OK,FALSE}, {URLZONE_INVALID,E_NOTIMPL,FALSE} } }, @@ -313,7 +313,7 @@ static const uri_properties uri_tests[] = { { {Uri_HOST_UNKNOWN,S_OK,TRUE}, {0,S_FALSE,TRUE}, - {URL_SCHEME_UNKNOWN,S_OK,TRUE}, + {URL_SCHEME_UNKNOWN,S_OK,FALSE}, {URLZONE_INVALID,E_NOTIMPL,FALSE} } }, @@ -342,7 +342,7 @@ static const uri_properties uri_tests[] = { { {Uri_HOST_IPV4,S_OK,TRUE}, {80,S_OK,TRUE}, - {URL_SCHEME_HTTP,S_OK,TRUE}, + {URL_SCHEME_HTTP,S_OK,FALSE}, {URLZONE_INVALID,E_NOTIMPL,FALSE} } }, @@ -371,7 +371,7 @@ static const uri_properties uri_tests[] = { { {Uri_HOST_IPV6,S_OK,TRUE}, {80,S_OK,TRUE}, - {URL_SCHEME_HTTP,S_OK,TRUE}, + {URL_SCHEME_HTTP,S_OK,FALSE}, {URLZONE_INVALID,E_NOTIMPL,FALSE} } }, @@ -400,7 +400,7 @@ static const uri_properties uri_tests[] = { { {Uri_HOST_IPV6,S_OK,TRUE}, {21,S_OK,TRUE}, - {URL_SCHEME_FTP,S_OK,TRUE}, + {URL_SCHEME_FTP,S_OK,FALSE}, {URLZONE_INVALID,E_NOTIMPL,FALSE} } }, @@ -429,7 +429,7 @@ static const uri_properties uri_tests[] = { { {Uri_HOST_IPV6,S_OK,TRUE}, {80,S_OK,TRUE}, - {URL_SCHEME_HTTP,S_OK,TRUE}, + {URL_SCHEME_HTTP,S_OK,FALSE}, {URLZONE_INVALID,E_NOTIMPL,FALSE} } } diff --git a/dlls/urlmon/uri.c b/dlls/urlmon/uri.c index f99061f..36ba81c 100644 --- a/dlls/urlmon/uri.c +++ b/dlls/urlmon/uri.c @@ -500,6 +500,8 @@ static HRESULT WINAPI Uri_GetPropertyLength(IUri *iface, Uri_PROPERTY uriProp, D static HRESULT WINAPI Uri_GetPropertyDWORD(IUri *iface, Uri_PROPERTY uriProp, DWORD *pcchProperty, DWORD dwFlags) { Uri *This = URI_THIS(iface); + HRESULT hres; + TRACE("(%p)->(%d %p %x)\n", This, uriProp, pcchProperty, dwFlags);
if(!pcchProperty) @@ -520,7 +522,17 @@ static HRESULT WINAPI Uri_GetPropertyDWORD(IUri *iface, Uri_PROPERTY uriProp, DW return E_INVALIDARG; }
- return E_NOTIMPL; + switch(uriProp) { + case Uri_PROPERTY_SCHEME: + *pcchProperty = This->scheme_type; + hres = S_OK; + break; + default: + FIXME("(%p)->(%d %p %x)\n", This, uriProp, pcchProperty, dwFlags); + hres = E_NOTIMPL; + } + + return hres; }
static HRESULT WINAPI Uri_HasProperty(IUri *iface, Uri_PROPERTY uriProp, BOOL *pfHasProperty) @@ -718,12 +730,8 @@ static HRESULT WINAPI Uri_GetPort(IUri *iface, DWORD *pdwPort) static HRESULT WINAPI Uri_GetScheme(IUri *iface, DWORD *pdwScheme) { Uri *This = URI_THIS(iface); - FIXME("(%p)->(%p)\n", This, pdwScheme); - - if(!pdwScheme) - return E_INVALIDARG; - - return E_NOTIMPL; + TRACE("(%p)->(%p)\n", This, pdwScheme); + return Uri_GetPropertyDWORD(iface, Uri_PROPERTY_SCHEME, pdwScheme, 0); }
static HRESULT WINAPI Uri_GetZone(IUri *iface, DWORD *pdwZone)