зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1613796 - Return false when browser.permissions.request isn't called on the active tab. r=robwu
Differential Revision: https://phabricator.services.mozilla.com/D69226 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
b81d8b0f5d
Коммит
f511c55b0e
|
@ -184,6 +184,7 @@ skip-if = debug || os != 'win' # FIXME: re-enable on debug build (bug 1442822)
|
|||
[browser_ext_port_disconnect_on_crash.js]
|
||||
skip-if = !e10s || !crashreporter # the tab's process is killed during the test. Without e10s the parent process would die too
|
||||
[browser_ext_port_disconnect_on_window_close.js]
|
||||
[browser_ext_request_permissions.js]
|
||||
[browser_ext_runtime_openOptionsPage.js]
|
||||
[browser_ext_runtime_openOptionsPage_uninstall.js]
|
||||
[browser_ext_search.js]
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
"use strict";
|
||||
|
||||
add_task(async function test_permissions_prompt() {
|
||||
let extension = ExtensionTestUtils.loadExtension({
|
||||
manifest: {
|
||||
optional_permissions: ["history"],
|
||||
},
|
||||
background: () => {
|
||||
browser.tabs.create({
|
||||
url: browser.runtime.getURL("test.html"),
|
||||
active: false,
|
||||
});
|
||||
},
|
||||
files: {
|
||||
"test.html": `<!DOCTYPE html><script src="test.js"></script>`,
|
||||
"test.js": async () => {
|
||||
const result = await new Promise(resolve => {
|
||||
browser.test.withHandlingUserInput(() => {
|
||||
resolve(browser.permissions.request({ permissions: ["history"] }));
|
||||
});
|
||||
});
|
||||
|
||||
browser.test.assertFalse(
|
||||
result,
|
||||
"permissions.request() from a hidden tab should be ignored"
|
||||
);
|
||||
|
||||
browser.test.sendMessage("done");
|
||||
},
|
||||
},
|
||||
});
|
||||
await extension.startup();
|
||||
|
||||
await extension.awaitMessage("done");
|
||||
|
||||
// The extension tab is automatically closed upon unload.
|
||||
await extension.unload();
|
||||
});
|
|
@ -372,6 +372,11 @@ var ExtensionsUI = {
|
|||
await pending;
|
||||
}
|
||||
|
||||
// Make sure the tab is the active tab in the window.
|
||||
if (window.gBrowser.selectedBrowser !== browser) {
|
||||
return false;
|
||||
}
|
||||
|
||||
let promise = new Promise(resolve => {
|
||||
function eventCallback(topic) {
|
||||
let doc = this.browser.ownerDocument;
|
||||
|
|
Загрузка…
Ссылка в новой задаче