Bug 1236578: Don't display hidden add-ons in the select your add-ons UI. r?rhelmer draft
authorDave Townsend <dtownsend@oxymoronical.com>
Tue, 16 Feb 2016 10:43:59 -0800
changeset 331272 20efa7d2be5fc4edfa1d26e4a4e5567556974c48
parent 329319 cf28fdb569be1a99872efa20797cef1cbddc1185
child 514352 485c4b620263727e5340b9b1380d4b7dcce21a7e
push id10953
push userdtownsend@mozilla.com
push dateTue, 16 Feb 2016 18:44:05 +0000
reviewersrhelmer
bugs1236578
milestone47.0a1
Bug 1236578: Don't display hidden add-ons in the select your add-ons UI. r?rhelmer MozReview-Commit-ID: 2N5Y6qCyY05
toolkit/mozapps/extensions/content/selectAddons.js
toolkit/mozapps/extensions/test/browser/browser_select_confirm.js
--- a/toolkit/mozapps/extensions/content/selectAddons.js
+++ b/toolkit/mozapps/extensions/content/selectAddons.js
@@ -62,40 +62,46 @@ var gChecking = {
   _addonCount: 0,
   _completeCount: 0,
 
   show: function() {
     showButtons(true, false, false, false);
     this._progress = document.getElementById("checking-progress");
 
     AddonManager.getAllAddons(aAddons => {
-      if (aAddons.length == 0) {
-        window.close();
-        return;
-      }
+      aAddons = aAddons.filter(function(aAddon) {
+        if (aAddon.hidden) {
+          return false;
+        }
 
-      aAddons = aAddons.filter(function(aAddon) {
         if (aAddon.id == AddonManager.hotfixID) {
           return false;
         }
-        if (aAddon.type == "plugin" || aAddon.type == "service")
+
+        if (aAddon.type == "plugin" || aAddon.type == "service") {
           return false;
+        }
 
         if (aAddon.type == "theme") {
           // Don't show application shipped themes
           if (aAddon.scope == AddonManager.SCOPE_APPLICATION)
             return false;
           // Don't show already disabled themes
           if (aAddon.userDisabled)
             return false;
         }
 
         return true;
       });
 
+      if (aAddons.length == 0) {
+        window.close();
+        return;
+      }
+
       this._addonCount = aAddons.length;
       this._progress.value = 0;
       this._progress.max = aAddons.length;
       this._progress.mode = "determined";
 
       AddonRepository.repopulateCache().then(() => {
         for (let addonItem of aAddons) {
           // Ignore disabled themes
--- a/toolkit/mozapps/extensions/test/browser/browser_select_confirm.js
+++ b/toolkit/mozapps/extensions/test/browser/browser_select_confirm.js
@@ -34,23 +34,24 @@ function waitForView(aView, aCallback) {
  *         True if the test add-ons should claim to have an update available
  */
 function setupUI(aAppDisabled, aUpdateAvailable, aCallback) {
   if (gProvider)
     gProvider.unregister();
 
   gProvider = new MockProvider();
 
-  for (var i = 1; i < 5; i++) {
+  for (var i = 1; i < 6; i++) {
     var addon = new MockAddon("test" + i + "@tests.mozilla.org",
                               "Test Add-on " + i, "extension");
     addon.version = "1.0";
     addon.userDisabled = (i > 2);
     addon.appDisabled = aAppDisabled;
     addon.isActive = !addon.userDisabled && !addon.appDisabled;
+    addon.hidden = i == 5;
 
     addon.findUpdates = function(aListener, aReason, aAppVersion, aPlatformVersion) {
       if (aUpdateAvailable) {
         var newAddon = new MockAddon(this.id, this.name, "extension");
         newAddon.version = "2.0";
         var install = new MockInstall(this.name, this.type, newAddon);
         install.existingAddon = this;
         aListener.onUpdateAvailable(this, install);