From bb64efaf7778a937900899508a3584defb898053 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Fri, 7 Jul 2006 15:17:27 +0200 Subject: [PATCH] mshtml: Create nsWineURI even if we don't have valid nsIURI. --- dlls/mshtml/nsio.c | 244 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 201 insertions(+), 43 deletions(-) diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c index 31a713cb5f7..a26d6bfbee9 100644 --- a/dlls/mshtml/nsio.c +++ b/dlls/mshtml/nsio.c @@ -1044,7 +1044,8 @@ static nsrefcnt NSAPI nsURI_Release(nsIWineURI *iface) if(!ref) { if(This->container) nsIWebBrowserChrome_Release(NSWBCHROME(This->container)); - nsIURI_Release(This->uri); + if(This->uri) + nsIURI_Release(This->uri); HeapFree(GetProcessHeap(), 0, This); } @@ -1054,194 +1055,351 @@ static nsrefcnt NSAPI nsURI_Release(nsIWineURI *iface) static nsresult NSAPI nsURI_GetSpec(nsIWineURI *iface, nsACString *aSpec) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aSpec); - return nsIURI_GetSpec(This->uri, aSpec); + + if(This->uri) + return nsIURI_GetSpec(This->uri, aSpec); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; + } static nsresult NSAPI nsURI_SetSpec(nsIWineURI *iface, const nsACString *aSpec) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aSpec); - return nsIURI_SetSpec(This->uri, aSpec); + + if(This->uri) + return nsIURI_SetSpec(This->uri, aSpec); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_GetPrePath(nsIWineURI *iface, nsACString *aPrePath) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aPrePath); - return nsIURI_GetPrePath(This->uri, aPrePath); + + if(This->uri) + return nsIURI_GetPrePath(This->uri, aPrePath); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_GetScheme(nsIWineURI *iface, nsACString *aScheme) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aScheme); - return nsIURI_GetScheme(This->uri, aScheme); + + if(This->uri) + return nsIURI_GetScheme(This->uri, aScheme); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_SetScheme(nsIWineURI *iface, const nsACString *aScheme) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aScheme); - return nsIURI_SetScheme(This->uri, aScheme); + + if(This->uri) + return nsIURI_SetScheme(This->uri, aScheme); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_GetUserPass(nsIWineURI *iface, nsACString *aUserPass) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aUserPass); - return nsIURI_GetUserPass(This->uri, aUserPass); + + if(This->uri) + return nsIURI_GetUserPass(This->uri, aUserPass); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_SetUserPass(nsIWineURI *iface, const nsACString *aUserPass) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aUserPass); - return nsIURI_SetUserPass(This->uri, aUserPass); + + if(This->uri) + return nsIURI_SetUserPass(This->uri, aUserPass); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_GetUsername(nsIWineURI *iface, nsACString *aUsername) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aUsername); - return nsIURI_GetUsername(This->uri, aUsername); + + if(This->uri) + return nsIURI_GetUsername(This->uri, aUsername); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_SetUsername(nsIWineURI *iface, const nsACString *aUsername) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aUsername); - return nsIURI_SetUsername(This->uri, aUsername); + + if(This->uri) + return nsIURI_SetUsername(This->uri, aUsername); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_GetPassword(nsIWineURI *iface, nsACString *aPassword) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aPassword); - return nsIURI_GetPassword(This->uri, aPassword); + + if(This->uri) + return nsIURI_GetPassword(This->uri, aPassword); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_SetPassword(nsIWineURI *iface, const nsACString *aPassword) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aPassword); - return nsIURI_SetPassword(This->uri, aPassword); + + if(This->uri) + return nsIURI_SetPassword(This->uri, aPassword); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_GetHostPort(nsIWineURI *iface, nsACString *aHostPort) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aHostPort); - return nsIURI_GetHostPort(This->uri, aHostPort); + + if(This->uri) + return nsIURI_GetHostPort(This->uri, aHostPort); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_SetHostPort(nsIWineURI *iface, const nsACString *aHostPort) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aHostPort); - return nsIURI_SetHostPort(This->uri, aHostPort); + + if(This->uri) + return nsIURI_SetHostPort(This->uri, aHostPort); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_GetHost(nsIWineURI *iface, nsACString *aHost) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aHost); - return nsIURI_GetHost(This->uri, aHost); + + if(This->uri) + return nsIURI_GetHost(This->uri, aHost); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_SetHost(nsIWineURI *iface, const nsACString *aHost) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aHost); - return nsIURI_SetHost(This->uri, aHost); + + if(This->uri) + return nsIURI_SetHost(This->uri, aHost); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_GetPort(nsIWineURI *iface, PRInt32 *aPort) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aPort); - return nsIURI_GetPort(This->uri, aPort); + + if(This->uri) + return nsIURI_GetPort(This->uri, aPort); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_SetPort(nsIWineURI *iface, PRInt32 aPort) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%ld)\n", This, aPort); - return nsIURI_SetPort(This->uri, aPort); + + if(This->uri) + return nsIURI_SetPort(This->uri, aPort); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_GetPath(nsIWineURI *iface, nsACString *aPath) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aPath); - return nsIURI_GetPath(This->uri, aPath); + + if(This->uri) + return nsIURI_GetPath(This->uri, aPath); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_SetPath(nsIWineURI *iface, const nsACString *aPath) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aPath); - return nsIURI_SetPath(This->uri, aPath); + + if(This->uri) + return nsIURI_SetPath(This->uri, aPath); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_Equals(nsIWineURI *iface, nsIURI *other, PRBool *_retval) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p %p)\n", This, other, _retval); - return nsIURI_Equals(This->uri, other, _retval); + + if(This->uri) + return nsIURI_Equals(This->uri, other, _retval); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_SchemeIs(nsIWineURI *iface, const char *scheme, PRBool *_retval) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%s %p)\n", This, debugstr_a(scheme), _retval); - return nsIURI_SchemeIs(This->uri, scheme, _retval); + + if(This->uri) + return nsIURI_SchemeIs(This->uri, scheme, _retval); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_Clone(nsIWineURI *iface, nsIURI **_retval) { nsURI *This = NSURI_THIS(iface); - nsIURI *uri; - nsresult nsres; TRACE("(%p)->(%p)\n", This, _retval); - nsres = nsIURI_Clone(This->uri, &uri); - if(NS_FAILED(nsres)) { - WARN("Clone failed: %08lx\n", nsres); - return nsres; + if(This->uri) { + nsIURI *uri; + nsresult nsres; + + nsres = nsIURI_Clone(This->uri, &uri); + if(NS_FAILED(nsres)) { + WARN("Clone failed: %08lx\n", nsres); + return nsres; + } + + return create_uri(uri, This->container, _retval); } - return create_uri(uri, This->container, _retval); + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_Resolve(nsIWineURI *iface, const nsACString *arelativePath, nsACString *_retval) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p %p)\n", This, arelativePath, _retval); - return nsIURI_Resolve(This->uri, arelativePath, _retval); + + if(This->uri) + return nsIURI_Resolve(This->uri, arelativePath, _retval); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_GetAsciiSpec(nsIWineURI *iface, nsACString *aAsciiSpec) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aAsciiSpec); - return nsIURI_GetAsciiSpec(This->uri, aAsciiSpec); + + if(This->uri) + return nsIURI_GetAsciiSpec(This->uri, aAsciiSpec); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_GetAsciiHost(nsIWineURI *iface, nsACString *aAsciiHost) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aAsciiHost); - return nsIURI_GetAsciiHost(This->uri, aAsciiHost); + + if(This->uri) + return nsIURI_GetAsciiHost(This->uri, aAsciiHost); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_GetOriginCharset(nsIWineURI *iface, nsACString *aOriginCharset) { nsURI *This = NSURI_THIS(iface); + TRACE("(%p)->(%p)\n", This, aOriginCharset); - return nsIURI_GetOriginCharset(This->uri, aOriginCharset); + + if(This->uri) + return nsIURI_GetOriginCharset(This->uri, aOriginCharset); + + FIXME("default action not implemented\n"); + return NS_ERROR_NOT_IMPLEMENTED; } static nsresult NSAPI nsURI_GetNSContainer(nsIWineURI *iface, NSContainer **aContainer) @@ -1379,7 +1537,7 @@ static nsresult NSAPI nsIOService_NewURI(nsIIOService *iface, const nsACString * { const char *spec = NULL; NSContainer *nscontainer = NULL; - nsIURI *uri; + nsIURI *uri = NULL; PRBool is_javascript = FALSE; nsresult nsres; @@ -1406,16 +1564,16 @@ static nsresult NSAPI nsIOService_NewURI(nsIIOService *iface, const nsACString * } nsres = nsIIOService_NewURI(nsio, aSpec, aOriginCharset, aBaseURI, &uri); - if(NS_FAILED(nsres)) { - WARN("NewURI failed: %08lx\n", nsres); - return nsres; - } + if(NS_FAILED(nsres)) + TRACE("NewURI failed: %08lx\n", nsres); - nsIURI_SchemeIs(uri, "javascript", &is_javascript); - if(is_javascript) { - TRACE("returning javascript uri: %p\n", uri); - *_retval = uri; - return NS_OK; + if(uri) { + nsIURI_SchemeIs(uri, "javascript", &is_javascript); + if(is_javascript) { + TRACE("returning javascript uri: %p\n", uri); + *_retval = uri; + return NS_OK; + } } if(aBaseURI) {