Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set sts=2 sw=2 et tw=80: */
"use strict";
add_task(async function testWindowRemove() {
let extension = ExtensionTestUtils.loadExtension({
async background() {
async function closeWindow(id) {
let window = await browser.windows.get(id);
return new Promise(function (resolve) {
browser.windows.onRemoved.addListener(async function listener(
windowId
) {
browser.windows.onRemoved.removeListener(listener);
await browser.test.assertEq(
windowId,
window.id,
"The right window was closed"
);
await browser.test.assertRejects(
browser.windows.get(windowId),
new RegExp(`Invalid window ID: ${windowId}`),
"The window was really closed."
);
resolve();
});
browser.windows.remove(id);
});
}
browser.test.log("Create a new window and close it by its ID");
let newWindow = await browser.windows.create();
await closeWindow(newWindow.id);
browser.test.log("Create a new window and close it by WINDOW_ID_CURRENT");
await browser.windows.create();
await closeWindow(browser.windows.WINDOW_ID_CURRENT);
browser.test.log("Assert failure for bad parameter.");
await browser.test.assertThrows(
() => browser.windows.remove(-3),
/-3 is too small \(must be at least -2\)/,
"Invalid windowId throws"
);
browser.test.notifyPass("window-remove");
},
});
await extension.startup();
await extension.awaitFinish("window-remove");
await extension.unload();
});