Jacek Caban : mshtml: Don't mess with gecko specific protocols.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Aug 13 06:31:40 CDT 2007


Module: wine
Branch: master
Commit: 464121bc003a3ea65c8943bff8eecdd51c5f4235
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=464121bc003a3ea65c8943bff8eecdd51c5f4235

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Sun Aug 12 17:37:33 2007 +0200

mshtml: Don't mess with gecko specific protocols.

---

 dlls/mshtml/nsio.c |   33 ++++++++++++++++-----------------
 1 files changed, 16 insertions(+), 17 deletions(-)

diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c
index 1b50d2e..e94af28 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)) {




More information about the wine-cvs mailing list