mshtml: Implement nsIURI::SetUserPass on top of IUri.
This commit is contained in:
parent
d15b567ca5
commit
0289530f07
|
@ -1747,28 +1747,74 @@ static nsresult NSAPI nsURI_SetScheme(nsIURL *iface, const nsACString *aScheme)
|
||||||
static nsresult NSAPI nsURI_GetUserPass(nsIURL *iface, nsACString *aUserPass)
|
static nsresult NSAPI nsURI_GetUserPass(nsIURL *iface, nsACString *aUserPass)
|
||||||
{
|
{
|
||||||
nsWineURI *This = impl_from_nsIURL(iface);
|
nsWineURI *This = impl_from_nsIURL(iface);
|
||||||
|
BSTR user, pass;
|
||||||
|
HRESULT hres;
|
||||||
|
|
||||||
TRACE("(%p)->(%p)\n", This, aUserPass);
|
TRACE("(%p)->(%p)\n", This, aUserPass);
|
||||||
|
|
||||||
if(This->nsuri)
|
if(!ensure_uri(This))
|
||||||
return nsIURI_GetUserPass(This->nsuri, aUserPass);
|
return NS_ERROR_UNEXPECTED;
|
||||||
|
|
||||||
return get_uri_string(This, Uri_PROPERTY_USER_INFO, aUserPass);
|
hres = IUri_GetUserName(This->uri, &user);
|
||||||
|
if(FAILED(hres))
|
||||||
|
return NS_ERROR_FAILURE;
|
||||||
|
|
||||||
|
hres = IUri_GetPassword(This->uri, &pass);
|
||||||
|
if(FAILED(hres)) {
|
||||||
|
SysFreeString(user);
|
||||||
|
return NS_ERROR_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(*user || *pass) {
|
||||||
|
FIXME("Construct user:pass string\n");
|
||||||
|
}else {
|
||||||
|
nsACString_SetData(aUserPass, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
SysFreeString(user);
|
||||||
|
SysFreeString(pass);
|
||||||
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static nsresult NSAPI nsURI_SetUserPass(nsIURL *iface, const nsACString *aUserPass)
|
static nsresult NSAPI nsURI_SetUserPass(nsIURL *iface, const nsACString *aUserPass)
|
||||||
{
|
{
|
||||||
nsWineURI *This = impl_from_nsIURL(iface);
|
nsWineURI *This = impl_from_nsIURL(iface);
|
||||||
|
WCHAR *user = NULL, *pass = NULL, *buf = NULL;
|
||||||
|
const char *user_pass;
|
||||||
|
HRESULT hres;
|
||||||
|
|
||||||
TRACE("(%p)->(%s)\n", This, debugstr_nsacstr(aUserPass));
|
TRACE("(%p)->(%s)\n", This, debugstr_nsacstr(aUserPass));
|
||||||
|
|
||||||
if(This->nsuri) {
|
if(!ensure_uri_builder(This))
|
||||||
invalidate_uri(This);
|
return NS_ERROR_UNEXPECTED;
|
||||||
return nsIURI_SetUserPass(This->nsuri, aUserPass);
|
|
||||||
|
nsACString_GetData(aUserPass, &user_pass);
|
||||||
|
if(*user_pass) {
|
||||||
|
WCHAR *ptr;
|
||||||
|
|
||||||
|
buf = heap_strdupAtoW(user_pass);
|
||||||
|
if(!buf)
|
||||||
|
return NS_ERROR_OUT_OF_MEMORY;
|
||||||
|
|
||||||
|
ptr = strchrW(buf, ':');
|
||||||
|
if(!ptr) {
|
||||||
|
user = buf;
|
||||||
|
}else if(ptr != buf) {
|
||||||
|
*ptr++ = 0;
|
||||||
|
user = buf;
|
||||||
|
if(*ptr)
|
||||||
|
pass = ptr;
|
||||||
|
}else {
|
||||||
|
pass = buf+1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME("default action not implemented\n");
|
hres = IUriBuilder_SetUserName(This->uri_builder, user);
|
||||||
return NS_ERROR_NOT_IMPLEMENTED;
|
if(SUCCEEDED(hres))
|
||||||
|
hres = IUriBuilder_SetPassword(This->uri_builder, pass);
|
||||||
|
|
||||||
|
heap_free(buf);
|
||||||
|
return SUCCEEDED(hres) ? NS_OK : NS_ERROR_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static nsresult NSAPI nsURI_GetUsername(nsIURL *iface, nsACString *aUsername)
|
static nsresult NSAPI nsURI_GetUsername(nsIURL *iface, nsACString *aUsername)
|
||||||
|
|
Loading…
Reference in New Issue