Thomas Mullaly : urlmon: Implemented IUriBuilder_{Get/Set}SchemeName.
Alexandre Julliard
julliard at winehq.org
Tue Sep 7 11:22:55 CDT 2010
Module: wine
Branch: master
Commit: 7f6faca6f6880843217ac39e7d90ea006416bd16
URL: http://source.winehq.org/git/wine.git/?a=commit;h=7f6faca6f6880843217ac39e7d90ea006416bd16
Author: Thomas Mullaly <thomas.mullaly at gmail.com>
Date: Mon Sep 6 16:51:11 2010 -0400
urlmon: Implemented IUriBuilder_{Get/Set}SchemeName.
---
dlls/urlmon/tests/uri.c | 4 ++--
dlls/urlmon/uri.c | 27 ++++++++++++---------------
2 files changed, 14 insertions(+), 17 deletions(-)
diff --git a/dlls/urlmon/tests/uri.c b/dlls/urlmon/tests/uri.c
index a8b4952..d062df3 100644
--- a/dlls/urlmon/tests/uri.c
+++ b/dlls/urlmon/tests/uri.c
@@ -4313,7 +4313,7 @@ static const uri_builder_test uri_builder_tests[] = {
},
{ "http://google.com/",0,S_OK,FALSE,
{
- {TRUE,"test",NULL,Uri_PROPERTY_SCHEME_NAME,S_OK,TRUE}
+ {TRUE,"test",NULL,Uri_PROPERTY_SCHEME_NAME,S_OK,FALSE}
},
{TRUE,TRUE,120,S_OK,FALSE},
0,S_OK,TRUE,
@@ -4345,7 +4345,7 @@ static const uri_builder_test uri_builder_tests[] = {
},
{ "/Test/test dir",Uri_CREATE_ALLOW_RELATIVE,S_OK,FALSE,
{
- {TRUE,"http",NULL,Uri_PROPERTY_SCHEME_NAME,S_OK,TRUE},
+ {TRUE,"http",NULL,Uri_PROPERTY_SCHEME_NAME,S_OK,FALSE},
{TRUE,"::192.2.3.4",NULL,Uri_PROPERTY_HOST,S_OK,FALSE},
{TRUE,NULL,NULL,Uri_PROPERTY_PATH,S_OK,FALSE}
},
diff --git a/dlls/urlmon/uri.c b/dlls/urlmon/uri.c
index ce14446..f15f6aa 100644
--- a/dlls/urlmon/uri.c
+++ b/dlls/urlmon/uri.c
@@ -97,6 +97,9 @@ typedef struct {
WCHAR *query;
DWORD query_len;
+
+ WCHAR *scheme;
+ DWORD scheme_len;
} UriBuilder;
typedef struct {
@@ -4328,6 +4331,7 @@ static ULONG WINAPI UriBuilder_Release(IUriBuilder *iface)
heap_free(This->password);
heap_free(This->path);
heap_free(This->query);
+ heap_free(This->scheme);
heap_free(This);
}
@@ -4535,19 +4539,11 @@ static HRESULT WINAPI UriBuilder_GetSchemeName(IUriBuilder *iface, DWORD *pcchSc
UriBuilder *This = URIBUILDER_THIS(iface);
TRACE("(%p)->(%p %p)\n", This, pcchSchemeName, ppwzSchemeName);
- if(!pcchSchemeName) {
- if(ppwzSchemeName)
- *ppwzSchemeName = NULL;
- return E_POINTER;
- }
-
- if(!ppwzSchemeName) {
- *pcchSchemeName = 0;
- return E_POINTER;
- }
-
- FIXME("(%p)->(%p %p)\n", This, pcchSchemeName, ppwzSchemeName);
- return E_NOTIMPL;
+ if(!This->uri || This->uri->scheme_start == -1 || This->modified_props & Uri_HAS_SCHEME_NAME)
+ return get_builder_component(&This->scheme, &This->scheme_len, NULL, 0, ppwzSchemeName, pcchSchemeName);
+ else
+ return get_builder_component(&This->scheme, &This->scheme_len, This->uri->canon_uri+This->uri->scheme_start,
+ This->uri->scheme_len, ppwzSchemeName, pcchSchemeName);
}
static HRESULT WINAPI UriBuilder_GetUserName(IUriBuilder *iface, DWORD *pcchUserName, LPCWSTR *ppwzUserName)
@@ -4624,8 +4620,9 @@ static HRESULT WINAPI UriBuilder_SetQuery(IUriBuilder *iface, LPCWSTR pwzNewValu
static HRESULT WINAPI UriBuilder_SetSchemeName(IUriBuilder *iface, LPCWSTR pwzNewValue)
{
UriBuilder *This = URIBUILDER_THIS(iface);
- FIXME("(%p)->(%s)\n", This, debugstr_w(pwzNewValue));
- return E_NOTIMPL;
+ TRACE("(%p)->(%s)\n", This, debugstr_w(pwzNewValue));
+ return set_builder_component(&This->scheme, &This->scheme_len, pwzNewValue, 0,
+ &This->modified_props, Uri_HAS_SCHEME_NAME);
}
static HRESULT WINAPI UriBuilder_SetUserName(IUriBuilder *iface, LPCWSTR pwzNewValue)
More information about the wine-cvs
mailing list