summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/sidebar/browser_sidebar_keys.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/sidebar/browser_sidebar_keys.js')
-rw-r--r--browser/base/content/test/sidebar/browser_sidebar_keys.js108
1 files changed, 108 insertions, 0 deletions
diff --git a/browser/base/content/test/sidebar/browser_sidebar_keys.js b/browser/base/content/test/sidebar/browser_sidebar_keys.js
new file mode 100644
index 0000000000..6bd072a760
--- /dev/null
+++ b/browser/base/content/test/sidebar/browser_sidebar_keys.js
@@ -0,0 +1,108 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+async function testSidebarKeyToggle(key, options, expectedSidebarId) {
+ EventUtils.synthesizeMouseAtCenter(gURLBar.textbox, {});
+ let promiseShown = BrowserTestUtils.waitForEvent(window, "SidebarShown");
+ EventUtils.synthesizeKey(key, options);
+ await promiseShown;
+ Assert.equal(
+ document.getElementById("sidebar-box").getAttribute("sidebarcommand"),
+ expectedSidebarId
+ );
+ EventUtils.synthesizeKey(key, options);
+ Assert.ok(!SidebarUI.isOpen);
+}
+
+add_task(async function test_sidebar_keys() {
+ registerCleanupFunction(() => SidebarUI.hide());
+
+ await testSidebarKeyToggle("b", { accelKey: true }, "viewBookmarksSidebar");
+
+ let options = { accelKey: true, shiftKey: AppConstants.platform == "macosx" };
+ await testSidebarKeyToggle("h", options, "viewHistorySidebar");
+});
+
+add_task(async function test_sidebar_in_customize_mode() {
+ // Test bug 1756385 - widgets to appear unchecked in customize mode. Test that
+ // the sidebar button widget doesn't appear checked, and that the sidebar
+ // button toggle is inert while in customize mode.
+ let { CustomizableUI } = ChromeUtils.import(
+ "resource:///modules/CustomizableUI.jsm"
+ );
+ registerCleanupFunction(() => SidebarUI.hide());
+
+ let placement = CustomizableUI.getPlacementOfWidget("sidebar-button");
+ if (!(placement?.area == CustomizableUI.AREA_NAVBAR)) {
+ CustomizableUI.addWidgetToArea(
+ "sidebar-button",
+ CustomizableUI.AREA_NAVBAR,
+ 0
+ );
+ CustomizableUI.ensureWidgetPlacedInWindow("sidebar-button", window);
+ registerCleanupFunction(function() {
+ CustomizableUI.removeWidgetFromArea("sidebar-button");
+ });
+ }
+
+ let widgetIcon = CustomizableUI.getWidget("sidebar-button")
+ .forWindow(window)
+ .node?.querySelector(".toolbarbutton-icon");
+ // Get the alpha value of the sidebar toggle widget's background
+ let getBGAlpha = () =>
+ InspectorUtils.colorToRGBA(
+ getComputedStyle(widgetIcon).getPropertyValue("background-color")
+ ).a;
+
+ let promiseShown = BrowserTestUtils.waitForEvent(window, "SidebarShown");
+ SidebarUI.show("viewBookmarksSidebar");
+ await promiseShown;
+
+ Assert.greater(
+ getBGAlpha(),
+ 0,
+ "Sidebar widget background should appear checked"
+ );
+
+ // Enter customize mode. This should disable the toggle and make the sidebar
+ // toggle widget appear unchecked.
+ let customizationReadyPromise = BrowserTestUtils.waitForEvent(
+ gNavToolbox,
+ "customizationready"
+ );
+ gCustomizeMode.enter();
+ await customizationReadyPromise;
+
+ Assert.equal(
+ getBGAlpha(),
+ 0,
+ "Sidebar widget background should appear unchecked"
+ );
+
+ // Attempt toggle - should fail in customize mode.
+ await SidebarUI.toggle();
+ ok(SidebarUI.isOpen, "Sidebar is still open");
+
+ // Exit customize mode. This should re-enable the toggle and make the sidebar
+ // toggle widget appear checked again, since toggle() didn't hide the sidebar.
+ let afterCustomizationPromise = BrowserTestUtils.waitForEvent(
+ gNavToolbox,
+ "aftercustomization"
+ );
+ gCustomizeMode.exit();
+ await afterCustomizationPromise;
+
+ Assert.greater(
+ getBGAlpha(),
+ 0,
+ "Sidebar widget background should appear checked again"
+ );
+
+ await SidebarUI.toggle();
+ ok(!SidebarUI.isOpen, "Sidebar is closed");
+ Assert.equal(
+ getBGAlpha(),
+ 0,
+ "Sidebar widget background should appear unchecked"
+ );
+});