summaryrefslogtreecommitdiffstats
path: root/comm/mail/test/browser/message-window/browser_autohideMenubar.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mail/test/browser/message-window/browser_autohideMenubar.js')
-rw-r--r--comm/mail/test/browser/message-window/browser_autohideMenubar.js121
1 files changed, 121 insertions, 0 deletions
diff --git a/comm/mail/test/browser/message-window/browser_autohideMenubar.js b/comm/mail/test/browser/message-window/browser_autohideMenubar.js
new file mode 100644
index 0000000000..4d7c07d479
--- /dev/null
+++ b/comm/mail/test/browser/message-window/browser_autohideMenubar.js
@@ -0,0 +1,121 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/**
+ * Test that the menubar can be set to "autohide".
+ */
+
+"use strict";
+
+var utils = ChromeUtils.import("resource://testing-common/mozmill/utils.jsm");
+var {
+ be_in_folder,
+ close_message_window,
+ create_folder,
+ inboxFolder,
+ make_message_sets_in_folders,
+ mc,
+ open_selected_message_in_new_window,
+ select_click_row,
+ toggle_main_menu,
+} = ChromeUtils.import(
+ "resource://testing-common/mozmill/FolderDisplayHelpers.jsm"
+);
+
+var menuFolder;
+var menuState;
+
+add_setup(async function () {
+ menuFolder = await create_folder("menuFolder");
+ await make_message_sets_in_folders([menuFolder], [{ count: 1 }]);
+
+ // Make the menubar not autohide by default.
+ menuState = toggle_main_menu(true);
+});
+
+/**
+ * Set the autohide attribute of the menubar. That is, make the menubar not
+ * shown by default - but pressing Alt will toggle it open/closed.
+ *
+ * @param controller the mozmill controller for the window
+ * @param elem the element to click on (usually the menubar)
+ * @param hide true to hide, false otherwise
+ */
+async function set_autohide_menubar(controller, elem, hide) {
+ let contextMenu = controller.window.document.getElementById(
+ "toolbar-context-menu"
+ );
+ let popupshown = BrowserTestUtils.waitForEvent(
+ contextMenu,
+ "popupshown",
+ controller.window
+ );
+ EventUtils.synthesizeMouseAtCenter(
+ elem,
+ { type: "contextmenu" },
+ controller.window
+ );
+ await popupshown;
+ let menuitem = controller.window.document.querySelector(
+ `menuitem[toolbarid="${elem.id}"]`
+ );
+ if (menuitem.getAttribute("checked") == hide + "") {
+ EventUtils.synthesizeMouseAtCenter(menuitem, {}, controller.window);
+ await new Promise(resolve => controller.window.setTimeout(resolve, 50));
+ }
+}
+
+/**
+ * Ensure that the autohide attribute of the menubar can be set properly.
+ *
+ * @param controller the mozmill controller for the window
+ * @param menubar the menubar to test
+ */
+async function help_test_autohide(controller, menubar) {
+ function hiddenChecker(aHidden) {
+ // The hidden attribute isn't what is set, so it's useless here -- use
+ // information from the box model instead.
+ return () => {
+ return (menubar.getBoundingClientRect().height != 0) != aHidden;
+ };
+ }
+ await TestUtils.waitForCondition(
+ () => Services.focus.activeWindow == controller.window
+ );
+ await set_autohide_menubar(controller, menubar, true);
+ utils.waitFor(hiddenChecker(true), "Menubar should be hidden");
+
+ menubar.focus();
+ EventUtils.synthesizeKey("VK_ALT", {}, controller.window);
+ utils.waitFor(
+ hiddenChecker(false),
+ "Menubar should be shown after pressing ALT!"
+ );
+
+ info("Menubar showing or not should toggle for ALT.");
+ await set_autohide_menubar(controller, menubar, false);
+ utils.waitFor(hiddenChecker(false), "Menubar should be shown");
+ Assert.ok("help_test_autohide success");
+}
+
+add_task(async function test_autohidden_menubar_3pane() {
+ let menubar = mc.window.document.getElementById("toolbar-menubar");
+ await help_test_autohide(mc, menubar);
+});
+
+add_task(async function test_autohidden_menubar_message_window() {
+ await be_in_folder(menuFolder);
+ select_click_row(0);
+ let msgc = await open_selected_message_in_new_window();
+ let menubar = msgc.window.document.getElementById("toolbar-menubar");
+
+ await help_test_autohide(msgc, menubar);
+ close_message_window(msgc);
+});
+
+registerCleanupFunction(async function () {
+ toggle_main_menu(menuState);
+ await be_in_folder(inboxFolder);
+ menuFolder.deleteSelf(null);
+});