From acc91df5aa218051e774dc33cb08f680b63ea924 Mon Sep 17 00:00:00 2001 From: "bzbarsky%mit.edu" Date: Mon, 25 Nov 2002 23:36:37 +0000 Subject: [PATCH] Fix bug 181472 -- uri fixup should do the PossiblyHostPortUrl check before calling NS_NewURI if the protocol handler is the external protocol handler. r=adamlock, sr=darin git-svn-id: svn://10.0.0.236/trunk@134424 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/docshell/base/nsDefaultURIFixup.cpp | 22 +++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/mozilla/docshell/base/nsDefaultURIFixup.cpp b/mozilla/docshell/base/nsDefaultURIFixup.cpp index c2ed5556a7d..d791bb80495 100644 --- a/mozilla/docshell/base/nsDefaultURIFixup.cpp +++ b/mozilla/docshell/base/nsDefaultURIFixup.cpp @@ -191,13 +191,23 @@ nsDefaultURIFixup::CreateFixupURI(const nsAString& aStringURI, PRUint32 aFixupFl uriString.EqualsIgnoreCase("ftp:", 4) || uriString.EqualsIgnoreCase("file:", 5)); - // Just try to create an URL out of it - rv = NS_NewURI(aURI, uriString, bUseNonDefaultCharsetForURI ? GetCharsetForUrlBar() : nsnull); - if (rv == NS_ERROR_UNKNOWN_PROTOCOL) - { - if (!PossiblyHostPortUrl(uriString)) - return NS_ERROR_UNKNOWN_PROTOCOL; + // Check the scheme... + NS_LossyConvertUCS2toASCII asciiURI(uriString); + nsCOMPtr ioService = do_GetService(NS_IOSERVICE_CONTRACTID, &rv); + NS_ENSURE_SUCCESS(rv, rv); + nsCAutoString scheme; + ioService->ExtractScheme(asciiURI, scheme); + nsCOMPtr ourHandler, extHandler; + + ioService->GetProtocolHandler(scheme.get(), getter_AddRefs(ourHandler)); + extHandler = do_GetService(NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX"default"); + + if (ourHandler != extHandler || !PossiblyHostPortUrl(uriString)) { + // Just try to create an URL out of it + rv = NS_NewURI(aURI, uriString, + bUseNonDefaultCharsetForURI ? GetCharsetForUrlBar() : nsnull); } + if (*aURI) { if (aFixupFlags & FIXUP_FLAGS_MAKE_ALTERNATE_URI) MakeAlternateURI(*aURI);