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_ext_menus_capture_secondary_click.js | 128 +++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 browser/components/extensions/test/browser/browser_ext_menus_capture_secondary_click.js (limited to 'browser/components/extensions/test/browser/browser_ext_menus_capture_secondary_click.js') diff --git a/browser/components/extensions/test/browser/browser_ext_menus_capture_secondary_click.js b/browser/components/extensions/test/browser/browser_ext_menus_capture_secondary_click.js new file mode 100644 index 0000000000..260000cc60 --- /dev/null +++ b/browser/components/extensions/test/browser/browser_ext_menus_capture_secondary_click.js @@ -0,0 +1,128 @@ +// /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ +// /* vim: set sts=2 sw=2 et tw=80: */ +"use strict"; + +const PAGE = + "http://mochi.test:8888/browser/browser/components/extensions/test/browser/context.html"; + +add_task(async function test_buttons() { + const manifest = { + permissions: ["menus"], + }; + + function background() { + function onclick(info) { + browser.test.sendMessage("click", info); + } + browser.menus.create({ title: "modify", onclick }, () => { + browser.test.sendMessage("ready"); + }); + } + + const extension = ExtensionTestUtils.loadExtension({ manifest, background }); + const tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, PAGE); + + await extension.startup(); + await extension.awaitMessage("ready"); + + for (let i of [0, 1, 2]) { + const menu = await openContextMenu(); + const items = menu.getElementsByAttribute("label", "modify"); + await closeExtensionContextMenu(items[0], { button: i }); + const info = await extension.awaitMessage("click"); + is(info.button, i, `Button value should be ${i}`); + } + + BrowserTestUtils.removeTab(tab); + await extension.unload(); +}); + +add_task(async function test_submenu() { + function background() { + browser.menus.onClicked.addListener(info => { + browser.test.assertEq("child", info.menuItemId, "expected menu item"); + browser.test.sendMessage("clicked_button", info.button); + }); + browser.menus.create({ + id: "parent", + title: "parent", + }); + browser.menus.create( + { + id: "child", + parentId: "parent", + title: "child", + }, + () => browser.test.sendMessage("ready") + ); + } + const extension = ExtensionTestUtils.loadExtension({ + manifest: { + permissions: ["menus"], + }, + background, + }); + const tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, PAGE); + + await extension.startup(); + await extension.awaitMessage("ready"); + + for (let button of [0, 1, 2]) { + const menu = await openContextMenu(); + const parentItem = menu.getElementsByAttribute("label", "parent")[0]; + const submenu = await openSubmenu(parentItem); + const childItem = submenu.firstElementChild; + // This should not trigger a click event. + await EventUtils.synthesizeMouseAtCenter(parentItem, { button }); + await closeExtensionContextMenu(childItem, { button }); + is( + await extension.awaitMessage("clicked_button"), + button, + "Expected button" + ); + } + + BrowserTestUtils.removeTab(tab); + await extension.unload(); +}); + +add_task(async function test_disabled_item() { + function background() { + browser.menus.onHidden.addListener(() => + browser.test.sendMessage("onHidden") + ); + browser.menus.create( + { + title: "disabled_item", + enabled: false, + onclick(info) { + browser.test.fail( + `Unexpected click on disabled_item, button=${info.button}` + ); + }, + }, + () => browser.test.sendMessage("ready") + ); + } + const extension = ExtensionTestUtils.loadExtension({ + manifest: { + permissions: ["menus"], + }, + background, + }); + const tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, PAGE); + + await extension.startup(); + await extension.awaitMessage("ready"); + + for (let button of [0, 1, 2]) { + const menu = await openContextMenu(); + const items = menu.getElementsByAttribute("label", "disabled_item"); + await EventUtils.synthesizeMouseAtCenter(items[0], { button }); + await closeContextMenu(); + await extension.awaitMessage("onHidden"); + } + + BrowserTestUtils.removeTab(tab); + await extension.unload(); +}); -- cgit v1.2.3