tor-browser

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

commit 5ea3e41169ea152f137309fbb745025b91b1013f
parent b950556082826dd2bd7443b849589d8f629f205e
Author: Sam Foster <sfoster@mozilla.com>
Date:   Wed,  7 Jan 2026 22:19:37 +0000

Bug 1978102 - Flip sidebar.revamp to true by default. r=nsharpley,extension-reviewers,devtools-reviewers,accessibility-frontend-reviewers,nchevobbe,ayeddi,rpl

* Including some test fixup

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

Diffstat:
Maccessible/tests/mochitest/tree/test_tabbrowser.xhtml | 11+++++++----
Mbrowser/app/profile/firefox.js | 5+++--
Mbrowser/base/content/test/general/browser_bug462289.js | 8++++++--
Mbrowser/base/content/test/general/browser_documentnavigation.js | 14+++++++++++---
Mbrowser/components/extensions/test/browser/head.js | 14++++++++++++++
Mbrowser/components/preferences/tests/head.js | 14++++++++++++++
Mbrowser/components/sidebar/tests/marionette/manifest.toml | 3+++
Mbrowser/components/sidebar/tests/marionette/test_default_launcher_visible.py | 12+++++++++++-
Mdevtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_debug_reload.js | 8++++++++
9 files changed, 77 insertions(+), 12 deletions(-)

