Update feature status on anchor download attribute.
[WebKit-https.git] / Source / WebCore / features.json
1 {
2     "specification": [
3     {
4         "name": "CSS Grid Layout Level 1",
5         "status": {
6             "status": "In Development",
7             "enabled-by-default": true
8         },
9         "url": "http://dev.w3.org/csswg/css-grid/",
10         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=60731",
11         "keywords": ["css grid layout", "css grid", "grid"],
12         "category": "css",
13         "contact": {
14             "name": "Sergio Villar Senin",
15             "email": "svillar@igalia.com"
16         }
17     },
18     {
19         "name": "CSS Inline Layout Module Level 3",
20         "status": {
21             "status": "In Development",
22             "enabled-by-default": true
23         },
24         "url": "http://dev.w3.org/csswg/css-inline/",
25         "keywords": ["css inline layout", "css inline", "inline"],
26         "category": "css"
27     },
28     {
29         "name": "CSS Media Queries Level 4",
30         "url": "http://dev.w3.org/csswg/mediaqueries-4/",
31         "keywords": ["css media queries", "media queries"],
32         "category": "css"
33     },
34     {
35         "name": "CSS Painting API Level 1",
36         "status": {
37             "status": "Under Consideration"
38         },
39         "url": "https://drafts.css-houdini.org/css-paint-api/",
40         "keywords": ["css", "houdini"],
41         "category": "css"
42     },
43     {
44         "name": "CSS Positioned Layout Module Level 3",
45         "url": "http://dev.w3.org/csswg/css-position/",
46         "keywords": ["css positioning"],
47         "category": "css"
48     },
49     {
50         "name": "CSS Properties and Values API Level 1",
51         "status": {
52             "status": "Under Consideration"
53         },
54         "url": "https://drafts.css-houdini.org/css-properties-values-api/",
55         "keywords": ["css", "houdini"],
56         "category": "css"
57     },
58     {
59         "name": "CSS Scroll Snap Points Module Level 1",
60         "status": {
61             "status": "In Development",
62             "enabled-by-default": true
63         },
64         "url": "http://dev.w3.org/csswg/css-snappoints/",
65         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=134283",
66         "keywords": ["css scroll snap points", "scroll snap", "snap points"],
67         "category": "css",
68         "contact": {
69             "name": "Brent Fulgham",
70             "email": "bfulgham@apple.com"
71         }
72     },
73     {
74         "name": "CSS Selectors Level 4",
75         "url": "http://dev.w3.org/csswg/selectors-4/",
76         "keywords": ["css selectors", "selectors"],
77         "category": "css",
78         "contact": {
79             "name": "Benjamin Poulain",
80             "twitter": "@awfulben",
81             "email": "benjamin@webkit.org"
82         }
83     },
84     {
85         "name": "CSS Shapes Level 1",
86         "url": "http://www.w3.org/TR/css-shapes-1/",
87         "keywords": ["css shapes", "shapes"],
88         "category": "css"
89     },
90     {
91         "name": "CSS Variables",
92         "status": {
93             "status": "Done",
94             "enabled-by-default": true
95         },
96         "url": "https://www.w3.org/TR/css-variables/",
97         "keywords": ["css variable", "css custom property"],
98         "category": "css",
99         "description": "Allows developers to define reusable custom property values.",
100         "contact": {
101             "name": "Jon Davis",
102             "twitter": "@jonathandavis",
103             "email": "web-evangelist@apple.com"
104         }
105     },
106     {
107         "name": "CSS Will Change",
108         "status": {
109             "status": "Done",
110             "enabled-by-default": true
111         },
112         "url": "https://drafts.csswg.org/css-will-change/",
113         "keywords": ["css willchange", "css will-change"],
114         "category": "css",
115         "contact": {
116             "name": "Simon Fraser",
117             "twitter": "@smfr"
118         }
119     },
120     {
121         "name": "Content Security Policy Level 2",
122         "status": {
123             "status": "Done",
124             "enabled-by-default": true
125         },
126         "url": "https://w3c.github.io/webappsec-csp/2/",
127         "keywords": ["csp", "cross-site scripting", "xss", "injection", "header"],
128         "category": "webapps",
129         "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.",
130         "contact": {
131             "name": "Daniel Bates",
132             "email": "dbates@webkit.org"
133         }
134     },
135     {
136         "name": "Content Security Policy Level 3",
137         "status": {
138             "status": "Partial Support",
139             "enabled-by-default": true
140         },
141         "url": "https://w3c.github.io/webappsec-csp/",
142         "keywords": ["csp", "cross-site scripting", "xss", "injection", "header"],
143         "category": "webapps",
144         "contact": {
145             "name": "Daniel Bates",
146             "email": "dbates@webkit.org"
147         }
148     },
149     {
150         "name": "DOM",
151         "url": "https://dom.spec.whatwg.org",
152         "keywords": ["dom", "dom4"],
153         "category": "html"
154     },
155     {
156         "name": "Fetch API",
157         "status": {
158             "status": "In Development"
159         },
160         "url": "https://fetch.spec.whatwg.org",
161         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=151937",
162         "keywords": ["fetch", "http", "cors", "request", "response", "header"],
163         "category": "webapps",
164         "description": "An underlying unified architecture for making resource requests.",
165         "contact": {
166             "name": "Jon Davis",
167             "twitter": "@jonathandavis",
168             "email": "web-evangelist@apple.com"
169         }
170     },
171     {
172         "name": "Filter Effects Module Level 2",
173         "url": "http://dev.w3.org/fxtf/filters-2/",
174         "keywords": ["css filters", "filter effects", "filters"],
175         "category": "css"
176     },
177     {
178         "name": "HTML5",
179         "url": "https://html.spec.whatwg.org",
180         "keywords": ["html", "html5", "html5.1"],
181         "category": "html"
182     },
183     {
184         "name": "IndexedDB",
185         "status": {
186             "status": "Partial Support"
187         },
188         "url": "http://www.w3.org/TR/IndexedDB/",
189         "keywords": ["indexeddb", "index db"],
190         "description": "A standard interface to a browser database of records for simple values and objects.",
191         "contact": {
192             "name": "Jon Davis",
193             "twitter": "@jonathandavis",
194             "email": "web-evangelist@apple.com"
195         }
196     },
197     {
198         "name": "Service Workers",
199         "status": {
200             "status": "Under Consideration"
201         },
202         "url": "http://www.w3.org/TR/2015/WD-service-workers-20150625/",
203         "keywords": ["service workers"],
204         "category": "webapps",
205         "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.",
206         "contact": {
207             "name": "Jon Davis",
208             "twitter": "@jonathandavis",
209             "email": "web-evangelist@apple.com"
210         }
211     },
212     {
213         "name": "Streams",
214         "url": "https://streams.spec.whatwg.org",
215         "keywords": ["streams api"],
216         "category": "webapps"
217     },
218     {
219         "name": "Web Components",
220         "url": "http://www.w3.org/wiki/WebComponents/",
221         "keywords": ["web components", "shadow dom", "html imports", "custom elements", "template element"],
222         "category": "webapps",
223         "description": "A collection of technologies to improve modularization of DOM subtrees.",
224         "contact": {
225             "name": "Ryosuke Niwa",
226             "twitter": "@RyosukeNiwa",
227             "email": "rniwa@webkit.org"
228         }
229     },
230     {
231         "name": "WebCrypto",
232         "status": {
233             "status": "Partial Support",
234             "enabled-by-default": true
235         },
236         "url": "http://www.w3.org/TR/WebCryptoAPI/",
237         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=122679",
238         "keywords": ["webcrypto"],
239         "category": "webapps",
240         "description": "A JavaScript API for web applications to perform cryptographic operations.",
241         "contact": {
242             "name": "Jon Davis",
243             "twitter": "@jonathandavis",
244             "email": "web-evangelist@apple.com"
245         }
246     },
247     {
248         "name": "WebGL 1",
249         "status": {
250             "status": "Done",
251             "enabled-by-default": true
252         },
253         "url": "https://www.khronos.org/registry/webgl/specs/1.0/",
254         "keywords": ["webgl"],
255         "category": "html"
256     },
257     {
258         "name": "WebGL 2",
259         "status": {
260             "status": "In Development",
261             "enabled-by-default": true
262         },
263         "url": "https://www.khronos.org/registry/webgl/specs/latest/2.0/",
264         "keywords": ["webgl"],
265         "category": "html"
266     },
267     {
268         "name": "WebRTC",
269         "status": {
270             "status": "In Development"
271         },
272         "url": "http://www.w3.org/TR/webrtc/",
273         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=124288",
274         "keywords": ["webrtc"],
275         "category": "webapps",
276         "description": "An API to facilitate real-time communication for browser-to-browser applications.",
277         "contact": {
278             "name": "Jon Davis",
279             "twitter": "@jonathandavis",
280             "email": "web-evangelist@apple.com"
281         }
282     }
283     ],
284
285     "features": [
286     {
287         "name": "CSS Selector :any-link",
288         "status": {
289             "status": "Done",
290             "enabled-by-default": true
291         },
292         "url": "http://dev.w3.org/csswg/selectors-4/#the-any-link-pseudo",
293         "specification": "CSS Selectors Level 4",
294         "description": "The pseudo class :any-link matches any element that would match :link or :visisted.",
295         "comment": "A prefix version :-webkit-any-link has been available for a while but it was not 100% compliant to the specification.",
296         "contact": {
297             "name": "Benjamin Poulain",
298             "twitter": "@awfulben",
299             "email": "benjamin@webkit.org"
300         }
301     },
302     {
303         "name": "CSS Selector :lang() level 4",
304         "status": {
305             "status": "Done",
306             "enabled-by-default": true
307         },
308         "url": "http://dev.w3.org/csswg/selectors-4/#the-lang-pseudo",
309         "specification": "CSS Selectors Level 4",
310         "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\")."
311     },
312     {
313         "name": "CSS Selector :matches()",
314         "status": {
315             "status": "Done",
316             "enabled-by-default": true
317         },
318         "url": "http://dev.w3.org/csswg/selectors-4/#matches",
319         "specification": "CSS Selectors Level 4",
320         "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.",
321         "comment": "The pseudo classes <em>:visited</em> and <em>:link</em> are not supported inside :matches().",
322         "contact": {
323             "name": "Benjamin Poulain",
324             "twitter": "@awfulben",
325             "email": "benjamin@webkit.org"
326         }
327     },
328     {
329         "name": "CSS Selector :not() level 4",
330         "status": {
331             "status": "Done",
332             "enabled-by-default": true
333         },
334         "url": "http://dev.w3.org/csswg/selectors-4/#negation",
335         "specification": "CSS Selectors Level 4",
336         "description": "The selector :not() in level 4 supports full selector lists as argument. For example: :not(:any-link >> img, :any-link >> picture).",
337         "comment": "The pseudo classes <em>:visited</em> and <em>:link</em> are not supported inside :not().",
338         "contact": {
339             "name": "Benjamin Poulain",
340             "twitter": "@awfulben",
341             "email": "benjamin@webkit.org"
342         }
343     },
344     {
345         "name": "CSS Selector :nth-child(An+B of selector list) and :nth-last-child(An+B of selector list)",
346         "status": {
347             "status": "Done",
348             "enabled-by-default": true
349         },
350         "url": "http://dev.w3.org/csswg/selectors-4/#the-nth-child-pseudo",
351         "specification": "CSS Selectors Level 4",
352         "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)\".",
353         "comment": "The pseudo classes <em>:visited</em> and <em>:link</em> are not supported inside :nth-child() and :nth-last-child().",
354         "contact": {
355             "name": "Benjamin Poulain",
356             "twitter": "@awfulben",
357             "email": "benjamin@webkit.org"
358         }
359     },
360     {
361         "name": "CSS Selector :placeholder-shown",
362         "status": {
363             "status": "Done",
364             "enabled-by-default": true
365         },
366         "url": "http://dev.w3.org/csswg/selectors-4/#placeholder",
367         "specification": "CSS Selectors Level 4",
368         "description": "The selector :placeholder-shown matches any input element that has a visible placeholder.",
369         "comment": "Styling the placeholder can be done through the WebKit pseudo-element \"::-webkit-input-placeholder\".",
370         "contact": {
371             "name": "Benjamin Poulain",
372             "twitter": "@awfulben",
373             "email": "benjamin@webkit.org"
374         }
375     },
376     {
377         "name": "Case-insensitive attribute selectors",
378         "status": {
379             "status": "Done",
380             "enabled-by-default": true
381         },
382         "url": "http://dev.w3.org/csswg/selectors-4/#attribute-case",
383         "specification": "CSS Selectors Level 4",
384         "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.",
385         "contact": {
386             "name": "Benjamin Poulain",
387             "twitter": "@awfulben",
388             "email": "benjamin@webkit.org"
389         }
390     },
391     {
392         "name": "Custom Elements",
393         "status": {
394             "status": "In Development"
395         },
396         "url": "http://w3c.github.io/webcomponents/spec/custom/",
397         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=150225",
398         "specification": "Web Components",
399         "description": "Define a custom HTML tag and associate it with an ES6 class.",
400         "contact": {
401             "name": "Ryosuke Niwa",
402             "twitter": "@RyosukeNiwa",
403             "email": "rniwa@webkit.org"
404         }
405     },
406     {
407         "name": "Download Attribute",
408         "status": {
409             "status": "In Development"
410         },
411         "url": "https://html.spec.whatwg.org/multipage/semantics.html#downloading-resources",
412         "webkit-url": "https://webkit.org/b/102914",
413         "specification": "HTML5",
414         "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.",
415         "contact": {
416             "name": "Brent Fulgham",
417             "email": "bfulgham@apple.com",
418             "twitter": "@bfulgham"
419         }
420     },
421     {
422         "name": "Element.closest()",
423         "status": {
424             "status": "Done",
425             "enabled-by-default": true
426         },
427         "url": "https://dom.spec.whatwg.org/#dom-element-closest",
428         "documentation-url": "https://developer.mozilla.org/en-US/docs/Web/API/Element/closest",
429         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=137418",
430         "specification": "DOM",
431         "description": "Find the closest ancestor matching the selector passed as argument. The element itself is returned if it matches the selector.",
432         "contact": {
433             "name": "Benjamin Poulain",
434             "twitter": "@awfulben",
435             "email": "benjamin@webkit.org"
436         }
437     },
438     {
439         "name": "Filter Effects backdrop-filter propery",
440         "status": {
441             "status": "Done",
442             "enabled-by-default": true
443         },
444         "url": "http://dev.w3.org/fxtf/filters-2/#propdef-backdrop-filter",
445         "specification": "Filter Effects Module Level 2",
446         "description": "This property specifies styling for filters applied to the backdrop of an element."
447     },
448     {
449         "name": "Force Click Events",
450         "status": {
451             "status": "Prototyping",
452             "enabled-by-default": true
453         },
454         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=142836",
455         "description": "Provide the events necessary to handle force click events in the page, overriding the default behavior."
456     },
457     {
458         "name": "HTML imports",
459         "status": {
460             "status": "Not Considering"
461         },
462         "url": "http://w3c.github.io/webcomponents/spec/imports/",
463         "specification": "Web Components",
464         "description": "Includes resusable HTML documents in other HTML documents.",
465         "comment": "There are concerns about the disconnect between this specification and ES6 Modules. WebKit has no intent to support the current specification.",
466         "contact": {
467             "name": "Jon Davis",
468             "twitter": "@jonathandavis",
469             "email": "web-evangelist@apple.com"
470         }
471     },
472     {
473         "name": "Initial Letter",
474         "status": {
475             "status": "Done",
476             "enabled-by-default": true
477         },
478         "url": "http://dev.w3.org/csswg/css-inline/#propdef-initial-letter",
479         "specification": "CSS Inline Layout Module Level 3",
480         "description": "This property specifies styling for dropped, raised, and sunken initial letters."
481     },
482     {
483         "name": "Interaction Media Features (pointer, hover, any-pointer, any-hover)",
484         "status": {
485             "status": "Done",
486             "enabled-by-default": true
487         },
488         "url": "http://dev.w3.org/csswg/mediaqueries-4/#mf-interaction",
489         "specification": "CSS Media Queries Level 4",
490         "description": "The \"pointer\" media defines how percise the pointing device is. The \"hover\" media defines the ability of the poiting device to hover elements."
491     },
492     {
493         "name": "MicroData",
494         "status": {
495             "status": "Removed"
496         },
497         "url": "https://html.spec.whatwg.org/multipage/microdata.html",
498         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=119480",
499         "specification": "HTML5",
500         "comment": "WebKit used to support MicroData. The feature never gained any traction and was eventually removed to clean up the codebase."
501     },
502     {
503         "name": "Navigator.hardwareConcurrency",
504         "status": {
505             "status": "Done",
506             "enabled-by-default": true
507         },
508         "url": "https://wiki.whatwg.org/wiki/Navigator_HW_Concurrency",
509         "webkit-url": "http://trac.webkit.org/changeset/169017",
510         "description": "Navigator.hardwareConcurrency provides the total number of logical processors available to the user agent."
511     },
512     {
513         "name": "Picture element",
514         "status": {
515             "status": "In Development",
516             "enabled-by-default": false
517         },
518         "url": "https://html.spec.whatwg.org/multipage/embedded-content.html#the-picture-element",
519         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=116963",
520         "specification": "HTML5",
521         "description": "Enable handling the art-direction responsive images use-case by defining multiple image sources in markup",
522         "contact": {
523             "name": "Yoav Weiss",
524             "twitter": "@yoavweiss",
525             "email": "yoav@yoav.ws"
526         }
527     },
528     {
529         "name": "Position: sticky",
530         "status": {
531             "status": "Done",
532             "enabled-by-default": true
533         },
534         "url": "http://dev.w3.org/csswg/css-position/#sticky-pos",
535         "specification": "CSS Positioned Layout Module Level 3",
536         "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.",
537         "comment": "The feature is prefixed with <em>-webkit-</em>. There are some remaining issues to resolve in the specification."
538     },
539     {
540         "name": "Readable Streams",
541         "status": {
542             "status": "In Development",
543             "enabled-by-default": true
544         },
545         "url": "https://streams.spec.whatwg.org/#rs",
546         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=138967",
547         "specification": "Streams",
548         "comment": "The ReadableStream and ReadableStreamReader interfaces are available but not functional."
549     },
550     {
551         "name": "Shadow DOM",
552         "status": {
553             "status": "In Development"
554         },
555         "url": "http://w3c.github.io/webcomponents/spec/shadow/",
556         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=148695",
557         "specification": "Web Components",
558         "description": "Functional encapsulation of HTML and CSS for Web Components.",
559         "contact": {
560             "name": "Ryosuke Niwa",
561             "twitter": "@RyosukeNiwa",
562             "email": "rniwa@webkit.org"
563         }
564     },
565     {
566         "name": "Shape outside for floats",
567         "status": {
568             "status": "In Development",
569             "enabled-by-default": true
570         },
571         "url": "http://www.w3.org/TR/css-shapes-1/",
572         "specification": "CSS Shapes Level 1",
573         "description": "CSS Shapes describe geometric shapes for use in CSS. For Level 1, CSS Shapes can be applied to floats.",
574         "comment": "The implementation is feature complete and shipping, but is -webkit prefixed."
575     },
576     {
577         "name": "Shared Web Workers",
578         "status": {
579             "status": "Removed"
580         },
581         "url": "https://html.spec.whatwg.org/multipage/workers.html#shared-workers-introduction",
582         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=140344",
583         "specification": "HTML5",
584         "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."
585     },
586     {
587         "name": "Srcset w descriptor and related sizes attribute",
588         "status": {
589             "status": "Done",
590             "enabled-by-default": true
591         },
592         "url": "https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element",
593         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=133620",
594         "specification": "HTML5",
595         "description": "Enable handling the variable width responsive images use-case by defining multiple image resources in markup",
596         "contact": {
597             "name": "Yoav Weiss",
598             "twitter": "@yoavweiss",
599             "email": "yoav@yoav.ws"
600         }
601     },
602     {
603         "name": "Srcset x descriptor",
604         "status": {
605             "status": "Done",
606             "enabled-by-default": true
607         },
608         "url": "https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element",
609         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=110252",
610         "specification": "HTML5",
611         "description": "Enable handling the fixed width responsive images use-case by defining multiple image resources in markup",
612         "contact": {
613             "name": "Yoav Weiss",
614             "twitter": "@yoavweiss",
615             "email": "yoav@yoav.ws"
616         }
617     },
618     {
619         "name": "Template Element",
620         "status": {
621             "status": "Done",
622             "enabled-by-default": true
623         },
624         "url": "http://www.w3.org/TR/html5/scripting-1.html#the-template-element",
625         "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=124637",
626         "documentation-url": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template",
627         "specification": "Web Components",
628         "description": "Declares HTML fragments that can be cloned and inserted into the document by a script."
629     }
630     ]
631 }