Bug 1252181 - switch browser_ext_runtime_setUninstallURL.js to temporary add-on install r?mossop
MozReview-Commit-ID: JjjR76gkI3M
--- a/browser/components/extensions/test/browser/browser_ext_runtime_setUninstallURL.js
+++ b/browser/components/extensions/test/browser/browser_ext_runtime_setUninstallURL.js
@@ -1,39 +1,27 @@
"use strict";
let {AddonManager} = Components.utils.import("resource://gre/modules/AddonManager.jsm", {});
let {Extension} = Components.utils.import("resource://gre/modules/Extension.jsm", {});
-function install(url) {
- return new Promise((resolve, reject) => {
- AddonManager.getInstallForURL(url, (install) => {
- install.addListener({
- onInstallEnded: (i, addon) => resolve(addon),
- onInstallFailed: () => reject(),
- });
- install.install();
- }, "application/x-xpinstall");
- });
-}
-
function* makeAndInstallXPI(id, backgroundScript, loadedURL) {
let xpi = Extension.generateXPI(id, {
background: "(" + backgroundScript.toString() + ")()",
});
SimpleTest.registerCleanupFunction(function cleanupXPI() {
Services.obs.notifyObservers(xpi, "flush-cache-entry", null);
xpi.remove(false);
});
let loadPromise = BrowserTestUtils.waitForNewTab(gBrowser, loadedURL);
- let fileURI = Services.io.newFileURI(xpi);
- info(`installing ${fileURI.spec}`);
- let addon = yield install(fileURI.spec);
+
+ info(`installing ${xpi.path}`);
+ let addon = yield AddonManager.installTemporaryAddon(xpi);
info("installed");
// A WebExtension is started asynchronously, we have our test extension
// open a new tab to signal that the background script has executed.
let loadTab = yield loadPromise;
yield BrowserTestUtils.removeTab(loadTab);
return addon;
--- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm
+++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
@@ -3871,16 +3871,18 @@ this.XPIProvider = {
false);
XPIProvider.callBootstrapMethod(addon, file, "startup",
BOOTSTRAP_REASONS.ADDON_ENABLE);
AddonManagerPrivate.callInstallListeners("onExternalInstall",
null, addon.wrapper,
oldAddon ? oldAddon.wrapper : null,
false);
AddonManagerPrivate.callAddonListeners("onInstalled", addon.wrapper);
+
+ return addon.wrapper;
}),
/**
* Returns an Addon corresponding to an instance ID.
* @param aInstanceID
* An Addon Instance ID
* @return {Promise}
* @resolves The found Addon or null if no such add-on exists.