この翻訳は不完全です。英語から この記事を翻訳 してください。
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
andchrome.tabs.insertCSS
- access to the privileged parts of the tabs API for the current tab:
Tab.url
,Tab.title
, andTab.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"]
上記の権限を両方ともに要求しています。