Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
mohamedkhallouq
GitHub Repository: mohamedkhallouq/content
Path: blob/main/files/en-us/mozilla/add-ons/webextensions/api/permissions/request/index.md
6552 views
---
title: permissions.request() slug: Mozilla/Add-ons/WebExtensions/API/permissions/request page-type: webextension-api-function tags: - API - Add-ons - Method - Permissions - Reference - WebExtensions - request browser-compat: webextensions.api.permissions.request
---

{{AddonSidebar()}}

Ask for the set of permissions listed in the given {{WebExtAPIRef("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 {{WebExtAPIRef("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

{{Compat}}

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);

{{WebExtExamples}}

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.