From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../browser/browser_ext_contextMenus_commands.js | 158 +++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 browser/components/extensions/test/browser/browser_ext_contextMenus_commands.js (limited to 'browser/components/extensions/test/browser/browser_ext_contextMenus_commands.js') diff --git a/browser/components/extensions/test/browser/browser_ext_contextMenus_commands.js b/browser/components/extensions/test/browser/browser_ext_contextMenus_commands.js new file mode 100644 index 0000000000..5a8f1db208 --- /dev/null +++ b/browser/components/extensions/test/browser/browser_ext_contextMenus_commands.js @@ -0,0 +1,158 @@ +/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set sts=2 sw=2 et tw=80: */ +"use strict"; + +add_task(async function testTabSwitchActionContext() { + await SpecialPowers.pushPrefEnv({ + set: [["extensions.manifestV3.enabled", true]], + }); +}); + +add_task(async function test_actions_context_menu() { + function background() { + browser.contextMenus.create({ + title: "open_browser_action", + contexts: ["all"], + command: "_execute_browser_action", + }); + browser.contextMenus.create({ + title: "open_page_action", + contexts: ["all"], + command: "_execute_page_action", + }); + browser.contextMenus.create({ + title: "open_sidebar_action", + contexts: ["all"], + command: "_execute_sidebar_action", + }); + browser.tabs.onUpdated.addListener((tabId, changeInfo, tab) => { + browser.pageAction.show(tabId); + }); + browser.contextMenus.onClicked.addListener(() => { + browser.test.fail(`menu onClicked should not have been received`); + }); + browser.test.sendMessage("ready"); + } + + function testScript() { + window.onload = () => { + browser.test.sendMessage("test-opened", true); + }; + } + + let extension = ExtensionTestUtils.loadExtension({ + manifest: { + name: "contextMenus commands", + permissions: ["contextMenus", "activeTab", "tabs"], + browser_action: { + default_title: "Test BrowserAction", + default_popup: "test.html", + browser_style: true, + }, + page_action: { + default_title: "Test PageAction", + default_popup: "test.html", + browser_style: true, + }, + sidebar_action: { + default_title: "Test Sidebar", + default_panel: "test.html", + }, + }, + background, + files: { + "test.html": ``, + "test.js": testScript, + }, + }); + + async function testContext(id) { + const menu = await openExtensionContextMenu(); + const items = menu.getElementsByAttribute("label", id); + is(items.length, 1, `exactly one menu item found`); + await closeExtensionContextMenu(items[0]); + return extension.awaitMessage("test-opened"); + } + + await extension.startup(); + await extension.awaitMessage("ready"); + + // open a page so page action works + const PAGE = + "http://mochi.test:8888/browser/browser/components/extensions/test/browser/context.html?test=commands"; + const tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, PAGE); + + ok( + await testContext("open_sidebar_action"), + "_execute_sidebar_action worked" + ); + ok( + await testContext("open_browser_action"), + "_execute_browser_action worked" + ); + ok(await testContext("open_page_action"), "_execute_page_action worked"); + + BrowserTestUtils.removeTab(tab); + await extension.unload(); +}); + +add_task(async function test_v3_action_context_menu() { + let extension = ExtensionTestUtils.loadExtension({ + manifest: { + name: "contextMenus commands", + manifest_version: 3, + permissions: ["contextMenus"], + action: { + default_title: "Test Action", + default_popup: "test.html", + // TODO bug 1830712: Remove this. Probably not even needed for the test. + browser_style: true, + }, + }, + background() { + browser.contextMenus.onClicked.addListener(() => { + browser.test.fail(`menu onClicked should not have been received`); + }); + + browser.contextMenus.create( + { + id: "open_action", + title: "open_action", + contexts: ["all"], + command: "_execute_action", + }, + () => { + browser.test.sendMessage("ready"); + } + ); + }, + files: { + "test.html": ``, + "test.js": () => { + window.onload = () => { + browser.test.sendMessage("test-opened", true); + }; + }, + }, + }); + + async function testContext(id) { + const menu = await openContextMenu(); + const items = menu.getElementsByAttribute("label", id); + is(items.length, 1, `exactly one menu item found`); + await closeExtensionContextMenu(items[0]); + return extension.awaitMessage("test-opened"); + } + + await extension.startup(); + await extension.awaitMessage("ready"); + + const PAGE = + "http://mochi.test:8888/browser/browser/components/extensions/test/browser/context.html?test=commands"; + const tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, PAGE); + + ok(await testContext("open_action"), "_execute_action worked"); + + BrowserTestUtils.removeTab(tab); + await extension.unload(); +}); -- cgit v1.2.3