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_reload_manifest_cache.js | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 browser/components/extensions/test/browser/browser_ext_reload_manifest_cache.js (limited to 'browser/components/extensions/test/browser/browser_ext_reload_manifest_cache.js') diff --git a/browser/components/extensions/test/browser/browser_ext_reload_manifest_cache.js b/browser/components/extensions/test/browser/browser_ext_reload_manifest_cache.js new file mode 100644 index 0000000000..aefa8f42f5 --- /dev/null +++ b/browser/components/extensions/test/browser/browser_ext_reload_manifest_cache.js @@ -0,0 +1,72 @@ +"use strict"; + +const { ExtensionPermissions } = ChromeUtils.importESModule( + "resource://gre/modules/ExtensionPermissions.sys.mjs" +); + +add_task(async function test_reload_manifest_startupcache() { + const id = "id@tests.mozilla.org"; + + let ext = ExtensionTestUtils.loadExtension({ + manifest: { + browser_specific_settings: { + gecko: { id }, + }, + options_ui: { + open_in_tab: true, + page: "options.html", + }, + optional_permissions: [""], + }, + useAddonManager: "temporary", + files: { + "options.html": `lol`, + }, + background() { + browser.runtime.openOptionsPage(); + browser.permissions.onAdded.addListener(() => { + browser.runtime.openOptionsPage(); + }); + }, + }); + + async function waitOptionsTab() { + let tab = await BrowserTestUtils.waitForNewTab(gBrowser, url => + url.endsWith("options.html") + ); + BrowserTestUtils.removeTab(tab); + } + + // Open a non-blank tab to force options to open a new tab. + let tab = await BrowserTestUtils.openNewForegroundTab( + gBrowser, + "https://example.com/" + ); + let optionsTabPromise = waitOptionsTab(); + + await ext.startup(); + await optionsTabPromise; + + let disabledPromise = awaitEvent("shutdown", id); + let enabledPromise = awaitEvent("ready", id); + optionsTabPromise = waitOptionsTab(); + + let addon = await AddonManager.getAddonByID(id); + await addon.reload(); + + await Promise.all([disabledPromise, enabledPromise, optionsTabPromise]); + + optionsTabPromise = waitOptionsTab(); + ExtensionPermissions.add(id, { + permissions: [], + origins: [""], + }); + await optionsTabPromise; + + let policy = WebExtensionPolicy.getByID(id); + let optionsUrl = policy.extension.manifest.options_ui.page; + ok(optionsUrl.includes(policy.mozExtensionHostname), "Normalized manifest."); + + await BrowserTestUtils.removeTab(tab); + await ext.unload(); +}); -- cgit v1.2.3