tor-browser

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

commit 4739a0951cc79979b2955e011f06481f4d6ca6fc
parent 95ec7e6342fcba5b4bbb78fcda860ff5ff88d7a2
Author: Sam Foster <sfoster@mozilla.com>
Date:   Fri, 21 Nov 2025 21:44:15 +0000

Bug 1905212 - Allow less flickering in the performance tests, don't render the sidebar launcher when hidden. r=nsharpley

* Turns out we end up flickering *less* with sidebar.revamp
* Avoid loading images we don't show by skipping rendering sidebar-main until its container is visible
* Ensure the customizable UI test shows the launcher before making assertions on it

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

Diffstat:
Mbrowser/base/content/test/performance/browser.toml | 2--
Mbrowser/base/content/test/performance/head.js | 2+-
Mbrowser/components/customizableui/test/browser_sidebar_toggle.js | 15++++++++++++++-
Mbrowser/components/sidebar/SidebarState.sys.mjs | 1+
Mbrowser/components/sidebar/sidebar-main.mjs | 5+++++
5 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/browser/base/content/test/performance/browser.toml b/browser/base/content/test/performance/browser.toml @@ -16,8 +16,6 @@ prefs = [ # For perfomance tests do not enable the remote control cue, which gets set # when Marionette is enabled, but users normally don't see. "browser.chrome.disableRemoteControlCueForTests=true", - # Need to keep the revamped sidebar off until Bug 1905212 is done - "sidebar.revamp=false", ] support-files = ["head.js"] diff --git a/browser/base/content/test/performance/head.js b/browser/base/content/test/performance/head.js @@ -1013,7 +1013,7 @@ async function checkLoadedScripts({ // window for some reason. See bug 1445161. This function allows to deal with // that in a central place. function isLikelyFocusChange(rects, frame) { - if (rects.length > 3 && rects.every(r => r.y2 < 100)) { + if (rects.length >= 3 && rects.every(r => r.y2 < 100)) { // There are at least 4 areas that changed near the top of the screen. // Note that we need a bit more leeway than the titlebar height, because on // OSX other toolbarbuttons in the navigation toolbar also get disabled diff --git a/browser/components/customizableui/test/browser_sidebar_toggle.js b/browser/components/customizableui/test/browser_sidebar_toggle.js @@ -13,6 +13,19 @@ registerCleanupFunction(async function () { } }); +async function ensureSidebarLauncherIsVisible() { + await TestUtils.waitForTick(); + // Show the sidebar launcher if its hidden + if (SidebarController.sidebarContainer.hidden) { + document.getElementById("sidebar-button").doCommand(); + } + await TestUtils.waitForTick(); + Assert.ok( + BrowserTestUtils.isVisible(SidebarController.sidebarMain), + "Sidebar launcher is visible" + ); +} + var showSidebar = async function (win = window) { let button = win.document.getElementById("sidebar-button"); let sidebarFocusedPromise = BrowserTestUtils.waitForEvent( @@ -68,7 +81,7 @@ add_task(async function () { await hideSidebar(); } else { const sidebar = document.querySelector("sidebar-main"); - ok(sidebar, "Sidebar is shown."); + await ensureSidebarLauncherIsVisible(); for (const [index, toolButton] of sidebar.toolButtons.entries()) { await SidebarController.toggle(toolButton.getAttribute("view")); is( diff --git a/browser/components/sidebar/SidebarState.sys.mjs b/browser/components/sidebar/SidebarState.sys.mjs @@ -468,6 +468,7 @@ export class SidebarState { this.#launcherEverVisible = true; } this.#launcherContainerEl.hidden = !visible; + this.#launcherEl.requestUpdate(); this.#updateTabbrowser(visible); this.#sidebarBoxEl.style.paddingInlineStart = this.panelOpen && !visible ? "var(--space-small)" : "unset"; diff --git a/browser/components/sidebar/sidebar-main.mjs b/browser/components/sidebar/sidebar-main.mjs @@ -776,6 +776,11 @@ export default class SidebarMain extends MozLitElement { ); } + shouldUpdate() { + const container = window.SidebarController.sidebarContainer; + return container && !container.hidden; + } + render() { /* Add 1 to tools and extensions count for "Customize sidebar" option */ let enabledToolsAndExtensionsCount =