diff options
Diffstat (limited to 'browser/base/content/test/webextensions/browser_permissions_dismiss.js')
-rw-r--r-- | browser/base/content/test/webextensions/browser_permissions_dismiss.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/browser/base/content/test/webextensions/browser_permissions_dismiss.js b/browser/base/content/test/webextensions/browser_permissions_dismiss.js new file mode 100644 index 0000000000..394ab8abe5 --- /dev/null +++ b/browser/base/content/test/webextensions/browser_permissions_dismiss.js @@ -0,0 +1,61 @@ +"use strict"; + +const INSTALL_PAGE = `${BASE}/file_install_extensions.html`; +const INSTALL_XPI = `${BASE}/browser_webext_permissions.xpi`; + +add_task(async function setup() { + await SpecialPowers.pushPrefEnv({ + set: [ + ["extensions.webapi.testing", true], + ["extensions.install.requireBuiltInCerts", false], + ], + }); + + registerCleanupFunction(async () => { + await SpecialPowers.popPrefEnv(); + }); +}); + +add_task(async function test_tab_switch_dismiss() { + let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, INSTALL_PAGE); + + let installCanceled = new Promise(resolve => { + let listener = { + onInstallCancelled() { + AddonManager.removeInstallListener(listener); + resolve(); + }, + }; + AddonManager.addInstallListener(listener); + }); + + SpecialPowers.spawn(gBrowser.selectedBrowser, [INSTALL_XPI], function(url) { + content.wrappedJSObject.installMozAM(url); + }); + + await promisePopupNotificationShown("addon-webext-permissions"); + let permsUL = document.getElementById("addon-webext-perm-list"); + is(permsUL.childElementCount, 5, `Permissions list has 5 entries`); + + let permsLearnMore = document.getElementById("addon-webext-perm-info"); + ok( + BrowserTestUtils.is_visible(permsLearnMore), + "Learn more link is shown on Permission popup" + ); + is( + permsLearnMore.href, + Services.urlFormatter.formatURLPref("app.support.baseURL") + + "extension-permissions", + "Learn more link has desired URL" + ); + + // Switching tabs dismisses the notification and cancels the install. + let switchTo = await BrowserTestUtils.openNewForegroundTab(gBrowser); + BrowserTestUtils.removeTab(switchTo); + await installCanceled; + + let addon = await AddonManager.getAddonByID("permissions@test.mozilla.org"); + is(addon, null, "Extension is not installed"); + + BrowserTestUtils.removeTab(tab); +}); |