Update Subresource Integrity status to Supported In Preview
[WebKit-https.git] / Source / WebCore / features.json
1 {
2     "specification": [
3     {
4         "name": "Battery Status API",
5         "status": {
6             "status": "Removed"
7         },
8         "url": "https://w3c.github.io/battery/",
9         "webkit-url": "https://webkit.org/b/62698",
10         "keywords": ["battery"],
11         "category": "webapps",
12         "description": "An API that provides information about the battery status of the hosting device."
13     },
14     {
15         "name": "Beacon API",
16         "status": {
17             "status": "Under Consideration",
18             "enabled-by-default": false
19         },
20         "url": "https://www.w3.org/TR/beacon/",
21         "webkit-url": "https://webkit.org/b/147885",
22         "keywords": ["beacon","analytics","diagnostics","request"],
23         "category": "webapps",
24         "description": "Schedules asynchronous and non-blocking data delivery while the current page is unloading to mitigate resource contention for other time-critical requests.",
25         "contact": {
26             "name": "Jonathan Davis",
27             "email": "web-evangelist@apple.com",
28             "twitter": "@jonathandavis"
29         }
30     },
31     {
32         "name": "CSS Color Level 4",
33         "status": {
34             "status": "Supported",
35             "enabled-by-default": true
36         },
37         "url": "https://drafts.csswg.org/css-color/",
38         "keywords": ["css color", "color"],
39         "category": "css",
40         "description": "Allows content to specify colors outside of the sRGB Color Space."
41     },
42     {
43         "name": "CSS Font Display",
44         "status": {
45             "status": "Under Consideration",
46             "enabled-by-default": false
47         },
48         "url": "https://tabatkins.github.io/specs/css-font-display/",
49         "keywords": ["css font display", "font display", "font-display", "css font rendering controls", "font rendering controls"],
50         "category": "css",
51         "description": "Allows content to specify what is shown during font loading.",
52         "contact": {
53             "name": "Myles C. Maxfield",
54             "twitter": "@Litherum",
55             "email": "mmaxfield@apple.com"
56         }
57     },
58     {
59         "name": "CSS Fonts Level 4",
60         "url": "https://drafts.csswg.org/css-fonts-4/",
61         "keywords": ["css fonts", "fonts"],
62         "category": "css",
63         "contact": {
64             "name": "Myles C. Maxfield",
65             "twitter": "@Litherum",
66             "email": "mmaxfield@apple.com"
67         }
68     },
69     {
70         "name": "CSS Grid Layout Level 1",
71         "status": {
72             "status": "Supported",
73             "enabled-by-default": true
74         },
75         "url": "http://dev.w3.org/csswg/css-grid/",
76         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=60731",
77         "keywords": ["css grid layout", "css grid", "grid"],
78         "category": "css",
79         "contact": {
80             "name": "Sergio Villar Senin",
81             "email": "svillar@igalia.com"
82         }
83     },
84     {
85         "name": "CSS Image Values and Replaced Content Module Level 4",
86         "url": "https://www.w3.org/TR/css4-images/",
87         "keywords": ["css image values","css","image values"],
88         "category": "css"
89     },
90     {
91         "name": "CSS Inline Layout Module Level 3",
92         "status": {
93             "status": "Supported",
94             "enabled-by-default": true
95         },
96         "url": "http://dev.w3.org/csswg/css-inline/",
97         "keywords": ["css inline layout", "css inline", "inline"],
98         "category": "css"
99     },
100     {
101         "name": "CSS Media Queries Level 4",
102         "url": "http://dev.w3.org/csswg/mediaqueries-4/",
103         "keywords": ["css media queries", "media queries"],
104         "category": "css"
105     },
106     {
107         "name": "CSS Painting API Level 1",
108         "status": {
109             "status": "Under Consideration"
110         },
111         "url": "https://drafts.css-houdini.org/css-paint-api/",
112         "keywords": ["css", "houdini"],
113         "category": "css"
114     },
115     {
116         "name": "CSS Positioned Layout Module Level 3",
117         "url": "http://dev.w3.org/csswg/css-position/",
118         "keywords": ["css positioning"],
119         "category": "css"
120     },
121     {
122         "name": "CSS Properties and Values API Level 1",
123         "status": {
124             "status": "Under Consideration"
125         },
126         "url": "https://drafts.css-houdini.org/css-properties-values-api/",
127         "keywords": ["css", "houdini"],
128         "category": "css"
129     },
130     {
131         "name": "CSS Rhythmic Sizing",
132         "status": {
133             "status": "Under Consideration",
134             "enabled-by-default": false
135         },
136         "url": "https://drafts.csswg.org/css-rhythm/",
137         "keywords": ["css rhythmic sizing", "rhythmic sizing", "step sizing"],
138         "category": "css",
139         "description": "Allows block content to set a simple grid to which lines will adhere.",
140         "contact": {
141             "name": "Myles C. Maxfield",
142             "twitter": "@Litherum",
143             "email": "mmaxfield@apple.com"
144         }
145     },
146     {
147         "name": "CSS Scroll Snap Points Module Level 1",
148         "status": {
149             "status": "Supported",
150             "enabled-by-default": true
151         },
152         "url": "http://dev.w3.org/csswg/css-snappoints/",
153         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=134283",
154         "keywords": ["css scroll snap points", "scroll snap", "snap points"],
155         "category": "css",
156         "contact": {
157             "name": "Brent Fulgham",
158             "email": "bfulgham@apple.com"
159         }
160     },
161     {
162         "name": "CSS Selectors Level 4",
163         "url": "http://dev.w3.org/csswg/selectors-4/",
164         "keywords": ["css selectors", "selectors"],
165         "category": "css",
166         "contact": {
167             "name": "Benjamin Poulain",
168             "twitter": "@awfulben",
169             "email": "benjamin@webkit.org"
170         }
171     },
172     {
173         "name": "CSS Text Decoration Level 4",
174         "status": {
175             "status": "Under Consideration",
176             "enabled-by-default": false
177         },
178         "url": "https://drafts.csswg.org/css-text-decor-4/",
179         "keywords": ["css text decoration", "text decoration"],
180         "category": "css",
181         "description": "Allows content to specify properties of text decorations such as underlines.",
182         "contact": {
183             "name": "Myles C. Maxfield",
184             "twitter": "@Litherum",
185             "email": "mmaxfield@apple.com"
186         }
187     },
188     {
189         "name": "CSS Variables",
190         "status": {
191             "status": "Supported",
192             "enabled-by-default": true
193         },
194         "url": "https://www.w3.org/TR/css-variables/",
195         "keywords": ["css variable", "css custom property"],
196         "category": "css",
197         "description": "Allows developers to define reusable custom property values.",
198         "contact": {
199             "name": "Jon Davis",
200             "twitter": "@jonathandavis",
201             "email": "web-evangelist@apple.com"
202         }
203     },
204     {
205         "name": "CSS Will Change",
206         "status": {
207             "status": "Supported",
208             "enabled-by-default": true
209         },
210         "url": "https://drafts.csswg.org/css-will-change/",
211         "keywords": ["css willchange", "css will-change"],
212         "category": "css",
213         "contact": {
214             "name": "Simon Fraser",
215             "twitter": "@smfr"
216         }
217     },
218     {
219         "name": "Content Security Policy Level 2",
220         "status": {
221             "status": "Supported",
222             "enabled-by-default": true
223         },
224         "url": "https://w3c.github.io/webappsec-csp/2/",
225         "keywords": ["csp", "cross-site scripting", "xss", "injection", "header"],
226         "category": "webapps",
227         "description": "A mechanism that web applications can use to mitigate content injection vulnerabilities, such as cross-site scripting (XSS). Developers can declare a CSP policy to prohibit their web application from loading content or executing scripts that have not been whitelisted among other capabilities.",
228         "contact": {
229             "name": "Daniel Bates",
230             "email": "dbates@webkit.org"
231         }
232     },
233     {
234         "name": "Content Security Policy Level 3",
235         "status": {
236             "status": "Partially Supported",
237             "enabled-by-default": true
238         },
239         "url": "https://w3c.github.io/webappsec-csp/",
240         "keywords": ["csp", "cross-site scripting", "xss", "injection", "header"],
241         "category": "webapps",
242         "contact": {
243             "name": "Daniel Bates",
244             "email": "dbates@webkit.org"
245         }
246     },
247     {
248         "name": "DOM",
249         "url": "https://dom.spec.whatwg.org",
250         "keywords": ["dom", "dom4"],
251         "category": "html"
252     },
253     {
254         "name": "DeviceOrientation Events",
255         "status": {
256             "status": "Supported",
257             "enabled-by-default": true
258         },
259         "description": "DOM events that provide information about the physical orientation and motion of a hosting device.",
260         "url": "https://w3c.github.io/deviceorientation/spec-source-orientation.html",
261         "keywords": ["device orientation", "devicemotion", "acceleration", "rotation"],
262         "comment": "compassHeading and compassAccuracy are only available on iOS devices"
263     },
264     {
265         "name": "Encoding",
266         "status": {
267             "status": "Supported",
268             "enabled-by-default": true
269         },
270         "url": "https://encoding.spec.whatwg.org",
271         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=163771",
272         "keywords": ["encoding", "TextEncoder", "TextDecoder", "request", "response", "header"],
273         "category": "webapps",
274         "description": "TextEncoder and TextDecoder APIs for converting text from different character sets.",
275         "contact": {
276             "name": "Alex Christensen",
277             "twitter": "@alexfchr",
278             "email": "achristensen@webkit.org"
279         }
280     },    {
281         "name": "Fetch",
282         "status": {
283             "status": "Supported"
284         },
285         "url": "https://fetch.spec.whatwg.org",
286         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=151937",
287         "keywords": ["fetch", "http", "cors", "request", "response", "header"],
288         "category": "webapps",
289         "description": "An underlying unified architecture for making resource requests.",
290         "contact": {
291             "name": "Jon Davis",
292             "twitter": "@jonathandavis",
293             "email": "web-evangelist@apple.com"
294         }
295     },
296     {
297         "name": "Filter Effects Module Level 2",
298         "url": "http://dev.w3.org/fxtf/filters-2/",
299         "keywords": ["css filters", "filter effects", "filters"],
300         "category": "css"
301     },
302     {
303         "name": "Gamepad",
304         "status": {
305             "status": "Supported"
306         },
307         "url": "https://www.w3.org/TR/gamepad/",
308         "webkit-url": "https://webkit.org/b/134076",
309         "keywords": ["gamepad", "gaming", "games", "controller"],
310         "category": "webapps",
311         "description": "An interface for accessing and responding to game controller device state.",
312         "contact": {
313             "name": "Jonathan Davis",
314             "email": "web-evangelist@apple.com",
315             "twitter": "@jonathandavis"
316         }
317     },
318     {
319         "name": "Geolocation API",
320         "status": {
321             "status": "Supported",
322             "enabled-by-default": true
323         },
324         "description": "An API that provides scripted access to geographical location information associated with the hosting device.",
325         "url": "https://www.w3.org/TR/geolocation-API/"
326     },
327     {
328         "name": "Geometry Interfaces",
329         "url": "https://drafts.fxtf.org/geometry/",
330         "keywords": ["geometry", "dompointreadonly", "dompoint", "domrectreadonly", "domrect", "domquad", "dommatrixreadonly", "dommatrix"],
331         "category": "html",
332         "status": {
333             "status": "In Development"
334         },
335         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=163505"
336     },
337     {
338         "name": "HTML5",
339         "url": "https://html.spec.whatwg.org",
340         "keywords": ["html", "html5", "html5.1"],
341         "category": "html"
342     },
343     {
344         "name": "Indexed Database",
345         "status": {
346             "status": "Supported"
347         },
348         "url": "http://www.w3.org/TR/IndexedDB/",
349         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=149117",
350         "keywords": ["indexeddb", "index db", "indexed db", "indexed database", "idb"],
351         "description": "A standard interface to a database of records for simple values and objects. WebKit supports the full W3C recommended standard.",
352         "contact": {
353             "name": "Brady Eidson",
354             "twitter": "@bradeeoh",
355             "email": "beidson@webkit.org"
356         }
357     },
358     {
359         "name": "Indexed Database 2.0",
360         "status": {
361             "status": "Supported"
362         },
363         "url": "http://w3c.github.io/IndexedDB/",
364         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=160306",
365         "keywords": ["indexeddb", "index db", "indexed db", "indexed database", "idb"],
366         "description": "Version 2.0 of the Indexed Database API. We are participating in development of the standard and are implementing new features as they stabilize.",
367         "contact": {
368             "name": "Brady Eidson",
369             "twitter": "@bradeeoh",
370             "email": "beidson@webkit.org"
371         }
372     },
373     {
374         "name": "Intersection Observer",
375         "status": {
376             "status": "In Development"
377         },
378         "url": "https://wicg.github.io/IntersectionObserver/",
379         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=159475",
380         "keywords": ["intersection", "intersection observer"],
381         "description": "An API that can be used to understand the visibility and position of DOM elements relative to a containing element or to the top-level viewport."
382     },
383     {
384         "name": "Media Capture and Streams",
385         "status": {
386             "status": "Supported In Preview"
387         },
388         "url": "https://w3c.github.io/mediacapture-main/",
389         "keywords": ["mediastream", "getusermedia"],
390         "description": "A set of JavaScript APIs that allow local media, including audio and video, to be requested."
391     },
392     {
393         "name": "Navigation Timing Level 1",
394         "status": {
395             "status": "Supported"
396         },
397         "url": "https://www.w3.org/TR/navigation-timing/",
398         "keywords": ["performance", "navigation timing"],
399         "description": "An API that exposes page load measurements to the page."
400     },
401     {
402         "name": "Navigation Timing Level 2",
403         "status": {
404             "status": "In Development",
405             "enabled-by-default": false
406         },
407         "url": "https://w3c.github.io/navigation-timing/",
408         "keywords": ["performance", "navigation timing"],
409         "description": "An API that exposes page load measurements to the page and adds entries to the performance timeline.",
410         "contact": {
411             "name": "Joseph Pecoraro",
412             "email": "joepeck@webkit.org",
413             "twitter": "@JosephPecoraro"
414         }
415     },
416     {
417         "name": "Performance Observer",
418         "status": {
419             "status": "Supported In Preview",
420             "enabled-by-default": true
421         },
422         "url": "https://w3c.github.io/performance-timeline/",
423         "keywords": ["performance", "performance observer", "performance timeline"],
424         "description": "An API to observe performance timeline entries at idle times.",
425         "contact": {
426             "name": "Joseph Pecoraro",
427             "email": "joepeck@webkit.org",
428             "twitter": "@JosephPecoraro"
429         }
430     },
431     {
432         "name": "Pointer Lock",
433         "status": {
434             "status": "Supported"
435         },
436         "url": "https://www.w3.org/TR/pointerlock/",
437         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=164652",
438         "keywords": ["pointer", "pointer lock"],
439         "description": "Provides scripted access to raw mouse movement data while locking the target of mouse events to a single element and removing the cursor from view."
440     },
441     {
442         "name": "Preload",
443         "status": {
444             "status": "Supported"
445         },
446         "url": "http://w3c.github.io/preload/",
447         "webkit-url": "https://webkit.org/b/158720",
448         "keywords": ["preload"],
449         "description": "Provides a declarative fetch primitive that initiates an early fetch and separates fetching from resource execution.",
450         "contact": {
451             "name": "Yoav Weiss",
452             "email": "yoav@yoav.ws",
453             "twitter": "@yoavweiss"
454         }
455     },
456     {
457         "name": "Resource Timing Level 2",
458         "status": {
459             "status": "Supported In Preview",
460             "enabled-by-default": true
461         },
462         "url": "https://w3c.github.io/resource-timing/",
463         "webkit-url": "https://webkit.org/b/61138",
464         "keywords": ["performance", "resourcetiming", "resource timing", "rsrc"],
465         "description": "An API to that provides detailed timing information for resource loads.",
466         "contact": {
467             "name": "Joseph Pecoraro",
468             "email": "joepeck@webkit.org",
469             "twitter": "@JosephPecoraro"
470         }
471     },
472     {
473         "name": "SVG in OpenType Fonts",
474         "status": {
475             "status": "Under Consideration"
476         },
477         "url": "https://www.microsoft.com/typography/otspec/svg.htm/",
478         "keywords": ["svg", "font", "opentype", "OT-SVG"],
479         "category": "rendering",
480         "description": "Allows Scalable Vector Graphics content within font files.",
481         "contact": {
482             "name": "Myles C. Maxfield",
483             "twitter": "@Litherum",
484             "email": "mmaxfield@apple.com"
485         }
486     },
487     {
488         "name": "Service Workers",
489         "status": {
490             "status": "Under Consideration"
491         },
492         "url": "http://www.w3.org/TR/2015/WD-service-workers-20150625/",
493         "keywords": ["service workers"],
494         "category": "webapps",
495         "description": "A method for browsers to run JavaScript in the background to handle network requests and manage cached responses. Service Workers offers a replacement for Application Cache.",
496         "contact": {
497             "name": "Jon Davis",
498             "twitter": "@jonathandavis",
499             "email": "web-evangelist@apple.com"
500         }
501     },
502     {
503         "name": "Streams",
504         "url": "https://streams.spec.whatwg.org",
505         "keywords": ["streams api"],
506         "category": "webapps"
507     },
508     {
509         "name": "User Timing Level 2",
510         "status": {
511             "status": "Supported in Preview",
512             "enabled-by-default": true
513         },
514         "url": "https://w3c.github.io/user-timing/",
515         "keywords": ["performance", "usertiming", "user timing"],
516         "description": "Provides high precision timestamp marking APIs.",
517         "contact": {
518             "name": "Jonathan Davis",
519             "email": "web-evangelist@apple.com",
520             "twitter": "@jonathandavis"
521         }
522     },
523     {
524         "name": "WOFF File Format 2.0",
525         "status": {
526             "status": "Supported"
527         },
528         "url": "https://www.w3.org/TR/WOFF2/",
529         "keywords": ["woff"],
530         "category": "css",
531         "description": "Improves compression to reduce bandwidth with content-aware preprocessing.",
532         "contact": {
533             "name": "Jonathan Davis",
534             "email": "web-evangelist@apple.com",
535             "twitter": "@jonathandavis"
536         }
537     },
538     {
539         "name": "Web Animations",
540         "status": {
541             "status": "Under Consideration"
542         },
543         "url": "https://www.w3.org/TR/web-animations-1/",
544         "keywords": ["web animations"],
545         "description": "An API to synchronize with the timing for presentation changes of a web page.",
546         "contact": {
547             "name": "Jonathan Davis",
548             "email": "web-evangelist@apple.com",
549             "twitter": "@jonathandavis"
550         }
551     },
552     {
553         "name": "Web App Manifest",
554         "status": {
555             "status": "Under Consideration",
556             "enabled-by-default": false
557         },
558         "url": "https://www.w3.org/TR/appmanifest/",
559         "webkit-url": "https://webkit.org/b/158205",
560         "keywords": ["web app","manifest", "webapp"],
561         "category": "webapps",
562         "description": "A JSON-format manifest file for developers to place metadata associated with a web application.",
563         "contact": {
564             "name": "Jonathan Davis",
565             "email": "web-evangelist@apple.com",
566             "twitter": "@jonathandavis"
567         }
568     },
569     {
570         "name": "Web Components",
571         "url": "http://www.w3.org/wiki/WebComponents/",
572         "keywords": ["web components", "shadow dom", "html imports", "custom elements", "template element"],
573         "category": "webapps",
574         "description": "A collection of technologies to improve modularization of DOM subtrees.",
575         "contact": {
576             "name": "Ryosuke Niwa",
577             "email": "rniwa@webkit.org"
578         }
579     },
580     {
581         "name": "Web Cryptography API",
582         "status": {
583             "status": "Supported In Preview",
584             "enabled-by-default": true
585         },
586         "url": "http://www.w3.org/TR/WebCryptoAPI/",
587         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=160880",
588         "keywords": ["webcrypto", "web cryptography api", "crypto"],
589         "category": "webapps",
590         "description": "A JavaScript API for web applications to perform cryptographic operations.",
591         "comment": "The prefixed ‘webkitSubtle’ attribute which gave access to the SubtleCrypto API is now deprecated in preference to the official “subtle” property.",
592         "contact": {
593             "name": "Jiewen Tan",
594             "email": "jiewen_tan@apple.com"
595         }
596     },
597     {
598         "name": "WebGL 1",
599         "status": {
600             "status": "Supported",
601             "enabled-by-default": true
602         },
603         "url": "https://www.khronos.org/registry/webgl/specs/1.0/",
604         "keywords": ["webgl"],
605         "category": "html"
606     },
607     {
608         "name": "WebGL 2",
609         "status": {
610             "status": "Supported In Preview",
611             "enabled-by-default": true
612         },
613         "url": "https://www.khronos.org/registry/webgl/specs/latest/2.0/",
614         "keywords": ["webgl"],
615         "category": "html"
616     },
617     {
618         "name": "WebRTC",
619         "status": {
620             "status": "Supported In Preview"
621         },
622         "url": "http://www.w3.org/TR/webrtc/",
623         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=124288",
624         "keywords": ["webrtc"],
625         "category": "webapps",
626         "description": "An API to facilitate real-time communication for browser-to-browser applications.",
627         "contact": {
628             "name": "Jon Davis",
629             "twitter": "@jonathandavis",
630             "email": "web-evangelist@apple.com"
631         }
632     }
633     ],
634
635     "features": [
636     {
637         "name": "CSS Selector :any-link",
638         "status": {
639             "status": "Supported",
640             "enabled-by-default": true
641         },
642         "url": "http://dev.w3.org/csswg/selectors-4/#the-any-link-pseudo",
643         "specification": "CSS Selectors Level 4",
644         "description": "The pseudo class :any-link matches any element that would match :link or :visisted.",
645         "comment": "A prefix version :-webkit-any-link has been available for a while but it was not 100% compliant to the specification.",
646         "contact": {
647             "name": "Benjamin Poulain",
648             "twitter": "@awfulben",
649             "email": "benjamin@webkit.org"
650         }
651     },
652     {
653         "name": "CSS Selector :focus-within",
654         "status": {
655             "status": "Supported",
656             "enabled-by-default": true
657         },
658         "url": "https://drafts.csswg.org/selectors-4/#the-focus-within-pseudo",
659         "webkit-url": "https://trac.webkit.org/changeset/202358",
660         "specification": "CSS Selectors Level 4",
661         "description": "The selector :focus-within matches an element if the element or a descendant has the focus.",
662         "contact": {
663             "name": "Benjamin Poulain",
664             "twitter": "@awfulben",
665             "email": "benjamin@webkit.org"
666         }
667     },
668     {
669         "name": "CSS Selector :lang() level 4",
670         "status": {
671             "status": "Supported",
672             "enabled-by-default": true
673         },
674         "url": "http://dev.w3.org/csswg/selectors-4/#the-lang-pseudo",
675         "specification": "CSS Selectors Level 4",
676         "description": "The selector :lang() is extended in level 4 to support a list of language range, each range can contain a wildcard. For example: p:lang(\"*-be\", \"en\")."
677     },
678     {
679         "name": "CSS Selector :matches()",
680         "status": {
681             "status": "Supported",
682             "enabled-by-default": true
683         },
684         "url": "http://dev.w3.org/csswg/selectors-4/#matches",
685         "specification": "CSS Selectors Level 4",
686         "description": "The selector :matches() takes a selector list as argument and matches an element if any of them matches (e.g. :matches(article > section, #target)). When used for styling, the specificity of :matches() is the higest specificity of all selectors in the selector list.",
687         "comment": "The pseudo classes <em>:visited</em> and <em>:link</em> are not supported inside :matches().",
688         "contact": {
689             "name": "Benjamin Poulain",
690             "twitter": "@awfulben",
691             "email": "benjamin@webkit.org"
692         }
693     },
694     {
695         "name": "CSS Selector :not() level 4",
696         "status": {
697             "status": "Supported",
698             "enabled-by-default": true
699         },
700         "url": "http://dev.w3.org/csswg/selectors-4/#negation",
701         "specification": "CSS Selectors Level 4",
702         "description": "The selector :not() in level 4 supports full selector lists as argument. For example: :not(:any-link >> img, :any-link >> picture).",
703         "comment": "The pseudo classes <em>:visited</em> and <em>:link</em> are not supported inside :not().",
704         "contact": {
705             "name": "Benjamin Poulain",
706             "twitter": "@awfulben",
707             "email": "benjamin@webkit.org"
708         }
709     },
710     {
711         "name": "CSS Selector :nth-child(An+B of selector list) and :nth-last-child(An+B of selector list)",
712         "status": {
713             "status": "Supported",
714             "enabled-by-default": true
715         },
716         "url": "http://dev.w3.org/csswg/selectors-4/#the-nth-child-pseudo",
717         "specification": "CSS Selectors Level 4",
718         "description": "The pseudo classes :nth-child() and :nth-last-child() now supports a selector list that filters what to count. For example: \":nth-child(even of .visible)\".",
719         "comment": "The pseudo classes <em>:visited</em> and <em>:link</em> are not supported inside :nth-child() and :nth-last-child().",
720         "contact": {
721             "name": "Benjamin Poulain",
722             "twitter": "@awfulben",
723             "email": "benjamin@webkit.org"
724         }
725     },
726     {
727         "name": "CSS Selector :placeholder-shown",
728         "status": {
729             "status": "Supported",
730             "enabled-by-default": true
731         },
732         "url": "http://dev.w3.org/csswg/selectors-4/#placeholder",
733         "specification": "CSS Selectors Level 4",
734         "description": "The selector :placeholder-shown matches any input element that has a visible placeholder.",
735         "comment": "Styling the placeholder can be done through the WebKit pseudo-element \"::placeholder\".",
736         "contact": {
737             "name": "Benjamin Poulain",
738             "twitter": "@awfulben",
739             "email": "benjamin@webkit.org"
740         }
741     },
742     {
743         "name": "CSS Shapes Level 1",
744         "status": {
745             "status": "Supported",
746             "enabled-by-default": true
747         },
748         "url": "http://www.w3.org/TR/css-shapes-1/",
749         "description": "CSS Shapes describe geometric shapes for use in CSS. For Level 1, CSS Shapes can be applied to floats.",
750         "comment": "The implementation is feature complete and shipping, but is -webkit prefixed."
751     },
752     {
753         "name": "Case-insensitive attribute selectors",
754         "status": {
755             "status": "Supported",
756             "enabled-by-default": true
757         },
758         "url": "http://dev.w3.org/csswg/selectors-4/#attribute-case",
759         "specification": "CSS Selectors Level 4",
760         "description": "Any attribute selector that test a value can take a flag \"i\" to use case insensitive checks. For example: input[type=number i] test the value \"number\" case-insensitively.",
761         "contact": {
762             "name": "Benjamin Poulain",
763             "twitter": "@awfulben",
764             "email": "benjamin@webkit.org"
765         }
766     },
767     {
768         "name": "Conic Gradients",
769         "status": {
770             "status": "Under Consideration"
771         },
772         "url": "https://www.w3.org/TR/css4-images/#conic-gradients",
773         "specification": "CSS Image Values and Replaced Content Module Level 4",
774         "description": "Defines gradients wrapped around a central point.",
775         "contact": {
776             "name": "Jonathan Davis",
777             "email": "web-evangelist@apple.com",
778             "twitter": "@jonathandavis"
779         }
780     },
781     {
782         "name": "Custom Elements",
783         "status": {
784             "status": "Supported"
785         },
786         "url": "http://w3c.github.io/webcomponents/spec/custom/",
787         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=150225",
788         "specification": "Web Components",
789         "description": "Define a custom HTML tag and associate it with an ES6 class.",
790         "contact": {
791             "name": "Ryosuke Niwa",
792             "email": "rniwa@webkit.org"
793         }
794     },
795     {
796         "name": "Download Attribute",
797         "status": {
798             "status": "Supported"
799         },
800         "url": "https://html.spec.whatwg.org/multipage/semantics.html#downloading-resources",
801         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=156056",
802         "specification": "HTML5",
803         "description": "An attribute to an anchor or area element to indicate that a resource is intended to be downloaded for use later rather than immediately.",
804         "contact": {
805             "name": "Brent Fulgham",
806             "email": "bfulgham@apple.com",
807             "twitter": "@bfulgham"
808         }
809     },
810     {
811         "name": "Element.closest()",
812         "status": {
813             "status": "Supported",
814             "enabled-by-default": true
815         },
816         "url": "https://dom.spec.whatwg.org/#dom-element-closest",
817         "documentation-url": "https://developer.mozilla.org/en-US/docs/Web/API/Element/closest",
818         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=137418",
819         "specification": "DOM",
820         "description": "Find the closest ancestor matching the selector passed as argument. The element itself is returned if it matches the selector.",
821         "contact": {
822             "name": "Benjamin Poulain",
823             "twitter": "@awfulben",
824             "email": "benjamin@webkit.org"
825         }
826     },
827     {
828         "name": "Filter Effects backdrop-filter property",
829         "status": {
830             "status": "Supported",
831             "enabled-by-default": true
832         },
833         "url": "http://dev.w3.org/fxtf/filters-2/#propdef-backdrop-filter",
834         "specification": "Filter Effects Module Level 2",
835         "description": "This property specifies styling for filters applied to the backdrop of an element."
836     },
837     {
838         "name": "Force Click Events",
839         "status": {
840             "status": "Supported",
841             "enabled-by-default": true
842         },
843         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=142836",
844         "description": "Provide the events necessary to handle force click events in the page, overriding the default behavior."
845     },
846     {
847         "name": "HTML Interactive Form Validation",
848         "status": {
849             "status": "Supported",
850             "enabled-by-default": true
851         },
852         "url": "https://html.spec.whatwg.org/#constraint-validation",
853         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=164382",
854         "keywords": ["form validation", "bubble"],
855         "specification": "HTML5",
856         "description": "Interactive validation of constraints on HTML forms by displaying bubbles with a validation message next to incomplete / invalid form controls.",
857         "contact": {
858             "name": "Chris Dumez",
859             "email": "cdumez@apple.com",
860             "twitter": "@chris_dumez"
861         }
862     },
863     {
864         "name": "HTML imports",
865         "status": {
866             "status": "Not Considering"
867         },
868         "url": "http://w3c.github.io/webcomponents/spec/imports/",
869         "specification": "Web Components",
870         "description": "Includes resusable HTML documents in other HTML documents.",
871         "comment": "Multile browser vendors have raised concerns about how the HTML imports currently works. For example, its dependency model is not fully compatible with ES6 Modules. We are exploring other ways to package web components by integrating into ES6 Modules with other browser vendors.",
872         "contact": {
873             "name": "Ryosuke Niwa",
874             "email": "rniwa@webkit.org"
875         }
876     },
877     {
878         "name": "ImageBitmap",
879         "status": {
880             "status": "Under Consideration"
881         },
882         "url": "https://html.spec.whatwg.org/multipage/webappapis.html#imagebitmap",
883         "webkit-url": "https://webkit.org/b/",
884         "specification": "HTML5",
885         "description": "An interface for drawing bitmap images to a &lt;canvas&gt; without undue latency.",
886         "contact": {
887             "name": "Jonathan Davis",
888             "email": "web-evangelist@apple.com",
889             "twitter": "@jonathandavis"
890         }
891     },
892     {
893         "name": "Initial Letter",
894         "status": {
895             "status": "Supported",
896             "enabled-by-default": true
897         },
898         "url": "http://dev.w3.org/csswg/css-inline/#propdef-initial-letter",
899         "specification": "CSS Inline Layout Module Level 3",
900         "description": "This property specifies styling for dropped, raised, and sunken initial letters."
901     },
902     {
903         "name": "Input Events",
904         "status": {
905             "status": "Supported",
906             "enabled-by-default": false
907         },
908         "url": "https://w3c.github.io/input-events",
909         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=163112",
910         "documentation-url": "https://w3c.github.io/input-events",
911         "description": "Allows pages to override default editing behaviors and to monitor DOM changes due to user input."
912     },
913     {
914         "name": "Interaction Media Features (pointer, hover, any-pointer, any-hover)",
915         "status": {
916             "status": "Supported",
917             "enabled-by-default": true
918         },
919         "url": "http://dev.w3.org/csswg/mediaqueries-4/#mf-interaction",
920         "specification": "CSS Media Queries Level 4",
921         "description": "The \"pointer\" media defines how percise the pointing device is. The \"hover\" media defines the ability of the poiting device to hover elements."
922     },
923     {
924         "name": "MicroData",
925         "status": {
926             "status": "Removed"
927         },
928         "url": "https://html.spec.whatwg.org/multipage/microdata.html",
929         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=119480",
930         "specification": "HTML5",
931         "comment": "WebKit used to support MicroData. The feature never gained any traction and was eventually removed to clean up the codebase."
932     },
933     {
934         "name": "Navigator.hardwareConcurrency",
935         "status": {
936             "status": "Supported",
937             "enabled-by-default": true
938         },
939         "url": "https://wiki.whatwg.org/wiki/Navigator_HW_Concurrency",
940         "webkit-url": "http://trac.webkit.org/changeset/169017",
941         "description": "Navigator.hardwareConcurrency provides the total number of logical processors available to the user agent."
942     },
943     {
944         "name": "Picture element",
945         "status": {
946             "status": "Supported",
947             "enabled-by-default": false
948         },
949         "url": "https://html.spec.whatwg.org/multipage/embedded-content.html#the-picture-element",
950         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=116963",
951         "specification": "HTML5",
952         "description": "Enable handling the art-direction responsive images use-case by defining multiple image sources in markup",
953         "contact": {
954             "name": "Yoav Weiss",
955             "twitter": "@yoavweiss",
956             "email": "yoav@yoav.ws"
957         }
958     },
959     {
960         "name": "Position: sticky",
961         "status": {
962             "status": "Supported",
963             "enabled-by-default": true
964         },
965         "url": "http://dev.w3.org/csswg/css-position/#sticky-pos",
966         "specification": "CSS Positioned Layout Module Level 3",
967         "description": "Sticky positioning provides a way to position element out of the normal flow when scrolling. Unlike solutions based on JavaScript, the change of position is synchronized with scrolling.",
968         "comment": "The feature is prefixed with <em>-webkit-</em>. There are some remaining issues to resolve in the specification."
969     },
970     {
971         "name": "Readable Streams",
972         "status": {
973             "status": "In Development",
974             "enabled-by-default": true
975         },
976         "url": "https://streams.spec.whatwg.org/#rs",
977         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=138967",
978         "specification": "Streams",
979         "comment": "The implementation does not support ReadableStreamBYOBReader."
980     },
981     {
982         "name": "Scroll Anchoring",
983         "status": {
984             "status": "Under Consideration"
985         },
986         "url": "https://wicg.github.io/ScrollAnchoring/",
987         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=171099",
988         "description": "Maintains page scroll position when content is modified.",
989         "keywords": ["scroll", "anchor"],
990         "category": "html"
991     },
992     {
993         "name": "Shadow DOM",
994         "status": {
995             "status": "Supported",
996             "enabled-by-default": true
997         },
998         "url": "http://w3c.github.io/webcomponents/spec/shadow/",
999         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=148695",
1000         "specification": "Web Components",
1001         "description": "Functional encapsulation of HTML and CSS for Web Components.",
1002         "comment": "We are fixing the remainig bugs in our implementation.",
1003         "contact": {
1004             "name": "Ryosuke Niwa",
1005             "email": "rniwa@webkit.org"
1006         }
1007     },
1008     {
1009         "name": "Shared Web Workers",
1010         "status": {
1011             "status": "Removed"
1012         },
1013         "url": "https://html.spec.whatwg.org/multipage/workers.html#shared-workers-introduction",
1014         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=140344",
1015         "specification": "HTML5",
1016         "comment": "The implementation of Shared Web Workers was imposing undesirable constraints on the engine. The feature never gained any adoption and was eventually removed from the engine."
1017     },
1018     {
1019         "name": "Srcset w descriptor and related sizes attribute",
1020         "status": {
1021             "status": "Supported",
1022             "enabled-by-default": true
1023         },
1024         "url": "https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element",
1025         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=133620",
1026         "specification": "HTML5",
1027         "description": "Enable handling the variable width responsive images use-case by defining multiple image resources in markup",
1028         "contact": {
1029             "name": "Yoav Weiss",
1030             "twitter": "@yoavweiss",
1031             "email": "yoav@yoav.ws"
1032         }
1033     },
1034     {
1035         "name": "Srcset x descriptor",
1036         "status": {
1037             "status": "Supported",
1038             "enabled-by-default": true
1039         },
1040         "url": "https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element",
1041         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=110252",
1042         "specification": "HTML5",
1043         "description": "Enable handling the fixed width responsive images use-case by defining multiple image resources in markup",
1044         "contact": {
1045             "name": "Yoav Weiss",
1046             "twitter": "@yoavweiss",
1047             "email": "yoav@yoav.ws"
1048         }
1049     },
1050     {
1051         "name": "Strict Mixed Content Checking",
1052         "status": {
1053             "status": "Supported",
1054             "enabled-by-default": true
1055         },
1056         "url": "https://w3c.github.io/webappsec-mixed-content/#strict-checking",
1057         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=165438",
1058         "keywords": ["csp", "content security policy", "blockable", "optionally-blockable", "block-all-mixed-content", "HTTPS"],
1059         "category": "webapps",
1060         "description": "Allows developers to opt into blocking display and running of all insecure content on an HTTPS page.",
1061         "contact": {
1062             "name": "Daniel Bates",
1063             "email": "dbates@webkit.org"
1064         }
1065     },
1066     {
1067         "name": "Subresource Integrity",
1068         "status": {
1069             "status": "Supported In Preview"
1070         },
1071         "url": "https://w3c.github.io/webappsec-subresource-integrity/",
1072         "description": "Extends script and link elements with an integrity attribute that contains a cryptographic hash of the representation of the resource the author expects to load.",
1073         "contact": {
1074             "name": "Jonathan Davis",
1075             "email": "web-evangelist@apple.com",
1076             "twitter": "@jonathandavis"
1077         }
1078     },
1079     {
1080         "name": "Template Element",
1081         "status": {
1082             "status": "Supported",
1083             "enabled-by-default": true
1084         },
1085         "url": "http://www.w3.org/TR/html5/scripting-1.html#the-template-element",
1086         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=124637",
1087         "documentation-url": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template",
1088         "specification": "Web Components",
1089         "description": "Declares HTML fragments that can be cloned and inserted into the document by a script."
1090     },
1091     {
1092         "name": "Upgrade Insecure Requests",
1093         "status": {
1094             "status": "Supported",
1095             "enabled-by-default": true
1096         },
1097         "url": "https://w3c.github.io/webappsec-upgrade-insecure-requests/",
1098         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=143653",
1099         "keywords": ["csp", "content security policy", "upgrade-insecure-requests", "HTTPS"],
1100         "category": "webapps",
1101         "description": "Allows developers to opt into automatic upgrading of insecure requests to secure requests."
1102     },
1103     {
1104         "name": "Variation Fonts",
1105         "status": {
1106             "status": "In Development",
1107             "enabled-by-default": false
1108         },
1109         "url": "https://drafts.csswg.org/css-fonts-4/",
1110         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=162815",
1111         "documentation-url": "https://drafts.csswg.org/css-fonts-4/",
1112         "specification": "CSS Fonts Level 4",
1113         "description": "Allows selection of variation values along fonts' exposed axes."
1114     },
1115     {
1116         "name": "Vibration API",
1117         "status": {
1118             "status": "Removed"
1119         },
1120         "url": "https://w3c.github.io/vibration/",
1121         "keywords": ["vibration"],
1122         "category": "webapps",
1123         "description": "An API that provides access to the vibration mechanism of the hosting device."
1124     },
1125     {
1126         "name": "ViewportAPI",
1127         "status": {
1128             "status": "Under Consideration"
1129         },
1130         "url": "https://github.com/WICG/ViewportAPI",
1131         "description": "A proposal to add explicit APIs to the Web for querying and setting the visual viewport.",
1132         "keywords": ["visual viewport", "viewport", "viewportapi"]
1133     },
1134     {
1135         "name": "Web Audio",
1136         "status": {
1137             "status": "In Development"
1138         },
1139         "url": "https://www.w3.org/TR/webaudio/",
1140         "keywords": ["audio", "webaudio"],
1141         "description": "A high-level JavaScript API for processing and synthesizing audio in web applications.",
1142         "comment": "WebKit's implementation does not match the current specification."
1143     },
1144     {
1145         "name": "Web Authentication",
1146         "status": {
1147             "status": "Under Consideration"
1148         },
1149         "url": "https://w3c.github.io/webauthn/",
1150         "keywords": ["authentication", "credentials"],
1151         "description": "An API enabling the creation and use of strong, attested, cryptographic scoped credentials by web applications, for the purpose of strongly authenticating users."
1152     },
1153     {
1154         "name": "Web Bluetooth",
1155         "status": {
1156             "status": "Not Considering"
1157         },
1158         "url": "https://webbluetoothcg.github.io/web-bluetooth/",
1159         "keywords": ["bluetooth"],
1160         "description": "An API to discover and communicate with devices over the Bluetooth."
1161     },
1162     {
1163         "name": "Web MIDI",
1164         "status": {
1165             "status": "Not Considering"
1166         },
1167         "url": "https://www.w3.org/TR/webmidi/",
1168         "keywords": ["MIDI, music, synthesizer, keyboard"],
1169         "description": "An API supporting the Musical Instrument Digital Interface (MIDI) protocol, enabling web applications to enumerate and select MIDI input and output devices on the client system and send and receive MIDI messages."
1170     },
1171     {
1172         "name": "Web Share",
1173         "status": {
1174             "status": "Under Consideration"
1175         },
1176         "url": "https://github.com/WICG/web-share/blob/master/docs/interface.md",
1177         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=171100",
1178         "keywords": ["sharing"],
1179         "description": "An API to allow content from the page to be exposed to platform sharing APIs."
1180     },
1181     {
1182         "name": "WebUSB",
1183         "status": {
1184             "status": "Not Considering"
1185         },
1186         "url": "https://wicg.github.io/webusb/",
1187         "keywords": ["USB"],
1188         "description": "An an API for securely providing access to Universal Serial Bus devices from web pages."
1189     },
1190     {
1191         "name": "requestIdleCallback",
1192         "status": {
1193             "status": "Under Consideration"
1194         },
1195         "url": "https://w3c.github.io/requestidlecallback/",
1196         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=164193",
1197         "keywords": ["requestIdleCallback", "idle callback"],
1198         "description": "An API that can be used to cooperatively schedule background tasks."
1199     }
1200     ]
1201 }