From 464121bc003a3ea65c8943bff8eecdd51c5f4235 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Sun, 12 Aug 2007 17:37:33 +0200 Subject: [PATCH] mshtml: Don't mess with gecko specific protocols. --- dlls/mshtml/nsio.c | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c index 1b50d2e867a..e94af28b1a2 100644 --- a/dlls/mshtml/nsio.c +++ b/dlls/mshtml/nsio.c @@ -1945,13 +1945,25 @@ static nsresult NSAPI nsIOService_GetProtocolFlags(nsIIOService *iface, const ch return nsIIOService_GetProtocolFlags(nsio, aScheme, _retval); } +static BOOL is_gecko_special_uri(const char *spec) +{ + static const char chromeW[] = "chrome:"; + static const char jarW[] = "jar:"; + static const char resourceW[] = "resource:"; + static const char javascriptW[] = "javascript:"; + + return !strncasecmp(spec, chromeW, sizeof(chromeW)-1) + || !strncasecmp(spec, resourceW, sizeof(resourceW)-1) + || !strncasecmp(spec, jarW, sizeof(jarW)-1) + || !strncasecmp(spec, javascriptW, sizeof(javascriptW)-1); +} + static nsresult NSAPI nsIOService_NewURI(nsIIOService *iface, const nsACString *aSpec, const char *aOriginCharset, nsIURI *aBaseURI, nsIURI **_retval) { const char *spec = NULL; NSContainer *nscontainer = NULL; nsIURI *uri = NULL; - PRBool is_javascript = FALSE; LPCWSTR base_wine_url = NULL; nsIWineURI *base_wine_uri = NULL, *wine_uri; nsresult nsres; @@ -1961,13 +1973,13 @@ static nsresult NSAPI nsIOService_NewURI(nsIIOService *iface, const nsACString * TRACE("(%p(%s) %s %p %p)\n", aSpec, debugstr_a(spec), debugstr_a(aOriginCharset), aBaseURI, _retval); + if(is_gecko_special_uri(spec)) + return nsIIOService_NewURI(nsio, aSpec, aOriginCharset, aBaseURI, _retval); + if(aBaseURI) { nsACString base_uri_str; const char *base_uri = NULL; - static const char szChrome[] = "chrome:"; - static const char szResource[] = "resource:"; - nsACString_Init(&base_uri_str, NULL); nsres = nsIURI_GetSpec(aBaseURI, &base_uri_str); @@ -1979,25 +1991,12 @@ static nsresult NSAPI nsIOService_NewURI(nsIIOService *iface, const nsACString * } nsACString_Finish(&base_uri_str); - - if(!strncmp(spec, szChrome, sizeof(szChrome)-1) - || !strncmp(spec, szResource, sizeof(szResource)-1)) - aBaseURI = NULL; } nsres = nsIIOService_NewURI(nsio, aSpec, aOriginCharset, aBaseURI, &uri); if(NS_FAILED(nsres)) TRACE("NewURI failed: %08x\n", nsres); - 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) { nsres = nsIURI_QueryInterface(aBaseURI, &IID_nsIWineURI, (void**)&base_wine_uri); if(NS_SUCCEEDED(nsres)) { -- 2.11.4.GIT