Fix code that incorrectly constructs URIs. Bug 278773, patch by Gavin Sharp

<gavin.sharp@gmail.com>, r=darin
This commit is contained in:
bzbarsky%mit.edu 2005-03-10 03:52:49 +00:00
Родитель e4bf4498a5
Коммит 3dfdb1e62b
5 изменённых файлов: 39 добавлений и 33 удалений

Просмотреть файл

@ -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;

Просмотреть файл

@ -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"]

Просмотреть файл

@ -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;

Просмотреть файл

@ -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);

Просмотреть файл

@ -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);