From 09093658fff9d45f6a984d2033c090d164294f88 Mon Sep 17 00:00:00 2001 From: William Durand Date: Thu, 19 Jan 2023 10:59:25 +0000 Subject: [PATCH] Bug 1799009 - Remove unified extensions pref and non-unified extensions variants from test suite. r=rpl,mconley,fluent-reviewers,desktop-theme-reviewers,Itiel This patch removes the use of the "unified extensions" pref and adjust the existing tests. More clean-ups will be done in follow-ups, e.g. the removal of `gUnifiedExtensions.isEnabled` and some test-only changes to no longer create a new window in each test file. Differential Revision: https://phabricator.services.mozilla.com/D166908 --- browser/app/profile/firefox.js | 3 - browser/base/content/browser-addons.js | 5 +- .../test/keyboard/browser_toolbarKeyNav.js | 21 +- .../customizableui/CustomizableUI.jsm | 101 +++----- .../customizableui/CustomizableWidgets.jsm | 13 -- .../customizableui/test/browser.ini | 1 - .../test/browser_947914_button_addons.js | 64 ------ .../test/browser_hidden_widget_overflow.js | 4 - .../unit/test_unified_extensions_migration.js | 26 --- browser/components/extensions/moz.build | 1 - .../extensions/parent/ext-browserAction.js | 216 +++++++----------- .../browser/browser-no-unified-extensions.ini | 6 - .../browser/browser_ext_browserAction_area.js | 7 +- .../browser_ext_browserAction_contextMenu.js | 16 -- ...owser_ext_browserAction_pageAction_icon.js | 79 ++----- .../browser/browser_unified_extensions.js | 18 -- .../browser/browser_unified_extensions_cui.js | 20 -- .../browser_unified_extensions_disabled.js | 21 -- .../browser_unified_extensions_doorhangers.js | 9 - ...unified_extensions_overflowable_toolbar.js | 42 ---- .../test/browser/head_unified_extensions.js | 13 -- .../browser_UITour_panel_close_annotation.js | 35 --- browser/locales/en-US/browser/browser.ftl | 6 - browser/themes/shared/toolbarbutton-icons.css | 4 - modules/libpref/init/all.js | 3 - .../extensions/ExtensionActions.jsm | 10 +- .../xpinstall/browser_doorhanger_installs.js | 17 +- 27 files changed, 150 insertions(+), 611 deletions(-) delete mode 100644 browser/components/customizableui/test/browser_947914_button_addons.js delete mode 100644 browser/components/extensions/test/browser/browser-no-unified-extensions.ini delete mode 100644 browser/components/extensions/test/browser/browser_unified_extensions_disabled.js diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js index ef0ebe22cf69..88c5010e8de0 100644 --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -73,9 +73,6 @@ pref("xpinstall.signatures.devInfoURL", "https://wiki.mozilla.org/Addons/Extensi // Enable extensionStorage storage actor by default pref("devtools.storage.extensionStorage.enabled", true); -// Enable the unified extensions UI by default. -pref("extensions.unifiedExtensions.enabled", true); - // Dictionary download preference pref("browser.dictionaries.download.url", "https://addons.mozilla.org/%LOCALE%/firefox/language-tools/"); diff --git a/browser/base/content/browser-addons.js b/browser/base/content/browser-addons.js index f37428aa5ccb..da67c847172f 100644 --- a/browser/base/content/browser-addons.js +++ b/browser/base/content/browser-addons.js @@ -1279,10 +1279,7 @@ var gUnifiedExtensions = { }, get isEnabled() { - return Services.prefs.getBoolPref( - "extensions.unifiedExtensions.enabled", - false - ); + return true; }, onLocationChange(browser, webProgress, _request, _uri, flags) { diff --git a/browser/base/content/test/keyboard/browser_toolbarKeyNav.js b/browser/base/content/test/keyboard/browser_toolbarKeyNav.js index 6220d46d6178..6a342a7638c2 100644 --- a/browser/base/content/test/keyboard/browser_toolbarKeyNav.js +++ b/browser/base/content/test/keyboard/browser_toolbarKeyNav.js @@ -98,11 +98,6 @@ function removeFirefoxViewButton() { const BOOKMARKS_COUNT = 100; -const hasUnifiedExtensionsButton = Services.prefs.getBoolPref( - "extensions.unifiedExtensions.enabled", - false -); - add_setup(async function() { await SpecialPowers.pushPrefEnv({ set: [ @@ -264,9 +259,7 @@ add_task(async function testArrowsToolbarbuttons() { await expectFocusAfterKey("ArrowRight", "fxa-toolbar-menu-button"); // These next checks also confirm that the overflow menu button is skipped, // since it is currently invisible. - if (hasUnifiedExtensionsButton) { - await expectFocusAfterKey("ArrowRight", "unified-extensions-button"); - } + await expectFocusAfterKey("ArrowRight", "unified-extensions-button"); await expectFocusAfterKey("ArrowRight", "PanelUI-menu-button"); EventUtils.synthesizeKey("KEY_ArrowRight"); is( @@ -274,9 +267,7 @@ add_task(async function testArrowsToolbarbuttons() { "PanelUI-menu-button", "ArrowRight at end of button group does nothing" ); - if (hasUnifiedExtensionsButton) { - await expectFocusAfterKey("ArrowLeft", "unified-extensions-button"); - } + await expectFocusAfterKey("ArrowLeft", "unified-extensions-button"); await expectFocusAfterKey("ArrowLeft", "fxa-toolbar-menu-button"); await expectFocusAfterKey("ArrowLeft", "sidebar-button"); await expectFocusAfterKey("ArrowLeft", "library-button"); @@ -344,15 +335,11 @@ add_task(async function testArrowsOverflowButton() { await expectFocusAfterKey("ArrowRight", "sidebar-button"); await expectFocusAfterKey("ArrowRight", "fxa-toolbar-menu-button"); await expectFocusAfterKey("ArrowRight", "nav-bar-overflow-button"); - if (hasUnifiedExtensionsButton) { - await expectFocusAfterKey("ArrowRight", "unified-extensions-button"); - } + await expectFocusAfterKey("ArrowRight", "unified-extensions-button"); // Make sure the button is not reachable once it is invisible again. await expectFocusAfterKey("ArrowRight", "PanelUI-menu-button"); resetToolbarWithoutDevEditionButtons(); - if (hasUnifiedExtensionsButton) { - await expectFocusAfterKey("ArrowLeft", "unified-extensions-button"); - } + await expectFocusAfterKey("ArrowLeft", "unified-extensions-button"); // Flush layout so its invisibility can be detected. document.getElementById("nav-bar-overflow-button").clientWidth; await expectFocusAfterKey("ArrowLeft", "fxa-toolbar-menu-button"); diff --git a/browser/components/customizableui/CustomizableUI.jsm b/browser/components/customizableui/CustomizableUI.jsm index d43758e27586..c0d569b7a72d 100644 --- a/browser/components/customizableui/CustomizableUI.jsm +++ b/browser/components/customizableui/CustomizableUI.jsm @@ -50,7 +50,6 @@ const kPrefProtonToolbarVersion = "browser.proton.toolbar.version"; const kPrefHomeButtonUsed = "browser.engagement.home-button.has-used"; const kPrefLibraryButtonUsed = "browser.engagement.library-button.has-used"; const kPrefSidebarButtonUsed = "browser.engagement.sidebar-button.has-used"; -const kPrefUnifiedExtensionsEnabled = "extensions.unifiedExtensions.enabled"; const kExpectedWindowURL = AppConstants.BROWSER_CHROME_URL; @@ -196,13 +195,6 @@ XPCOMUtils.defineLazyPreferenceGetter( } ); -XPCOMUtils.defineLazyPreferenceGetter( - lazy, - "gUnifiedExtensionsEnabled", - kPrefUnifiedExtensionsEnabled, - false -); - XPCOMUtils.defineLazyGetter(lazy, "log", () => { let { ConsoleAPI } = ChromeUtils.importESModule( "resource://gre/modules/Console.sys.mjs" @@ -444,6 +436,7 @@ var CustomizableUIInternal = { "fullscreen-button", "find-button", "preferences-button", + // This widget no longer exists as of 2023, see Bug 1799009. "add-ons-button", "sync-button", ]; @@ -707,47 +700,34 @@ var CustomizableUIInternal = { let addonsPlacements = gSavedState.placements[CustomizableUI.AREA_ADDONS] || []; - if (lazy.gUnifiedExtensionsEnabled) { - // Migration algorithm for transitioning to Unified Extensions: - // - // 1. Create two arrays, one for extension widgets, one for built-in widgets. - // 2. Iterate all items in the overflow panel, and push them into the - // appropriate array based on whether or not its an extension widget. - // 3. Overwrite the overflow panel placements with the built-in widgets array. - // 4. Prepend the extension widgets to the addonsPlacements array. Note that this - // does not overwrite this array as a precaution because it's possible - // (though pretty unlikely) that some widgets are already there. - // - // For extension widgets that were in the palette, they will be appended to the - // addons area when they're created within createWidget. - let extWidgets = []; - let builtInWidgets = []; - for (let widgetId of overflowPlacements) { - if (CustomizableUI.isWebExtensionWidget(widgetId)) { - extWidgets.push(widgetId); - } else { - builtInWidgets.push(widgetId); - } + // Migration algorithm for transitioning to Unified Extensions: + // + // 1. Create two arrays, one for extension widgets, one for built-in widgets. + // 2. Iterate all items in the overflow panel, and push them into the + // appropriate array based on whether or not its an extension widget. + // 3. Overwrite the overflow panel placements with the built-in widgets array. + // 4. Prepend the extension widgets to the addonsPlacements array. Note that this + // does not overwrite this array as a precaution because it's possible + // (though pretty unlikely) that some widgets are already there. + // + // For extension widgets that were in the palette, they will be appended to the + // addons area when they're created within createWidget. + let extWidgets = []; + let builtInWidgets = []; + for (let widgetId of overflowPlacements) { + if (CustomizableUI.isWebExtensionWidget(widgetId)) { + extWidgets.push(widgetId); + } else { + builtInWidgets.push(widgetId); } - gSavedState.placements[ - CustomizableUI.AREA_FIXED_OVERFLOW_PANEL - ] = builtInWidgets; - gSavedState.placements[CustomizableUI.AREA_ADDONS] = [ - ...extWidgets, - ...addonsPlacements, - ]; - } else { - // This is an emergency backstop in case things go sideways and we need to - // temporarily flip back the Unified Extensions pref if it had already been - // enabled. We will do simplest thing and just empty the AREA_ADDONS placements, - // and append them to the bottom of the overflow panel, and then blow away - // the AREA_ADDONS placements. - gSavedState.placements[CustomizableUI.AREA_FIXED_OVERFLOW_PANEL] = [ - ...overflowPlacements, - ...addonsPlacements, - ]; - delete gSavedState.placements[CustomizableUI.AREA_ADDONS]; } + gSavedState.placements[ + CustomizableUI.AREA_FIXED_OVERFLOW_PANEL + ] = builtInWidgets; + gSavedState.placements[CustomizableUI.AREA_ADDONS] = [ + ...extWidgets, + ...addonsPlacements, + ]; }, /** @@ -1293,7 +1273,6 @@ var CustomizableUIInternal = { let contextMenuForPlace; if ( - lazy.gUnifiedExtensionsEnabled && CustomizableUI.isWebExtensionWidget(aNode.id) && (aAreaNode?.id == CustomizableUI.AREA_ADDONS || aNode.getAttribute("overflowedItem") == "true") @@ -2920,7 +2899,6 @@ var CustomizableUIInternal = { // at this point, we haven't found an area for them, move them into // AREA_ADDONS. if ( - lazy.gUnifiedExtensionsEnabled && !widget.currentArea && CustomizableUI.isWebExtensionWidget(widget.id) ) { @@ -3327,14 +3305,12 @@ var CustomizableUIInternal = { // doesn't get set, so we do that manually here. gPlacements.set(CustomizableUI.AREA_ADDONS, []); - if (lazy.gUnifiedExtensionsEnabled) { - for (let [widgetId] of gPalette) { - if ( - CustomizableUI.isWebExtensionWidget(widgetId) && - !oldAddonPlacements.includes(widgetId) - ) { - this.addWidgetToArea(widgetId, CustomizableUI.AREA_ADDONS); - } + for (let [widgetId] of gPalette) { + if ( + CustomizableUI.isWebExtensionWidget(widgetId) && + !oldAddonPlacements.includes(widgetId) + ) { + this.addWidgetToArea(widgetId, CustomizableUI.AREA_ADDONS); } } }, @@ -3500,10 +3476,7 @@ var CustomizableUIInternal = { return false; } - if ( - lazy.gUnifiedExtensionsEnabled && - CustomizableUI.isWebExtensionWidget(aWidgetId) - ) { + if (CustomizableUI.isWebExtensionWidget(aWidgetId)) { // Extension widgets cannot move to the customization palette. if (aArea == CustomizableUI.AREA_NO_AREA) { return false; @@ -5697,11 +5670,7 @@ class OverflowableToolbar { this.#target ); - if ( - lazy.gUnifiedExtensionsEnabled && - webExtList && - CustomizableUI.isWebExtensionWidget(child.id) - ) { + if (webExtList && CustomizableUI.isWebExtensionWidget(child.id)) { child.setAttribute("cui-anchorid", webExtButtonID); webExtList.insertBefore(child, webExtList.firstElementChild); } else { diff --git a/browser/components/customizableui/CustomizableWidgets.jsm b/browser/components/customizableui/CustomizableWidgets.jsm index 0cb23f3a2f27..a3732562269f 100644 --- a/browser/components/customizableui/CustomizableWidgets.jsm +++ b/browser/components/customizableui/CustomizableWidgets.jsm @@ -625,16 +625,3 @@ if (PrivateBrowsingUtils.enabled) { }, }); } - -// If the pref is set to `true`, we don't register this widget. -if (!Services.prefs.getBoolPref("extensions.unifiedExtensions.enabled")) { - CustomizableWidgets.push({ - id: "add-ons-button", - shortcutId: "key_openAddons", - l10nId: "toolbar-addons-themes-button", - onCommand(aEvent) { - let win = aEvent.target.ownerGlobal; - win.BrowserOpenAddonsMgr(); - }, - }); -} diff --git a/browser/components/customizableui/test/browser.ini b/browser/components/customizableui/test/browser.ini index 1c1d856e7af6..f73d8f954892 100644 --- a/browser/components/customizableui/test/browser.ini +++ b/browser/components/customizableui/test/browser.ini @@ -53,7 +53,6 @@ skip-if = verify [browser_942581_unregisterArea_keeps_placements.js] [browser_944887_destroyWidget_should_destroy_in_palette.js] [browser_945739_showInPrivateBrowsing_customize_mode.js] -[browser_947914_button_addons.js] [browser_947914_button_copy.js] [browser_947914_button_cut.js] [browser_947914_button_find.js] diff --git a/browser/components/customizableui/test/browser_947914_button_addons.js b/browser/components/customizableui/test/browser_947914_button_addons.js deleted file mode 100644 index 7985098c0215..000000000000 --- a/browser/components/customizableui/test/browser_947914_button_addons.js +++ /dev/null @@ -1,64 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -var initialLocation = gBrowser.currentURI.spec; - -add_task(async function() { - if ( - Services.prefs.getBoolPref("extensions.unifiedExtensions.enabled", false) - ) { - // When this pref is enabled, the "Add-ons and themes" button no longer - // exists so we cannot test it... In the future, we'll want to remove this - // test entirely since it won't be relevant when the unified extensions UI - // will be enabled on all channels. - ok(true, "Skip task because unifiedExtensions pref is enabled"); - return; - } - - CustomizableUI.addWidgetToArea( - "add-ons-button", - CustomizableUI.AREA_FIXED_OVERFLOW_PANEL - ); - info("Check addons button existence and functionality"); - - await waitForOverflowButtonShown(); - - await document.getElementById("nav-bar").overflowable.show(); - info("Menu panel was opened"); - - let addonsButton = document.getElementById("add-ons-button"); - ok(addonsButton, "Add-ons button exists in Panel Menu"); - addonsButton.click(); - - await Promise.all([ - TestUtils.waitForCondition( - () => gBrowser.currentURI && gBrowser.currentURI.spec == "about:addons" - ), - new Promise(r => - gBrowser.selectedBrowser.addEventListener("load", r, true) - ), - ]); - - let addonsPage = gBrowser.selectedBrowser.contentWindow.document.querySelector( - "title[data-l10n-id='addons-page-title']" - ); - ok(addonsPage, "Add-ons page was opened"); -}); - -add_task(async function asyncCleanup() { - if ( - Services.prefs.getBoolPref("extensions.unifiedExtensions.enabled", false) - ) { - // The comment in the task above also applies here. - ok(true, "Skip task because unifiedExtensions pref is enabled"); - return; - } - - CustomizableUI.reset(); - BrowserTestUtils.addTab(gBrowser, initialLocation); - gBrowser.removeTab(gBrowser.selectedTab); - info("Tabs were restored"); -}); diff --git a/browser/components/customizableui/test/browser_hidden_widget_overflow.js b/browser/components/customizableui/test/browser_hidden_widget_overflow.js index c4adced590be..665a8fa74b88 100644 --- a/browser/components/customizableui/test/browser_hidden_widget_overflow.js +++ b/browser/components/customizableui/test/browser_hidden_widget_overflow.js @@ -15,10 +15,6 @@ const kWebExtensionButtonID2 = "fake-webextension-button-2"; let gWin = null; add_setup(async function() { - await SpecialPowers.pushPrefEnv({ - set: [["extensions.unifiedExtensions.enabled", true]], - }); - gWin = await BrowserTestUtils.openNewBrowserWindow(); // To make it easier to write a test where we can control overflowing diff --git a/browser/components/customizableui/test/unit/test_unified_extensions_migration.js b/browser/components/customizableui/test/unit/test_unified_extensions_migration.js index b65f6349998c..b7ae38c0a152 100644 --- a/browser/components/customizableui/test/unit/test_unified_extensions_migration.js +++ b/browser/components/customizableui/test/unit/test_unified_extensions_migration.js @@ -49,16 +49,6 @@ function loadState() { * forward migration. */ function migrateForward() { - Services.prefs.setBoolPref("extensions.unifiedExtensions.enabled", true); - CustomizableUIInternal._updateForUnifiedExtensions(); -} - -/** - * Disables the Unified Extensions UI pref and calls the function to perform - * backward migration. - */ -function migrateBackward() { - Services.prefs.setBoolPref("extensions.unifiedExtensions.enabled", false); CustomizableUIInternal._updateForUnifiedExtensions(); } @@ -417,14 +407,6 @@ add_task(async function test_migrating_back_with_items() { delete EXPECTED_STATE.placements[CustomizableUI.AREA_ADDONS]; saveState(SAVED_STATE); - - migrateBackward(); - - Assert.deepEqual( - loadState(), - EXPECTED_STATE, - "Migrating backward should append the addons items to the overflow panel." - ); }); /** @@ -464,12 +446,4 @@ add_task(async function test_migrating_back_with_no_items() { delete EXPECTED_STATE.placements[CustomizableUI.AREA_ADDONS]; saveState(SAVED_STATE); - - migrateBackward(); - - Assert.deepEqual( - loadState(), - EXPECTED_STATE, - "Migrating backward should append the addons items to the overflow panel." - ); }); diff --git a/browser/components/extensions/moz.build b/browser/components/extensions/moz.build index 7067d0664075..6fc3e9b28c60 100644 --- a/browser/components/extensions/moz.build +++ b/browser/components/extensions/moz.build @@ -26,7 +26,6 @@ TESTING_JS_MODULES += [ DIRS += ["schemas"] BROWSER_CHROME_MANIFESTS += [ - "test/browser/browser-no-unified-extensions.ini", "test/browser/browser-private.ini", "test/browser/browser.ini", ] diff --git a/browser/components/extensions/parent/ext-browserAction.js b/browser/components/extensions/parent/ext-browserAction.js index f119f83e17b4..074ed0ab9660 100644 --- a/browser/components/extensions/parent/ext-browserAction.js +++ b/browser/components/extensions/parent/ext-browserAction.js @@ -53,24 +53,14 @@ const POPUP_PRELOAD_TIMEOUT_MS = 200; const browserActionMap = new WeakMap(); XPCOMUtils.defineLazyGetter(this, "browserAreas", () => { - let panelArea = gUnifiedExtensionsEnabled - ? CustomizableUI.AREA_ADDONS - : CustomizableUI.AREA_FIXED_OVERFLOW_PANEL; return { navbar: CustomizableUI.AREA_NAVBAR, - menupanel: panelArea, + menupanel: CustomizableUI.AREA_ADDONS, tabstrip: CustomizableUI.AREA_TABSTRIP, personaltoolbar: CustomizableUI.AREA_BOOKMARKS, }; }); -XPCOMUtils.defineLazyPreferenceGetter( - this, - "gUnifiedExtensionsEnabled", - "extensions.unifiedExtensions.enabled", - false -); - function actionWidgetId(widgetId) { return `${widgetId}-browser-action`; } @@ -235,49 +225,47 @@ this.browserAction = class extends ExtensionAPIPersistent { "subviewbutton" ); - if (gUnifiedExtensionsEnabled) { - let contents = document.createXULElement("vbox"); - contents.classList.add("unified-extensions-item-contents"); - contents.setAttribute("move-after-stack", "true"); + let contents = document.createXULElement("vbox"); + contents.classList.add("unified-extensions-item-contents"); + contents.setAttribute("move-after-stack", "true"); - let name = document.createXULElement("label"); - name.classList.add("unified-extensions-item-name"); - contents.appendChild(name); + let name = document.createXULElement("label"); + name.classList.add("unified-extensions-item-name"); + contents.appendChild(name); - // This deck (and its labels) should be kept in sync with - // `browser/base/content/unified-extensions-viewcache.inc.xhtml`. - let deck = document.createXULElement("deck"); - deck.classList.add("unified-extensions-item-message-deck"); + // This deck (and its labels) should be kept in sync with + // `browser/base/content/unified-extensions-viewcache.inc.xhtml`. + let deck = document.createXULElement("deck"); + deck.classList.add("unified-extensions-item-message-deck"); - let messageDefault = document.createXULElement("label"); - messageDefault.classList.add( - "unified-extensions-item-message", - "unified-extensions-item-message-default" - ); - deck.appendChild(messageDefault); + let messageDefault = document.createXULElement("label"); + messageDefault.classList.add( + "unified-extensions-item-message", + "unified-extensions-item-message-default" + ); + deck.appendChild(messageDefault); - let messageHover = document.createXULElement("label"); - messageHover.classList.add( - "unified-extensions-item-message", - "unified-extensions-item-message-hover" - ); - deck.appendChild(messageHover); + let messageHover = document.createXULElement("label"); + messageHover.classList.add( + "unified-extensions-item-message", + "unified-extensions-item-message-hover" + ); + deck.appendChild(messageHover); - let messageHoverForMenuButton = document.createXULElement("label"); - messageHoverForMenuButton.classList.add( - "unified-extensions-item-message", - "unified-extensions-item-message-hover-menu-button" - ); - messageHoverForMenuButton.setAttribute( - "data-l10n-id", - "unified-extensions-item-message-manage" - ); - deck.appendChild(messageHoverForMenuButton); + let messageHoverForMenuButton = document.createXULElement("label"); + messageHoverForMenuButton.classList.add( + "unified-extensions-item-message", + "unified-extensions-item-message-hover-menu-button" + ); + messageHoverForMenuButton.setAttribute( + "data-l10n-id", + "unified-extensions-item-message-manage" + ); + deck.appendChild(messageHoverForMenuButton); - contents.appendChild(deck); + contents.appendChild(deck); - button.appendChild(contents); - } + button.appendChild(contents); let menuButton = document.createXULElement("toolbarbutton"); menuButton.classList.add( @@ -286,24 +274,19 @@ this.browserAction = class extends ExtensionAPIPersistent { "subviewbutton-iconic" ); - if (gUnifiedExtensionsEnabled) { - menuButton.setAttribute( - "data-l10n-id", - "unified-extensions-item-open-menu" - ); - // Allow the users to quickly move between extension items using - // the arrow keys, see: `PanelMultiView._isNavigableWithTabOnly()`. - menuButton.setAttribute("data-navigable-with-tab-only", true); - } + menuButton.setAttribute( + "data-l10n-id", + "unified-extensions-item-open-menu" + ); + // Allow the users to quickly move between extension items using + // the arrow keys, see: `PanelMultiView._isNavigableWithTabOnly()`. + menuButton.setAttribute("data-navigable-with-tab-only", true); menuButton.setAttribute("data-extensionid", extension.id); menuButton.setAttribute("closemenu", "none"); let node = document.createXULElement("toolbaritem"); - node.setAttribute( - "unified-extensions", - String(gUnifiedExtensionsEnabled) - ); + node.setAttribute("unified-extensions", String(true)); node.classList.add( "toolbaritem-combined-buttons", "unified-extensions-item" @@ -360,23 +343,21 @@ this.browserAction = class extends ExtensionAPIPersistent { actionButton.onmouseout = event => this.handleEvent(event); actionButton.onauxclick = event => this.handleEvent(event); - if (gUnifiedExtensionsEnabled) { - const menuButton = node.querySelector( - ".unified-extensions-item-menu-button" - ); - menuButton.setAttribute( - "data-l10n-args", - JSON.stringify({ extensionName: this.extension.name }) - ); + const menuButton = node.querySelector( + ".unified-extensions-item-menu-button" + ); + menuButton.setAttribute( + "data-l10n-args", + JSON.stringify({ extensionName: this.extension.name }) + ); - menuButton.onblur = event => this.handleMenuButtonEvent(event); - menuButton.onfocus = event => this.handleMenuButtonEvent(event); - menuButton.onmouseout = event => this.handleMenuButtonEvent(event); - menuButton.onmouseover = event => this.handleMenuButtonEvent(event); + menuButton.onblur = event => this.handleMenuButtonEvent(event); + menuButton.onfocus = event => this.handleMenuButtonEvent(event); + menuButton.onmouseout = event => this.handleMenuButtonEvent(event); + menuButton.onmouseover = event => this.handleMenuButtonEvent(event); - actionButton.onblur = event => this.handleEvent(event); - actionButton.onfocus = event => this.handleEvent(event); - } + actionButton.onblur = event => this.handleEvent(event); + actionButton.onfocus = event => this.handleEvent(event); this.updateButton(node, this.action.getContextData(null), true, false); }, @@ -411,13 +392,9 @@ this.browserAction = class extends ExtensionAPIPersistent { return; } - // Open the unified extensions context menu when the pref is enabled. - // This context menu only has the relevant menu items for the unified - // extensions UI. + // Open the unified extensions context menu. const popup = target.ownerDocument.getElementById( - gUnifiedExtensionsEnabled - ? "unified-extensions-context-menu" - : "customizationPanelItemContextMenu" + "unified-extensions-context-menu" ); popup.openPopup( target, @@ -526,11 +503,7 @@ this.browserAction = class extends ExtensionAPIPersistent { } if (this.widget.areaType == CustomizableUI.TYPE_PANEL) { - if (gUnifiedExtensionsEnabled) { - await window.gUnifiedExtensions.togglePanel(); - } else { - await window.document.getElementById("nav-bar").overflowable.show(); - } + await window.gUnifiedExtensions.togglePanel(); } // This should already have been checked by callers, but acts as an @@ -663,7 +636,7 @@ this.browserAction = class extends ExtensionAPIPersistent { let popupURL = this.action.getPopupUrl(tab); let { node } = window.gBrowser && this.widget.forWindow(window); - if (gUnifiedExtensionsEnabled && node) { + if (node) { node.querySelector( ".unified-extensions-item-message-deck" ).selectedIndex = window.gUnifiedExtensions.MESSAGE_DECK_INDEX_HOVER; @@ -689,7 +662,7 @@ this.browserAction = class extends ExtensionAPIPersistent { case "blur": case "mouseout": { let { node } = window.gBrowser && this.widget.forWindow(window); - if (gUnifiedExtensionsEnabled && node) { + if (node) { node.querySelector( ".unified-extensions-item-message-deck" ).selectedIndex = @@ -843,16 +816,13 @@ this.browserAction = class extends ExtensionAPIPersistent { let button = node.querySelector(".unified-extensions-item-action-button"); let extensionTitle = tabData.title || this.extension.name; - let messages; - if (gUnifiedExtensionsEnabled) { - let policy = WebExtensionPolicy.getByID(this.extension.id); - messages = OriginControls.getStateMessageIDs({ - policy, - uri: node.ownerGlobal.gBrowser.currentURI, - isAction: true, - hasPopup: !!tabData.popup, - }); - } + let policy = WebExtensionPolicy.getByID(this.extension.id); + let messages = OriginControls.getStateMessageIDs({ + policy, + uri: node.ownerGlobal.gBrowser.currentURI, + isAction: true, + hasPopup: !!tabData.popup, + }); let callback = () => { // This is set on the node so that it looks good in the toolbar. @@ -866,28 +836,26 @@ this.browserAction = class extends ExtensionAPIPersistent { { extensionTitle } ); - if (gUnifiedExtensionsEnabled) { - button.querySelector( - ".unified-extensions-item-name" - ).textContent = this.extension?.name; + button.querySelector( + ".unified-extensions-item-name" + ).textContent = this.extension?.name; - if (messages) { - const messageDefaultElement = button.querySelector( - ".unified-extensions-item-message-default" - ); - node.ownerDocument.l10n.setAttributes( - messageDefaultElement, - messages.default - ); + if (messages) { + const messageDefaultElement = button.querySelector( + ".unified-extensions-item-message-default" + ); + node.ownerDocument.l10n.setAttributes( + messageDefaultElement, + messages.default + ); - const messageHoverElement = button.querySelector( - ".unified-extensions-item-message-hover" - ); - node.ownerDocument.l10n.setAttributes( - messageHoverElement, - messages.onHover || messages.default - ); - } + const messageHoverElement = button.querySelector( + ".unified-extensions-item-message-hover" + ); + node.ownerDocument.l10n.setAttributes( + messageHoverElement, + messages.onHover || messages.default + ); } if (tabData.badgeText) { @@ -938,25 +906,15 @@ this.browserAction = class extends ExtensionAPIPersistent { `; }; - let icon16 = IconDetails.getPreferredIcon(icons, this.extension, 16).icon; let icon32 = IconDetails.getPreferredIcon(icons, this.extension, 32).icon; let icon64 = IconDetails.getPreferredIcon(icons, this.extension, 64).icon; - if (gUnifiedExtensionsEnabled) { - return ` + return ` ${getStyle("menupanel-image", icon32)} ${getStyle("menupanel-image-2x", icon64)} ${getStyle("toolbar-image", icon32)} ${getStyle("toolbar-image-2x", icon64)} `; - } - - return ` - ${getStyle("menupanel-image", icon16)} - ${getStyle("menupanel-image-2x", icon32)} - ${getStyle("toolbar-image", icon16)} - ${getStyle("toolbar-image-2x", icon32)} - `; } /** diff --git a/browser/components/extensions/test/browser/browser-no-unified-extensions.ini b/browser/components/extensions/test/browser/browser-no-unified-extensions.ini deleted file mode 100644 index 66b94a81bef4..000000000000 --- a/browser/components/extensions/test/browser/browser-no-unified-extensions.ini +++ /dev/null @@ -1,6 +0,0 @@ -[DEFAULT] -tags = webextensions -prefs = - extensions.unifiedExtensions.enabled=false - -[browser_unified_extensions_disabled.js] diff --git a/browser/components/extensions/test/browser/browser_ext_browserAction_area.js b/browser/components/extensions/test/browser/browser_ext_browserAction_area.js index 3239116f9c8f..047f937f1628 100644 --- a/browser/components/extensions/test/browser/browser_ext_browserAction_area.js +++ b/browser/components/extensions/test/browser/browser_ext_browserAction_area.js @@ -24,12 +24,7 @@ async function testInArea(area) { await extension.startup(); let widget = getBrowserActionWidget(extension); let placement = CustomizableUI.getPlacementOfWidget(widget.id); - let fallbackDefaultArea = Services.prefs.getBoolPref( - "extensions.unifiedExtensions.enabled", - false - ) - ? CustomizableUI.AREA_ADDONS - : CustomizableUI.AREA_NAVBAR; + let fallbackDefaultArea = CustomizableUI.AREA_ADDONS; is( placement && placement.area, browserAreas[area] || fallbackDefaultArea, diff --git a/browser/components/extensions/test/browser/browser_ext_browserAction_contextMenu.js b/browser/components/extensions/test/browser/browser_ext_browserAction_contextMenu.js index a33e4efb90b6..b3a985ad9eaa 100644 --- a/browser/components/extensions/test/browser/browser_ext_browserAction_contextMenu.js +++ b/browser/components/extensions/test/browser/browser_ext_browserAction_contextMenu.js @@ -1028,19 +1028,3 @@ add_task(async function test_unified_extensions_item_no_pinning() { await extension.unload(); await BrowserTestUtils.closeWindow(win); }); - -add_task(async function test_non_unified_extensions_ui() { - Services.telemetry.clearEvents(); - let win = await promiseDisableUnifiedExtensions(); - - await browseraction_popup_contextmenu_helper(win); - await browseraction_popup_contextmenu_hidden_items_helper(win); - await browseraction_popup_image_contextmenu_helper(win); - await browseraction_contextmenu_manage_extension_helper(win); - await browseraction_contextmenu_remove_extension_helper(win); - await browseraction_contextmenu_report_extension_helper(win); - await test_no_toolbar_pinning_on_builtin_helper(win); - - await BrowserTestUtils.closeWindow(win); - await SpecialPowers.popPrefEnv(); -}); diff --git a/browser/components/extensions/test/browser/browser_ext_browserAction_pageAction_icon.js b/browser/components/extensions/test/browser/browser_ext_browserAction_pageAction_icon.js index 73c2f05a2532..85d3228a307e 100644 --- a/browser/components/extensions/test/browser/browser_ext_browserAction_pageAction_icon.js +++ b/browser/components/extensions/test/browser/browser_ext_browserAction_pageAction_icon.js @@ -33,17 +33,6 @@ add_task(async function testDetailsObjects() { green: getImageData("green"), }; - const unifiedExtensionsEnabled = SpecialPowers.getBoolPref( - "extensions.unifiedExtensions.enabled", - false - ); - - // In each `iconDetails` entry below, and for a same resolution, we may - // expect different values (icon URLs) for `browserActionImageURL` and - // `pageActionImageURL` because browser actions use large icons (32px or - // 64px in 2x) and page actions use small icons (16px or 32px in 2x) when - // the unifiedExtensions pref is enabled. - // // eslint-disable indent, indent-legacy let iconDetails = [ // Only paths. @@ -103,9 +92,7 @@ add_task(async function testDetailsObjects() { details: { path: { "19": "a.png", "38": "a-x2.png" } }, resolutions: { "1": { - browserActionImageURL: unifiedExtensionsEnabled - ? browser.runtime.getURL("data/a-x2.png") - : browser.runtime.getURL("data/a.png"), + browserActionImageURL: browser.runtime.getURL("data/a-x2.png"), pageActionImageURL: browser.runtime.getURL("data/a.png"), }, "2": { @@ -120,15 +107,11 @@ add_task(async function testDetailsObjects() { }, resolutions: { "1": { - browserActionImageURL: unifiedExtensionsEnabled - ? browser.runtime.getURL("data/a-32.png") - : browser.runtime.getURL("data/a-16.png"), + browserActionImageURL: browser.runtime.getURL("data/a-32.png"), pageActionImageURL: browser.runtime.getURL("data/a-16.png"), }, "2": { - browserActionImageURL: unifiedExtensionsEnabled - ? browser.runtime.getURL("data/a-64.png") - : browser.runtime.getURL("data/a-32.png"), + browserActionImageURL: browser.runtime.getURL("data/a-64.png"), pageActionImageURL: browser.runtime.getURL("data/a-32.png"), }, }, @@ -202,9 +185,7 @@ add_task(async function testDetailsObjects() { }, resolutions: { "1": { - browserActionImageURL: unifiedExtensionsEnabled - ? imageData.green.url - : imageData.red.url, + browserActionImageURL: imageData.green.url, pageActionImageURL: imageData.red.url, }, "2": { @@ -225,9 +206,7 @@ add_task(async function testDetailsObjects() { }, resolutions: { "1": { - browserActionImageURL: unifiedExtensionsEnabled - ? imageData.red.url - : browser.runtime.getURL("data/a.png"), + browserActionImageURL: imageData.red.url, pageActionImageURL: browser.runtime.getURL("data/a.png"), }, "2": { @@ -243,9 +222,7 @@ add_task(async function testDetailsObjects() { }, resolutions: { "1": { - browserActionImageURL: unifiedExtensionsEnabled - ? browser.runtime.getURL("data/a.png") - : imageData.red.url, + browserActionImageURL: browser.runtime.getURL("data/a.png"), pageActionImageURL: imageData.red.url, }, "2": { @@ -263,9 +240,7 @@ add_task(async function testDetailsObjects() { }, resolutions: { "1": { - browserActionImageURL: unifiedExtensionsEnabled - ? imageData.red.url - : browser.runtime.getURL("data/a.png"), + browserActionImageURL: imageData.red.url, pageActionImageURL: browser.runtime.getURL("data/a.png"), }, "2": { @@ -281,9 +256,7 @@ add_task(async function testDetailsObjects() { }, resolutions: { "1": { - browserActionImageURL: unifiedExtensionsEnabled - ? browser.runtime.getURL("data/a.png") - : imageData.red.url, + browserActionImageURL: browser.runtime.getURL("data/a.png"), pageActionImageURL: imageData.red.url, }, "2": { @@ -298,9 +271,7 @@ add_task(async function testDetailsObjects() { details: { path: { "18": "a.png", "36": "a-x2.png" } }, resolutions: { "1": { - browserActionImageURL: unifiedExtensionsEnabled - ? browser.runtime.getURL("data/a-x2.png") - : browser.runtime.getURL("data/a.png"), + browserActionImageURL: browser.runtime.getURL("data/a-x2.png"), pageActionImageURL: browser.runtime.getURL("data/a.png"), }, "2": { @@ -313,9 +284,7 @@ add_task(async function testDetailsObjects() { details: { path: { "16": "a.png", "30": "a-x2.png" } }, resolutions: { "1": { - browserActionImageURL: unifiedExtensionsEnabled - ? browser.runtime.getURL("data/a-x2.png") - : browser.runtime.getURL("data/a.png"), + browserActionImageURL: browser.runtime.getURL("data/a-x2.png"), pageActionImageURL: browser.runtime.getURL("data/a.png"), }, "2": { @@ -328,9 +297,7 @@ add_task(async function testDetailsObjects() { details: { path: { "16": "16.png", "100": "100.png" } }, resolutions: { "1": { - browserActionImageURL: unifiedExtensionsEnabled - ? browser.runtime.getURL("data/100.png") - : browser.runtime.getURL("data/16.png"), + browserActionImageURL: browser.runtime.getURL("data/100.png"), pageActionImageURL: browser.runtime.getURL("data/16.png"), }, "2": { @@ -361,9 +328,7 @@ add_task(async function testDetailsObjects() { }, resolutions: { "1": { - browserActionImageURL: unifiedExtensionsEnabled - ? browser.runtime.getURL("data/18.svg") - : browser.runtime.getURL("data/16.svg"), + browserActionImageURL: browser.runtime.getURL("data/18.svg"), pageActionImageURL: browser.runtime.getURL("data/16.svg"), }, "2": { @@ -384,15 +349,11 @@ add_task(async function testDetailsObjects() { }, resolutions: { "1": { - browserActionImageURL: unifiedExtensionsEnabled - ? browser.runtime.getURL("data/36.png") - : browser.runtime.getURL("data/18.png"), + browserActionImageURL: browser.runtime.getURL("data/36.png"), pageActionImageURL: browser.runtime.getURL("data/18.png"), }, "2": { - browserActionImageURL: unifiedExtensionsEnabled - ? browser.runtime.getURL("data/128.png") - : browser.runtime.getURL("data/36.png"), + browserActionImageURL: browser.runtime.getURL("data/128.png"), pageActionImageURL: browser.runtime.getURL("data/36.png"), }, }, @@ -414,15 +375,11 @@ add_task(async function testDetailsObjects() { }, resolutions: { "1": { - browserActionImageURL: unifiedExtensionsEnabled - ? browser.runtime.getURL("data/32.png") - : browser.runtime.getURL("data/16.png"), + browserActionImageURL: browser.runtime.getURL("data/32.png"), pageActionImageURL: browser.runtime.getURL("data/16.png"), }, "2": { - browserActionImageURL: unifiedExtensionsEnabled - ? browser.runtime.getURL("data/64.png") - : browser.runtime.getURL("data/32.png"), + browserActionImageURL: browser.runtime.getURL("data/64.png"), pageActionImageURL: browser.runtime.getURL("data/32.png"), }, }, @@ -446,9 +403,7 @@ add_task(async function testDetailsObjects() { pageActionImageURL: browser.runtime.getURL("data/32.png"), }, "2": { - browserActionImageURL: unifiedExtensionsEnabled - ? browser.runtime.getURL("data/128.png") - : browser.runtime.getURL("data/32.png"), + browserActionImageURL: browser.runtime.getURL("data/128.png"), pageActionImageURL: browser.runtime.getURL("data/32.png"), }, }, diff --git a/browser/components/extensions/test/browser/browser_unified_extensions.js b/browser/components/extensions/test/browser/browser_unified_extensions.js index 1c84a61aaef7..7d76e987d983 100644 --- a/browser/components/extensions/test/browser/browser_unified_extensions.js +++ b/browser/components/extensions/test/browser/browser_unified_extensions.js @@ -66,24 +66,6 @@ add_task(async function test_button_enabled_by_pref() { ); }); -add_task(async function test_button_disabled_by_pref() { - const anotherWindow = await promiseDisableUnifiedExtensions(); - - const button = anotherWindow.document.getElementById( - "unified-extensions-button" - ); - is(button.hidden, true, "expected button to be hidden"); - ok( - !anotherWindow.document - .getElementById("nav-bar") - .hasAttribute("unifiedextensionsbuttonshown"), - "expected no attribute on nav-bar" - ); - - await BrowserTestUtils.closeWindow(anotherWindow); - await SpecialPowers.popPrefEnv(); -}); - add_task(async function test_open_panel_on_button_click() { const extensions = createExtensions([ { name: "Extension #1" }, diff --git a/browser/components/extensions/test/browser/browser_unified_extensions_cui.js b/browser/components/extensions/test/browser/browser_unified_extensions_cui.js index d4cefbcc436c..52af130c0197 100644 --- a/browser/components/extensions/test/browser/browser_unified_extensions_cui.js +++ b/browser/components/extensions/test/browser/browser_unified_extensions_cui.js @@ -5,26 +5,6 @@ loadTestSubscript("head_unified_extensions.js"); -add_task(async function test_no_addons_themes_widget() { - if (!gUnifiedExtensions.isEnabled) { - ok(true, "Skip task because Unified Extensions UI is disabled"); - return; - } - - const addonsAndThemesWidgetId = "add-ons-button"; - - // Add the button to the navbar, which should not do anything because the - // add-ons and themes button should not exist when the unified extensions - // pref is enabled. - CustomizableUI.addWidgetToArea( - addonsAndThemesWidgetId, - CustomizableUI.AREA_NAVBAR - ); - - let addonsButton = document.getElementById(addonsAndThemesWidgetId); - is(addonsButton, null, "expected no add-ons and themes button"); -}); - /** * Tests that if the addons panel is somehow open when customization mode is * invoked, that the panel is hidden. diff --git a/browser/components/extensions/test/browser/browser_unified_extensions_disabled.js b/browser/components/extensions/test/browser/browser_unified_extensions_disabled.js deleted file mode 100644 index 3bc5d197828a..000000000000 --- a/browser/components/extensions/test/browser/browser_unified_extensions_disabled.js +++ /dev/null @@ -1,21 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - http://creativecommons.org/publicdomain/zero/1.0/ */ - -"use strict"; - -add_task(async function test_addons_themes_widget() { - const addonsAndThemesWidgetId = "add-ons-button"; - - ok( - !Services.prefs.getBoolPref("extensions.unifiedExtensions.enabled", false), - "expected unified extensions pref to be disabled" - ); - - CustomizableUI.addWidgetToArea( - addonsAndThemesWidgetId, - CustomizableUI.AREA_NAVBAR - ); - - let addonsButton = document.getElementById(addonsAndThemesWidgetId); - ok(addonsButton, "expected add-ons and themes button"); -}); diff --git a/browser/components/extensions/test/browser/browser_unified_extensions_doorhangers.js b/browser/components/extensions/test/browser/browser_unified_extensions_doorhangers.js index 2cb095e6259a..ce7b3d32fe32 100644 --- a/browser/components/extensions/test/browser/browser_unified_extensions_doorhangers.js +++ b/browser/components/extensions/test/browser/browser_unified_extensions_doorhangers.js @@ -128,12 +128,3 @@ const verifyPermissionsPrompt = async (win, expectedAnchorID) => { add_task(async function test_permissions_prompt_with_pref_enabled() { await verifyPermissionsPrompt(win, "unified-extensions-button"); }); - -add_task(async function test_permissions_prompt_with_pref_disabled() { - const anotherWindow = await promiseDisableUnifiedExtensions(); - - await verifyPermissionsPrompt(anotherWindow, "addons-notification-icon"); - - await BrowserTestUtils.closeWindow(anotherWindow); - await SpecialPowers.popPrefEnv(); -}); diff --git a/browser/components/extensions/test/browser/browser_unified_extensions_overflowable_toolbar.js b/browser/components/extensions/test/browser/browser_unified_extensions_overflowable_toolbar.js index 0d9bff92bf3d..762502a37b3f 100644 --- a/browser/components/extensions/test/browser/browser_unified_extensions_overflowable_toolbar.js +++ b/browser/components/extensions/test/browser/browser_unified_extensions_overflowable_toolbar.js @@ -490,48 +490,6 @@ add_task(async function test_overflowable_toolbar() { await BrowserTestUtils.closeWindow(win); }); -/** - * Tests that if Unified Extensions are disabled, all overflowed items - * in the toolbar go to the default overflow panel. - */ -add_task(async function test_overflowable_toolbar_legacy() { - let win = await promiseDisableUnifiedExtensions(); - - await withWindowOverflowed(win, { - whenOverflowed: async (defaultList, unifiedExtensionList, extensionIDs) => { - // First, ensure that all default items are in the default overflow list. - // (though there might be more items from the nav-bar in there that - // already existed in the nav-bar before we put the default widgets in - // there as well). - const defaultListIDs = getChildrenIDs(defaultList); - for (const widgetID of DEFAULT_WIDGET_IDS) { - Assert.ok( - defaultListIDs.includes(widgetID), - `Default overflow list should have ${widgetID}` - ); - } - // Next, ensure that all of the browser_action buttons from the - // WebExtensions are there as well. - for (const extensionID of extensionIDs) { - const widget = defaultList.querySelector( - `[data-extensionid='${extensionID}']` - ); - Assert.ok(widget, `Default list should have ${extensionID}`); - await verifyExtensionWidget(win, widget, false); - } - - Assert.equal( - unifiedExtensionList.children.length, - 0, - "Unified Extension overflow list should be empty." - ); - }, - }); - - await BrowserTestUtils.closeWindow(win); - await SpecialPowers.popPrefEnv(); -}); - add_task(async function test_context_menu() { let win = await promiseEnableUnifiedExtensions(); diff --git a/browser/components/extensions/test/browser/head_unified_extensions.js b/browser/components/extensions/test/browser/head_unified_extensions.js index a6e0650e7625..8714b516504e 100644 --- a/browser/components/extensions/test/browser/head_unified_extensions.js +++ b/browser/components/extensions/test/browser/head_unified_extensions.js @@ -10,26 +10,13 @@ getUnifiedExtensionsItem, openExtensionsPanel, openUnifiedExtensionsContextMenu, - promiseDisableUnifiedExtensions, promiseEnableUnifiedExtensions */ const promiseEnableUnifiedExtensions = async (options = {}) => { - await SpecialPowers.pushPrefEnv({ - set: [["extensions.unifiedExtensions.enabled", true]], - }); - return BrowserTestUtils.openNewBrowserWindow(options); }; -const promiseDisableUnifiedExtensions = async () => { - await SpecialPowers.pushPrefEnv({ - set: [["extensions.unifiedExtensions.enabled", false]], - }); - - return BrowserTestUtils.openNewBrowserWindow(); -}; - const getListView = win => { const { panel } = win.gUnifiedExtensions; ok(panel, "expected panel to be created"); diff --git a/browser/components/uitour/test/browser_UITour_panel_close_annotation.js b/browser/components/uitour/test/browser_UITour_panel_close_annotation.js index d7e584cfd874..c12e225cbe1f 100644 --- a/browser/components/uitour/test/browser_UITour_panel_close_annotation.js +++ b/browser/components/uitour/test/browser_UITour_panel_close_annotation.js @@ -224,39 +224,4 @@ var tests = [ "Highlight should be shown after showHighlight() for fixed panel items" ); }, - - function test_info_move_outside_panel(done) { - gContentAPI.showInfo("addons", "test title", "test text"); - gContentAPI.showHighlight("urlbar"); - let addonsButton = document.getElementById("add-ons-button"); - waitForPopupAtAnchor( - tooltip, - addonsButton, - function checkPanelIsOpen() { - isnot(PanelUI.panel.state, "closed", "Panel should have opened"); - - // Move the info panel outside which should close the app menu. - gContentAPI.showInfo("appMenu", "Cool menu button", "It's three lines"); - waitForPopupAtAnchor( - tooltip, - document.getElementById("PanelUI-button"), - () => { - isnot( - PanelUI.panel.state, - "open", - "Menu should have closed after the highlight moved elsewhere." - ); - is( - highlight.parentElement.state, - "open", - "The highlight should have remained visible" - ); - done(); - }, - "Tooltip should move to the appMenu button and still be visible" - ); - }, - "Tooltip should be shown after showInfo() for a panel item" - ); - }, ]; diff --git a/browser/locales/en-US/browser/browser.ftl b/browser/locales/en-US/browser/browser.ftl index e86de659cda8..265b3d102a8c 100644 --- a/browser/locales/en-US/browser/browser.ftl +++ b/browser/locales/en-US/browser/browser.ftl @@ -759,12 +759,6 @@ repair-text-encoding-button = ## Customize Toolbar Buttons -# Variables: -# $shortcut (String): keyboard shortcut to open the add-ons manager -toolbar-addons-themes-button = - .label = Add-ons and themes - .tooltiptext = Manage your add-ons and themes ({ $shortcut }) - # Variables: # $shortcut (String): keyboard shortcut to open settings (only on macOS) toolbar-settings-button = diff --git a/browser/themes/shared/toolbarbutton-icons.css b/browser/themes/shared/toolbarbutton-icons.css index c8cc0e9a1bc0..b5365a3d1081 100644 --- a/browser/themes/shared/toolbarbutton-icons.css +++ b/browser/themes/shared/toolbarbutton-icons.css @@ -231,10 +231,6 @@ toolbar { list-style-image: url("chrome://browser/skin/downloads/downloads.svg"); } -#add-ons-button { - list-style-image: url("chrome://mozapps/skin/extensions/extension.svg"); -} - #open-file-button { list-style-image: url("chrome://browser/skin/open.svg"); } diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index b96bae67b2e6..53677b6804e8 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -1953,9 +1953,6 @@ pref("extensions.eventPages.enabled", true); pref("extensions.manifestV2.actionsPopupURLRestricted", false); // Whether "manifest_version: 3" extensions should be allowed to install successfully. pref("extensions.manifestV3.enabled", true); -// Whether to enable the unified extensions feature. Note that this pref is -// enabled for Firefox Desktop in `browser/app/profile/firefox.js`. -pref("extensions.unifiedExtensions.enabled", false); // Whether to enable the updated openPopup API. #ifdef NIGHTLY_BUILD pref("extensions.openPopupWithoutUserGesture.enabled", true); diff --git a/toolkit/components/extensions/ExtensionActions.jsm b/toolkit/components/extensions/ExtensionActions.jsm index 6d2b2db3ac19..6ea161b3d43b 100644 --- a/toolkit/components/extensions/ExtensionActions.jsm +++ b/toolkit/components/extensions/ExtensionActions.jsm @@ -29,13 +29,6 @@ XPCOMUtils.defineLazyPreferenceGetter( false ); -XPCOMUtils.defineLazyPreferenceGetter( - lazy, - "gUnifiedExtensionsEnabled", - "extensions.unifiedExtensions.enabled", - false -); - function parseColor(color, kind) { if (typeof color == "string") { let rgba = InspectorUtils.colorToRGBA(color); @@ -519,8 +512,7 @@ class BrowserActionBase extends PanelActionBase { extension.manifest.browser_action || extension.manifest.action; super(options, tabContext, extension); - let fallbackArea = lazy.gUnifiedExtensionsEnabled ? "menupanel" : "navbar"; - let default_area = options.default_area || fallbackArea; + let default_area = options.default_area || "menupanel"; this.defaults = { ...this.defaults, diff --git a/toolkit/mozapps/extensions/test/xpinstall/browser_doorhanger_installs.js b/toolkit/mozapps/extensions/test/xpinstall/browser_doorhanger_installs.js index 5fb4b3516975..73b0c76d84d9 100644 --- a/toolkit/mozapps/extensions/test/xpinstall/browser_doorhanger_installs.js +++ b/toolkit/mozapps/extensions/test/xpinstall/browser_doorhanger_installs.js @@ -65,7 +65,7 @@ async function waitForProgressNotification( aPanelOpen = false, aExpectedCount = 1, wantDisabled = true, - expectedAnchorID = "addons-notification-icon", + expectedAnchorID = "unified-extensions-button", win = window ) { let notificationId = PROGRESS_NOTIFICATION; @@ -220,7 +220,7 @@ function acceptAppMenuNotificationWhenShown( async function waitForNotification( aId, aExpectedCount = 1, - expectedAnchorID = "addons-notification-icon", + expectedAnchorID = "unified-extensions-button", win = window ) { info("Waiting for " + aId + " notification"); @@ -1187,7 +1187,7 @@ var TESTS = [ let notification = panel.childNodes[0]; // Close the notification - let anchor = document.getElementById("addons-notification-icon"); + let anchor = document.getElementById("unified-extensions-button"); anchor.click(); // Reopen the notification anchor.click(); @@ -1468,10 +1468,7 @@ var TESTS = [ async function test_blockedInstallDomain_with_unified_extensions() { await SpecialPowers.pushPrefEnv({ - set: [ - ["extensions.unifiedExtensions.enabled", true], - ["extensions.install_origins.enabled", true], - ], + set: [["extensions.install_origins.enabled", true]], }); let win = await BrowserTestUtils.openNewBrowserWindow(); @@ -1509,7 +1506,6 @@ var TESTS = [ async function test_mv3_installOrigins_disallowed_with_unified_extensions() { await SpecialPowers.pushPrefEnv({ set: [ - ["extensions.unifiedExtensions.enabled", true], // Disable signature check because we load an unsigned MV3 extension. ["xpinstall.signatures.required", false], ["extensions.install_origins.enabled", true], @@ -1544,7 +1540,6 @@ var TESTS = [ async function test_mv3_installOrigins_allowed_with_unified_extensions() { await SpecialPowers.pushPrefEnv({ set: [ - ["extensions.unifiedExtensions.enabled", true], // Disable signature check because we load an unsigned MV3 extension. ["xpinstall.signatures.required", false], // When this pref is disabled, install should be possible. @@ -1616,10 +1611,6 @@ add_task(async function() { ["extensions.InstallTriggerImpl.enabled", true], // Relax the user input requirements while running this test. ["xpinstall.userActivation.required", false], - // This is needed to allow most of the tests to pass no matter the value - // of this pref. In the future, we'll want to enable this pref by default - // and adjust the assertions on the anchor IDs. - ["extensions.unifiedExtensions.enabled", false], ], });