この翻訳は不完全です。英語から この記事を翻訳 してください。

Type Array
必須か? No

アドオンが特別な権限を必要とする際には permission キーを使用します。このキーには文字列の配列を指定し、各文字列で必要とするパーミッションを表現します。

このキーを用いてパーミッションを要求した場合、ブラウザはインストール時に「このアドオンはこれだけの特権を要求しています」と通知し、これらの権限を付与しても大丈夫かとユーザーに確認します。ブラウザはまた、インストール後にユーザーがアドオンの特権を調査することも許可します。

キーには以下の 3 種類があります。

  • host パーミッション
  • API パーミッション
  • activeTab パーミッション

host パーミッション

host パーミッションは match patterns として指定します。それぞれのパターンによって、アドオンの要求する権限が有効となる URL の範囲を指定します。

この権限には以下が含まれます。

  • そのオリジンに対して XHR アクセスできる権限
  • そのオリジンによるページに(tabs.executeScript を用いて)スクリプトをプログラム的に挿入できる権限
  • webRequest API を用いて、そのホストからのイベントを受信できる権限
  • cookies API を用いて、そのホストの Cookie にアクセスできる権限("cookies" API のパーミッションが指定されている場合)

API パーミッション

API パーミッションには、使用したい WebExtension API の名前をキーワードとして指定します。

現時点で使用できるキーワードは以下の通りです。

  • alarms
  • bookmarks
  • contextMenus
  • cookies
  • downloads
  • downloads.open
  • idle
  • notifications
  • storage
  • tabs
  • webNavigation
  • webRequest
  • webRequestBlocking

ほとんどの場合、パーミッションはその API へのアクセス権を付与するだけですが、以下のような例外があります。

  • tabs パーミッションを指定した場合、特別な tabs API にアクセスすることが許可されます(Tab.url / Tab.title / Tab.faviconUrl)。他の tabs API についてはパーミッションの要求なしで使用できます。
  • webRequestBlocking パーミッションを指定した場合、"brocking" 引数の使用が許可されます。これによって リクエストの変更やキャンセル が可能となります。
  • downloads.open パーミッションを指定した場合、downloads.open() API の利用が許可されます。

activeTab パーミッション

This permission is specified as "activeTab". If an extension has the activeTab permission, then when the user interacts with the extension (for example: clicks its browser action or page action, or selects its context menu item), the extension is granted extra privileges for the active tab only.

The extra privileges are:

  • the ability to inject JavaScript or CSS into the tab programmatically, using chrome.tabs.executeScript and chrome.tabs.insertCSS
  • access to the privileged parts of the tabs API for the current tab: Tab.url, Tab.title, and Tab.faviconUrl.

The intention of this permission is to enable extensions to fulfill a common use case, without having to give them very powerful permissions. Many extensions want to "do something to the current page when the user asks". For example, consider an extension that wants to run a script in the current page when the user clicks a browser action. If the  activeTab permission did not exist, the extension would need to ask for the host permission <all_urls>. But this gives the extension more power than it needs: it could now execute scripts in any tab, any time it likes, instead of just the active tab and just in response to a user action.

Chrome incompatibilities

Firefox does not support the following permissions:

  • background
  • clipboardRead
  • clipboardWrite
  • geolocation
  • nativeMessaging
  • unlimitedStorage

Obviously, it doesn't support permissions for APIs that are themselves not supported.

 "permissions": ["*://developer.mozilla.org/*"]

これは developer.mozilla.org ドメイン配下のページにアクセスする権限を要求しています。

  "permissions": ["tabs"]

tabs API を使用する権限を要求しています。

  "permissions": ["*://developer.mozilla.org/*", "tabs"]

上記の権限を両方ともに要求しています。

ドキュメントのタグと貢献者

 このページの貢献者: hashedhyphen, lv7777
 最終更新者: hashedhyphen,