269 lines
8.2 KiB
JavaScript
269 lines
8.2 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
https://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const { windowManager } = ChromeUtils.importESModule(
|
|
"chrome://remote/content/shared/WindowManager.sys.mjs"
|
|
);
|
|
const { WindowState } = ChromeUtils.importESModule(
|
|
"chrome://remote/content/shared/WindowManager.sys.mjs"
|
|
);
|
|
|
|
const { AppInfo } = ChromeUtils.importESModule(
|
|
"chrome://remote/content/shared/AppInfo.sys.mjs"
|
|
);
|
|
|
|
add_task(async function test_adjustWindowGeometry() {
|
|
const testWin = await BrowserTestUtils.openNewBrowserWindow();
|
|
const isWayland = AppInfo.isWayland;
|
|
|
|
try {
|
|
await windowManager.adjustWindowGeometry(testWin, 100, 100, 800, 600);
|
|
is(testWin.outerWidth, 800, "Window width is set to initial value");
|
|
is(testWin.outerHeight, 600, "Window height is set to initial value");
|
|
|
|
if (!isWayland) {
|
|
is(testWin.screenX, 100, "Window x position is set to initial value");
|
|
is(testWin.screenY, 100, "Window y position is set to initial value");
|
|
}
|
|
|
|
await windowManager.adjustWindowGeometry(testWin, null, null, 640, 480);
|
|
is(testWin.outerWidth, 640, "Window width is updated");
|
|
is(testWin.outerHeight, 480, "Window height is updated");
|
|
|
|
if (!isWayland) {
|
|
is(testWin.screenX, 100, "Window x position stays at initial value");
|
|
is(testWin.screenY, 100, "Window y position stays at initial value");
|
|
}
|
|
|
|
await windowManager.adjustWindowGeometry(testWin, 200, 200, null, null);
|
|
if (!isWayland) {
|
|
is(testWin.screenX, 200, "Window x position is updated");
|
|
is(testWin.screenY, 200, "Window y position is updated");
|
|
}
|
|
is(testWin.outerWidth, 640, "Window width stays at previous value");
|
|
is(testWin.outerHeight, 480, "Window height stays at previous value");
|
|
|
|
await windowManager.adjustWindowGeometry(testWin, 200, 200, 560, 450);
|
|
is(testWin.outerWidth, 560, "Window width is updated");
|
|
is(testWin.outerHeight, 450, "Window height is updated");
|
|
if (!isWayland) {
|
|
is(testWin.screenX, 200, "Window x position is updated");
|
|
is(testWin.screenY, 200, "Window y position is updated");
|
|
}
|
|
} finally {
|
|
await BrowserTestUtils.closeWindow(testWin);
|
|
}
|
|
});
|
|
|
|
add_task(async function test_adjustWindowGeometry_invalid_values() {
|
|
const testWin = await BrowserTestUtils.openNewBrowserWindow();
|
|
const isWayland = AppInfo.isWayland;
|
|
|
|
const originalWidth = testWin.outerWidth;
|
|
const originalHeight = testWin.outerHeight;
|
|
const originalX = testWin.screenX;
|
|
const originalY = testWin.screenY;
|
|
|
|
let minWidth, minHeight;
|
|
|
|
try {
|
|
await windowManager.adjustWindowGeometry(testWin, 100, 100, 50, 50);
|
|
minWidth = testWin.outerWidth;
|
|
minHeight = testWin.outerHeight;
|
|
|
|
await windowManager.adjustWindowGeometry(
|
|
testWin,
|
|
originalWidth,
|
|
originalHeight,
|
|
originalX,
|
|
originalY
|
|
);
|
|
|
|
await windowManager.adjustWindowGeometry(testWin, 100, 100, 100, 100);
|
|
is(testWin.outerWidth, minWidth, "Width is set to minimum allowed width");
|
|
is(
|
|
testWin.outerHeight,
|
|
minHeight,
|
|
"Height is set to minimum allowed height"
|
|
);
|
|
if (!isWayland) {
|
|
is(testWin.screenX, 100, "Window x-coordinate is adjusted");
|
|
is(testWin.screenY, 100, "Window y-coordinate is adjusted");
|
|
}
|
|
|
|
await windowManager.adjustWindowGeometry(testWin, 100, 100, 600.5, 300.7);
|
|
is(testWin.outerWidth, 600, "Decimal width is floored");
|
|
is(testWin.outerHeight, 300, "Decimal height is floored");
|
|
if (!isWayland) {
|
|
is(testWin.screenX, 100, "Window x-coordinate is adjusted");
|
|
is(testWin.screenY, 100, "Window y-coordinate is adjusted");
|
|
}
|
|
} finally {
|
|
await BrowserTestUtils.closeWindow(testWin);
|
|
}
|
|
});
|
|
|
|
add_task(async function test_windows() {
|
|
const win1 = await BrowserTestUtils.openNewBrowserWindow();
|
|
const win2 = await BrowserTestUtils.openNewBrowserWindow();
|
|
const win3 = await BrowserTestUtils.openNewBrowserWindow();
|
|
|
|
const expectedWindows = [gBrowser.ownerGlobal, win1, win2, win3];
|
|
|
|
try {
|
|
is(
|
|
windowManager.windows.length,
|
|
5,
|
|
"All browser windows and the Mochikit harness window were returned"
|
|
);
|
|
ok(
|
|
expectedWindows.every(win => windowManager.windows.includes(win)),
|
|
"Expected windows were returned"
|
|
);
|
|
} finally {
|
|
await BrowserTestUtils.closeWindow(win3);
|
|
await BrowserTestUtils.closeWindow(win2);
|
|
await BrowserTestUtils.closeWindow(win1);
|
|
}
|
|
});
|
|
|
|
add_task(async function test_minimizeWindow() {
|
|
const testWin = await BrowserTestUtils.openNewBrowserWindow();
|
|
|
|
try {
|
|
await windowManager.adjustWindowGeometry(testWin, 100, 100, 800, 600);
|
|
is(testWin.outerWidth, 800, "Window width is set to initial value");
|
|
is(testWin.outerHeight, 600, "Window height is set to initial value");
|
|
|
|
is(
|
|
WindowState.from(testWin.windowState),
|
|
WindowState.Normal,
|
|
"Window is initially in normal state"
|
|
);
|
|
|
|
await windowManager.minimizeWindow(testWin);
|
|
|
|
is(
|
|
WindowState.from(testWin.windowState),
|
|
WindowState.Minimized,
|
|
"Window is minimized"
|
|
);
|
|
|
|
await windowManager.minimizeWindow(testWin);
|
|
is(
|
|
WindowState.from(testWin.windowState),
|
|
WindowState.Minimized,
|
|
"Minimizing an already minimized window has no effect"
|
|
);
|
|
} finally {
|
|
await BrowserTestUtils.closeWindow(testWin);
|
|
}
|
|
});
|
|
|
|
add_task(async function test_maximizeWindow() {
|
|
const testWin = await BrowserTestUtils.openNewBrowserWindow();
|
|
|
|
try {
|
|
await windowManager.adjustWindowGeometry(testWin, 100, 100, 800, 600);
|
|
is(testWin.outerWidth, 800, "Window width is set to initial value");
|
|
is(testWin.outerHeight, 600, "Window height is set to initial value");
|
|
|
|
is(
|
|
WindowState.from(testWin.windowState),
|
|
WindowState.Normal,
|
|
"Window is initially in normal state"
|
|
);
|
|
|
|
await windowManager.maximizeWindow(testWin);
|
|
is(
|
|
WindowState.from(testWin.windowState),
|
|
WindowState.Maximized,
|
|
"Window is maximized"
|
|
);
|
|
|
|
await windowManager.maximizeWindow(testWin);
|
|
is(
|
|
WindowState.from(testWin.windowState),
|
|
WindowState.Maximized,
|
|
"Maximizing an already maximized window has no effect"
|
|
);
|
|
} finally {
|
|
await BrowserTestUtils.closeWindow(testWin);
|
|
}
|
|
});
|
|
|
|
add_task(async function test_restoreWindow() {
|
|
const testWin = await BrowserTestUtils.openNewBrowserWindow();
|
|
|
|
try {
|
|
await windowManager.maximizeWindow(testWin);
|
|
is(
|
|
WindowState.from(testWin.windowState),
|
|
WindowState.Maximized,
|
|
"Window is maximized"
|
|
);
|
|
|
|
await windowManager.restoreWindow(testWin);
|
|
is(
|
|
WindowState.from(testWin.windowState),
|
|
WindowState.Normal,
|
|
"Window is restored to normal state"
|
|
);
|
|
|
|
await windowManager.restoreWindow(testWin);
|
|
is(
|
|
WindowState.from(testWin.windowState),
|
|
WindowState.Normal,
|
|
"Restoring an already normal window has no effect"
|
|
);
|
|
} finally {
|
|
await BrowserTestUtils.closeWindow(testWin);
|
|
}
|
|
});
|
|
|
|
add_task(async function test_setFullscreen() {
|
|
const testWin = await BrowserTestUtils.openNewBrowserWindow();
|
|
|
|
try {
|
|
await windowManager.adjustWindowGeometry(testWin, 100, 100, 800, 600);
|
|
is(testWin.outerWidth, 800, "Window width is set to initial value");
|
|
is(testWin.outerHeight, 600, "Window height is set to initial value");
|
|
is(
|
|
WindowState.from(testWin.windowState),
|
|
WindowState.Normal,
|
|
"Window is initially in normal state"
|
|
);
|
|
|
|
await windowManager.setFullscreen(testWin, true);
|
|
is(
|
|
WindowState.from(testWin.windowState),
|
|
WindowState.Fullscreen,
|
|
"Window entered fullscreen mode"
|
|
);
|
|
|
|
await windowManager.setFullscreen(testWin, true);
|
|
is(
|
|
WindowState.from(testWin.windowState),
|
|
WindowState.Fullscreen,
|
|
"Setting fullscreen when already in fullscreen mode has no effect"
|
|
);
|
|
|
|
await windowManager.setFullscreen(testWin, false);
|
|
is(
|
|
WindowState.from(testWin.windowState),
|
|
WindowState.Normal,
|
|
"Window exited fullscreen mode and returned to normal state"
|
|
);
|
|
|
|
await windowManager.setFullscreen(testWin, false);
|
|
is(
|
|
WindowState.from(testWin.windowState),
|
|
WindowState.Normal,
|
|
"Exiting fullscreen when already in normal state has no effect"
|
|
);
|
|
} finally {
|
|
await BrowserTestUtils.closeWindow(testWin);
|
|
}
|
|
});
|