mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 10:18:41 +02:00 
			
		
		
		
	- Live update the button position when user moves the sidebar to the left or right, unless it is not in its default position. - Ensure the button is placed correctly when initially toggling revamp. - RTL is already correctly handled, so didn't make any checks to RTL_UI. - Resetting CUI will also reset the sidebar position. Differential Revision: https://phabricator.services.mozilla.com/D241226
		
			
				
	
	
		
			112 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* Any copyright is dedicated to the Public Domain.
 | 
						|
   https://creativecommons.org/publicdomain/zero/1.0/ */
 | 
						|
 | 
						|
"use strict";
 | 
						|
 | 
						|
const LEFT_POSITION = 0;
 | 
						|
const CUSTOM_POSITION = 2;
 | 
						|
 | 
						|
add_setup(async function () {
 | 
						|
  await SpecialPowers.pushPrefEnv({
 | 
						|
    set: [
 | 
						|
      ["sidebar.revamp", true],
 | 
						|
      ["sidebar.position_start", true],
 | 
						|
      ["sidebar.verticalTabs", false],
 | 
						|
    ],
 | 
						|
  });
 | 
						|
  CustomizableUI.reset();
 | 
						|
});
 | 
						|
 | 
						|
registerCleanupFunction(() => {
 | 
						|
  CustomizableUI.reset();
 | 
						|
});
 | 
						|
 | 
						|
function assertPositionEnd(message) {
 | 
						|
  const widgets = CustomizableUI.getWidgetIdsInArea(CustomizableUI.AREA_NAVBAR);
 | 
						|
  Assert.equal(widgets.at(-1), "sidebar-button", message);
 | 
						|
}
 | 
						|
 | 
						|
add_task(async function test_moving_sidebar_updates_button_placement() {
 | 
						|
  Assert.equal(
 | 
						|
    CustomizableUI.getPlacementOfWidget("sidebar-button").position,
 | 
						|
    LEFT_POSITION,
 | 
						|
    "By default, the sidebar button is on the left."
 | 
						|
  );
 | 
						|
 | 
						|
  info("Move sidebar to the right.");
 | 
						|
  await SpecialPowers.pushPrefEnv({
 | 
						|
    set: [["sidebar.position_start", false]],
 | 
						|
  });
 | 
						|
  assertPositionEnd(
 | 
						|
    "When the sidebar moves to the right, the toolbar button moves to the right."
 | 
						|
  );
 | 
						|
 | 
						|
  info("Move sidebar back to the left.");
 | 
						|
  await SpecialPowers.popPrefEnv();
 | 
						|
  Assert.equal(
 | 
						|
    CustomizableUI.getPlacementOfWidget("sidebar-button").position,
 | 
						|
    LEFT_POSITION,
 | 
						|
    "When the sidebar moves back to the left, the toolbar button moves to the left."
 | 
						|
  );
 | 
						|
});
 | 
						|
 | 
						|
add_task(async function test_retain_user_customized_button_placement() {
 | 
						|
  info("Move sidebar to the right.");
 | 
						|
  await SpecialPowers.pushPrefEnv({
 | 
						|
    set: [["sidebar.position_start", false]],
 | 
						|
  });
 | 
						|
 | 
						|
  info("Move the sidebar button around.");
 | 
						|
  CustomizableUI.moveWidgetWithinArea("sidebar-button", CUSTOM_POSITION);
 | 
						|
 | 
						|
  info("Move sidebar back to the left.");
 | 
						|
  await SpecialPowers.popPrefEnv();
 | 
						|
  Assert.equal(
 | 
						|
    CustomizableUI.getPlacementOfWidget("sidebar-button").position,
 | 
						|
    CUSTOM_POSITION,
 | 
						|
    "If user has customized the button placement, it does not auto-move."
 | 
						|
  );
 | 
						|
 | 
						|
  CustomizableUI.reset();
 | 
						|
});
 | 
						|
 | 
						|
add_task(async function test_reset_after_moving_sidebar() {
 | 
						|
  info("Move sidebar to the right.");
 | 
						|
  await SpecialPowers.pushPrefEnv({
 | 
						|
    set: [["sidebar.position_start", false]],
 | 
						|
  });
 | 
						|
 | 
						|
  info("Reset CustomizableUI.");
 | 
						|
  CustomizableUI.reset();
 | 
						|
  Assert.ok(
 | 
						|
    Services.prefs.getBoolPref("sidebar.position_start"),
 | 
						|
    "After reset, the sidebar is on the left."
 | 
						|
  );
 | 
						|
  Assert.equal(
 | 
						|
    CustomizableUI.getPlacementOfWidget("sidebar-button").position,
 | 
						|
    LEFT_POSITION,
 | 
						|
    "After reset, the sidebar button is on the left."
 | 
						|
  );
 | 
						|
 | 
						|
  info("Undo CustomizableUI reset.");
 | 
						|
  CustomizableUI.undoReset();
 | 
						|
  Assert.equal(
 | 
						|
    Services.prefs.getBoolPref("sidebar.position_start"),
 | 
						|
    false,
 | 
						|
    "After undo reset, the sidebar is on the right."
 | 
						|
  );
 | 
						|
  assertPositionEnd("After undo reset, the sidebar button is on the right.");
 | 
						|
});
 | 
						|
 | 
						|
add_task(async function test_update_placement_vertical_tabs() {
 | 
						|
  info("Move sidebar to the right and enable vertical tabs.");
 | 
						|
  await SpecialPowers.pushPrefEnv({
 | 
						|
    set: [
 | 
						|
      ["sidebar.position_start", false],
 | 
						|
      ["sidebar.verticalTabs", true],
 | 
						|
    ],
 | 
						|
  });
 | 
						|
  assertPositionEnd(
 | 
						|
    "Toolbar button is on the right side of the vertical tabs navbar."
 | 
						|
  );
 | 
						|
});
 |