権限の要求

コミュニティグループ報告書草案,

このバージョン:
https://jyasskin.github.io/permissions-request
課題追跡:
GitHub
仕様内インライン
編集者:
(Google Inc.)
元編集者:
(Google Inc.)
テスト:
web-platform-tests permissions-request/ (作業中)
ポリフィル:
chromium/permissions.request

概要

この仕様は、強力な機能を使用する権限を要求するための統一的な関数を提供するように Permissions APIを拡張します。

この文書の状態

この仕様は、Web Platform Incubator コミュニティグループによって公開されました。 これはW3C標準ではなく、W3C標準化過程上にもありません。 W3Cコミュニティ コントリビューターライセンス契約(CLA)の下では、限定的なオプトアウトおよびその他の条件が適用されることに注意してください。 W3Cコミュニティおよびビジネスグループについて詳しく学ぶ。

1. 序論

この文書は、Webプラットフォーム上の強力な 機能を使用する権限を要求するための関数を規定します。

さまざまなWeb APIには、それらを使用する開発者の意図を通知する方法がばらばらにあります:

開発者が、すべての強力な機能について従うべき単一のパターンを持っている場合、 権限関連コードを設計することはより容易になります。

2. 要求 API

partial interface Permissions {
  Promise<PermissionStatus> request(object permissionDesc);
};

request(permissionDesc)メソッドが 呼び出されたとき、ユーザーエージェントは、パラメーターpermissionDescを渡して、次のアルゴリズムをMUSTで実行します:

  1. rootDescを、permissionDescが参照するオブジェクトを、PermissionDescriptor型のIDL値に変換したものとします。 これが例外を投げる場合、 その例外で拒否されたpromiseを返し、これらの 手順を中止します。

  2. typedDescriptorを、permissionDescが参照するオブジェクトを、rootDesc.name権限記述子型IDL値に変換したものとします。これが例外を投げる場合、その 例外で拒否されたpromiseを返し、これらの手順を中止します。

  3. promiseを、新しく作成されたPromiseとします。

  4. promiseを返し、次の手順を非同期に継続します。

  5. typedDescriptorについてPermissionStatusを作成する手順を実行し、 statusをその結果とします。

  6. typedDescriptor.nameで名付けられた機能の権限要求アルゴリズムを、 typedDescriptorおよびstatusを 引数として実行します。

  7. 前の手順が例外を投げた場合、その 例外でpromise拒否します。

  8. それ以外の場合、promisestatusで解決します。

3. 権限レジストリ内の追加フィールド

権限 レジストリ内の強力な機能は、さらに権限要求 アルゴリズムを定義します:

入力
挙動

さらなる 権限の要求内のアルゴリズムを使用して、権限を増やそうとするために必要な任意のプロンプトをユーザーに表示し、 権限結果型のインスタンスを 一致するように更新します。

返り値

何も返しませんが、要求が例外的に失敗しうる場合は例外を投げることがあります。 (単に権限が拒否されることは例外ではありません。)

呼び出し元の例
既定

指定されない場合、これは既定の権限要求 アルゴリズムになります。

3.1. 既定の要求アルゴリズム

既定の権限要求アルゴリズムは、PermissionDescriptor permissionDescおよびPermissionStatus statusが与えられたとき、次の手順を実行します:

  1. permissionDescおよびstatusに対して既定の権限照会アルゴリズムを実行します。

  2. status.state"prompt"でない場合、 これらの手順を中止します。

  3. permissionDescを使用する権限を要求します。

  4. permissionDescおよびstatusに対して既定の権限照会アルゴリズムを 再度実行します。

    環境設定オブジェクト内に権限を永続的に保存しないブラウザーでは、これは常に "prompt"を返しますが、 それでもユーザーに不要なプロンプトを表示します。これは、 適切なオブジェクト能力を決して返せないため、 既定の権限要求アルゴリズムを 使用する権限が存在すべきでないことを意味するかもしれません。

4. セキュリティ上の考慮事項

セキュリティ上の考慮事項は特定されていません。

5. プライバシー上の考慮事項

プライバシー上の考慮事項は特定されていません。

適合性

文書の 表記規約

適合性要件は、 記述的な表明と RFC 2119用語との組み合わせで表現されます。 この文書の規範的な部分におけるキーワード“MUST”、“MUST NOT”、“REQUIRED”、“SHALL”、“SHALL NOT”、“SHOULD”、“SHOULD NOT”、“RECOMMENDED”、 “MAY”、および“OPTIONAL”は、 RFC 2119で説明されているように解釈されます。 ただし、読みやすさのため、 これらの語はこの仕様内で常に大文字で現れるわけではありません。

この仕様のすべてのテキストは規範的です。 ただし、明示的に非規範的と記されたセクション、例、および注記を除きます。 [RFC2119]

この仕様の例は、“for example”という語で導入されるか、 規範的なテキストから切り離されて、 class="example"によって 次のように示されます:

これは参考情報の例の一例です。

参考情報の注記は“Note”という語で始まり、 規範的なテキストから切り離されて、 class="note"によって 次のように示されます:

注記、これは参考情報の注記です。

適合 アルゴリズム

アルゴリズムの一部として命令形で表現された要件 (たとえば"strip any leading space characters" または"return false and abort these steps"など)は、 そのアルゴリズムを導入する際に用いられたキーワード ("must"、"should"、"may"など) の意味で解釈されます。

アルゴリズムまたは特定の手順として表現された適合性要件は、 最終結果が等価である限り、 任意の方法で実装できます。 特に、この仕様で定義されるアルゴリズムは、 理解しやすいことを意図しており、 高性能であることを意図していません。 実装者は最適化することが推奨されます。

索引

この仕様で定義される 用語

参照により定義される用語

参考文献

規範的参考文献

[HTML]
Anne van Kesteren; et al. HTML標準. Living Standard. URL: https://html.spec.whatwg.org/multipage/
[PERMISSIONS]
Marcos Caceres; Mike Taylor. Permissions. 2022年3月11日. WD. URL: https://www.w3.org/TR/permissions/
[RFC2119]
S. Bradner. RFCにおいて要件レベルを 示すために使用するキーワード. 1997年3月. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL標準. Living Standard. URL: https://webidl.spec.whatwg.org/

参考情報の参考文献

[geolocation-API]
Andrei Popescu. Geolocation API仕様 第2 版. 2016年11月8日. REC. URL: https://www.w3.org/TR/geolocation-API/
[NOTIFICATIONS]
Anne van Kesteren. Notifications API 標準. Living Standard. URL: https://notifications.spec.whatwg.org/

IDL索引

partial interface Permissions {
  Promise<PermissionStatus> request(object permissionDesc);
};

課題索引

環境 設定オブジェクト内に権限を永続的に保存しないブラウザーでは、これは常に"prompt"を返しますが、 それでもユーザーに不要なプロンプトを表示します。これは、適切なオブジェクト能力を決して返せないため、 既定の 権限要求アルゴリズムを使用すべき権限は存在しないことを意味するかもしれません。