A | B | C | D | E | F | G | H | I | J | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | AA | AB | AC | AD | AE | AF | AG | AH | AI | AJ | AK | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | go/web-capability-guards | Interaction | Permission | Frames | Lifecycle | ||||||||||||||||||||||||||||||||
2 | Also see the Legend sheet | No guard | Disallowed | Notes, if any | Async API | Secure Context | CORS | CSP allows | Historic activation | User activation | Site engagement | Default-allowed Content setting | Tab right-click to disable | Forgiveness | Yes-only | Accept via page action | Boolean | Per-device | Chooser | Top only | Same origin as top | Feature Policy | Not sandboxed | Focused tab | Visible tab | non-Stopped tab | Tab (vs SW) | ||||||||||
3 | beforeunload dialogs | ✅ | |||||||||||||||||||||||||||||||||||
4 | Vibrate | TODO? | ✅ | TODO | ✅ | ||||||||||||||||||||||||||||||||
5 | history.pushState() | TODO | |||||||||||||||||||||||||||||||||||
6 | HTML parsing | ✅ | ✅ | ||||||||||||||||||||||||||||||||||
7 | Receive keyboard input | ✅ | |||||||||||||||||||||||||||||||||||
8 | Receive mouse input | ✅ | |||||||||||||||||||||||||||||||||||
9 | Save cookies | ✅ | |||||||||||||||||||||||||||||||||||
10 | Load images | ✅ | ✅ | ||||||||||||||||||||||||||||||||||
11 | Run Javascript | ✅ | ✅ | ||||||||||||||||||||||||||||||||||
12 | Access to cross-origin fetch() bodies | ✅ | ✅ | ||||||||||||||||||||||||||||||||||
13 | Iframe navigates top frame | |✅ | ✅ | ✅ | |||||||||||||||||||||||||||||||||
14 | Navigator.share() | ✅ | |||||||||||||||||||||||||||||||||||
15 | open() new window | ✅ | ✅ | ||||||||||||||||||||||||||||||||||
16 | Download | ? | TODO? | ||||||||||||||||||||||||||||||||||
17 | Disable form autocomplete | ✅ | |||||||||||||||||||||||||||||||||||
18 | Use >X% of CPU | In a tab as opposed to a service worker | TODO? | ||||||||||||||||||||||||||||||||||
19 | Navigate to unknown-scheme: URLs | This can call out to native applications. I believe browsers ask permission for each scheme rather than each caller. | ✅ | ||||||||||||||||||||||||||||||||||
20 | Handle myscheme: URLs | TODO? | ✅ | ||||||||||||||||||||||||||||||||||
21 | |||||||||||||||||||||||||||||||||||||
22 | Client TLS certificate | ✅ | |||||||||||||||||||||||||||||||||||
23 | Load active mixed content | ✅ | |||||||||||||||||||||||||||||||||||
24 | Load passive mixed content | ||||||||||||||||||||||||||||||||||||
25 | |||||||||||||||||||||||||||||||||||||
26 | Modal dialogs (alert(), prompt(), etc.) | TODO: These should be modal on the tab. | TODO? | ||||||||||||||||||||||||||||||||||
27 | Autoplay video with sound | ✅ | ✅ | ||||||||||||||||||||||||||||||||||
28 | Autoplay sound | |✅? | |✅ | ✅ | |||||||||||||||||||||||||||||||||
29 | |||||||||||||||||||||||||||||||||||||
30 | Remote Playback | ? | ✅ | ✅ | |||||||||||||||||||||||||||||||||
31 | Presentation API | ✅ | ✅ | ||||||||||||||||||||||||||||||||||
32 | WebVR: non-exclusive mode | ✅ | |||||||||||||||||||||||||||||||||||
33 | WebVR: exclusive mode | ✅ | ✅ | ||||||||||||||||||||||||||||||||||
34 | |||||||||||||||||||||||||||||||||||||
35 | CSS styling | ✅ | ✅ | ||||||||||||||||||||||||||||||||||
36 | CSS animations | ✅ | ✅ | ||||||||||||||||||||||||||||||||||
37 | |||||||||||||||||||||||||||||||||||||
38 | Service Worker registration | ✅ | ✅ | ||||||||||||||||||||||||||||||||||
39 | Service Worker fetch handling | ✅ | |||||||||||||||||||||||||||||||||||
40 | Service Worker: Background execution | Via scheduled backgroundsync or silent push messages | ✅ | ✅ | |||||||||||||||||||||||||||||||||
41 | |||||||||||||||||||||||||||||||||||||
42 | Geolocation | ✅ | ✅ | ✅ | TODO | ✅ | |||||||||||||||||||||||||||||||
43 | Persistent Storage | ✅ | ✅ | ✅ | |||||||||||||||||||||||||||||||||
44 | Bluetooth | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | TODO | ✅ | ||||||||||||||||||||||||||||
45 | USB | ✅ | ✅ | ✅ | ✅ | ✅ | ? | ✅ | |||||||||||||||||||||||||||||
46 | NFC | ✅ | ✅ | ✅ | |||||||||||||||||||||||||||||||||
47 | Play audio | ✅ | TODO | ✅ | |||||||||||||||||||||||||||||||||
48 | Audio output selection | TODO: -> | |||||||||||||||||||||||||||||||||||
49 | Microphone getUserMedia | ✅ | ✅ | ✅ | TODO? | TODO? | TODO | ✅ | |||||||||||||||||||||||||||||
50 | Camera getUserMedia | ✅ | ✅ | ✅ | TODO? | TODO? | TODO | ✅ | |||||||||||||||||||||||||||||
51 | Screen capture | TODO: -> | |||||||||||||||||||||||||||||||||||
52 | Mic/camera enumeration | TODO: -> | |||||||||||||||||||||||||||||||||||
53 | Sensor: Accelerometer | There's a possibility of doing low resolution without a guard... | ✅ | ? | ? | ? | ? | ? | ✅ | ||||||||||||||||||||||||||||
54 | Sensor: Gyroscope | ✅ | ? | ? | ? | ? | ? | ✅ | |||||||||||||||||||||||||||||
55 | Sensor: Magnetometer | ✅ | ? | ? | ? | ? | ? | ✅ | |||||||||||||||||||||||||||||
56 | Sensor: Ambient light | ✅ | ? | ? | ? | ? | ? | ✅ | |||||||||||||||||||||||||||||
57 | Midi | ✅ | ✅ | ? | TODO | ✅ | |||||||||||||||||||||||||||||||
58 | Midi sysex | ✅ | ? | ✅ | ✅ | ||||||||||||||||||||||||||||||||
59 | EME | ✅ | ✅ | ✅ | TODO | ✅ | |||||||||||||||||||||||||||||||
60 | Push messages | ✅ | ✅ | |TODO? | |TODO? | ✅ | |||||||||||||||||||||||||||||||
61 | Notifications | ✅ | ✅ | |TODO? | |TODO? | ✅ | |||||||||||||||||||||||||||||||
62 | Fullscreen | Allowed by default, but tells the user that it's happened, and the user can cancel | ? | ✅ | ✅ | TODO | ✅ | ||||||||||||||||||||||||||||||
63 | Payment Request | ✅ | ✅ | ✅ | TODO | ✅ | |||||||||||||||||||||||||||||||
64 | Clipboard, read, synchronous | ✅ | |||||||||||||||||||||||||||||||||||
65 | Clipboard, write, synchronous | ✅ | ✅ | ||||||||||||||||||||||||||||||||||
66 | Clipboard, read, asynchronous | Proposal: Allowed with gesture for system UI elements; No gesture required if full/read permission granted. | ✅ | ✅ | sometimes | ||||||||||||||||||||||||||||||||
67 | Clipboard, write, asynchronous | Proposal: Allowed by default with gesture; No gesture required if full Permission is granted | ✅ | ✅ | sometimes | ✅ | |✅ | ||||||||||||||||||||||||||||||
68 | |||||||||||||||||||||||||||||||||||||
69 | Advertise security key support | ✅ | ✅ | ✅ | |||||||||||||||||||||||||||||||||
70 | Receive accessibility events | ✅ | ✅ | ||||||||||||||||||||||||||||||||||
71 | Drag/drop | ✅? | |||||||||||||||||||||||||||||||||||
72 | File upload | ✅ | |||||||||||||||||||||||||||||||||||
73 | |||||||||||||||||||||||||||||||||||||
74 | |||||||||||||||||||||||||||||||||||||
75 | |||||||||||||||||||||||||||||||||||||
76 | |||||||||||||||||||||||||||||||||||||
77 | |||||||||||||||||||||||||||||||||||||
78 | |||||||||||||||||||||||||||||||||||||
79 | |||||||||||||||||||||||||||||||||||||
80 | |||||||||||||||||||||||||||||||||||||
81 | |||||||||||||||||||||||||||||||||||||
82 | |||||||||||||||||||||||||||||||||||||
83 | |||||||||||||||||||||||||||||||||||||
84 | |||||||||||||||||||||||||||||||||||||
85 | |||||||||||||||||||||||||||||||||||||
86 | |||||||||||||||||||||||||||||||||||||
87 | |||||||||||||||||||||||||||||||||||||
88 | |||||||||||||||||||||||||||||||||||||
89 | |||||||||||||||||||||||||||||||||||||
90 | |||||||||||||||||||||||||||||||||||||
91 | |||||||||||||||||||||||||||||||||||||
92 | |||||||||||||||||||||||||||||||||||||
93 | |||||||||||||||||||||||||||||||||||||
94 | |||||||||||||||||||||||||||||||||||||
95 | |||||||||||||||||||||||||||||||||||||
96 | |||||||||||||||||||||||||||||||||||||
97 | |||||||||||||||||||||||||||||||||||||
98 | |||||||||||||||||||||||||||||||||||||
99 | |||||||||||||||||||||||||||||||||||||
100 |