var tests = [ { id: 'semantics', name: 'Semantics', column: 'left', items: [ { id: 'parsing', name: 'Parsing rules', status: 'stable', items: [ { id: 'doctype', name: '<!DOCTYPE html> triggers standards mode', urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/syntax.html#the-doctype' ], [ 'whatwg', 'https://html.spec.whatwg.org/multipage/syntax.html#the-doctype' ] ] }, { id: 'tokenizer', name: 'HTML5 tokenizer', value: 3, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/syntax.html#parsing' ], [ 'whatwg', 'https://html.spec.whatwg.org/multipage/syntax.html#parsing' ], [ 'mdn', '/HTML/HTML5/HTML5_Parser' ] ] }, { id: 'tree', name: 'HTML5 tree building', value: 2, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/syntax.html#parsing' ], [ 'whatwg', 'https://html.spec.whatwg.org/multipage/syntax.html#parsing' ], [ 'mdn', '/HTML/HTML5/HTML5_Parser' ] ] }, 'HTML5 defines rules for embedding SVG and MathML inside a regular HTML document. The following tests only check if the browser is following the HTML5 parsing rules for inline SVG and MathML, not if the browser can actually understand and render it.', { id: 'svg', name: 'Parsing inline SVG', urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/embedded-content-0.html#svg' ], [ 'whatwg', 'https://html.spec.whatwg.org/multipage/embedded-content.html#svg-0' ], [ 'mdn', '/SVG' ] ] }, { id: 'mathml', name: 'Parsing inline MathML', urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/embedded-content-0.html#mathml' ], [ 'whatwg', 'https://html.spec.whatwg.org/multipage/embedded-content.html#mathml' ], [ 'mdn', '/MathML' ] ] } ] }, { id: 'elements', name: 'Elements', status: 'stable', items: [ { id: 'dataset', name: 'Embedding custom non-visible data', value: 3, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes' ], [ 'whatwg', 'https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes' ], [ 'mdn', '/DOM/element.dataset' ] ] }, 'New or modified elements', { id: 'section', name: 'Section elements', urls: [ [ 'mdn', '/Sections_and_Outlines_of_an_HTML5_document' ] ], items: [ { id: 'section', name: 'section element', value: 1, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/sections.html#the-section-element' ], [ 'whatwg', 'https://html.spec.whatwg.org/multipage/semantics.html#the-section-element' ] ] }, { id: 'nav', name: 'nav element', value: 1, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/sections.html#the-nav-element' ], [ 'whatwg', 'https://html.spec.whatwg.org/multipage/semantics.html#the-nav-element' ] ] }, { id: 'article', name: 'article element', value: 1, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/sections.html#the-article-element' ], [ 'whatwg', 'https://html.spec.whatwg.org/multipage/semantics.html#the-article-element' ] ] }, { id: 'aside', name: 'aside element', value: 1, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/sections.html#the-aside-element' ], [ 'whatwg', 'https://html.spec.whatwg.org/multipage/semantics.html#the-aside-element' ] ] }, { id: 'header', name: 'header element', value: 1, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/sections.html#the-header-element' ], [ 'whatwg', 'https://html.spec.whatwg.org/multipage/semantics.html#the-header-element' ] ] }, { id: 'footer', name: 'footer element', value: 1, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/sections.html#the-footer-element' ], [ 'whatwg', 'https://html.spec.whatwg.org/multipage/semantics.html#the-footer-element' ] ] } ] }, { id: 'grouping', name: 'Grouping content elements', urls: [ [ 'mdn', '/Sections_and_Outlines_of_an_HTML5_document' ] ], items: [ { id: 'main', name: 'main element', value: 1, url: 'http://www.w3.org/html/wg/drafts/html/master/single-page.html#the-main-element' }, { id: 'figure', name: 'figure element', value: 1, url: 'http://www.w3.org/TR/html5/grouping-content.html#the-figure-element' }, { id: 'figcaption', name: 'figcaption element', value: 1, url: 'http://www.w3.org/TR/html5/grouping-content.html#the-figcaption-element' }, { id: 'ol', name: 'reversed attribute on the ol element', value: 1, url: 'http://www.w3.org/TR/html5/grouping-content.html#the-ol-element' } ] }, { id: 'semantic', name: 'Text-level semantic elements', items: [ { id: 'download', name: 'download attribute on the a element', value: 1, urls: [ [ 'whatwg', 'http://developers.whatwg.org/links.html#attr-hyperlink-download' ] ] }, { id: 'ping', name: 'ping attribute on the a element', value: 1, urls: [ [ 'whatwg', 'http://developers.whatwg.org/links.html#ping' ] ] }, { id: 'mark', name: 'mark element', value: 1, url: 'http://www.w3.org/TR/html5/text-level-semantics.html#the-mark-element' }, { id: 'ruby', name: 'ruby, rt and rp elements', value: 3, url: 'http://www.w3.org/TR/html5/text-level-semantics.html#the-ruby-element' }, { id: 'time', name: 'time element', value: 1, url: 'http://www.w3.org/TR/html5/text-level-semantics.html#the-time-element' }, { id: 'wbr', name: 'wbr element', value: 1, url: 'http://www.w3.org/TR/html5/text-level-semantics.html#the-wbr-element' } ] }, { id: 'interactive', name: 'Interactive elements', items: [ { id: 'details', name: 'details element', value: 1, url: 'http://www.w3.org/TR/html5/interactive-elements.html#the-details-element' }, { id: 'summary', name: 'summary element', value: 1, url: 'http://www.w3.org/TR/html5/interactive-elements.html#the-summary-element' }, { id: 'menutoolbar', name: 'menu element of type toolbar', status: 'proposal', value: 1, url: 'http://www.w3.org/TR/html5/interactive-elements.html#the-menu-element' }, { id: 'menupopup', name: 'menu element of type popup', status: 'proposal', value: 2, url: 'http://www.w3.org/TR/html5/interactive-elements.html#the-menu-element' }, { id: 'dialog', name: 'dialog element', status: 'proposal', value: 1, url: 'http://www.whatwg.org/specs/web-apps/current-work/multipage/commands.html#the-dialog-element' } ] }, 'Global attributes or methods', { id: 'hidden', name: 'hidden attribute', value: 1, url: 'http://www.w3.org/TR/html5/editing.html#the-hidden-attribute' }, { id: 'dynamic', name: 'Dynamic markup insertion', items: [ { id: 'outerHTML', name: 'outerHTML property', value: 1, urls: [ [ 'whatwg', 'http://domparsing.spec.whatwg.org/#outerhtml' ] ] }, { id: 'insertAdjacentHTML', name: 'insertAdjacentHTML function', value: 1, urls: [ ['whatwg', 'http://domparsing.spec.whatwg.org/#insertadjacenthtml%28%29' ] ] } ] } ] }, { id: 'form', name: 'Forms', status: 'stable', items: [ 'Field types', { id: 'text', name: 'input type=text', items: [ { id: 'element', name: 'Minimal element support' }, { id: 'selection', name: 'Selection Direction', value: 2 } ] }, { id: 'search', name: 'input type=search', items: [ { id: 'element', name: 'Minimal element support', value: 2, url: 'http://www.w3.org/TR/html5/forms.html#text-(type=text)-state-and-search-state-(type=search)' } ] }, { id: 'tel', name: 'input type=tel', items: [ { id: 'element', name: 'Minimal element support', value: 2, url: 'http://www.w3.org/TR/html5/forms.html#telephone-state-(type=tel)' } ] }, { id: 'url', name: 'input type=url', items: [ { id: 'element', name: 'Minimal element support', value: 2, url: 'http://www.w3.org/TR/html5/forms.html#url-state-(type=url)' }, { id: 'validation', name: 'Field validation', url: 'http://www.w3.org/TR/html5/forms.html#the-constraint-validation-api' } ] }, { id: 'email', name: 'input type=email', items: [ { id: 'element', name: 'Minimal element support', value: 2, url: 'http://www.w3.org/TR/html5/forms.html#e-mail-state-(type=email)' }, { id: 'validation', name: 'Field validation', url: 'http://www.w3.org/TR/html5/forms.html#the-constraint-validation-api' } ] }, { id: 'date', name: 'input type=date', items: [ { id: 'element', name: 'Minimal element support', value: 2, url: 'http://www.w3.org/TR/html5/forms.html#date-state-(type=date)' }, { id: 'ui', value: 2, name: 'Custom user-interface' }, { id: 'sanitization', name: 'Value sanitization', url: 'http://www.w3.org/TR/html5/forms.html#value-sanitization-algorithm' }, { id: 'min', name: 'min attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-min' }, { id: 'max', name: 'max attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-max' }, { id: 'step', name: 'step attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-step' }, { id: 'stepDown', name: 'stepDown() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-stepdown' }, { id: 'stepUp', name: 'stepUp() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-stepup' }, { id: 'valueAsDate', name: 'valueAsDate() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-valueasdate' }, { id: 'valueAsNumber', name: 'valueAsNumber() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-valueasnumber' } ] }, { id: 'month', name: 'input type=month', items: [ { id: 'element', name: 'Minimal element support', value: 2, url: 'http://www.w3.org/TR/html5/forms.html#month-state-(type=month)' }, { id: 'ui', name: 'Custom user-interface', value: 2 }, { id: 'sanitization', name: 'Value sanitization', url: 'http://www.w3.org/TR/html5/forms.html#value-sanitization-algorithm' }, { id: 'min', name: 'min attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-min' }, { id: 'max', name: 'max attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-max' }, { id: 'step', name: 'step attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-step' }, { id: 'stepDown', name: 'stepDown() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-stepdown' }, { id: 'stepUp', name: 'stepUp() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-stepup' }, { id: 'valueAsDate', name: 'valueAsDate() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-valueasdate' }, { id: 'valueAsNumber', name: 'valueAsNumber() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-valueasnumber' } ] }, { id: 'week', name: 'input type=week', items: [ { id: 'element', name: 'Minimal element support', value: 2, url: 'http://www.w3.org/TR/html5/forms.html#week-state-(type=week)' }, { id: 'ui', name: 'Custom user-interface', value: 2 }, { id: 'sanitization', name: 'Value sanitization', url: 'http://www.w3.org/TR/html5/forms.html#value-sanitization-algorithm' }, { id: 'min', name: 'min attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-min' }, { id: 'max', name: 'max attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-max' }, { id: 'step', name: 'step attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-step' }, { id: 'stepDown', name: 'stepDown() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-stepdown' }, { id: 'stepUp', name: 'stepUp() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-stepup' }, { id: 'valueAsDate', name: 'valueAsDate() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-valueasdate' }, { id: 'valueAsNumber', name: 'valueAsNumber() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-valueasnumber' } ] }, { id: 'time', name: 'input type=time', items: [ { id: 'element', name: 'Minimal element support', value: 2, url: 'http://www.w3.org/TR/html5/forms.html#time-state-(type=time)' }, { id: 'ui', name: 'Custom user-interface', value: 2 }, { id: 'sanitization', name: 'Value sanitization', url: 'http://www.w3.org/TR/html5/forms.html#value-sanitization-algorithm' }, { id: 'min', name: 'min attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-min' }, { id: 'max', name: 'max attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-max' }, { id: 'step', name: 'step attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-step' }, { id: 'stepDown', name: 'stepDown() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-stepdown' }, { id: 'stepUp', name: 'stepUp() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-stepup' }, { id: 'valueAsDate', name: 'valueAsDate() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-valueasdate' }, { id: 'valueAsNumber', name: 'valueAsNumber() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-valueasnumber' } ] }, { id: 'datetime', name: 'input type=datetime', items: [ { id: 'element', name: 'Minimal element support', value: 1, url: 'http://www.w3.org/TR/html5/forms.html#date-and-time-state-(type=datetime)' }, { id: 'ui', name: 'Custom user-interface', value: 1 }, { id: 'sanitization', name: 'Value sanitization', url: 'http://www.w3.org/TR/html5/forms.html#value-sanitization-algorithm' }, { id: 'min', name: 'min attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-min' }, { id: 'max', name: 'max attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-max' }, { id: 'step', name: 'step attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-step' }, { id: 'stepDown', name: 'stepDown() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-stepdown' }, { id: 'stepUp', name: 'stepUp() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-stepup' }, { id: 'valueAsNumber', name: 'valueAsNumber() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-valueasnumber' } ] }, { id: 'datetime-local', name: 'input type=datetime-local', items: [ { id: 'element', name: 'Minimal element support', value: 2, url: 'http://www.w3.org/TR/html5/forms.html#local-date-and-time-state-(type=datetime-local)' }, { id: 'ui', name: 'Custom user-interface', value: 2 }, { id: 'sanitization', name: 'Value sanitization', url: 'http://www.w3.org/TR/html5/forms.html#value-sanitization-algorithm' }, { id: 'min', name: 'min attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-min' }, { id: 'max', name: 'max attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-max' }, { id: 'step', name: 'step attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-step' }, { id: 'stepDown', name: 'stepDown() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-stepdown' }, { id: 'stepUp', name: 'stepUp() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-stepup' }, { id: 'valueAsNumber', name: 'valueAsNumber() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-valueasnumber' } ] }, { id: 'number', name: 'input type=number', items: [ { id: 'element', name: 'Minimal element support', value: 2, url: 'http://www.w3.org/TR/html5/forms.html#number-state-(type=number)' }, { id: 'ui', name: 'Custom user-interface', value: 2 }, { id: 'sanitization', name: 'Value sanitization', url: 'http://www.w3.org/TR/html5/forms.html#value-sanitization-algorithm' }, { id: 'validation', name: 'Field validation', url: 'http://www.w3.org/TR/html5/forms.html#the-constraint-validation-api' }, { id: 'min', name: 'min attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-min' }, { id: 'max', name: 'max attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-max' }, { id: 'step', name: 'step attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-step' }, { id: 'stepDown', name: 'stepDown() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-stepdown' }, { id: 'stepUp', name: 'stepUp() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-stepup' }, { id: 'valueAsNumber', name: 'valueAsNumber() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-valueasnumber' } ] }, { id: 'range', name: 'input type=range', items: [ { id: 'element', name: 'Minimal element support', value: 2, url: 'http://www.w3.org/TR/html5/forms.html#range-state-(type=range)' }, { id: 'ui', name: 'Custom user-interface', value: 2 }, { id: 'sanitization', name: 'Value sanitization', url: 'http://www.w3.org/TR/html5/forms.html#value-sanitization-algorithm' }, { id: 'min', name: 'min attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-min' }, { id: 'max', name: 'max attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-max' }, { id: 'step', name: 'step attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-step' }, { id: 'stepDown', name: 'stepDown() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-stepdown' }, { id: 'stepUp', name: 'stepUp() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-stepup' }, { id: 'valueAsNumber', name: 'valueAsNumber() method', url: 'http://www.w3.org/TR/html5/forms.html#dom-input-valueasnumber' } ] }, { id: 'color', name: 'input type=color', items: [ { id: 'element', name: 'Minimal element support', value: 2, url: 'http://www.w3.org/TR/html5/forms.html#color-state-(type=color)' }, { id: 'ui', name: 'Custom user-interface', value: 2 }, { id: 'sanitization', name: 'Value sanitization', url: 'http://www.w3.org/TR/html5/forms.html#value-sanitization-algorithm' } ] }, { id: 'checkbox', name: 'input type=checkbox', items: [ { id: 'element', name: 'Minimal element support', url: 'http://www.w3.org/TR/html5/forms.html#checkbox-state-(type=checkbox)' }, { id: 'indeterminate', name: 'indeterminate property', value: 1, url: 'http://www.w3.org/TR/html5/forms.html#dom-input-indeterminate' } ] }, { id: 'image', name: 'input type=image', items: [ { id: 'element', name: 'Minimal element support', url: 'http://www.w3.org/TR/html5/forms.html#image-button-state-(type=image)' }, { id: 'width', name: 'width property', value: 0, url: 'http://www.w3.org/TR/html5/embedded-content-0.html#attr-dim-width' }, { id: 'height', name: 'height property', value: 0, url: 'http://www.w3.org/TR/html5/embedded-content-0.html#attr-dim-height' } ] }, { id: 'file', name: 'input type=file', items: [ { id: 'element', name: 'Minimal element support', url: 'http://www.w3.org/TR/html5/forms.html#file-upload-state-(type=file)' }, { id: 'files', name: 'files property', value: 1, url: 'http://www.w3.org/TR/html5/forms.html#dom-input-files' } ] }, { id: 'textarea', name: 'textarea', items: [ { id: 'element', name: 'Minimal element support', url: 'http://www.w3.org/TR/html5/forms.html#the-textarea-element' }, { id: 'maxlength', name: 'maxlength attribute', value: 1, url: 'http://www.w3.org/TR/html5/forms.html#attr-textarea-maxlength' }, { id: 'wrap', name: 'wrap attribute', value: 1, url: 'http://www.w3.org/TR/html5/forms.html#attr-textarea-wrap' } ] }, { id: 'select', name: 'select', items: [ { id: 'element', name: 'Minimal element support', url: 'http://www.w3.org/TR/html5/forms.html#the-select-element' }, { id: 'required', name: 'required attribute', value: 1, url: 'http://www.w3.org/TR/html5/forms.html#attr-select-required' } ] }, { id: 'fieldset', name: 'fieldset', items: [ { id: 'element', name: 'Minimal element support', url: 'http://www.w3.org/TR/html5/forms.html#the-fieldset-element' }, { id: 'elements', name: 'elements attribute', value: 1, url: 'http://www.w3.org/TR/html5/forms.html#dom-fieldset-elements' }, { id: 'disabled', name: 'disabled attribute', value: 1, url: 'http://www.w3.org/TR/html5/forms.html#dom-fieldset-disabled' } ] }, { id: 'datalist', name: 'datalist', items: [ { id: 'element', name: 'Minimal element support', value: 2, url: 'http://www.w3.org/TR/html5/forms.html#the-datalist-element' }, { id: 'list', name: 'list attribute for fields', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-list' } ] }, { id: 'keygen', name: 'keygen', items: [ { id: 'element', name: 'Minimal element support', value: 2, url: 'http://www.w3.org/TR/html5/forms.html#the-keygen-element' }, { id: 'challenge', name: 'challenge attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-keygen-challenge' }, { id: 'keytype', name: 'keytype attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-keygen-keytype' } ] }, { id: 'output', name: 'output', items: [ { id: 'element', name: 'Minimal element support', value: 2, url: 'http://www.w3.org/TR/html5/forms.html#the-output-element' } ] }, { id: 'progress', name: 'progress', items: [ { id: 'element', name: 'Minimal element support', value: 2, url: 'http://www.w3.org/TR/html5/forms.html#the-progress-element' } ] }, { id: 'meter', name: 'meter', items: [ { id: 'element', name: 'Minimal element support', value: 2, url: 'http://www.w3.org/TR/html5/forms.html#the-meter-element' } ] }, 'Fields', { id: 'validation', name: 'Field validation', items: [ { id: 'pattern', name: 'pattern attribute', value: 1, url: 'http://www.w3.org/TR/html5/forms.html#attr-input-pattern' }, { id: 'required', name: 'required attribute', value: 1, url: 'http://www.w3.org/TR/html5/forms.html#attr-input-required' } ] }, { id: 'association', name: 'Association of controls and forms', value: 2, items: [ { id: 'control', name: 'control property on labels', url: 'http://www.w3.org/TR/html5/forms.html#dom-label-control' }, { id: 'form', name: 'form property on fields', url: 'http://www.w3.org/TR/html5/forms.html#attr-fae-form' }, { id: 'formAction', name: 'formAction property on fields', url: 'http://www.w3.org/TR/html5/forms.html#attr-fs-formaction' }, { id: 'formEnctype', name: 'formEnctype property on fields', url: 'http://www.w3.org/TR/html5/forms.html#attr-fs-formenctype' }, { id: 'formMethod', name: 'formMethod property on fields', url: 'http://www.w3.org/TR/html5/forms.html#attr-fs-formmethod' }, { id: 'formNoValidate', name: 'formNoValidate property on fields', url: 'http://www.w3.org/TR/html5/forms.html#attr-fs-formnovalidate' }, { id: 'formTarget', name: 'formTarget property on fields', url: 'http://www.w3.org/TR/html5/forms.html#attr-fs-formtarget' }, { id: 'labels', name: 'labels property on fields', url: 'http://www.w3.org/TR/html5/forms.html#dom-lfe-labels' } ] }, { id: 'other', name: 'Other attributes', value: 2, items: [ { id: 'autofocus', name: 'autofocus attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-fe-autofocus' }, { id: 'autocomplete', name: 'autocomplete attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-autocomplete' }, { id: 'placeholder', name: 'placeholder attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-placeholder' }, { id: 'multiple', name: 'multiple attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-multiple' }, { id: 'dirname', name: 'dirName attribute', url: 'http://www.w3.org/TR/html5/forms.html#attr-input-dirname' } ] }, { id: 'selectors', name: 'CSS selectors', value: 2, items: [ { id: 'valid', name: ':valid selector', url: 'http://www.w3.org/TR/html5/links.html#selector-valid' }, { id: 'invalid', name: ':invalid selector', url: 'http://www.w3.org/TR/html5/links.html#selector-invalid' }, { id: 'optional', name: ':optional selector', url: 'http://www.w3.org/TR/html5/links.html#selector-optional' }, { id: 'required', name: ':required selector', url: 'http://www.w3.org/TR/html5/links.html#selector-required' }, { id: 'in-range', name: ':in-range selector', url: 'http://www.w3.org/TR/html5/links.html#selector-in-range' }, { id: 'out-of-range', name: ':out-of-range selector', url: 'http://www.w3.org/TR/html5/links.html#selector-out-of-range' }, { id: 'read-write', name: ':read-write selector', url: 'http://www.w3.org/TR/html5/links.html#selector-read-write' }, { id: 'read-only', name: ':read-only selector', url: 'http://www.w3.org/TR/html5/links.html#selector-read-only' } ] }, { id: 'events', name: 'Events', value: 2, items: [ { id: 'oninput', name: 'oninput event', url: 'http://www.w3.org/TR/html5/forms.html#event-input-input' }, { id: 'onchange', name: 'onchange event', url: 'http://www.w3.org/TR/html5/forms.html#event-input-change' }, { id: 'oninvalid', name: 'oninvalid event', url: 'http://www.w3.org/TR/html5/webappapis.html#events' } ] }, 'Forms', { id: 'formvalidation', name: 'Form validation', items: [ { id: 'checkValidity', name: 'checkValidity method', value: 3, url: 'http://www.w3.org/TR/html5/forms.html#dom-form-checkvalidity' }, { id: 'noValidate', name: 'noValidate attribute', value: 1, url: 'http://www.w3.org/TR/html5/forms.html#dom-fs-novalidate' } ] } ] }, { id: 'microdata', name: 'Microdata', status: 'rejected', items: [ { id: 'microdata', name: 'Microdata', value: 0, url: 'http://www.w3.org/TR/microdata/' } ] } ] }, { id: 'deviceaccess', name: 'Device Access', column: 'left', items: [ { id: 'location', name: 'Location and Orientation', status: 'stable', items: [ { id: 'geolocation', name: 'Geolocation', value: 15, urls: [ [ 'w3c', 'http://www.w3.org/TR/geolocation-API/' ], [ 'wp', '/apis/geolocation' ], [ 'mdn', '/Using_geolocation' ] ] }, { id: 'orientation', name: 'Device Orientation', value: 3, urls: [ [ 'w3c', 'http://dev.w3.org/geo/api/spec-source-orientation.html' ], [ 'mdn', '/Mozilla_event_reference/devicemotion' ] ] }, { id: 'motion', name: 'Device Motion', value: 2, urls: [ [ 'w3c', 'http://dev.w3.org/geo/api/spec-source-orientation.html' ], [ 'mdn', '/Mozilla_event_reference/devicemotion' ] ] } ] }, { id: 'output', name: 'Output', status: 'proposal', items: [ { id: 'requestFullScreen', name: 'Full screen support', value: 5, urls: [ [ 'w3c', 'http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#api' ], [ 'wp', '/dom/methods/requestFullscreen' ], [ 'mdn', '/DOM/Using_fullscreen_mode' ] ] }, { id: 'notifications', name: 'Web Notifications', value: 5, url: 'http://www.w3.org/TR/notifications/' } ] }, { id: 'input', name: 'Input', status: 'proposal', items: [ { id: 'getUserMedia', name: 'Access the webcam', value: 15, urls: [ [ 'w3c', 'http://dev.w3.org/2011/webrtc/editor/getusermedia.html' ], [ 'wp', '/dom/methods/getUserMedia' ], [ 'mdn', '/WebRTC' ] ] }, { id: 'getGamepads', name: 'Gamepad control', value: 2, urls: [ [ 'w3c', 'http://www.w3.org/TR/gamepad/' ], [ 'wp', '/apis/gamepad' ] ] }, { id: 'pointerevents', name: 'Pointer Events', value: 5, urls: [ [ 'w3c', 'http://www.w3.org/TR/pointerevents/' ], [ 'wp', '/concepts/Pointer_Events' ] ] }, { id: 'pointerLock', name: 'Pointer Lock support', value: 3, urls: [ [ 'w3c', 'http://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html' ], [ 'wp', '/dom/methods/requestPointerLock' ], [ 'mdn', '/API/Pointer_Lock_API' ] ] } ] } ] }, { id: 'multimedia', name: 'Multimedia', column: 'right', items: [ { id: 'video', name: 'Video', status: 'stable', items: [ { id: 'element', name: 'video element', value: 16, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/embedded-content-0.html#the-video-element' ], [ 'wp', '/html/elements/video' ], [ 'mdn', '/Using_HTML5_audio_and_video' ] ] }, { id: 'subtitle', name: 'Subtitles', value: 8, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/embedded-content-0.html#the-track-element' ], [ 'wp', '/html/elements/track' ] ] }, { id: 'audiotracks', name: 'Audio track selection', value: 2, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/embedded-content-0.html#dom-media-audiotracks' ] ] }, { id: 'videotracks', name: 'Video track selection', value: 2, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/embedded-content-0.html#dom-media-videotracks' ] ] }, { id: 'poster', name: 'Poster images', value: 1, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/embedded-content-0.html#attr-video-poster' ], [ 'wp', '/dom/apis/audio-video/properties/poster' ] ] }, { id: 'canplaytype', name: 'Codec detection', value: 4, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/embedded-content-0.html#dom-navigator-canplaytype' ], [ 'wp', '/dom/apis/audio-video/methods/canPlayType' ] ] }, 'Advanced', { id: 'drm', name: 'DRM support', status: 'controversial', url: 'http://www.w3.org/TR/encrypted-media/' }, { id: 'mediasource', name: 'Media Source extensions', status: 'proposal', value: 2, urls: [ [ 'w3c', 'http://www.w3.org/TR/media-source/' ], [ 'wp', '/apis/media_source_extensions' ] ] }, 'Codecs', { id: 'mpeg4', name: 'MPEG-4 ASP support', status: 'optional' }, { id: 'h264', name: 'H.264 support', status: 'optional', urls: [ [ 'other', 'http://ip.hhi.de/imagecom_G1/assets/pdfs/csvt_overview_0305.pdf' ] ] }, { id: 'theora', name: 'Ogg Theora support', status: 'optional', urls: [ [ 'xiph', 'http://theora.org/doc/Theora.pdf' ] ] }, { id: 'webmvp8', name: 'WebM with VP8 support', status: 'optional', urls: [ [ 'webm', 'http://www.webmproject.org/' ], [ 'ietf', 'http://www.rfc-editor.org/rfc/rfc6386.txt' ] ] }, { id: 'webmvp9', name: 'WebM with VP9 support', status: 'optional', urls: [ [ 'webm', 'http://www.webmproject.org/' ], [ 'ietf', 'http://tools.ietf.org/id/draft-grange-vp9-bitstream-00.txt' ] ] } ] }, { id: 'audio', name: 'Audio', status: 'stable', items: [ { id: 'element', name: 'audio element', value: 18, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/embedded-content-0.html#the-audio-element' ], [ 'wp', '/html/elements/audio' ], [ 'mdn', '/Using_HTML5_audio_and_video' ] ] }, { id: 'loop', name: 'Loop audio', value: 1, url: 'http://www.w3.org/TR/html5/embedded-content-0.html#attr-media-loop' }, { id: 'preload', name: 'Preload in the background', value: 1, url: 'http://www.w3.org/TR/html5/embedded-content-0.html#attr-media-preload' }, 'Advanced', { id: 'webaudio', name: 'Web Audio API', status: 'proposal', value: 5, urls: [ [ 'w3c', 'http://www.w3.org/TR/webaudio/' ], [ 'wp', '/apis/webaudio' ] ] }, { id: 'speechrecognition', name: 'Speech Recognition', status: 'experimental', value: 3, url: 'https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html' }, { id: 'speechsynthesis', name: 'Speech Synthesis', status: 'experimental', value: 2, url: 'https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html' }, 'Codecs', { id: 'pcm', name: 'PCM audio support', status: 'optional' }, { id: 'aac', name: 'AAC support', status: 'optional' }, { id: 'mp3', name: 'MP3 support', status: 'optional' }, { id: 'vorbis', name: 'Ogg Vorbis support', status: 'optional' }, { id: 'opus', name: 'Ogg Opus support', status: 'optional' }, { id: 'webm', name: 'WebM with Vorbis support', status: 'optional' }, { id: 'webmopus', name: 'WebM with Opus support', status: 'optional' } ] } ] }, { id: 'graphicseffects', name: '3D, Graphics & Effects', column: 'right', items: [ { id: 'responsive', status: 'proposal', name: 'Responsive images', items: [ { id: 'picture', name: 'picture element', value: 5, urls: [ [ 'ricg', 'http://responsiveimages.org/' ], [ 'whatwg', 'https://html.spec.whatwg.org/multipage/embedded-content.html#the-picture-element' ] ] }, { id: 'srcset', name: 'srcset attribute', value: 5, urls: [ [ 'ricg', 'http://responsiveimages.org/' ], [ 'w3c', 'http://www.w3.org/html/wg/drafts/srcset/w3c-srcset/' ], [ 'whatwg', 'https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-srcset' ] ] }, { id: 'sizes', name: 'sizes attribute', value: 5, urls: [ [ 'ricg', 'http://responsiveimages.org/' ], [ 'whatwg', 'https://html.spec.whatwg.org/multipage/embedded-content.html#dom-img-sizes' ], ] } ] }, { id: 'canvas', name: '2D Graphics', status: 'stable', items: [ { id: 'context', name: 'Canvas 2D graphics', value: 10, urls: [ [ 'w3c', 'http://www.w3.org/TR/2dcontext/' ], [ 'wp', '/apis/canvas' ], [ 'mdn', '/HTML/Canvas' ] ] }, 'Drawing primitives', { id: 'text', name: 'Text support', value: 2, urls: [ [ 'w3c', 'http://www.w3.org/TR/2dcontext/#drawing-text-to-the-canvas' ], [ 'wp', '/apis/canvas/CanvasRenderingContext2D/fillText' ] ] }, { id: 'path', name: 'Path support', status: 'proposal', value: 2, urls: [ [ 'w3c', 'http://www.w3.org/TR/2dcontext/#path-objects' ], [ 'whatwg', 'https://html.spec.whatwg.org/multipage/scripting.html#path2d-objects' ] ] }, { id: 'ellipse', name: 'Ellipse support', status: 'proposal', value: 2, urls: [ [ 'w3c', 'http://www.w3.org/TR/2dcontext/#dom-context-2d-ellipse' ], [ 'whatwg', 'https://html.spec.whatwg.org/multipage/scripting.html#dom-context-2d-ellipse' ] ] }, { id: 'dashed', name: 'Dashed line support', status: 'proposal', value: 2, urls: [ [ 'w3c', 'http://www.w3.org/TR/2dcontext/#dom-context-2d-setlinedash' ], [ 'whatwg', 'https://html.spec.whatwg.org/multipage/scripting.html#dom-context-2d-setlinedash' ] ] }, { id: 'focusring', name: 'System focus ring support', status: 'proposal', value: 1, urls: [ [ 'whatwg', 'https://html.spec.whatwg.org/multipage/scripting.html#dom-context-2d-drawsystemfocusring' ] ] }, 'Features', { id: 'hittest', name: 'Hit testing support', status: 'proposal', value: 1, urls: [ [ 'w3c', 'http://www.w3.org/TR/2dcontext/#dom-context-2d-addhitregion' ], [ 'whatwg', 'http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-addhitregion' ] ] }, { id: 'blending', name: 'Blending modes', status: 'proposal', value: 5, urls: [ [ 'w3c', 'http://www.w3.org/TR/compositing-1/#canvascompositingandblending' ] ] }, 'Image export formats', { id: 'png', name: 'PNG support' }, { id: 'jpeg', name: 'JPEG support' }, { id: 'jpegxr', name: 'JPEG-XR support' }, { id: 'webp', name: 'WebP support' } ] }, { id: 'webgl', status: 'stable', name: '3D Graphics', items: [ { id: 'context', name: 'WebGL 3D graphics', value: 20, urls: [ [ 'khronos', 'http://www.khronos.org/registry/webgl/specs/latest/' ], [ 'wp', '/webgl' ], [ 'mdn', '/docs/WebGL' ] ] } ] }, { id: 'animation', status: 'stable', name: 'Animation', items: [ { id: 'requestAnimationFrame', name: 'window.requestAnimationFrame', value: 5, urls: [ [ 'w3c', 'http://www.w3.org/TR/animation-timing/#requestAnimationFrame' ], [ 'wp', '/apis/timing/methods/requestAnimationFrame' ], [ 'mdn', '/DOM/window.requestAnimationFrame' ] ] } ] } ] }, { id: 'connectivity', name: 'Connectivity', column: 'left', items: [ { id: 'communication', status: 'stable', name: 'Communication', items: [ { id: 'eventSource', name: 'Server-Sent Events', value: 6, urls: [ [ 'w3c', 'http://www.w3.org/TR/eventsource/' ], [ 'mdn', '/Server-sent_events/Using_server-sent_events' ] ] }, { id: 'beacon', name: 'Beacon', value: 2, urls: [ [ 'w3c', 'http://www.w3.org/TR/beacon/' ], [ 'mdn', '/Web/API/navigator.sendBeacon' ] ] }, 'XMLHttpRequest Level 2', { id: 'xmlhttprequest2.upload', name: 'Upload files', value: 5, url: 'http://www.w3.org/TR/XMLHttpRequest2/#the-upload-attribute' }, { id: 'xmlhttprequest2.response', name: 'Response type support', urls: [ [ 'mdn', '/DOM/XMLHttpRequest' ] ], items: [ { id: 'text', name: 'Text response type', value: 1, url: 'http://www.w3.org/TR/XMLHttpRequest2/#dom-xmlhttprequest-responsetype' }, { id: 'document', name: 'Document response type', value: 2, url: 'http://www.w3.org/TR/XMLHttpRequest2/#dom-xmlhttprequest-responsetype' }, { id: 'array', name: 'ArrayBuffer response type', value: 2, url: 'http://www.w3.org/TR/XMLHttpRequest2/#dom-xmlhttprequest-responsetype' }, { id: 'blob', name: 'Blob response type', value: 2, url: 'http://www.w3.org/TR/XMLHttpRequest2/#dom-xmlhttprequest-responsetype' } ] }, 'WebSocket', { id: 'websocket.basic', name: 'Basic socket communication', value: 10, urls: [ [ 'w3c', 'http://www.w3.org/TR/websockets/' ], [ 'mdn', '/docs/WebSockets' ] ] }, { id: 'websocket.binary', name: 'ArrayBuffer and Blob support', value: 5, urls: [ [ 'whatwg', 'http://www.whatwg.org/specs/web-apps/current-work/multipage/network.html#dom-websocket-binarytype' ], [ 'mdn', '/docs/WebSockets' ] ] } ] }, { id: 'webrtc', name: 'Peer To Peer', status: 'proposal', items: [ { id: 'webrtc', name: 'WebRTC 1.0', value: 10, urls: [ [ 'w3c', 'http://www.w3.org/TR/webrtc/' ], [ 'wp', '/apis/webrtc/RTCPeerConnection' ], [ 'mdn', '/WebRTC' ] ] }, { id: 'objectrtc', name: 'ObjectRTC API for WebRTC', value: { maximum: 15, conditional: '!webrtc.webrtc' }, urls: [ [ 'w3c', 'http://ortc.org/wp-content/uploads/2014/10/ortc.html' ] ] }, { id: 'datachannel', name: 'Data channel', value: 5, urls: [ [ 'w3c', 'http://www.w3.org/TR/webrtc/' ], [ 'wp', '/apis/webrtc/RTCDataChannel' ], [ 'mdn', '/WebRTC' ] ] } ] } ] }, { id: 'performanceintegration', name: 'Performance & Integration', column: 'left', items: [ { id: 'interaction', status: 'stable', name: 'User interaction', items: [ 'Drag and drop', { id: 'dragdrop.attributes', name: 'Attributes', urls: [ [ 'mdn', '/DragDrop/Drag_and_Drop' ] ], items: [ { id: 'draggable', name: 'draggable attribute', value: 1, url: 'http://www.w3.org/TR/html5/editing.html#the-draggable-attribute' }, { id: 'dropzone', name: 'dropzone attribute', value: 1, url: 'http://www.w3.org/TR/html5/editing.html#the-dropzone-attribute ' } ] }, { id: 'dragdrop.events', name: 'Events', urls: [ [ 'mdn', '/DragDrop/Drag_and_Drop' ] ], items: [ { id: 'ondrag', name: 'ondrag event', url: 'http://www.w3.org/TR/html5/editing.html#dndevents' }, { id: 'ondragstart', name: 'ondragstart event', url: 'http://www.w3.org/TR/html5/editing.html#dndevents' }, { id: 'ondragenter', name: 'ondragenter event', url: 'http://www.w3.org/TR/html5/editing.html#dndevents' }, { id: 'ondragover', name: 'ondragover event', url: 'http://www.w3.org/TR/html5/editing.html#dndevents' }, { id: 'ondragleave', name: 'ondragleave event', url: 'http://www.w3.org/TR/html5/editing.html#dndevents' }, { id: 'ondragend', name: 'ondragend event', url: 'http://www.w3.org/TR/html5/editing.html#dndevents' }, { id: 'ondrop', name: 'ondrop event', url: 'http://www.w3.org/TR/html5/editing.html#dndevents' } ] }, 'HTML editing', { id: 'editing.elements', name: 'Editing elements', urls: [ [ 'mdn', '/HTML/Content_Editable' ] ], items: [ { id: 'contentEditable', name: 'contentEditable attribute', value: 5, url: 'http://www.w3.org/TR/html5/editing.html#contenteditable' }, { id: 'isContentEditable', name: 'isContentEditable property', value: 1, url: 'http://www.w3.org/TR/html5/editing.html#contenteditable' } ] }, { id: 'editing.documents', name: 'Editing documents', urls: [ [ 'mdn', '/HTML/Content_Editable' ] ], items: [ { id: 'designMode', name: 'designMode attribute', value: 1, url: 'http://www.w3.org/TR/html5/editing.html#designMode' } ] }, { id: 'editing.selectors', name: 'CSS selectors', urls: [ [ 'mdn', '/HTML/Content_Editable' ] ], items: [ { id: 'read-write', name: ':read-write selector', value: 1, url: 'http://www.w3.org/TR/html5/links.html#selector-read-write' }, { id: 'read-only', name: ':read-only selector', value: 1, url: 'http://www.w3.org/TR/html5/links.html#selector-read-only' } ] }, { id: 'editing.apis', name: 'APIs', value: 2, urls: [ [ 'mdn', '/HTML/Content_Editable' ] ], items: [ { id: 'execCommand', name: 'execCommand method', url: 'https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html' }, { id: 'queryCommandEnabled', name: 'queryCommandEnabled method', url: 'https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html' }, { id: 'queryCommandIndeterm', name: 'queryCommandIndeterm method', url: 'https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html' }, { id: 'queryCommandState', name: 'queryCommandState method', url: 'https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html' }, { id: 'queryCommandSupported', name: 'queryCommandSupported method', url: 'https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html' }, { id: 'queryCommandValue', name: 'queryCommandValue method', url: 'https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html' } ] }, 'Clipboard', { id: 'clipboard', name: 'Clipboard API and events', value: 5, url: 'http://dev.w3.org/2006/webapi/clipops/clipops.html' }, 'Spellcheck', { id: 'spellcheck', name: 'spellcheck attribute', value: 2, url: 'http://www.w3.org/TR/html5/editing.html#attr-spellcheck' } ] }, { id: 'performance', status: 'stable', name: 'Performance', items: [ { id: 'datatypes', name: 'Native binary data', status: 'stable', items: [ { id: 'ArrayBuffer', name: 'ArrayBuffer', value: 1, urls: [ [ 'khronos', 'http://www.khronos.org/registry/typedarray/specs/latest/#5' ] ] }, { id: 'Int8Array', name: 'Int8Array', value: 1, urls: [ [ 'khronos', 'http://www.khronos.org/registry/typedarray/specs/latest/#7' ] ] }, { id: 'Uint8Array', name: 'Uint8Array', value: 1, urls: [ [ 'khronos', 'http://www.khronos.org/registry/typedarray/specs/latest/#7' ] ] }, { id: 'Uint8ClampedArray', name: 'Uint8ClampedArray', value: 1, urls: [ [ 'khronos', 'http://www.khronos.org/registry/typedarray/specs/latest/#7.1' ] ] }, { id: 'Int16Array', name: 'Int16Array', value: 1, urls: [ [ 'khronos', 'http://www.khronos.org/registry/typedarray/specs/latest/#7' ] ] }, { id: 'Uint16Array', name: 'Uint16Array', value: 1, urls: [ [ 'khronos', 'http://www.khronos.org/registry/typedarray/specs/latest/#7' ] ] }, { id: 'Int32Array', name: 'Int32Array', value: 1, urls: [ [ 'khronos', 'http://www.khronos.org/registry/typedarray/specs/latest/#7' ] ] }, { id: 'Uint32Array', name: 'Uint32Array', value: 1, urls: [ [ 'khronos', 'http://www.khronos.org/registry/typedarray/specs/latest/#7' ] ] }, { id: 'Float32Array', name: 'Float32Array', value: 1, urls: [ [ 'khronos', 'http://www.khronos.org/registry/typedarray/specs/latest/#7' ] ] }, { id: 'Float64Array', name: 'Float64Array', value: 1, urls: [ [ 'khronos', 'http://www.khronos.org/registry/typedarray/specs/latest/#7' ] ] }, { id: 'DataView', name: 'DataView', value: 1, urls: [ [ 'khronos', 'http://www.khronos.org/registry/typedarray/specs/latest/#7' ] ] } ] }, 'Workers', { id: 'worker', name: 'Web Workers', value: 10, urls: [ [ 'w3c', 'http://www.w3.org/TR/workers/#dedicated-workers-and-the-worker-interface' ], [ 'mdn', '/DOM/Using_web_workers' ] ] }, { id: 'sharedWorker', name: 'Shared Workers', value: 4, urls: [ [ 'w3c', 'http://www.w3.org/TR/workers/#shared-workers-and-the-sharedworker-interface' ], [ 'mdn', '/DOM/Using_web_workers' ] ] } ] }, { id: 'security', status: 'stable', name: 'Security', items: [ { id: 'crypto', name: 'Web Cryptography API', status: 'experimental', value: 5, urls: [ [ 'w3c', 'http://www.w3.org/TR/WebCryptoAPI/' ] ] }, { id: 'csp10', name: 'Content Security Policy 1.0', value: 3, urls: [ [ 'w3c', 'http://www.w3.org/TR/CSP/' ], [ 'mdn', '/Security/CSP' ] ] }, { id: 'csp11', name: 'Content Security Policy 1.1', status: 'proposal', value: 2, urls: [ [ 'w3c', 'http://www.w3.org/TR/CSP/' ], [ 'mdn', '/Security/CSP' ] ] }, { id: 'cors', name: 'Cross-Origin Resource Sharing', value: 5, urls: [ [ 'mdn', '/HTTP/Access_control_CORS' ] ] }, { id: 'postMessage', name: 'Cross-document messaging', value: 5, urls: [ [ 'w3c', 'http://dev.w3.org/html5/postmsg/' ], [ 'wp', '/apis/web-messaging' ], [ 'mdn', '/DOM/window.postMessage' ] ] }, 'Iframes', { id: 'sandbox', name: 'Sandboxed iframe', value: 10, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/embedded-content-0.html#attr-iframe-sandbox' ], [ 'mdn', '/HTML/Element/iframe' ] ] }, { id: 'seamless', name: 'Seamless iframe', value: 5, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/embedded-content-0.html#attr-iframe-seamless' ], [ 'mdn', '/HTML/Element/iframe' ] ] }, { id: 'srcdoc', name: 'iframe with inline contents', value: 5, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/embedded-content-0.html#attr-iframe-srcdoc' ], [ 'mdn', '/HTML/Element/iframe' ] ] } ] }, { id: 'history', name: 'History and navigation', status: 'stable', items: [ { id: 'history', name: 'Session history', value: 10, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/browsers.html#the-history-interface' ], [ 'wp', '/dom/history' ], [ 'mdn', '/DOM/Manipulating_the_browser_history' ] ] } ] } ] }, { id: 'offlinestorage', name: 'Offline & Storage', column: 'right', items: [ { id: 'offline', name: 'Web applications', status: 'stable', items: [ 'Offline resources', { id: 'applicationCache', name: 'Application Cache', value: 10, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/browsers.html#offline' ], [ 'wp', '/apis/appcache/ApplicationCache' ], [ 'mdn', '/HTML/Using_the_application_cache' ] ] }, { id: 'serviceWorkers', name: 'Service Workers', status: 'experimental', value: 10, urls: [ [ 'w3c', 'https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#service-worker-obj' ], [ 'mdn', '/Web/API/ServiceWorker_API' ] ] }, 'Content and Scheme handlers', { id: 'registerProtocolHandler', name: 'Custom scheme handlers', value: 2, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/webappapis.html#custom-handlers' ], [ 'mdn', '/docs/Web-based_protocol_handlers' ] ] }, { id: 'registerContentHandler', name: 'Custom content handlers', value: 2, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/webappapis.html#custom-handlers' ], [ 'mdn', '/DOM/window.navigator.registerContentHandler' ] ] }, { id: 'addSearchProvider', name: 'Custom search providers', value: 1, urls: [ [ 'whatwg', 'http://www.whatwg.org/specs/web-apps/current-work/#dom-external-addsearchprovider' ] ] } ] }, { id: 'storage', name: 'Storage', status: 'stable', items: [ 'Key-value storage', { id: 'sessionStorage', name: 'Session Storage', value: 5, urls: [ [ 'w3c', 'http://www.w3.org/TR/webstorage/#the-sessionstorage-attribute' ], [ 'wp', '/apis/web-storage' ], [ 'mdn', '/DOM/Storage' ] ] }, { id: 'localStorage', name: 'Local Storage', value: 5, urls: [ [ 'w3c', 'http://www.w3.org/TR/webstorage/#the-localstorage-attribute' ], [ 'wp', '/apis/web-storage' ], [ 'mdn', '/DOM/Storage' ] ] }, 'Database storage', { id: 'indexedDB.basic', name: 'IndexedDB', status: 'proposal', value: 21, urls: [ [ 'w3c', 'http://www.w3.org/TR/IndexedDB/' ], [ 'wp', '/apis/indexedDB' ], [ 'mdn', '/IndexedDB' ] ] }, { id: 'indexedDB.blob', name: 'Objectstore Blob support', status: 'proposal', value: 2, urls: [ [ 'w3c', 'http://www.w3.org/TR/IndexedDB/' ], [ 'wp', '/apis/indexedDB' ], [ 'mdn', '/IndexedDB' ] ] }, { id: 'indexedDB.arraybuffer', name: 'Objectstore ArrayBuffer support', status: 'proposal', value: 2, urls: [ [ 'w3c', 'http://www.w3.org/TR/IndexedDB/' ], [ 'wp', '/apis/indexedDB' ], [ 'mdn', '/IndexedDB' ] ] }, 'The Web SQL Database specification is no longer being updated and has been replaced by IndexedDB. Because at least 3 vendors have shipped implementations of this specification we still include it in this test.', { id: 'sqlDatabase', name: 'Web SQL Database', status: 'rejected', value: { maximum: 5, conditional: '!storage.indexedDB.basic' }, url: 'http://www.w3.org/TR/webdatabase/' } ] }, { id: 'files', name: 'Files', status: 'stable', items: [ 'Reading files', { id: 'fileReader', name: 'Basic support for reading files', value: 7, urls: [ [ 'w3c', 'http://dev.w3.org/2006/webapi/FileAPI/#filereader-interface' ], [ 'wp', '/apis/file' ], [ 'mdn', '/Using_files_from_web_applications' ] ] }, { id: 'fileReader.blob', name: 'Create a Blob from a file', value: 2, urls: [ [ 'w3c', 'http://dev.w3.org/2006/webapi/FileAPI/#dfn-Blob' ], ] }, { id: 'fileReader.dataURL', name: 'Create a Data URL from a Blob', value: 2, urls: [ [ 'w3c', 'http://dev.w3.org/2006/webapi/FileAPI/#dfn-readAsDataURL' ], ] }, { id: 'fileReader.arraybuffer', name: 'Create an ArrayBuffer from a Blob', value: 2, urls: [ [ 'w3c', 'http://dev.w3.org/2006/webapi/FileAPI/#dfn-readAsArrayBuffer' ], ] }, { id: 'fileReader.objectURL', name: 'Create a Blob URL from a Blob', value: 2, urls: [ [ 'w3c', 'http://dev.w3.org/2006/webapi/FileAPI/#dfn-createObjectURL' ], ] }, 'Accessing the file system', { id: 'getFileSystem', name: 'FileSystem API', status: 'experimental', urls: [ [ 'w3c', 'http://w3c.github.io/filesystem-api/Overview.html' ], ] }, 'The Directories and System API proposal has failed to gain traction among browser vendors and is only supported in some Webkit based browsers. No additional points are awarded for supporting this API.', { id: 'fileSystem', name: 'File API: Directories and System', status: 'rejected', urls: [ [ 'w3c', 'http://www.w3.org/TR/file-system-api/' ], [ 'wp', '/apis/filesystem' ] ] } ] }, { id: 'streams', status: 'experimental', name: 'Streams', items: [ { id: 'streams.readable', name: 'Readable streams', value: 3, urls: [ [ 'w3c', 'https://streams.spec.whatwg.org/' ] ] }, { id: 'streams.writeable', name: 'Writable streams', value: 2, urls: [ [ 'w3c', 'https://streams.spec.whatwg.org/' ] ] } ] } ] }, { id: 'other', name: 'Other', column: 'right', items: [ { id: 'components', status: 'experimental', name: 'Web Components', items: [ { id: 'custom', name: 'Custom elements', value: 4, urls: [ [ 'w3c', 'http://w3c.github.io/webcomponents/spec/custom/' ] ] }, { id: 'shadowdom', name: 'Shadow DOM', value: 2, urls: [ [ 'w3c', 'http://w3c.github.io/webcomponents/spec/shadow/' ] ] }, { id: 'template', name: 'HTML templates', value: 2, urls: [ [ 'w3c', 'http://www.w3.org/TR/html-templates/' ] ] }, { id: 'imports', name: 'HTML imports', value: 2, urls: [ [ 'w3c', 'http://w3c.github.io/webcomponents/spec/imports/' ] ] } ] }, { id: 'other', name: 'Other', status: 'stable', items: [ 'Styling', { id: 'scoped', name: 'Scoped style element', value: 2, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/document-metadata.html#attr-style-scoped' ], [ 'wp', '/Meta:HTML/Elements/style' ] ] }, 'Scripts', { id: 'async', name: 'Asynchronous script execution', value: 3, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/scripting-1.html#attr-script-async' ], [ 'mdn', '/HTML/Element/script' ], [ 'wp', '/html/elements/script' ] ] }, { id: 'onerror', name: 'Runtime script error reporting', value: 1, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/webappapis.html#report-the-error' ], [ 'mdn', '/DOM/window.onerror' ] ] }, { id: 'executionevents', name: 'Script execution events', value: 1, urls: [ [ 'whatwg', 'http://www.whatwg.org/specs/web-apps/current-work/multipage/scripting-1.html#the-script-element' ], [ 'mdn', '/Web/Reference/Events/beforescriptexecute' ] ] }, { id: 'base64', name: 'Base64 encoding and decoding', value: 1, urls: [ [ 'w3c', 'http://www.w3.org/TR/html5/webappapis.html#atob' ], [ 'mdn', '/DOM/window.atob' ] ] }, { id: 'json', name: 'JSON encoding and decoding', value: 1, urls: [ [ 'mdn', '/JSON' ], [ 'wp', '/apis/json' ] ] }, { id: 'url', name: 'URL API', value: 2, urls: [ [ 'w3c', 'w3ctag.github.io/url/' ] ] }, { id: 'mutationObserver', name: 'Mutation Observer', value: 2, urls: [ [ 'w3c', 'http://www.w3.org/TR/dom/#mutation-observers' ], [ 'mdn', '/DOM/MutationObserver' ] ] }, { id: 'promises', name: 'Promises', status: 'experimental', value: 2, urls: [ [ 'mdn', '/Web/JavaScript/Reference/Global_Objects/Promise' ] ] }, 'Other', { id: 'pagevisiblity', name: 'Page Visibility', value: 2, urls: [ [ 'w3c', 'http://www.w3.org/TR/page-visibility/' ], [ 'mdn', '/DOM/Using_the_Page_Visibility_API' ] ] }, { id: 'getSelection', name: 'Text selection', value: 2, url: 'http://dvcs.w3.org/hg/editing/raw-file/tip/editing.html#selections' }, { id: 'scrollIntoView', name: 'Scroll into view', value: 1, url: 'http://dev.w3.org/csswg/cssom-view/#dom-element-scrollintoview' } ] } ] } ]