Bug 1348854 Don't show permissions prompt for legacy addons installed from search
MozReview-Commit-ID: 16eDuGvFM2Y
--- a/toolkit/mozapps/extensions/content/extensions.xml
+++ b/toolkit/mozapps/extensions/content/extensions.xml
@@ -651,16 +651,21 @@
}
delete this.mControl.mAddon;
this.mControl.mInstall = this.mInstall;
this.mControl.setAttribute("status", "installing");
let prompt = Services.prefs.getBoolPref("extensions.webextPermissionPrompts", false);
if (prompt) {
this.mInstall.promptHandler = info => new Promise((resolve, reject) => {
+ // Skip prompts for non-webextensions
+ if (!info.addon.userPermissions) {
+ resolve();
+ return;
+ }
let subject = {
wrappedJSObject: {
target: window.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDocShell).chromeEventHandler,
info: {
addon: info.addon,
source: "AMO",
icon: info.addon.iconURL,
--- a/toolkit/mozapps/extensions/test/browser/browser_eula.js
+++ b/toolkit/mozapps/extensions/test/browser/browser_eula.js
@@ -44,22 +44,21 @@ function installSearchResult(aCallback)
EventUtils.synthesizeMouseAtCenter(remote, { }, gManagerWindow);
let item = get_addon_element(gManagerWindow, "addon1@tests.mozilla.org");
ok(!!item, "Should see the search result in the list");
let status = get_node(item, "install-status");
EventUtils.synthesizeMouseAtCenter(get_node(status, "install-remote-btn"), {}, gManagerWindow);
- let promptPromise = promiseNotification();
- let installPromise = new Promise(resolve => {
- item.mInstall.addListener({onInstallEnded: resolve});
+ item.mInstall.addListener({
+ onInstallEnded() {
+ executeSoon(aCallback);
+ },
});
-
- promptPromise.then(() => installPromise).then(aCallback);
});
}
// Install an add-on through the search page, accept the EULA and then undo it
add_test(function() {
// Accept the EULA when it appears
let sawEULA = false;
wait_for_window_open(function(aWindow) {
--- a/toolkit/mozapps/extensions/test/browser/browser_install.js
+++ b/toolkit/mozapps/extensions/test/browser/browser_install.js
@@ -104,22 +104,21 @@ function installSearchResult(aCallback)
EventUtils.synthesizeMouseAtCenter(remote, { }, gManagerWindow);
let item = get_addon_element(gManagerWindow, "install1@tests.mozilla.org");
ok(!!item, "Should see the search result in the list");
let status = get_node(item, "install-status");
EventUtils.synthesizeMouseAtCenter(get_node(status, "install-remote-btn"), {}, gManagerWindow);
- let promptPromise = promiseNotification();
- let installPromise = new Promise(resolve => {
- item.mInstall.addListener({onInstallEnded: resolve});
+ item.mInstall.addListener({
+ onInstallEnded() {
+ executeSoon(aCallback);
+ },
});
-
- promptPromise.then(() => installPromise).then(aCallback);
});
}
function get_list_item_count() {
return get_test_items_in_list(gManagerWindow).length;
}
function check_undo_install() {
--- a/toolkit/mozapps/extensions/test/browser/browser_searching.js
+++ b/toolkit/mozapps/extensions/test/browser/browser_searching.js
@@ -547,18 +547,16 @@ add_test(function() {
search(QUERY, false, function() {
var list = gManagerWindow.document.getElementById("search-list");
var remoteItem = get_addon_item(REMOTE_TO_INSTALL);
list.ensureElementIsVisible(remoteItem);
installBtn = get_install_button(remoteItem);
is(installBtn.hidden, false, "Install button should be showing before install");
remoteItem.mAddon.install.addListener(listener);
- // If prompts are enabled, accept the install prompt.
- promiseNotification();
EventUtils.synthesizeMouseAtCenter(installBtn, { }, gManagerWindow);
});
});
// Tests that re-searching for query results in correct results
add_test(function() {
// Select a different category
gCategoryUtilities.openType("extension", function() {