Bug 1374637 Don't show the Legacy Extensions pane in about:addons if it is empty
MozReview-Commit-ID: LK3LezKArYm
--- a/toolkit/mozapps/extensions/content/extensions.js
+++ b/toolkit/mozapps/extensions/content/extensions.js
@@ -266,16 +266,20 @@ function isLegacyExtension(addon) {
// Exceptions that can slip through above: the default theme plus
// test pilot addons until we get SIGNEDSTATE_PRIVILEGED deployed.
if (legacy && legacyWarningExceptions.includes(addon.id)) {
legacy = false;
}
return legacy;
}
+function isDisabledLegacy(addon) {
+ return !legacyExtensionsEnabled && isLegacyExtension(addon);
+}
+
function isDiscoverEnabled() {
if (Services.prefs.getPrefType(PREF_DISCOVERURL) == Services.prefs.PREF_INVALID)
return false;
try {
if (!Services.prefs.getBoolPref(PREF_DISCOVER_ENABLED))
return false;
} catch (e) {}
@@ -2778,22 +2782,27 @@ var gLegacyView = {
document.getElementById("legacy-learnmore").href = SUPPORT_URL + "webextensions";
this.refresh();
},
async show(type, request) {
let addons = await AddonManager.getAddonsByTypes(["extension"]);
addons = addons.filter(a => !a.hidden &&
- (isLegacyExtension(a) || isDisabledUnsigned(a)));
+ (isDisabledLegacy(a) || isDisabledUnsigned(a)));
while (this._listBox.itemCount > 0)
this._listBox.removeItemAt(0);
let elements = addons.map(a => createItem(a));
+ if (elements.length == 0) {
+ gViewController.loadView("addons://list/extension");
+ return;
+ }
+
sortElements(elements, ["uiState", "name"], true);
for (let element of elements) {
this._listBox.appendChild(element);
}
gViewController.notifyViewChanged();
},
--- a/toolkit/mozapps/extensions/test/browser/browser_legacy.js
+++ b/toolkit/mozapps/extensions/test/browser/browser_legacy.js
@@ -12,17 +12,17 @@ add_task(async function() {
"worker-test@mozilla.org",
"mozscreenshots@mozilla.org",
"indexedDB-test@mozilla.org",
];
let exceptions = Services.prefs.getCharPref("extensions.legacy.exceptions");
exceptions = [ exceptions, ...IGNORE ].join(",");
- SpecialPowers.pushPrefEnv({
+ await SpecialPowers.pushPrefEnv({
set: [
["extensions.legacy.enabled", false],
["extensions.legacy.exceptions", exceptions],
["xpinstall.signatures.required", false],
],
});
@@ -202,9 +202,24 @@ add_task(async function() {
// And it should not be present in the legacy pane
await catUtils.openType("legacy");
checkList("legacy-list", [
"legacy@tests.mozilla.org",
"unsigned_legacy@tests.mozilla.org",
]);
await close_manager(mgrWin);
+
+ // Now enable legacy extensions and open a new addons manager tab.
+ // The remembered last view will be the list of legacy extensions but
+ // now that legacy extensions are enabled, we should jump to the
+ // regular Extensions list.
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["extensions.legacy.enabled", true],
+ ],
+ });
+
+ mgrWin = await open_manager(null);
+ is(mgrWin.gViewController.currentViewId, "addons://list/extension",
+ "addons manager switched to extensions list");
+ await close_manager(mgrWin);
});