summaryrefslogtreecommitdiffstats
path: root/browser/components/extensions/test/browser/browser_ext_sidebarAction_runtime.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/extensions/test/browser/browser_ext_sidebarAction_runtime.js')
-rw-r--r--browser/components/extensions/test/browser/browser_ext_sidebarAction_runtime.js76
1 files changed, 76 insertions, 0 deletions
diff --git a/browser/components/extensions/test/browser/browser_ext_sidebarAction_runtime.js b/browser/components/extensions/test/browser/browser_ext_sidebarAction_runtime.js
new file mode 100644
index 0000000000..55c83ee0b1
--- /dev/null
+++ b/browser/components/extensions/test/browser/browser_ext_sidebarAction_runtime.js
@@ -0,0 +1,76 @@
+"use strict";
+
+function background() {
+ browser.runtime.onConnect.addListener(port => {
+ browser.test.assertEq(port.name, "ernie", "port name correct");
+ port.onDisconnect.addListener(() => {
+ browser.test.assertEq(
+ null,
+ port.error,
+ "The port is implicitly closed without errors when the other context unloads"
+ );
+ port.disconnect();
+ browser.test.sendMessage("disconnected");
+ });
+ browser.test.sendMessage("connected");
+ });
+}
+
+let extensionData = {
+ background,
+ manifest: {
+ sidebar_action: {
+ default_panel: "sidebar.html",
+ },
+ },
+ useAddonManager: "temporary",
+
+ files: {
+ "sidebar.html": `
+ <!DOCTYPE html>
+ <html>
+ <head><meta charset="utf-8"/>
+ <script src="sidebar.js"></script>
+ </head>
+ <body>
+ A Test Sidebar
+ </body></html>
+ `,
+
+ "sidebar.js": function () {
+ window.onload = () => {
+ browser.runtime.connect({ name: "ernie" });
+ };
+ },
+ },
+};
+
+add_task(async function test_sidebar_disconnect() {
+ let extension = ExtensionTestUtils.loadExtension(extensionData);
+ let connected = extension.awaitMessage("connected");
+ await extension.startup();
+ await connected;
+
+ // Bug 1445080 fixes currentURI, test to avoid future breakage.
+ let currentURI = window.SidebarUI.browser.contentDocument.getElementById(
+ "webext-panels-browser"
+ ).currentURI;
+ is(currentURI.scheme, "moz-extension", "currentURI is set correctly");
+
+ // switching sidebar to another extension
+ let extension2 = ExtensionTestUtils.loadExtension(extensionData);
+ let switched = Promise.all([
+ extension.awaitMessage("disconnected"),
+ extension2.awaitMessage("connected"),
+ ]);
+ await extension2.startup();
+ await switched;
+
+ // switching sidebar to built-in sidebar
+ let disconnected = extension2.awaitMessage("disconnected");
+ window.SidebarUI.show("viewBookmarksSidebar");
+ await disconnected;
+
+ await extension.unload();
+ await extension2.unload();
+});