зеркало из https://github.com/mozilla/gecko-dev.git
Fix code that incorrectly constructs URIs. Bug 278773, patch by Gavin Sharp
<gavin.sharp@gmail.com>, r=darin
This commit is contained in:
Родитель
e4bf4498a5
Коммит
3dfdb1e62b
|
@ -293,7 +293,7 @@ function onDownloadShow(aEvent)
|
|||
// 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 {
|
||||
|
@ -562,16 +562,19 @@ var XPInstallDownloadManager = {
|
|||
|
||||
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++);
|
||||
|
||||
|
@ -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"]
|
||||
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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче