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 --- ...owser_ext_menus_events_after_context_destroy.js | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 browser/components/extensions/test/browser/browser_ext_menus_events_after_context_destroy.js (limited to 'browser/components/extensions/test/browser/browser_ext_menus_events_after_context_destroy.js') diff --git a/browser/components/extensions/test/browser/browser_ext_menus_events_after_context_destroy.js b/browser/components/extensions/test/browser/browser_ext_menus_events_after_context_destroy.js new file mode 100644 index 0000000000..317f9c4321 --- /dev/null +++ b/browser/components/extensions/test/browser/browser_ext_menus_events_after_context_destroy.js @@ -0,0 +1,64 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +// This test does verify that the menus API events are still emitted when +// there are extension context alive with subscribed listeners +// (See Bug 1602384). +add_task(async function test_subscribed_events_fired_after_context_destroy() { + let extension = ExtensionTestUtils.loadExtension({ + manifest: { + permissions: ["menus"], + }, + files: { + "page.html": ` + + Extension Page + `, + "page.js": async function () { + browser.menus.onShown.addListener(() => { + browser.test.sendMessage("menu-onShown"); + }); + browser.menus.onHidden.addListener(() => { + browser.test.sendMessage("menu-onHidden"); + }); + // Call an API method implemented in the parent process + // to ensure the menu listeners are subscribed in the + // parent process. + await browser.runtime.getBrowserInfo(); + browser.test.sendMessage("page-loaded"); + }, + }, + }); + + await extension.startup(); + const pageURL = `moz-extension://${extension.uuid}/page.html`; + + info("Loading extension page in a tab"); + const tab1 = await BrowserTestUtils.openNewForegroundTab(gBrowser, pageURL); + await extension.awaitMessage("page-loaded"); + + info("Loading extension page in another tab"); + const tab2 = await BrowserTestUtils.openNewForegroundTab(gBrowser, pageURL); + await extension.awaitMessage("page-loaded"); + + info("Remove the first tab"); + BrowserTestUtils.removeTab(tab1); + + info("Open a context menu and expect menu.onShown to be fired"); + await openContextMenu("body"); + + await extension.awaitMessage("menu-onShown"); + + info("Close context menu and expect menu.onHidden to be fired"); + await closeExtensionContextMenu(); + await extension.awaitMessage("menu-onHidden"); + + ok(true, "The expected menu events have been fired"); + + BrowserTestUtils.removeTab(tab2); + + await extension.unload(); +}); -- cgit v1.2.3