1. 소개
이 문서는 웹 플랫폼에서 강력한 기능을 사용할 권한을 요청하기 위한 함수를 명시한다.
각 Web API에는 개발자가 이를 사용하려는 의도를 신호하는 서로 다른 방식이 있다:
-
[notifications] API는 개발자가 권한을 요청하고 권한 상태를 명시적으로 확인할 수 있게 한다.
-
[geolocation-API]는 권한 요청을 위치 요청과 결합한다.
모든 강력한 기능에 대해 따를 단일 패턴이 있다면 개발자가 권한 관련 코드를 설계하기가 더 쉽다.
2. 요청 API
partial interface Permissions {Promise <PermissionStatus >request (object ); };permissionDesc
request(permissionDesc) 메서드가
호출되면, 사용자 에이전트는 permissionDesc 매개변수를 전달하여 다음 알고리즘을 MUST 실행해야 한다:
-
rootDesc를 permissionDesc가 참조하는 객체를
PermissionDescriptor타입의 IDL 값으로 변환한 것으로 둔다. 이것이 예외를 던지면, 해당 예외로 거부된 promise를 반환하고 이 단계를 중단한다. -
typedDescriptor를 permissionDesc가 참조하는 객체를
rootDesc.의 권한 서술자 타입의 IDL 값으로 변환한 것으로 둔다. 이것이 예외를 던지면, 해당 예외로 거부된 promise를 반환하고 이 단계를 중단한다.name -
promise를 새로 생성된
Promise로 둔다. -
promise를 반환하고 다음 단계를 비동기적으로 계속한다.
-
typedDescriptor에 대해 PermissionStatus를 생성하는 단계를 실행하고, status를 그 결과로 둔다.
-
typedDescriptor.name으로 명명된 기능의 권한 요청 알고리즘을 typedDescriptor와 status를 인자로 사용하여 실행한다. -
이전 단계가 예외를 던졌다면, 해당 예외로 promise를 거부한다.
-
그렇지 않으면 promise를 status로 이행한다.
3. 권한 레지스트리의 추가 필드
권한 레지스트리의 강력한 기능은 추가로 권한 요청 알고리즘을 정의한다:
- 입력
- 동작
-
더 많은 권한 요청하기의 알고리즘을 사용하여 권한을 증가시키기 위해 필요한 프롬프트를 사용자에게 표시하고, 권한 결과 타입의 인스턴스를 그에 맞게 업데이트한다.
- 반환
-
아무것도 반환하지 않지만, 요청이 예외적으로 실패할 수 있는 경우 예외를 던질 수 있다. (단순히 권한이 거부되는 것은 예외적이지 않다.)
- 호출자 예
- 기본값
-
명시되지 않으면 이는 기본 권한 요청 알고리즘으로 기본 설정된다.
3.1. 기본 요청 알고리즘
기본 권한 요청
알고리즘은 PermissionDescriptor
permissionDesc와 PermissionStatus
status가 주어졌을 때 다음 단계를 실행한다:
-
permissionDesc와 status에 대해 기본 권한 질의 알고리즘을 실행한다.
-
status.state가"prompt"가 아니면, 이 단계를 중단한다. -
permissionDesc를 사용할 권한을 요청한다.
-
permissionDesc와 status에 대해 기본 권한 질의 알고리즘을 다시 실행한다.
환경 설정 객체 내에서 권한을 영구적으로 저장하지 않는 브라우저에서는, 이것이 항상
"prompt"를 반환하지만, 그래도 사용자에게 불필요한 프롬프트를 표시한다. 이는 어떤 권한도 기본 권한 요청 알고리즘을 사용해서는 안 된다는 의미일 수 있다. 이 알고리즘은 적절한 객체-능력을 결코 반환할 수 없기 때문이다.
4. 보안 고려 사항
확인된 보안 고려 사항은 없다.
5. 프라이버시 고려 사항
확인된 프라이버시 고려 사항은 없다.