summaryrefslogtreecommitdiffstats
path: root/browser/components/extensions/test/browser/browser_ext_windows_remove.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/extensions/test/browser/browser_ext_windows_remove.js')
-rw-r--r--browser/components/extensions/test/browser/browser_ext_windows_remove.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/browser/components/extensions/test/browser/browser_ext_windows_remove.js b/browser/components/extensions/test/browser/browser_ext_windows_remove.js
new file mode 100644
index 0000000000..455987a908
--- /dev/null
+++ b/browser/components/extensions/test/browser/browser_ext_windows_remove.js
@@ -0,0 +1,53 @@
+/* -*- 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();
+});