tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 28fe6a6ad05a0e7cc48be6e0382c65912b78d8c3
parent dac5415bd4929e67f9520b7d149148bba6e517b7
Author: Atila Butkovits <abutkovits@mozilla.com>
Date:   Wed, 22 Oct 2025 19:38:20 +0300

Revert "Bug 1995753 - Hide the context menu options "Remove from Toolbar" and "Pin to Overflow Menu" if they are both disabled. r=nsharpley" for causing failures at browser_fullscreen_context_menu.js.

This reverts commit c476444271964862cc91284c341a019473e63008.

Revert "Bug 1995753 - Add "Turn on Vertical Tabs" option to the Menu Bar's context menu. r=nsharpley"

This reverts commit 395526c9cd3f973091f61da54b35522bc7619672.

Diffstat:
Mbrowser/base/content/main-popupset.js | 4+---
Mbrowser/components/customizableui/ToolbarContextMenu.sys.mjs | 62++++++++++----------------------------------------------------
Mbrowser/components/customizableui/test/browser_customization_context_menus.js | 93+++++++++++--------------------------------------------------------------------
3 files changed, 24 insertions(+), 135 deletions(-)

diff --git a/browser/base/content/main-popupset.js b/browser/base/content/main-popupset.js @@ -501,10 +501,8 @@ document.addEventListener( ToolbarContextMenu.updateDownloadsAlwaysOpenPanel(event.target); ToolbarContextMenu.updateExtensionsButtonContextMenu(event.target); ToolbarContextMenu.updateExtension(event.target); - - // The following methods must be called last after updating the menu items above, + // hideLeadingSeparatorIfNeeded must be called last after updating the menu items above, // as they may change which items are visible. - ToolbarContextMenu.updateCustomizationItemsVisibility(event.target); ToolbarContextMenu.hideLeadingSeparatorIfNeeded(event.target); break; case "pageActionContextMenu": diff --git a/browser/components/customizableui/ToolbarContextMenu.sys.mjs b/browser/components/customizableui/ToolbarContextMenu.sys.mjs @@ -235,10 +235,6 @@ export var ToolbarContextMenu = { let isTitlebarSpacer = toolbarItem?.classList.contains("titlebar-spacer"); - let isMenuBarSpacer = - toolbarItem?.localName == "spacer" && - toolbarItem?.parentElement?.id == "toolbar-menubar"; - // Show/hide fullscreen context menu items and set the // autohide item's checked state to mirror the autohide pref. showFullScreenViewContextMenuItems(popup); @@ -248,8 +244,7 @@ export var ToolbarContextMenu = { let showSidebarActions = ["tabbrowser-tabs", "sidebar-button"].includes(toolbarItem?.id) || toolbarItem?.localName == "toolbarspring" || - isTitlebarSpacer || - isMenuBarSpacer; + isTitlebarSpacer; let toggleVerticalTabsItem = document.getElementById( "toolbar-context-toggle-vertical-tabs" @@ -272,9 +267,7 @@ export var ToolbarContextMenu = { document.getElementById("customizationMenuSeparator").hidden = toolbarItem?.id == "tabbrowser-tabs" || (toolbarItem?.localName == "toolbarspring" && - !CustomizationHandler.isCustomizing()) || - isMenuBarSpacer || - isTitlebarSpacer; + !CustomizationHandler.isCustomizing()); // View -> Toolbars menu doesn't have the moveToPanel or removeFromToolbar items. if (!moveToPanel || !removeFromToolbar) { @@ -309,18 +302,13 @@ export var ToolbarContextMenu = { document.getElementById("toolbarNavigatorItemsMenuSeparator").hidden = !showTabStripItems; - let isSpacerItem = - toolbarItem?.localName.includes("separator") || - toolbarItem?.localName.includes("spring") || - toolbarItem?.localName.includes("spacer") || - toolbarItem?.id.startsWith("customizableui-special"); - - // For spacer items, customization items should only appear - // when the user is actively customizing the toolbar. - let shouldHideCustomizationItems = - isSpacerItem && !CustomizationHandler.isCustomizing(); - - if (shouldHideCustomizationItems) { + if ( + !CustomizationHandler.isCustomizing() && + (toolbarItem?.localName.includes("separator") || + toolbarItem?.localName.includes("spring") || + toolbarItem?.localName.includes("spacer") || + toolbarItem?.id.startsWith("customizableui-special")) + ) { moveToPanel.hidden = true; removeFromToolbar.hidden = true; menuSeparator.hidden = !showTabStripItems; @@ -361,11 +349,7 @@ export var ToolbarContextMenu = { } else { moveToPanel.removeAttribute("disabled"); } - if (shouldHideCustomizationItems) { - removeFromToolbar.setAttribute("disabled", true); - } else { - removeFromToolbar.removeAttribute("disabled"); - } + removeFromToolbar.removeAttribute("disabled"); } else { removeFromToolbar.setAttribute("disabled", true); moveToPanel.setAttribute("disabled", true); @@ -601,30 +585,4 @@ export var ToolbarContextMenu = { firstVisibleElement.hidden = true; } }, - - /** - * Hides the "Move to Panel" and "Remove from Toolbar" items if both are - * disabled. This prevents showing a menu with no useful items. If at least - * one of the items is enabled, both items are shown for consistency. - * - * This is its own method to allow it to be called after other methods - * that may change the disabled state of either menu item. - * - * @param {Element} popup - * The toolbar-context-menu element for a window. - */ - updateCustomizationItemsVisibility(popup) { - let moveToPanel = popup.querySelector(".customize-context-moveToPanel"); - let removeFromToolbar = popup.querySelector( - ".customize-context-removeFromToolbar" - ); - - if ( - removeFromToolbar?.getAttribute("disabled") && - moveToPanel.getAttribute("disabled") - ) { - removeFromToolbar.hidden = true; - moveToPanel.hidden = true; - } - }, }; diff --git a/browser/components/customizableui/test/browser_customization_context_menus.js b/browser/components/customizableui/test/browser_customization_context_menus.js @@ -149,6 +149,9 @@ add_task(async function titlebar_spacer_context() { let expectedEntries = [ ["#toolbar-context-toggle-vertical-tabs", true], ["---"], + [".customize-context-moveToPanel", false], + [".customize-context-removeFromToolbar", false], + ["---"], ]; if (!isOSX) { expectedEntries.push(["#toggle_toolbar-menubar", true]); @@ -180,7 +183,11 @@ add_task(async function empty_toolbar_context() { }); await shownPromise; - let expectedEntries = []; + let expectedEntries = [ + [".customize-context-moveToPanel", false], + [".customize-context-removeFromToolbar", false], + ["---"], + ]; if (!isOSX) { expectedEntries.push(["#toggle_toolbar-menubar", true]); } @@ -211,7 +218,11 @@ add_task(async function urlbar_context() { }); await shownPromise; - let expectedEntries = []; + let expectedEntries = [ + [".customize-context-moveToPanel", false], + [".customize-context-removeFromToolbar", false], + ["---"], + ]; if (!isOSX) { expectedEntries.push(["#toggle_toolbar-menubar", true]); } @@ -743,81 +754,3 @@ add_task(async function flexible_space_context_menu_customize_mode() { ok(!lastSpring.parentNode, "Spring should have been removed successfully."); await endCustomizing(); }); - -// Menu Bar spacer context menu -add_task(async function menubar_spacer_context_menu() { - if (isOSX) { - info("Skipping test that requires menu bar."); - return; - } - - let menubar = document.getElementById("toolbar-menubar"); - menubar.removeAttribute("autohide"); - ok(!menubar.hasAttribute("autohide"), "Menu bar is visible"); - let spacer = menubar.querySelector("spacer"); - ok(spacer, "Found menubar spacer"); - await waitForElementShown(spacer); - let contextMenu = document.getElementById("toolbar-context-menu"); - let shownPromise = popupShown(contextMenu); - EventUtils.synthesizeMouseAtCenter(spacer, { - type: "contextmenu", - button: 2, - }); - await shownPromise; - - let expectedEntries = [ - ["#toolbar-context-toggle-vertical-tabs", true], - ["---"], - ["#toggle_toolbar-menubar", true], - ["#toggle_PersonalToolbar", true], - ["---"], - [".viewCustomizeToolbar", true], - ]; - - checkContextMenu(contextMenu, expectedEntries); - let hiddenPromise = popupHidden(contextMenu); - contextMenu.hidePopup(); - await hiddenPromise; - menubar.setAttribute("autohide", "true"); - ok(menubar.hasAttribute("autohide"), "Menu bar is hidden"); -}); - -// Menu Bar spacer context menu in customization mode -add_task(async function menu_bar_spacer_context_menu_customize_mode() { - if (isOSX) { - info("Skipping test that requires menu bar."); - return; - } - - await startCustomizing(); - let menubar = document.getElementById("toolbar-menubar"); - menubar.removeAttribute("autohide"); - ok(!menubar.hasAttribute("autohide"), "Menu bar is visible"); - let spacer = menubar.querySelector("spacer"); - ok(spacer, "Found menubar spacer"); - await waitForElementShown(spacer); - let contextMenu = document.getElementById("toolbar-context-menu"); - let shownPromise = popupShown(contextMenu); - EventUtils.synthesizeMouseAtCenter(spacer, { - type: "contextmenu", - button: 2, - }); - await shownPromise; - - let expectedEntries = [ - ["#toolbar-context-toggle-vertical-tabs", true], - ["---"], - ["#toggle_toolbar-menubar", true], - ["#toggle_PersonalToolbar", true], - ["---"], - [".viewCustomizeToolbar", false], - ]; - - checkContextMenu(contextMenu, expectedEntries); - let hiddenPromise = popupHidden(contextMenu); - contextMenu.hidePopup(); - await hiddenPromise; - menubar.setAttribute("autohide", "true"); - ok(menubar.hasAttribute("autohide"), "Menu bar is hidden"); - await endCustomizing(); -});