summaryrefslogtreecommitdiffstats
path: root/browser/components/extensions/test/browser/browser_ext_port_disconnect_on_window_close.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/extensions/test/browser/browser_ext_port_disconnect_on_window_close.js')
-rw-r--r--browser/components/extensions/test/browser/browser_ext_port_disconnect_on_window_close.js39
1 files changed, 39 insertions, 0 deletions
diff --git a/browser/components/extensions/test/browser/browser_ext_port_disconnect_on_window_close.js b/browser/components/extensions/test/browser/browser_ext_port_disconnect_on_window_close.js
new file mode 100644
index 0000000000..84bc4a3ff0
--- /dev/null
+++ b/browser/components/extensions/test/browser/browser_ext_port_disconnect_on_window_close.js
@@ -0,0 +1,39 @@
+/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim: set sts=2 sw=2 et tw=80: */
+"use strict";
+
+// Regression test for https://bugzil.la/1392067 .
+add_task(async function connect_from_window_and_close() {
+ let extension = ExtensionTestUtils.loadExtension({
+ background() {
+ browser.runtime.onConnect.addListener(port => {
+ browser.test.assertEq("page_to_bg", port.name, "expected port");
+ port.onDisconnect.addListener(() => {
+ browser.test.assertEq(
+ null,
+ port.error,
+ "port should be disconnected without errors"
+ );
+ browser.test.sendMessage("port_disconnected");
+ });
+ browser.windows.remove(port.sender.tab.windowId);
+ });
+
+ browser.windows.create({ url: "page.html" });
+ },
+
+ files: {
+ "page.html": `<!DOCTYPE html><meta charset="utf-8"><script src="page.js"></script>`,
+ "page.js": function () {
+ let port = browser.runtime.connect({ name: "page_to_bg" });
+ port.onDisconnect.addListener(() => {
+ browser.test.fail("Unexpected onDisconnect event in page");
+ });
+ },
+ },
+ });
+
+ await extension.startup();
+ await extension.awaitMessage("port_disconnected");
+ await extension.unload();
+});