"use strict"; const verifyRequestPermission = async (manifestProps, expectedIcon) => { let extension = ExtensionTestUtils.loadExtension({ manifest: { browser_action: { default_popup: "popup.html", }, optional_permissions: [""], ...manifestProps, }, files: { "popup.html": ``, "popup.js": async () => { const success = await new Promise(resolve => { browser.test.withHandlingUserInput(() => { resolve( browser.permissions.request({ origins: [""], }) ); }); }); browser.test.assertTrue( success, "browser.permissions.request promise resolves" ); browser.test.sendMessage("done"); }, }, }); const requestPrompt = promisePopupNotificationShown( "addon-webext-permissions" ).then(panel => { ok( panel.getAttribute("icon").endsWith(`/${expectedIcon}`), "expected the correct icon on the notification" ); panel.button.click(); }); await extension.startup(); await clickBrowserAction(extension); await requestPrompt; await extension.awaitMessage("done"); await extension.unload(); }; add_task(async function test_popup_requestPermission_resolve() { await verifyRequestPermission({}, "extensionGeneric.svg"); }); add_task(async function test_popup_requestPermission_resolve_custom_icon() { let expectedIcon = "icon-32.png"; await verifyRequestPermission( { icons: { 16: "icon-16.png", 32: expectedIcon, }, }, expectedIcon ); });