Bug 1348854 Don't show permissions prompt for legacy addons installed from search draft
authorAndrew Swan <aswan@mozilla.com>
Wed, 29 Mar 2017 10:17:14 -0700
changeset 553381 a136ca6d6f2e8affbf75fe033aae7eec537d0756
parent 551789 9577ddeaafd85554c2a855f385a87472a089d5c0
child 622053 c4bcdb561163bec5a82d3965f5cf36cee5a9631d
push id51622
push useraswan@mozilla.com
push dateWed, 29 Mar 2017 23:37:52 +0000
bugs1348854
milestone55.0a1
Bug 1348854 Don't show permissions prompt for legacy addons installed from search MozReview-Commit-ID: 16eDuGvFM2Y
toolkit/mozapps/extensions/content/extensions.xml
toolkit/mozapps/extensions/test/browser/browser_eula.js
toolkit/mozapps/extensions/test/browser/browser_install.js
toolkit/mozapps/extensions/test/browser/browser_searching.js
--- 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() {