summaryrefslogtreecommitdiffstats
path: root/browser/components/extensions/test/browser/browser_ext_tabs_lazy.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/extensions/test/browser/browser_ext_tabs_lazy.js')
-rw-r--r--browser/components/extensions/test/browser/browser_ext_tabs_lazy.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/browser/components/extensions/test/browser/browser_ext_tabs_lazy.js b/browser/components/extensions/test/browser/browser_ext_tabs_lazy.js
new file mode 100644
index 0000000000..68205089d5
--- /dev/null
+++ b/browser/components/extensions/test/browser/browser_ext_tabs_lazy.js
@@ -0,0 +1,49 @@
+"use strict";
+
+const triggeringPrincipal_base64 = E10SUtils.SERIALIZED_SYSTEMPRINCIPAL;
+
+const SESSION = {
+ windows: [
+ {
+ tabs: [
+ { entries: [{ url: "about:blank", triggeringPrincipal_base64 }] },
+ {
+ entries: [
+ { url: "https://example.com/", triggeringPrincipal_base64 },
+ ],
+ },
+ ],
+ },
+ ],
+};
+
+add_task(async function () {
+ SessionStore.setBrowserState(JSON.stringify(SESSION));
+ await promiseWindowRestored(window);
+ const tab = gBrowser.tabs[1];
+
+ is(tab.getAttribute("pending"), "true", "The tab is pending restore");
+ is(tab.linkedBrowser.isConnected, false, "The tab is lazy");
+
+ async function background() {
+ const [tab] = await browser.tabs.query({ url: "https://example.com/" });
+ browser.test.assertRejects(
+ browser.tabs.sendMessage(tab.id, "void"),
+ /Could not establish connection. Receiving end does not exist/,
+ "No recievers in a tab pending restore."
+ );
+ browser.test.notifyPass("lazy");
+ }
+
+ const manifest = { permissions: ["tabs"] };
+ const extension = ExtensionTestUtils.loadExtension({ manifest, background });
+
+ await extension.startup();
+ await extension.awaitFinish("lazy");
+ await extension.unload();
+
+ is(tab.getAttribute("pending"), "true", "The tab is still pending restore");
+ is(tab.linkedBrowser.isConnected, false, "The tab is still lazy");
+
+ BrowserTestUtils.removeTab(tab);
+});