From 3dfdb1e62b967d13c2230fc8193b74c8dd1cd398 Mon Sep 17 00:00:00 2001 From: "bzbarsky%mit.edu" Date: Thu, 10 Mar 2005 03:52:49 +0000 Subject: [PATCH] Fix code that incorrectly constructs URIs. Bug 278773, patch by Gavin Sharp , r=darin --- .../mozapps/downloads/content/downloads.js | 34 +++++++++++-------- .../downloads/content/pref-downloads.js | 6 ++-- .../mozapps/extensions/content/extensions.js | 14 ++++---- .../extensions/src/nsExtensionManager.js.in | 12 +++---- toolkit/mozapps/update/content/updates.xml | 6 ++-- 5 files changed, 39 insertions(+), 33 deletions(-) diff --git a/toolkit/mozapps/downloads/content/downloads.js b/toolkit/mozapps/downloads/content/downloads.js index 2c714ac99b46..bf7d962e0711 100644 --- a/toolkit/mozapps/downloads/content/downloads.js +++ b/toolkit/mozapps/downloads/content/downloads.js @@ -289,11 +289,11 @@ function onDownloadShow(aEvent) f.reveal(); } catch (ex) { // if reveal failed for some reason (eg on unix it's not currently - // implemented), send the file: URL window rooted at the parent to + // implemented), send the file: URL window rooted at the parent to // the OS handler for that protocol var parent = f.parent; if (parent) { - openExternal(parent.path); + openExternal(parent); } } } @@ -352,7 +352,7 @@ function onDownloadOpen(aEvent) } catch (ex) { // if launch fails, try sending it through the system's external // file: URL handler - openExternal(f.path); + openExternal(f); } } else { @@ -561,18 +561,21 @@ var XPInstallDownloadManager = { var tempDir = fileLocator.get("TmpD", Components.interfaces.nsIFile); var mimeService = Components.classes["@mozilla.org/uriloader/external-helper-app-service;1"].getService(Components.interfaces.nsIMIMEService); - + + var IOService = Components.classes["@mozilla.org/network/io-service;1"] + .getService(Components.interfaces.nsIIOService); + var xpinstallManager = gDownloadManager.QueryInterface(Components.interfaces.nsIXPInstallManagerUI); var xpiString = ""; + for (var i = 0; i < numXPInstallItems;) { // Pretty Name var displayName = aParams.GetString(i++); // URI - var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIURI); - uri.spec = aParams.GetString(i++); - + var uri = IOService.newURI(aParams.GetString(i++), null, null); + var iconURL = aParams.GetString(i++); // Local File Target @@ -828,19 +831,20 @@ function onDownloadShowFolder() } catch (ex) { // if nsILocalFile::Reveal failed (eg it currently just returns an // error on unix), just open the folder in a browser window - openExternal(dir.path); + openExternal(dir); } } -function openExternal(aPath) +function openExternal(aFile) { - var uri = Components.classes["@mozilla.org/network/standard-url;1"] - .createInstance(Components.interfaces.nsIURI); - uri.spec = "file:///" + aPath; + var uri = Components.classes["@mozilla.org/network/io-service;1"] + .getService(Components.interfaces.nsIIOService) + .newFileURI(aFile); + + var protocolSvc = + Components.classes["@mozilla.org/uriloader/external-protocol-service;1"] + .getService(Components.interfaces.nsIExternalProtocolService); - var protocolSvc = Components.classes - ["@mozilla.org/uriloader/external-protocol-service;1"] - .getService(Components.interfaces.nsIExternalProtocolService); protocolSvc.loadUrl(uri); return; diff --git a/toolkit/mozapps/downloads/content/pref-downloads.js b/toolkit/mozapps/downloads/content/pref-downloads.js index e1adaa7a7ad1..97562ea4dfdd 100755 --- a/toolkit/mozapps/downloads/content/pref-downloads.js +++ b/toolkit/mozapps/downloads/content/pref-downloads.js @@ -301,9 +301,9 @@ function showFolder() // if nsILocalFile::Reveal failed (ie it currently just returns an // error on unix), send the directory to the system file: handler - var uri = Components.classes["@mozilla.org/network/standard-url;1"] - .createInstance(Components.interfaces.nsIURI); - uri.spec = "file:///" + folder.path; + var uri = Components.classes["@mozilla.org/network/io-service;1"] + .getService(Components.interfaces.nsIIOService) + .newFileURI(folder); var protocolSvc = Components.classes ["@mozilla.org/uriloader/external-protocol-service;1"] diff --git a/toolkit/mozapps/extensions/content/extensions.js b/toolkit/mozapps/extensions/content/extensions.js index f3c1ff36dcd8..7bb92cae127e 100644 --- a/toolkit/mozapps/extensions/content/extensions.js +++ b/toolkit/mozapps/extensions/content/extensions.js @@ -94,9 +94,9 @@ function openURL(aURL) { # If we're not a browser, use the external protocol service to load the URI. #ifndef MOZ_PHOENIX - var uri = Components.classes["@mozilla.org/network/standard-url;1"] - .createInstance(Components.interfaces.nsIURI); - uri.spec = aURL; + var uri = Components.classes["@mozilla.org/network/io-service;1"] + .getService(Components.interfaces.nsIIOService) + .newURI(aURL, null, null); var protocolSvc = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"] .getService(Components.interfaces.nsIExternalProtocolService); @@ -637,9 +637,11 @@ var gExtensionsDNDObserver = var data = { }, length = { }; xfer.getTransferData("text/x-moz-url", data, length); var fileURL = data.value.QueryInterface(Components.interfaces.nsISupportsString).data.split("\n")[0]; - var uri = Components.classes["@mozilla.org/network/standard-url;1"] - .createInstance(Components.interfaces.nsIURI); - uri.spec = fileURL; + + var uri = Components.classes["@mozilla.org/network/io-service;1"] + .getService(Components.interfaces.nsIIOService) + .newURI(fileURL, null, null); + var url = uri.QueryInterface(Components.interfaces.nsIURL); if (url.fileExtension == "xpi") { xpinstallObj[url.fileName] = fileURL; diff --git a/toolkit/mozapps/extensions/src/nsExtensionManager.js.in b/toolkit/mozapps/extensions/src/nsExtensionManager.js.in index d6c431baec0f..2078d86f772a 100644 --- a/toolkit/mozapps/extensions/src/nsExtensionManager.js.in +++ b/toolkit/mozapps/extensions/src/nsExtensionManager.js.in @@ -575,9 +575,9 @@ function getInstallManifest(aFile) var arcs = ds.ArcLabelsOut(manifestRoot); if (!arcs.hasMoreElements()) { ds = null; - var uri = Components.classes["@mozilla.org/network/standard-url;1"] - .createInstance(Components.interfaces.nsIURI); - uri.spec = fileURL; + var uri = Components.classes["@mozilla.org/network/io-service;1"] + .getService(Components.interfaces.nsIIOService) + .newFileURI(aFile); var url = uri.QueryInterface(Components.interfaces.nsIURL); showMalformedError(url.fileName); } @@ -1331,9 +1331,9 @@ nsThemeInstaller.prototype = { ") does not match the em:internalName arc in the theme's " + "install.rdf file (" + stringData(internalName) + ")"); var fileURL = getURLSpecFromFile(themeManifest); - var uri = Components.classes["@mozilla.org/network/standard-url;1"] - .createInstance(Components.interfaces.nsIURI); - uri.spec = fileURL; + var uri = Components.classes["@mozilla.org/network/io-service;1"] + .getService(Components.interfaces.nsIIOService) + .newFileURI(themeManifest); var url = uri.QueryInterface(Components.interfaces.nsIURL); showMalformedError(url.fileName); diff --git a/toolkit/mozapps/update/content/updates.xml b/toolkit/mozapps/update/content/updates.xml index 39a7c2899cdb..28af721a3ae3 100644 --- a/toolkit/mozapps/update/content/updates.xml +++ b/toolkit/mozapps/update/content/updates.xml @@ -280,9 +280,9 @@ # If we're not a browser, use the external protocol service to load the URI. #ifndef MOZ_PHOENIX - var uri = Components.classes["@mozilla.org/network/standard-url;1"] - .createInstance(Components.interfaces.nsIURI); - uri.spec = this.getAttribute("href"); + var uri = Components.classes["@mozilla.org/network/io-service;1"] + .getService(Components.interfaces.nsIIOService) + .newURI(this.getAttribute("href"), null, null); var protocolSvc = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"] .getService(Components.interfaces.nsIExternalProtocolService);