summaryrefslogtreecommitdiffstats
path: root/browser/components/extensions/test/browser/browser_ext_contextMenus_srcUrl_redirect.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/extensions/test/browser/browser_ext_contextMenus_srcUrl_redirect.js')
-rw-r--r--browser/components/extensions/test/browser/browser_ext_contextMenus_srcUrl_redirect.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/browser/components/extensions/test/browser/browser_ext_contextMenus_srcUrl_redirect.js b/browser/components/extensions/test/browser/browser_ext_contextMenus_srcUrl_redirect.js
new file mode 100644
index 0000000000..2d00ca356a
--- /dev/null
+++ b/browser/components/extensions/test/browser/browser_ext_contextMenus_srcUrl_redirect.js
@@ -0,0 +1,69 @@
+/* -*- 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_srcUrl_of_redirected_image() {
+ let extension = ExtensionTestUtils.loadExtension({
+ manifest: {
+ permissions: ["contextMenus"],
+ },
+ background() {
+ browser.contextMenus.onClicked.addListener(info => {
+ browser.test.assertEq(
+ "before_redir",
+ info.menuItemId,
+ "Expected menu item matched for pre-redirect URL"
+ );
+ browser.test.assertEq("image", info.mediaType, "Expected mediaType");
+ browser.test.assertEq(
+ "http://mochi.test:8888/browser/browser/components/extensions/test/browser/redirect_to.sjs?ctxmenu-image.png",
+ info.srcUrl,
+ "Expected srcUrl"
+ );
+ browser.test.sendMessage("contextMenus_onClicked");
+ });
+ browser.contextMenus.create({
+ id: "before_redir",
+ title: "MyMenu",
+ targetUrlPatterns: ["*://*/*redirect_to.sjs*"],
+ });
+ browser.contextMenus.create(
+ {
+ id: "after_redir",
+ title: "MyMenu",
+ targetUrlPatterns: ["*://*/*/ctxmenu-image.png*"],
+ },
+ () => {
+ browser.test.sendMessage("menus_setup");
+ }
+ );
+ },
+ });
+ await extension.startup();
+ await extension.awaitMessage("menus_setup");
+
+ await BrowserTestUtils.withNewTab(
+ {
+ gBrowser,
+ url: "http://mochi.test:8888/browser/browser/components/extensions/test/browser/context_with_redirect.html",
+ },
+ async browser => {
+ // Verify that the image has been loaded, which implies that the redirect has
+ // been followed.
+ let imgWidth = await SpecialPowers.spawn(browser, [], () => {
+ let img = content.document.getElementById("img_that_redirects");
+ return img.naturalWidth;
+ });
+ is(imgWidth, 100, "Image has been loaded");
+
+ let menu = await openContextMenu("#img_that_redirects");
+ let items = menu.getElementsByAttribute("label", "MyMenu");
+ is(items.length, 1, "Only one menu item should have been matched");
+
+ await closeExtensionContextMenu(items[0]);
+ await extension.awaitMessage("contextMenus_onClicked");
+ }
+ );
+
+ await extension.unload();
+});