1
0
Fork 0
firefox/remote/shared/test/browser/browser_WindowManager.js
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

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);
}
});