Bug 1263935 - Forward AddonManager.mapURIToAddonId to AddonPathService.mapURIToAddonId

Issue #102
This commit is contained in:
janekptacijarabaci 2018-04-28 12:47:07 +02:00 committed by Roy Tam
commit 9ff88cf7df
2 changed files with 10 additions and 13 deletions

View file

@ -52,6 +52,10 @@ XPCOMUtils.defineLazyServiceGetter(this,
"ResProtocolHandler",
"@mozilla.org/network/protocol;1?name=resource",
"nsIResProtocolHandler");
XPCOMUtils.defineLazyServiceGetter(this,
"AddonPathService",
"@mozilla.org/addon-path-service;1",
"amIAddonPathService");
const nsIFile = Components.Constructor("@mozilla.org/file/local;1", "nsIFile",
"initWithPath");
@ -1887,8 +1891,7 @@ this.XPIProvider = {
logger.info("Mapping " + aID + " to " + aFile.path);
this._addonFileMap.set(aID, aFile.path);
let service = Cc["@mozilla.org/addon-path-service;1"].getService(Ci.amIAddonPathService);
service.insertPath(aFile.path, aID);
AddonPathService.insertPath(aFile.path, aID);
},
/**
@ -3916,16 +3919,8 @@ this.XPIProvider = {
* @see amIAddonManager.mapURIToAddonID
*/
mapURIToAddonID: function XPI_mapURIToAddonID(aURI) {
let resolved = this._resolveURIToFile(aURI);
if (!resolved || !(resolved instanceof Ci.nsIFileURL))
return null;
for (let [id, path] of this._addonFileMap) {
if (resolved.file.path.startsWith(path))
return id;
}
return null;
// Returns `null` instead of empty string if the URI can't be mapped.
return AddonPathService.mapURIToAddonId(aURI) || null;
},
/**

View file

@ -95,8 +95,10 @@ function run_test_early() {
"resource://gre/modules/addons/XPIProvider.jsm", {});
// Make the early API call.
do_check_null(s.XPIProvider.mapURIToAddonID(uri));
// AddonManager still misses its provider and so doesn't work yet.
do_check_null(AddonManager.mapURIToAddonID(uri));
// But calling XPIProvider directly works immediately
do_check_eq(s.XPIProvider.mapURIToAddonID(uri), id);
// Actually start up the manager.
startupManager(false);