Bug 1432083 - Fixed browser.permissions.request doesn't work in WebExtension popup r=robwu

Differential Revision: https://phabricator.services.mozilla.com/D61411

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Manvel Saroyan 2020-02-09 04:10:49 +00:00
Родитель 3d4c7db0aa
Коммит e66ace8456
3 изменённых файлов: 47 добавлений и 0 удалений

Просмотреть файл

@ -175,6 +175,7 @@ skip-if = (verify && debug && (os == 'mac'))
[browser_ext_popup_corners.js]
[browser_ext_popup_focus.js]
disabled = bug 1438663
[browser_ext_popup_requestPermission.js]
[browser_ext_popup_select.js]
skip-if = debug || os != 'win' # FIXME: re-enable on debug build (bug 1442822)
[browser_ext_popup_sendMessage.js]

Просмотреть файл

@ -0,0 +1,43 @@
"use strict";
add_task(async function test_popup_requestPermission_resolve() {
let extension = ExtensionTestUtils.loadExtension({
manifest: {
browser_action: {
default_popup: "popup.html",
},
optional_permissions: ["<all_urls>"],
},
files: {
"popup.html": `<meta charset="utf-8"><script src="popup.js"></script>`,
"popup.js": async () => {
const success = await new Promise(resolve => {
browser.test.withHandlingUserInput(() => {
resolve(
browser.permissions.request({
origins: ["<all_urls>"],
})
);
});
});
browser.test.assertTrue(
success,
"browser.permissions.request promise resolves"
);
browser.test.sendMessage("done");
},
},
});
const requestPrompt = promisePopupNotificationShown(
"addon-webext-permissions"
).then(panel => {
panel.button.click();
});
await extension.startup();
await clickBrowserAction(extension);
await requestPrompt;
await extension.awaitMessage("done");
await extension.unload();
});

Просмотреть файл

@ -41,6 +41,9 @@ function getTabBrowser(browser) {
while (browser.ownerGlobal.docShell.itemType !== Ci.nsIDocShell.typeChrome) {
browser = browser.ownerGlobal.docShell.chromeEventHandler;
}
if (browser.getAttribute("webextension-view-type") == "popup") {
browser = browser.ownerGlobal.gBrowser.selectedBrowser;
}
return { browser, window: browser.ownerGlobal };
}