69 lines
2.2 KiB
JavaScript
69 lines
2.2 KiB
JavaScript
/* 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;
|
|
});
|