Bug 1944931 - Ensure sidebar.visibility gets set when vertical tabs are enabled. r=sidebar-reviewers,sclements,nsharpley

Differential Revision: https://phabricator.services.mozilla.com/D236447
This commit is contained in:
Sam Foster
2025-02-07 00:33:29 +00:00
parent d9f6b023c3
commit 3212d879b7
8 changed files with 90 additions and 26 deletions

View File

@@ -148,6 +148,11 @@ add_setup(async function () {
// The page actions button is not normally visible, so we must
// unhide it.
BrowserPageActions.mainButtonNode.style.visibility = "visible";
// Make sure the sidebar launcher is visible (when sidebar.revamp is true);
// previous tests might have hidden it.
await SidebarController.initializeUIState({ launcherVisible: true });
registerCleanupFunction(() => {
BrowserPageActions.mainButtonNode.style.removeProperty("visibility");
});

View File

@@ -21,12 +21,14 @@ add_setup(async function setup() {
registerCleanupFunction(async () => {
SidebarController.hide();
});
await SidebarController.initializeUIState({ launcherVisible: true });
});
add_task(async function test_integrated_sidebar() {
await BrowserTestUtils.withNewTab(CONTENT_PAGE, async function (browser) {
const { document } = browser.ownerGlobal;
let sidebar = document.querySelector("sidebar-main");
await sidebar.updateComplete;
let reviewCheckerButton = await TestUtils.waitForCondition(
() =>
sidebar.shadowRoot.querySelector(

View File

@@ -20,11 +20,15 @@ XPCOMUtils.defineLazyPreferenceGetter(
"sidebarBackupState",
BACKUP_STATE_PREF
);
XPCOMUtils.defineLazyPreferenceGetter(
lazy,
"verticalTabsEnabled",
"sidebar.verticalTabs",
false
false,
(pref, oldVal, newVal) => {
SidebarManager.handleVerticalTabsPrefChange(newVal);
}
);
export const SidebarManager = {
@@ -74,7 +78,16 @@ export const SidebarManager = {
);
});
if (!lazy.verticalTabsEnabled) {
this.handleVerticalTabsPrefChange(lazy.verticalTabsEnabled);
},
/**
* Adjust for a change to the verticalTabs pref.
*/
handleVerticalTabsPrefChange(isEnabled) {
if (isEnabled) {
Services.prefs.setStringPref(VISIBILITY_SETTING_PREF, "always-show");
} else {
Services.prefs.setStringPref(VISIBILITY_SETTING_PREF, "hide-sidebar");
}
},

View File

@@ -1980,6 +1980,7 @@ XPCOMUtils.defineLazyPreferenceGetter(
}
}
);
XPCOMUtils.defineLazyPreferenceGetter(
SidebarController,
"sidebarRevampVisibility",
@@ -1989,19 +1990,21 @@ XPCOMUtils.defineLazyPreferenceGetter(
if (!SidebarController.inPopup && !SidebarController.uninitializing) {
SidebarController.toggleExpandOnHover(newValue === "expand-on-hover");
SidebarController.recordVisibilitySetting(newValue);
if (SidebarController._state) {
const isVerticalTabs = SidebarController.sidebarVerticalTabsEnabled;
SidebarController._state.revampVisibility = newValue;
SidebarController._state.updateVisibility(
(newValue != "hide-sidebar" &&
SidebarController.sidebarVerticalTabsEnabled) ||
!SidebarController.sidebarVerticalTabsEnabled,
(newValue != "hide-sidebar" && isVerticalTabs) || !isVerticalTabs,
false,
false,
newValue !== "expand-on-hover"
);
}
SidebarController.updateToolbarButton();
}
}
);
XPCOMUtils.defineLazyPreferenceGetter(
SidebarController,
"sidebarVerticalTabsEnabled",
@@ -2010,10 +2013,6 @@ XPCOMUtils.defineLazyPreferenceGetter(
(_aPreference, _previousValue, newValue) => {
if (!SidebarController.uninitializing && !SidebarController.inPopup) {
SidebarController.recordTabsLayoutSetting(newValue);
Services.prefs.setStringPref(
SidebarController.VISIBILITY_PREF,
newValue ? "always-show" : "hide-sidebar"
);
}
}
);

View File

@@ -5,11 +5,13 @@
add_setup(async () => {
await SpecialPowers.pushPrefEnv({
set: [
["sidebar.verticalTabs", true],
["sidebar.visibility", "always-show"],
],
set: [["sidebar.verticalTabs", true]],
});
Assert.equal(
Services.prefs.getStringPref("sidebar.visibility"),
"always-show",
"Sanity check the visibilty pref when verticalTabs are enabled"
);
});
registerCleanupFunction(async () => {
await SpecialPowers.popPrefEnv();

View File

@@ -154,6 +154,11 @@ add_task(async function test_toggle_vertical_tabs_from_a_tab() {
await SpecialPowers.pushPrefEnv({
set: [["sidebar.verticalTabs", false]],
});
Assert.equal(
Services.prefs.getStringPref("sidebar.visibility"),
"hide-sidebar",
"Sanity check the visibilty pref is updated when verticalTabs are disabled"
);
info("Enable vertical tabs from a tab.");
const tabContextMenu = document.getElementById("tabContextMenu");
@@ -170,6 +175,11 @@ add_task(async function test_toggle_vertical_tabs_from_a_tab() {
() => gBrowser.tabContainer.verticalMode,
"Vertical tabs are enabled."
);
Assert.equal(
Services.prefs.getStringPref("sidebar.visibility"),
"always-show",
"Sanity check the visibilty pref is updated when verticalTabs are enabled"
);
info("Disable vertical tabs from a tab.");
await openAndWaitForContextMenu(tabContextMenu, gBrowser.selectedTab, () => {
@@ -184,6 +194,11 @@ add_task(async function test_toggle_vertical_tabs_from_a_tab() {
() => !gBrowser.tabContainer.verticalMode,
"Vertical tabs are disabled."
);
Assert.equal(
Services.prefs.getStringPref("sidebar.visibility"),
"hide-sidebar",
"Sanity check the visibilty pref is updated when verticalTabs are disabled"
);
await SpecialPowers.popPrefEnv();
});
@@ -192,6 +207,11 @@ add_task(async function test_toggle_vertical_tabs_from_tab_strip() {
await SpecialPowers.pushPrefEnv({
set: [["sidebar.verticalTabs", false]],
});
Assert.equal(
Services.prefs.getStringPref("sidebar.visibility"),
"hide-sidebar",
"Sanity check the visibilty pref when verticalTabs are disabled"
);
info("Enable vertical tabs from the toolbar.");
const toolbarContextMenu = document.getElementById("toolbar-context-menu");
@@ -217,6 +237,11 @@ add_task(async function test_toggle_vertical_tabs_from_tab_strip() {
() => gBrowser.tabContainer.verticalMode,
"Vertical tabs are enabled."
);
Assert.equal(
Services.prefs.getStringPref("sidebar.visibility"),
"always-show",
"Sanity check the visibilty pref when verticalTabs are enabled"
);
// Open customize sidebar panel from context menu
await openAndWaitForContextMenu(
@@ -250,6 +275,11 @@ add_task(async function test_toggle_vertical_tabs_from_tab_strip() {
() => !gBrowser.tabContainer.verticalMode,
"Vertical tabs are disabled."
);
Assert.equal(
Services.prefs.getStringPref("sidebar.visibility"),
"hide-sidebar",
"Sanity check the visibilty pref when verticalTabs are disabled"
);
window.SidebarController.hide();
await SpecialPowers.popPrefEnv();

View File

@@ -169,6 +169,11 @@ add_task(async function test_flip_revamp_pref() {
ok(BrowserTestUtils.isVisible(verticalTabs), "Vertical tabs slot is visible");
ok(sidebar, "Revamped sidebar is shown initially.");
Assert.equal(
Services.prefs.getStringPref("sidebar.visibility"),
"always-show",
"Sanity check the visibilty pref when verticalTabs are enabled"
);
await SpecialPowers.pushPrefEnv({ set: [["sidebar.revamp", false]] });

View File

@@ -19,9 +19,14 @@ add_setup(async () => {
set: [
[SIDEBAR_TAB_DIRECTION_PREF, true],
[SIDEBAR_BUTTON_INTRODUCED_PREF, false],
[SIDEBAR_VISIBILITY_PREF, "always-show"],
],
});
Assert.equal(
Services.prefs.getStringPref(SIDEBAR_VISIBILITY_PREF),
"always-show",
"Sanity check the visibilty pref when verticalTabs are enabled"
);
let navbarDefaults = gAreas.get("nav-bar").get("defaultPlacements");
let hadSavedState = !!CustomizableUI.getTestOnlyInternalProp("gSavedState");
if (!hadSavedState) {
@@ -179,6 +184,13 @@ add_task(async function test_states_for_hide_sidebar() {
await SpecialPowers.pushPrefEnv({
set: [[SIDEBAR_TAB_DIRECTION_PREF, false]],
});
Assert.equal(
Services.prefs.getStringPref(SIDEBAR_VISIBILITY_PREF),
"hide-sidebar",
"Sanity check the visibilty pref when verticalTabs are disabled"
);
const win = await BrowserTestUtils.openNewBrowserWindow();
const { SidebarController } = win;
const { sidebarContainer, sidebarMain, toolbarButton } = SidebarController;
@@ -221,12 +233,8 @@ add_task(async function test_states_for_hide_sidebar() {
};
// Hide the sidebar
info("Check default hidden state.");
await checkStates({ hidden: false });
info("Hide sidebar using the toolbar button.");
EventUtils.synthesizeMouseAtCenter(toolbarButton, {}, win);
info("Check the launcher is initially hidden");
await checkStates({ hidden: true });
info("Show sidebar using the toolbar button.");
EventUtils.synthesizeMouseAtCenter(toolbarButton, {}, win);
await checkStates({ hidden: false });
@@ -297,7 +305,7 @@ add_task(async function test_states_for_hide_sidebar_vertical() {
);
};
// Hide the sidebar
// Check initial sidebar state - it should be hidden
info("Check default hidden state.");
await checkStates({ hidden: true, expanded: false });
info("Show expanded sidebar using the toolbar button.");