summaryrefslogtreecommitdiffstats
path: root/browser/components/extensions/test/browser/browser_ext_contentscript_sender_url.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/extensions/test/browser/browser_ext_contentscript_sender_url.js')
-rw-r--r--browser/components/extensions/test/browser/browser_ext_contentscript_sender_url.js67
1 files changed, 67 insertions, 0 deletions
diff --git a/browser/components/extensions/test/browser/browser_ext_contentscript_sender_url.js b/browser/components/extensions/test/browser/browser_ext_contentscript_sender_url.js
new file mode 100644
index 0000000000..853ed33757
--- /dev/null
+++ b/browser/components/extensions/test/browser/browser_ext_contentscript_sender_url.js
@@ -0,0 +1,67 @@
+/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim: set sts=2 sw=2 et tw=80: */
+"use strict";
+
+add_task(async function test_sender_url() {
+ let extension = ExtensionTestUtils.loadExtension({
+ manifest: {
+ content_scripts: [
+ {
+ matches: ["http://mochi.test/*"],
+ run_at: "document_start",
+ js: ["script.js"],
+ },
+ ],
+ },
+
+ background() {
+ browser.runtime.onMessage.addListener((msg, sender) => {
+ browser.test.log("Message received.");
+ browser.test.sendMessage("sender.url", sender.url);
+ });
+ },
+
+ files: {
+ "script.js"() {
+ browser.test.log("Content script loaded.");
+ browser.runtime.sendMessage(0);
+ },
+ },
+ });
+
+ const image =
+ "http://mochi.test:8888/browser/browser/components/extensions/test/browser/ctxmenu-image.png";
+
+ // Bug is only visible and test only works without Fission,
+ // or with Fission but without BFcache in parent.
+ await SpecialPowers.pushPrefEnv({
+ set: [["fission.bfcacheInParent", false]],
+ });
+
+ function awaitNewTab() {
+ return BrowserTestUtils.waitForLocationChange(gBrowser, "about:newtab");
+ }
+
+ await extension.startup();
+
+ await BrowserTestUtils.withNewTab({ gBrowser }, async browser => {
+ let newTab = awaitNewTab();
+ BrowserTestUtils.loadURIString(browser, "about:newtab");
+ await newTab;
+
+ BrowserTestUtils.loadURIString(browser, image);
+ let url = await extension.awaitMessage("sender.url");
+ is(url, image, `Correct sender.url: ${url}`);
+
+ let wentBack = awaitNewTab();
+ await browser.goBack();
+ await wentBack;
+
+ await browser.goForward();
+ url = await extension.awaitMessage("sender.url");
+ is(url, image, `Correct sender.url: ${url}`);
+ });
+
+ await extension.unload();
+ await SpecialPowers.popPrefEnv();
+});