diff options
Diffstat (limited to 'browser/base/content/test/general/browser_menuButtonFitts.js')
-rw-r--r-- | browser/base/content/test/general/browser_menuButtonFitts.js | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/browser/base/content/test/general/browser_menuButtonFitts.js b/browser/base/content/test/general/browser_menuButtonFitts.js new file mode 100644 index 0000000000..a8d7a1e8cb --- /dev/null +++ b/browser/base/content/test/general/browser_menuButtonFitts.js @@ -0,0 +1,69 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ + */ + +"use strict"; + +function getNavBarEndPosition() { + let navBar = document.getElementById("nav-bar"); + let boundingRect = navBar.getBoundingClientRect(); + + // Find where the nav-bar is vertically. + let y = boundingRect.top + Math.floor(boundingRect.height / 2); + // Use the last pixel of the screen since it is maximized. + let x = boundingRect.width - 1; + return { x, y }; +} + +/** + * Clicking the right end of a maximized window should open the hamburger menu. + */ +add_task(async function test_clicking_hamburger_edge_fitts() { + if (window.windowState != window.STATE_MAXIMIZED) { + info(`Waiting for maximize, current state: ${window.windowState}`); + let resizeDone = BrowserTestUtils.waitForEvent( + window, + "resize", + false, + () => window.outerWidth >= screen.width - 1 + ); + let maximizeDone = BrowserTestUtils.waitForEvent(window, "sizemodechange"); + window.maximize(); + await maximizeDone; + await resizeDone; + } + + is(window.windowState, window.STATE_MAXIMIZED, "should be maximized"); + + let { x, y } = getNavBarEndPosition(); + info(`Clicking in ${x}, ${y}`); + + let popupHiddenResolve; + let popupHiddenPromise = new Promise(resolve => { + popupHiddenResolve = resolve; + }); + async function onPopupHidden() { + PanelUI.panel.removeEventListener("popuphidden", onPopupHidden); + + info("Waiting for restore"); + + let restoreDone = BrowserTestUtils.waitForEvent(window, "sizemodechange"); + window.restore(); + await restoreDone; + + popupHiddenResolve(); + } + function onPopupShown() { + PanelUI.panel.removeEventListener("popupshown", onPopupShown); + ok(true, "Clicking at the far edge of the window opened the menu popup."); + PanelUI.panel.addEventListener("popuphidden", onPopupHidden); + PanelUI.hide(); + } + registerCleanupFunction(function() { + PanelUI.panel.removeEventListener("popupshown", onPopupShown); + PanelUI.panel.removeEventListener("popuphidden", onPopupHidden); + }); + PanelUI.panel.addEventListener("popupshown", onPopupShown); + EventUtils.synthesizeMouseAtPoint(x, y, {}, window); + await popupHiddenPromise; +}); |