function checkWindow(msg, win, sizemode, width, height) {
is(win.windowState, sizemode, "sizemode should match " + msg); if (sizemode == win.STATE_NORMAL) {
is(win.innerWidth, width, "width should match " + msg);
is(win.innerHeight, height, "height should match " + msg);
}
}
function todoCheckWindow(msg, win, sizemode) {
todo_is(win.windowState, sizemode, "sizemode should match " + msg);
}
// Persistence of "sizemode" is delayed to 500ms after it's changed. // See SIZE_PERSISTENCE_TIMEOUT in nsWebShellWindow.cpp. // We wait for 1000ms to ensure that it is actually persisted. // We can also wait for condition that XULStore does have the value // set, but that way we cannot test the cases where we don't expect // persistence to happen. function waitForSizeModePersisted() { returnnew Promise(resolve => {
setTimeout(resolve, 1000);
});
}
async function changeSizeMode(func) {
let promiseSizeModeChange = promiseMessage("sizemodechange");
func();
await promiseSizeModeChange;
await waitForSizeModePersisted();
}
async function runTest(aWindow) {
gWindow = aWindow;
gTitlebar = aWindow != "window_maximized_persist_with_no_titlebar.xhtml";
let win = openWindow();
await SimpleTest.promiseFocus(win);
// Open a new window to check persisted sizemode.
win = openWindow();
await SimpleTest.promiseFocus(win);
checkWindow("when reopen to maximized", win, win.STATE_MAXIMIZED); // Restore the window. if (win.windowState == win.STATE_MAXIMIZED) {
await changeSizeMode(() => win.restore());
}
checkWindow("after restore window", win, win.STATE_NORMAL, WIDTH, HEIGHT);
win.close();
// Open a new window again to check persisted sizemode.
win = openWindow();
await SimpleTest.promiseFocus(win);
checkWindow("when reopen to normal", win, win.STATE_NORMAL, WIDTH, HEIGHT); // And maximize the window again for next test.
await changeSizeMode(() => win.maximize());
win.close();
// Open a new window again with centerscreen which shouldn't revert // the persisted sizemode.
win = openWindow("centerscreen");
await SimpleTest.promiseFocus(win);
checkWindow("when open with centerscreen", win, win.STATE_MAXIMIZED);
win.close();
// Linux doesn't seem to persist sizemode across opening window // with specified size, so mark it expected fail for now. const isLinux = navigator.platform.includes("Linux");
let checkWindowMayFail = isLinux ? todoCheckWindow : checkWindow;
// Open a new window with size specified.
win = openWindow("width=400,height=400");
await SimpleTest.promiseFocus(win);
checkWindow("when reopen with size", win, win.STATE_NORMAL, 400, 400);
await waitForSizeModePersisted();
win.close();
// Open a new window without size specified. // The window opened before should not change persisted sizemode.
win = openWindow();
await SimpleTest.promiseFocus(win);
checkWindowMayFail("when reopen without size", win, win.STATE_MAXIMIZED);
win.close();
// Open a new window with sizing synchronously.
win = openWindow();
win.resizeTo(500 + widthDiff, 500 + heightDiff);
await SimpleTest.promiseFocus(win);
checkWindow("when sized synchronously", win, win.STATE_NORMAL, 500, 500);
await waitForSizeModePersisted();
win.close();
// Open a new window without any sizing. // The window opened before should not change persisted sizemode.
win = openWindow();
await SimpleTest.promiseFocus(win);
checkWindowMayFail("when reopen without sizing", win, win.STATE_MAXIMIZED);
win.close();
// Clean up the XUL store for the given window.
Services.xulStore.removeDocument(chrome_url);
SimpleTest.finish();
}
Messung V0.5
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.