Feature | Type of permission request | Time of request | Persistence of permission | Visibility of permission | Control on permission | Embeddability | Permission denied signalling | Remarks |
---|---|---|---|---|---|---|---|---|
Geolocation | Prompt | At usage time | Session by default, optionally permanent | Chrome indicator | Via indicator | Always allowed, bound to origin of document calling script | Error callback with PERMISSION_DENIED code |
(getCurrentPosition and watchPosition handled identically) |
Direct camera access (getUserMedia ) |
Prompt | At usage time | Session by default, optionally permanent | Chrome indicator, pulsing reminder | Via indicator | Always allowed, bound to origin of document calling script | Error callback with PermissionDeniedError object |
Can be combined with mike access. Also grants access to information about other available cameras |
Direct mike access (getUserMedia ) |
Prompt | At usage time | Session by default, optionally permanent | Chrome indicator | Via indicator | Always allowed, bound to origin of document calling script | Error callback with PermissionDeniedError object |
Can be combined with camera access.
Also grants access to information about other available microphones |
Get stuff from camera / mike (HTML Media Capture) | Implict via user interaction | At usage time | One-off | N/A | N/A | Always allowed | No file object available | |
Notification | Prompt | Upfront | Persistent | None (?) | ? | Allowed | Notification.permission = "denied" |
|
Pop Up | Denied by default, Opt-in required | At usage time | One-off, optionally persistent | Chrome indicator | Via indicator | Allowed | window.open == null |
|
Fullscreen | Ask for forgiveness after “engagement gesture” | At usage time | One-off | Transient overlay | Through instructions | Allowed only with specific permission from parent (allowfullscreen attribute) | watch el.fullscreenenabled ; fullscreenerror event if previously rejected |
|
Pointer Lock | Ask for forgiveness after “engagement gesture” | At usage time | One-off | Transient overlay | Through instructions | Allowed | document.pointerLockElement == null ; pointerlockchange event |
|
File picker | Implicit via user interaction | At usage time | One-off | N/A | N/A | Allowed | No file object | |
Quota | Prompt | Upfront | Persistent | ? | Convoluted | Allowed | Success (!) callback with StorageInfo.quota unchanged |