Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Errors

/* Any copyright is dedicated to the Public Domain.
*/
"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;
});