tor-browser

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

commit 395526c9cd3f973091f61da54b35522bc7619672
parent 81233e48578418ede78fd770a5c8991d6b645d76
Author: Kyler Riggs <100742516+ky-ler@users.noreply.github.com>
Date:   Wed, 22 Oct 2025 14:40:51 +0000

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

Differential Revision: https://phabricator.services.mozilla.com/D267157

Diffstat:
Mbrowser/components/customizableui/ToolbarContextMenu.sys.mjs | 9+++++++--
Mbrowser/components/customizableui/test/browser_customization_context_menus.js | 81+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 88 insertions(+), 2 deletions(-)

diff --git a/browser/components/customizableui/ToolbarContextMenu.sys.mjs b/browser/components/customizableui/ToolbarContextMenu.sys.mjs @@ -235,6 +235,10 @@ 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); @@ -244,7 +248,8 @@ export var ToolbarContextMenu = { let showSidebarActions = ["tabbrowser-tabs", "sidebar-button"].includes(toolbarItem?.id) || toolbarItem?.localName == "toolbarspring" || - isTitlebarSpacer; + isTitlebarSpacer || + isMenuBarSpacer; let toggleVerticalTabsItem = document.getElementById( "toolbar-context-toggle-vertical-tabs" @@ -266,7 +271,7 @@ export var ToolbarContextMenu = { !showSidebarActions || isVerticalTabStripMenu; document.getElementById("customizationMenuSeparator").hidden = toolbarItem?.id == "tabbrowser-tabs" || - (toolbarItem?.localName == "toolbarspring" && + ((toolbarItem?.localName == "toolbarspring" || isMenuBarSpacer) && !CustomizationHandler.isCustomizing()); // View -> Toolbars menu doesn't have the moveToPanel or removeFromToolbar items. diff --git a/browser/components/customizableui/test/browser_customization_context_menus.js b/browser/components/customizableui/test/browser_customization_context_menus.js @@ -754,3 +754,84 @@ 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], + ["---"], + [".customize-context-moveToPanel", false], + [".customize-context-removeFromToolbar", false], + ["---"], + ["#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(); +});