permissions.request()
Ask for the set of permissions listed in the given permissions.Permissions
object.
The Permissions
argument may contain either an origins
property, which is an array of host permissions, or a permissions
property, which is an array of API permissions, or both. Permissions must come from the set of permissions defined in the optional_permissions
manifest.json key. The origins
property may include permissions that match a subset of the hosts matched by an optional permission: for example, if optional_permissions include "*://mozilla.org/", then permissions.origins
may include "https://developer.mozilla.org/".
The request can only be made inside the handler for a user action.
Depending on a circumstances, the browser will probably handle the request by asking the user whether to grant the requested permissions. Only a single request is made for all requested permissions: thus either all permissions are granted or none of them are.
Any permissions granted are retained by the extension, even over upgrade and disable/enable cycling.
This is an asynchronous function that returns a Promise
.
Syntax
let requesting = browser.permissions.request(
permissions // Permissions object
)
Parameters
permissions
-
A
permissions.Permissions
object.
Return value
A Promise
that is fulfilled with true
if the extension is now granted all the permissions listed in the permissions
argument, or false
otherwise.
Browser compatibility
desktop | mobile | ||||||
---|---|---|---|---|---|---|---|
request |
Examples
This code adds a click handler that asks for various permissions, then logs the result of the request and the extension's permissions after the request completed.
const permissionsToRequest = {
permissions: ["bookmarks", "history"],
origins: ["https://developer.mozilla.org/"],
};
async function requestPermissions() {
function onResponse(response) {
if (response) {
console.log("Permission was granted");
} else {
console.log("Permission was refused");
}
return browser.permissions.getAll();
}
const response = await browser.permissions.request(permissionsToRequest);
const currentPermissions = await onResponse(response);
console.log(`Current permissions:`, currentPermissions);
}
document
.querySelector("#request")
.addEventListener("click", requestPermissions);
Example extensions
Note: Currently has a bug with requesting origins and requesting permissions on the about:addons page.
Note: This API is based on Chromium's chrome.permissions
API.