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 --- .../test/browser/browser_ext_optionsPage_modals.js | 100 +++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 browser/components/extensions/test/browser/browser_ext_optionsPage_modals.js (limited to 'browser/components/extensions/test/browser/browser_ext_optionsPage_modals.js') diff --git a/browser/components/extensions/test/browser/browser_ext_optionsPage_modals.js b/browser/components/extensions/test/browser/browser_ext_optionsPage_modals.js new file mode 100644 index 0000000000..809a5605c0 --- /dev/null +++ b/browser/components/extensions/test/browser/browser_ext_optionsPage_modals.js @@ -0,0 +1,100 @@ +/* -*- 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_tab_options_modals() { + function backgroundScript() { + browser.runtime.openOptionsPage(); + } + + function optionsScript() { + try { + alert("WebExtensions OptionsUI Page Modal"); + + browser.test.notifyPass("options-ui-modals"); + } catch (error) { + browser.test.log(`Error: ${error} :: ${error.stack}`); + browser.test.notifyFail("options-ui-modals"); + } + } + + let extension = ExtensionTestUtils.loadExtension({ + useAddonManager: "temporary", + + manifest: { + permissions: ["tabs"], + options_ui: { + page: "options.html", + }, + }, + files: { + "options.html": ` + + + + + + `, + "options.js": optionsScript, + }, + background: backgroundScript, + }); + + await BrowserTestUtils.openNewForegroundTab(gBrowser, "about:addons"); + + await extension.startup(); + + const onceModalOpened = new Promise(resolve => { + const aboutAddonsBrowser = gBrowser.selectedBrowser; + + aboutAddonsBrowser.addEventListener( + "DOMWillOpenModalDialog", + function onModalDialog(event) { + // Wait for the next event tick to make sure the remaining part of the + // testcase runs after the dialog gets opened. + SimpleTest.executeSoon(resolve); + }, + { once: true, capture: true } + ); + }); + + info("Wait the options_ui modal to be opened"); + await onceModalOpened; + + const optionsBrowser = getInlineOptionsBrowser(gBrowser.selectedBrowser); + + // The stack that contains the tabmodalprompt elements is the parent of + // the extensions options_ui browser element. + let stack = optionsBrowser.parentNode; + + let dialogs = stack.querySelectorAll("tabmodalprompt"); + Assert.equal( + dialogs.length, + 1, + "Expect a tab modal opened for the about addons tab" + ); + + // Verify that the expected stylesheets have been applied on the + // tabmodalprompt element (See Bug 1550529). + const tabmodalStyle = dialogs[0].ownerGlobal.getComputedStyle(dialogs[0]); + is( + tabmodalStyle["background-color"], + "rgba(26, 26, 26, 0.5)", + "Got the expected styles applied to the tabmodalprompt" + ); + + info("Close the tab modal prompt"); + dialogs[0].querySelector(".tabmodalprompt-button0").click(); + + await extension.awaitFinish("options-ui-modals"); + + Assert.equal( + stack.querySelectorAll("tabmodalprompt").length, + 0, + "Expect the tab modal to be closed" + ); + + BrowserTestUtils.removeTab(gBrowser.selectedTab); + + await extension.unload(); +}); -- cgit v1.2.3