diff --git a/accessible/tests/mochitest/tree/test_tabbrowser.xhtml b/accessible/tests/mochitest/tree/test_tabbrowser.xhtml @@ -156,14 +156,17 @@ ]; } + if (!SpecialPowers.getBoolPref("sidebar.revamp")) { + tabsAccTree.children.push({ + role: ROLE_TEXT_CONTAINER, + children: [] + }); + } + // NB: The (3) buttons are not visible, unless manually hovered, // probably due to size reduction in this test. tabsAccTree.children.push( { - role: ROLE_TEXT_CONTAINER, - children: [] - }, - { // xul:tab ("about:license") role: ROLE_PAGETAB, children: [ diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js @@ -2177,11 +2177,12 @@ pref("pdfjs.handleOctetStream", true); // Is the sidebar positioned ahead of the content browser pref("sidebar.position_start", true); -pref("sidebar.revamp", false); -// This is nightly only for now, as we need to address bug 1933527 and bug 1934039. #ifdef NIGHTLY_BUILD +pref("sidebar.revamp", true); +// This is nightly only for now, as we need to address bug 1933527 and bug 1934039. pref("sidebar.revamp.round-content-area", true); #else +pref("sidebar.revamp", false); pref("sidebar.revamp.round-content-area", false); #endif pref("sidebar.animation.enabled", true); diff --git a/browser/base/content/test/general/browser_bug462289.js b/browser/base/content/test/general/browser_bug462289.js @@ -64,13 +64,17 @@ async function step3() { info("focusing URLBar then sending 3 Shift+Tab."); gURLBar.focus(); + const previousButtonId = Services.prefs.getBoolPref("sidebar.revamp") + ? "sidebar-button" + : "home-button"; + let focused = BrowserTestUtils.waitForEvent( - document.getElementById("home-button"), + document.getElementById(previousButtonId), "focus" ); EventUtils.synthesizeKey("VK_TAB", { shiftKey: true }); await focused; - info("Focus is now on Home button"); + info(`Focus is now on ${previousButtonId} button`); focused = BrowserTestUtils.waitForEvent( document.getElementById("tabs-newtab-button"), diff --git a/browser/base/content/test/general/browser_documentnavigation.js b/browser/base/content/test/general/browser_documentnavigation.js @@ -266,12 +266,20 @@ add_task(async function () { true, "back focus with sidebar open content" ); + + // Bug 2006225: sidebar.revamp introduces a regression where the "X" button receives + // focus instead of the search input. + let expectedSidebarFocusElement = Services.prefs.getBoolPref("sidebar.revamp") + ? sidebar.contentDocument + .getElementById("sidebar-panel-close") + .shadowRoot.querySelector("#main-button") + : sidebar.contentDocument + .getElementById("search-box") + .shadowRoot.querySelector("input"); await expectFocusOnF6( true, "bookmarksPanel", - sidebar.contentDocument - .getElementById("search-box") - .shadowRoot.querySelector("input"), + expectedSidebarFocusElement, false, "back focus with sidebar open sidebar" ); diff --git a/browser/components/extensions/test/browser/head.js b/browser/components/extensions/test/browser/head.js @@ -517,6 +517,20 @@ async function openContextMenuInPopup( return contentAreaContextMenu; } +// Ensure each test leaves the sidebar in its initial state when it completes +const initialSidebarState = { ...SidebarController.getUIState(), command: "" }; +registerCleanupFunction(async function () { + const { ObjectUtils } = ChromeUtils.importESModule( + "resource://gre/modules/ObjectUtils.sys.mjs" + ); + if ( + !ObjectUtils.deepEqual(SidebarController.getUIState(), initialSidebarState) + ) { + info("Restoring to initial sidebar state"); + await SidebarController.initializeUIState(initialSidebarState); + } +}); + async function openContextMenuInSidebar(selector = "body") { let contentAreaContextMenu = SidebarController.browser.contentDocument.getElementById( diff --git a/browser/components/preferences/tests/head.js b/browser/components/preferences/tests/head.js @@ -876,3 +876,17 @@ async function clickEtpBaselineCheckboxWithConfirm( return checkbox; } + +// Ensure each test leaves the sidebar in its initial state when it completes +const initialSidebarState = { ...SidebarController.getUIState(), command: "" }; +registerCleanupFunction(async function () { + const { ObjectUtils } = ChromeUtils.importESModule( + "resource://gre/modules/ObjectUtils.sys.mjs" + ); + if ( + !ObjectUtils.deepEqual(SidebarController.getUIState(), initialSidebarState) + ) { + info("Restoring to initial sidebar state"); + await SidebarController.initializeUIState(initialSidebarState); + } +}); diff --git a/browser/components/sidebar/tests/marionette/manifest.toml b/browser/components/sidebar/tests/marionette/manifest.toml @@ -2,6 +2,9 @@ tags = "local" ["test_default_launcher_visible.py"] +skip-if = [ + "true", # bug 2008998, fails when sidebar.revamp defaults to true. +] ["test_initialize_vertical_tabs.py"] diff --git a/browser/components/sidebar/tests/marionette/test_default_launcher_visible.py b/browser/components/sidebar/tests/marionette/test_default_launcher_visible.py @@ -90,7 +90,7 @@ class TestDefaultLauncherVisible(MarionetteTestCase): ) def test_first_use_default_visible_pref_false(self): - # We test with the default pref values, then flip sidebar.revamp to true, + # We test with the default pre-148 pref values, then flip sidebar.revamp to true, # for a profile that has never enabled or seen the sidebar launcher. # We want to ensure the sidebar state is correctly persisted and restored @@ -157,6 +157,11 @@ class TestDefaultLauncherVisible(MarionetteTestCase): self.marionette.find_element(By.ID, "browserLayoutShowSidebar").click() self.marionette.set_context("chrome") + self.assertTrue( + self.marionette.get_pref("sidebar.revamp"), + "The sidebar.revamp pref should now be true", + ) + # We expect that to add the button to the toolbar Wait(self.marionette).until( lambda _: self.is_button_visible(), @@ -176,6 +181,11 @@ class TestDefaultLauncherVisible(MarionetteTestCase): self.wait_for_sidebar_initialized() self.assertTrue( + self.marionette.get_pref("sidebar.revamp"), + "The sidebar.revamp pref should still be true", + ) + + self.assertTrue( self.is_launcher_visible(), "Sidebar launcher should still be shown after restart", ) diff --git a/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_debug_reload.js b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_debug_reload.js @@ -27,6 +27,14 @@ const L10N = new LocalizationHelper( "devtools/client/locales/toolbox.properties" ); +// When an extension with sidebar_action gets installed, the sidebar launcher may open. +// Ensure it gets closed to avoid side-effects in later tests. +const initialSidebarState = { ...SidebarController.getUIState(), command: "" }; +registerCleanupFunction(async function () { + info("Restoring to initial sidebar state"); + await SidebarController.initializeUIState(initialSidebarState); +}); + // Check that addon browsers can be reloaded via the toolbox reload shortcuts add_task(async function testWebExtensionToolboxReload() { await enableExtensionDebugging();