From 5530ff7e97f2d63ff8104fa917fa7dd48e58c9c2 Mon Sep 17 00:00:00 2001 From: Rodney Rehm Date: Tue, 15 Dec 2015 00:59:10 +0100 Subject: [PATCH] chore(browser/focusable): adding manual test results --- tests/focusable/data/chrome-mobile.json | 720 ++++++- tests/focusable/data/chrome-nightly.json | 974 ++++++++- tests/focusable/data/chrome-stable.json | 1146 +++++++++-- tests/focusable/data/firefox-nightly.json | 719 ++++++- tests/focusable/data/firefox-stable.json | 990 +++++++-- tests/focusable/data/ie-10.json | 568 +++++- tests/focusable/data/ie-11.json | 821 ++++++-- tests/focusable/data/ie-12.json | 531 ++++- tests/focusable/data/ie-9.json | 525 ++++- tests/focusable/data/ios-9.json | 2251 ++++++++++++--------- tests/focusable/data/opera-stable.json | 1848 +++++++++++++++++ tests/focusable/data/safari-9.json | 578 +++++- tests/focusable/data/webkit-nightly.json | 577 +++++- 13 files changed, 10140 insertions(+), 2108 deletions(-) create mode 100644 tests/focusable/data/opera-stable.json diff --git a/tests/focusable/data/chrome-mobile.json b/tests/focusable/data/chrome-mobile.json index fba3b366..27c48ed2 100644 --- a/tests/focusable/data/chrome-mobile.json +++ b/tests/focusable/data/chrome-mobile.json @@ -1,13 +1,13 @@ { "platform": { - "description": "Chrome Mobile 46.0.2490.76 on Android 5.1", + "description": "Chrome Mobile 47.0.2526.83 on Android 5.1", "layout": "Blink", "manufacturer": null, "name": "Chrome Mobile", "prerelease": null, "product": null, - "ua": "Mozilla/5.0 (Linux; Android 5.1; XT1021 Build/LPC23.13-34.8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36", - "version": "46.0.2490.76", + "ua": "Mozilla/5.0 (Linux; Android 5.1; XT1021 Build/LPC23.13-34.8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36", + "version": "47.0.2526.83", "os": { "architecture": 32, "family": "Android", @@ -16,6 +16,8 @@ }, "focusable": [ "body", + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -34,16 +36,21 @@ "textarea[tabindex=-1]", "button[type=button]", "button[type=button][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -52,6 +59,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -75,10 +86,12 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg a[xlink|href]", "svg rect[onfocus]", @@ -86,6 +99,7 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -120,11 +134,13 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "span{user-modify}[tabindex=-1]", "canvas > input", @@ -132,9 +148,136 @@ "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg a[focusable=false]", + "shadow-host input[tabindex=0]", + "shadow-host input[tabindex=0]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=2]", + "shadow-host input[tabindex=2]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]" ], "focusEvents": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -156,16 +299,21 @@ "input[type=text]", "input[type=text][tabindex=-1]", "input[type=text]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -174,6 +322,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -197,10 +349,12 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg", "svg a[xlink|href]", @@ -212,20 +366,22 @@ "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[tabindex=-1] a[xlink|href] text", - "svg text", - "svg rect", + "svg[tabindex=-1] text", + "svg[tabindex=-1] rect", "svg[focusable=false]", "svg[focusable=false] a[xlink|href]", "svg[focusable=false] a[xlink|href] text", - "svg text", - "svg rect", + "svg[focusable=false] text", + "svg[focusable=false] rect", "svg:has(a[tabindex=0])", "svg a[xlink|href][tabindex=0]", "svg a[xlink|href][tabindex=0] text", - "svg text", + "svg a[xlink|href][tabindex=1]", + "svg a[xlink|href][tabindex=1] text", + "svg:has(a[tabindex=0]) text", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", - "svg rect", + "svg:has(a[tabindex=0]) rect", "svg a[focusable=false]", "rect", "svg{viewbox}", @@ -235,8 +391,8 @@ "svg:has(a[tabindex=-1])", "svg a[xlink|href][tabindex=-1]", "svg a[xlink|href][tabindex=-1] text", - "svg text", - "svg rect", + "svg:has(a[tabindex=-1]) text", + "svg:has(a[tabindex=-1]) rect", "svg{tiny}", "svg{tiny} rect", "svg{tiny} rect[tabindex=0]", @@ -272,11 +428,13 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "span{user-modify}[tabindex=-1]", "canvas > input", @@ -284,19 +442,210 @@ "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg text[focusable=true]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg svg a[focusable=false]", + "embed[type=svg] -> file:svg svg text[focusable=true]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg svg a[focusable=false]", + "object[src=svg] -> file:svg svg text[focusable=true]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][height=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg text[focusable=true]", + "shadow-host input[tabindex=0]", + "shadow-host", + "shadow-host input[tabindex=-1]", + "shadow-host", + "shadow-host input[tabindex=2]", + "shadow-host", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host", + "shadow-host", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host", + "shadow-host", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host", + "shadow-host", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]" ], "focusRedirection": [ - "label[for=\"label-target\"] --- input[type=text]", - "label[for=\"label-target-focusable\"] --- input[type=text][tabindex=-1]", - "label[for=\"label-target\"][tabindex=-1] --- input[type=text]", + "label[for=label-target] --- input[type=text]", + "label[for=label-target-focusable] --- input[type=text][tabindex=-1]", + "label[for=label-target][tabindex=-1] --- input[type=text]", "fieldset legend --- fieldset input" ], + "focusEncapsulation": [ + "iframe{focusable} -> input --- iframe{focusable}", + "iframe{focusable} -> input[tabindex=1] --- iframe{focusable}", + "iframe{focusable}[tabindex=-1] -> input --- iframe{focusable}[tabindex=-1]", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1] --- iframe{focusable}[tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href] --- iframe[src=svg]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] --- iframe[src=svg]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] --- iframe[src=svg]", + "iframe[src=svg] -> file:svg a[focusable=false] --- iframe[src=svg]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] --- iframe[src=svg][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] --- iframe[src=svg][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] --- iframe[src=svg][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false] --- iframe[src=svg][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href] --- embed[type=svg]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] --- embed[type=svg]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] --- embed[type=svg]", + "embed[type=svg] -> file:svg a[focusable=false] --- embed[type=svg]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] --- embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] --- embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] --- embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false] --- embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] --- embed[type=svg][tabindex=0]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] --- embed[type=svg][tabindex=0]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] --- embed[type=svg][tabindex=0]", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false] --- embed[type=svg][tabindex=0]", + "object[src=svg] -> file:svg a[xlink|href] --- object[src=svg]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] --- object[src=svg]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] --- object[src=svg]", + "object[src=svg] -> file:svg a[focusable=false] --- object[src=svg]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] --- object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] --- object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] --- object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false] --- object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] --- object[src=svg][tabindex=0]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] --- object[src=svg][tabindex=0]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] --- object[src=svg][tabindex=0]", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false] --- object[src=svg][tabindex=0]", + "object[src=svg][height=0] -> file:svg a[xlink|href] --- object[src=svg][height=0]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] --- object[src=svg][height=0]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] --- object[src=svg][height=0]", + "object[src=svg][height=0] -> file:svg a[focusable=false] --- object[src=svg][height=0]", + "shadow-host input[tabindex=0] --- shadow-host", + "shadow-host input[tabindex=-1] --- shadow-host", + "shadow-host input[tabindex=2] --- shadow-host", + "shadow-host inner-host input[tabindex=-1] --- shadow-host", + "shadow-host inner-host input[tabindex=0] --- shadow-host", + "shadow-host inner-host input[tabindex=1] --- shadow-host", + "shadow-host[tabindex=-1] input[tabindex=0] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=-1] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=0] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=-1] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=2] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1] --- shadow-host[tabindex=0]" + ], "noFocusMethod": [], "tabOrder": [], "tabIndex": { "html": -1, "body": -1, + "input[tabindex=1]": 1, "input[type=text]": 0, "input[type=text][tabindex=-1]": -1, "input[type=password]": 0, @@ -320,35 +669,40 @@ "label": -1, "label[tabindex=-1]": -1, "label[tabindex=0]": 0, - "label[for=\"label-target\"]": -1, - "label[for=\"label-target-focusable\"]": -1, - "label[for=\"label-target\"][tabindex=-1]": -1, + "label[for=label-target]": -1, + "label[for=label-target-focusable]": -1, + "label[for=label-target][tabindex=-1]": -1, + "form": -1, + "form input": 0, + "form[tabindex=-1]": -1, + "form[tabindex=-1] input": 0, + "form[disabled]": -1, + "form[disabled] input": 0, "input[type=text][disabled]": 0, "input[type=password][disabled]": 0, "input[type=checkbox][disabled]": 0, "input[type=radio][disabled]": 0, "input[type=submit][disabled]": 0, + "input[type=reset][disabled]": 0, "input[type=hidden][disabled]": 0, "select[disabled]": 0, "textarea[disabled]": 0, "button[type=button][disabled]": 0, + "label[disabled]": -1, "a[name]": 0, "a[href]": 0, - "a[href=\"\"]": 0, + "a[href=]": 0, "a[href][tabindex=-1]": -1, "span[href]": -1, "link[itemprop][href]": -1, "area[href].upper": 0, "area": 0, "area[href].lower": 0, - "map.invalid-image area[href].upper": 0, - "map.invalid-image area": 0, - "map.invalid-image area[href].lower": 0, "img[usemap].first": -1, - "img[usemap].invalid": -1, - "img[usemap=\"void\"]": -1, - "img": -1, + "firefox-bug-1116126": 0, "img[usemap].second": -1, + "img[usemap=void]": -1, + "img": -1, "area[href][tabindex=-1].upper": -1, "area[tabindex=-1]": -1, "area[href][tabindex=-1].lower": -1, @@ -357,6 +711,10 @@ "img[tabindex=-1] area": 0, "img[tabindex=-1] area[href].lower": 0, "img[usemap][tabindex=-1]": -1, + "map.invalid-image area[href].upper": 0, + "map.invalid-image area": 0, + "map.invalid-image area[href].lower": 0, + "img[usemap].invalid": -1, "a:has([ismap])": 0, "a > img[ismap]": -1, "a[tabindex=-1]:has([ismap])": -1, @@ -367,6 +725,11 @@ "iframe[tabindex=-1]": -1, "iframe{focusable}": 0, "iframe{focusable}[tabindex=-1]": -1, + "iframe[src=svg]": 0, + "iframe[src=svg][tabindex=-1]": -1, + "shadow-host": -1, + "shadow-host[tabindex=-1]": -1, + "shadow-host[tabindex=0]": 0, "audio": -1, "audio[controls]": 0, "audio[controls][tabindex=-1]": -1, @@ -421,15 +784,20 @@ "details a[href]": 0, "details[tabindex=-1]": -1, "details[tabindex=-1] summary": 0, + "details[tabindex=-1] a[href]": 0, + "details:has(summary[tabindex=-1])": -1, "details summary[tabindex=-1]": -1, + "details:has(summary[tabindex=-1]) a[href]": 0, "details[open]": -1, "details[open] summary": 0, "details[open] a[href]": 0, - "object[src=swf]": -1, + "object[src=swf]": 0, + "object[src=swf][tabindex=0]": 0, "object[src=swf][tabindex=-1]": -1, "object[src=swf][height=0]": 0, "object[src=svg]": 0, "object[src=svg][tabindex=-1]": -1, + "object[src=svg][tabindex=0]": 0, "object[src=svg][height=0]": 0, "map.object area[href].upper": 0, "map.object area": 0, @@ -445,14 +813,22 @@ "svg[tabindex=-1]": -1, "svg[tabindex=-1] a[xlink|href]": 0, "svg[tabindex=-1] a[xlink|href] text": -1, + "svg[tabindex=-1] text": -1, + "svg[tabindex=-1] rect": -1, "svg[focusable=false]": -1, "svg[focusable=false] a[xlink|href]": 0, "svg[focusable=false] a[xlink|href] text": -1, + "svg[focusable=false] text": -1, + "svg[focusable=false] rect": -1, "svg:has(a[tabindex=0])": -1, "svg a[xlink|href][tabindex=0]": 0, "svg a[xlink|href][tabindex=0] text": -1, + "svg a[xlink|href][tabindex=1]": 1, + "svg a[xlink|href][tabindex=1] text": -1, + "svg:has(a[tabindex=0]) text": -1, "svg rect[tabindex=0]": 0, "svg rect[tabindex=-1]": -1, + "svg:has(a[tabindex=0]) rect": -1, "svg a[focusable=false]": 0, "svg{viewbox}": -1, "svg rect[tabindex=0]{viewbox}": 0, @@ -461,6 +837,8 @@ "svg:has(a[tabindex=-1])": -1, "svg a[xlink|href][tabindex=-1]": -1, "svg a[xlink|href][tabindex=-1] text": -1, + "svg:has(a[tabindex=-1]) text": -1, + "svg:has(a[tabindex=-1]) rect": -1, "svg{tiny}": -1, "svg{tiny} rect": -1, "svg{tiny} rect[tabindex=0]": 0, @@ -481,7 +859,7 @@ "[tabindex=+2]": 2, "[tabindex= +2]": 2, "input[tabindex=hello]": 0, - "[tabindex=\"\"]": -1, + "[tabindex=]": -1, "[tabindex=hello]": -1, "[tabindex=3 ]": 3, "[tabindex=3x]": 3, @@ -524,18 +902,24 @@ "table tbody tr{collapse}": -1, "table tbody tr{collapse} td": -1, "table tbody tr{collapse} td a": 0, + "table tbody tr{collapse} td a{visible}": 0, "table tbody tr{collapse} td{visible}": -1, "table tbody tr{collapse} td{visible} a": 0, - "table tbody tr{collapse} td a{visible}": 0, "{none} > a": 0, "{none} > a{inline}": 0, "a{none}": 0, "div{no-dimension}": 0, "a{flexbox}": 0, "a{flexbox} > span": -1, - "[tabindex=\"-1\"]{flexbox}": -1, - "[tabindex=\"-1\"]{flexbox} > span1": -1, - "[tabindex=\"-1\"]{flexbox} > span2": -1, + "[tabindex=-1]{flexbox}": -1, + "[tabindex=-1]{flexbox} > span1": -1, + "[tabindex=-1]{flexbox} > span2": -1, + "div{flexbox}": -1, + "div{flexbox} span{order:2}": -1, + "div{flexbox} span{order:2} input": 0, + "div{flexbox} span{order:1}": -1, + "div{flexbox} span{order:1} input": 0, + "span{flexbox}": -1, "span{user-modify}": 0, "span{user-modify}[tabindex=-1]": -1, "canvas": -1, @@ -544,10 +928,122 @@ "canvas > a": 0, "canvas > a[tabindex=-1]": -1, "canvas > [tabindex=0]": 0, - "canvas > [tabindex=-1]": -1 + "canvas > [tabindex=-1]": -1, + "iframe -> body": -1, + "iframe[tabindex=-1] -> body": -1, + "iframe{focusable} -> body": -1, + "iframe{focusable} -> input": 0, + "iframe{focusable} -> input[tabindex=1]": 1, + "iframe{focusable}[tabindex=-1] -> body": -1, + "iframe{focusable}[tabindex=-1] -> input": 0, + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]": 1, + "iframe[src=svg] -> file:svg a[xlink|href]": 0, + "iframe[src=svg] -> file:svg a[xlink|href] text": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "iframe[src=svg] -> file:svg a[focusable=false]": 0, + "iframe[src=svg] -> file:svg svg a[focusable=false]": -1, + "iframe[src=svg] -> file:svg svg text[focusable=true]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg] -> file:svg a[xlink|href]": 0, + "embed[type=svg] -> file:svg a[xlink|href] text": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg] -> file:svg a[focusable=false]": 0, + "embed[type=svg] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]": 0, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]": 0, + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]": -1, + "object[src=svg] -> file:svg a[xlink|href]": 0, + "object[src=svg] -> file:svg a[xlink|href] text": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg] -> file:svg a[focusable=false]": 0, + "object[src=svg] -> file:svg svg a[focusable=false]": -1, + "object[src=svg] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]": 0, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]": 0, + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href]": 0, + "object[src=svg][height=0] -> file:svg a[xlink|href] text": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][height=0] -> file:svg a[focusable=false]": 0, + "object[src=svg][height=0] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][height=0] -> file:svg svg text[focusable=true]": -1, + "shadow-host input[tabindex=0]": 0, + "shadow-host inner-host": -1, + "shadow-host input[tabindex=-1]": -1, + "shadow-host input[tabindex=2]": 2, + "shadow-host inner-host input[tabindex=-1]": -1, + "shadow-host inner-host input[tabindex=0]": 0, + "shadow-host inner-host input[tabindex=1]": 1, + "shadow-host[tabindex=-1] input[tabindex=0]": 0, + "shadow-host[tabindex=-1] inner-host": -1, + "shadow-host[tabindex=-1] input[tabindex=-1]": -1, + "shadow-host[tabindex=-1] input[tabindex=2]": 2, + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]": -1, + "shadow-host[tabindex=-1] inner-host input[tabindex=0]": 0, + "shadow-host[tabindex=-1] inner-host input[tabindex=1]": 1, + "shadow-host[tabindex=0] input[tabindex=0]": 0, + "shadow-host[tabindex=0] inner-host": -1, + "shadow-host[tabindex=0] input[tabindex=-1]": -1, + "shadow-host[tabindex=0] input[tabindex=2]": 2, + "shadow-host[tabindex=0] inner-host input[tabindex=-1]": -1, + "shadow-host[tabindex=0] inner-host input[tabindex=0]": 0, + "shadow-host[tabindex=0] inner-host input[tabindex=1]": 1 }, "ally": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -566,16 +1062,21 @@ "textarea[tabindex=-1]", "button[type=button]", "button[type=button][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -584,6 +1085,28 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=2]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -596,16 +1119,19 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg a[xlink|href]", "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -640,11 +1166,13 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", @@ -654,6 +1182,8 @@ "canvas > [tabindex=-1]" ], "focusableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -672,16 +1202,21 @@ "textarea[tabindex=-1]", "button[type=button]", "button[type=button][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -690,6 +1225,28 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=2]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -702,16 +1259,19 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg a[xlink|href]", "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -746,11 +1306,13 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "span{user-modify}[tabindex=-1]", "canvas > input", @@ -767,6 +1329,8 @@ }, "jquery": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -787,25 +1351,33 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", "a > img[ismap][tabindex=-1]", "iframe[tabindex=-1]", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls][tabindex=-1]", "video[controls][tabindex=-1]", "embed[tabindex=-1]", @@ -819,10 +1391,12 @@ "details summary[tabindex=-1]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "svg[tabindex=-1]", @@ -834,7 +1408,7 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=3 ]", "div[tabindex=0]:empty", "div[tabindex=-1]:empty", @@ -844,13 +1418,17 @@ "fieldset[disabled] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]" ], "tabOrder": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -861,20 +1439,28 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", + "shadow-host[tabindex=0]", "embed[type=svg][tabindex=0]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "[tabindex=0]", @@ -882,7 +1468,7 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=3 ]", "div[tabindex=0]:empty", "fieldset[tabindex=0][disabled]", @@ -890,9 +1476,11 @@ "fieldset[disabled] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", - "a{flexbox}" + "table tbody tr{collapse} td{visible} a", + "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input" ] } } \ No newline at end of file diff --git a/tests/focusable/data/chrome-nightly.json b/tests/focusable/data/chrome-nightly.json index 31169a56..76abd348 100644 --- a/tests/focusable/data/chrome-nightly.json +++ b/tests/focusable/data/chrome-nightly.json @@ -1,13 +1,13 @@ { "platform": { - "description": "Chrome 49.0.2579.0 on OS X 10.10.5", + "description": "Chrome 49.0.2604.0 on OS X 10.10.5", "layout": "Blink", "manufacturer": null, "name": "Chrome", "prerelease": null, "product": null, - "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2579.0 Safari/537.36", - "version": "49.0.2579.0", + "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2604.0 Safari/537.36", + "version": "49.0.2604.0", "os": { "architecture": 32, "family": "OS X", @@ -16,6 +16,8 @@ }, "focusable": [ "body", + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -36,17 +38,29 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1]", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -55,6 +69,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -78,10 +96,12 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg a[xlink|href]", "svg rect[onfocus]", @@ -89,6 +109,7 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -117,15 +138,16 @@ "div[tabindex=-1]:empty", "span[tabindex=0]:empty", "span[tabindex=-1]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "span{user-modify}[tabindex=-1]", "canvas > input", @@ -133,9 +155,136 @@ "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg a[focusable=false]", + "shadow-host input[tabindex=0]", + "shadow-host input[tabindex=0]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=2]", + "shadow-host input[tabindex=2]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]" ], "focusEvents": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -158,17 +307,29 @@ "label[tabindex=0]", "input[type=text]", "input[type=text][tabindex=-1]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1]", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -177,6 +338,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -200,10 +365,12 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg", "svg a[xlink|href]", @@ -215,20 +382,22 @@ "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[tabindex=-1] a[xlink|href] text", - "svg text", - "svg rect", + "svg[tabindex=-1] text", + "svg[tabindex=-1] rect", "svg[focusable=false]", "svg[focusable=false] a[xlink|href]", "svg[focusable=false] a[xlink|href] text", - "svg text", - "svg rect", + "svg[focusable=false] text", + "svg[focusable=false] rect", "svg:has(a[tabindex=0])", "svg a[xlink|href][tabindex=0]", "svg a[xlink|href][tabindex=0] text", - "svg text", + "svg a[xlink|href][tabindex=1]", + "svg a[xlink|href][tabindex=1] text", + "svg:has(a[tabindex=0]) text", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", - "svg rect", + "svg:has(a[tabindex=0]) rect", "svg a[focusable=false]", "rect", "svg{viewbox}", @@ -238,8 +407,8 @@ "svg:has(a[tabindex=-1])", "svg a[xlink|href][tabindex=-1]", "svg a[xlink|href][tabindex=-1] text", - "svg text", - "svg rect", + "svg:has(a[tabindex=-1]) text", + "svg:has(a[tabindex=-1]) rect", "svg{tiny}", "svg{tiny} rect", "svg{tiny} rect[tabindex=0]", @@ -269,15 +438,16 @@ "div[tabindex=-1]:empty", "span[tabindex=0]:empty", "span[tabindex=-1]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "span{user-modify}[tabindex=-1]", "canvas > input", @@ -285,16 +455,209 @@ "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg text[focusable=true]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg svg a[focusable=false]", + "embed[type=svg] -> file:svg svg text[focusable=true]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg svg a[focusable=false]", + "object[src=svg] -> file:svg svg text[focusable=true]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][height=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg text[focusable=true]", + "shadow-host input[tabindex=0]", + "shadow-host", + "shadow-host input[tabindex=-1]", + "shadow-host", + "shadow-host input[tabindex=2]", + "shadow-host", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host", + "shadow-host", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host", + "shadow-host", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host", + "shadow-host", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]" ], "focusRedirection": [ - "label[for=\"label-target\"] --- input[type=text]", - "label[for=\"label-target-focusable\"] --- input[type=text][tabindex=-1]", + "label[for=label-target] --- input[type=text]", + "label[for=label-target-focusable] --- input[type=text][tabindex=-1]", "fieldset legend --- fieldset input" ], + "focusEncapsulation": [ + "iframe{focusable} -> input --- iframe{focusable}", + "iframe{focusable} -> input[tabindex=1] --- iframe{focusable}", + "iframe{focusable}[tabindex=-1] -> input --- iframe{focusable}[tabindex=-1]", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1] --- iframe{focusable}[tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href] --- iframe[src=svg]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] --- iframe[src=svg]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] --- iframe[src=svg]", + "iframe[src=svg] -> file:svg a[focusable=false] --- iframe[src=svg]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] --- iframe[src=svg][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] --- iframe[src=svg][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] --- iframe[src=svg][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false] --- iframe[src=svg][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href] --- embed[type=svg]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] --- embed[type=svg]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] --- embed[type=svg]", + "embed[type=svg] -> file:svg a[focusable=false] --- embed[type=svg]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] --- embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] --- embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] --- embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false] --- embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] --- embed[type=svg][tabindex=0]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] --- embed[type=svg][tabindex=0]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] --- embed[type=svg][tabindex=0]", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false] --- embed[type=svg][tabindex=0]", + "object[src=svg] -> file:svg a[xlink|href] --- object[src=svg]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] --- object[src=svg]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] --- object[src=svg]", + "object[src=svg] -> file:svg a[focusable=false] --- object[src=svg]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] --- object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] --- object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] --- object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false] --- object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] --- object[src=svg][tabindex=0]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] --- object[src=svg][tabindex=0]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] --- object[src=svg][tabindex=0]", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false] --- object[src=svg][tabindex=0]", + "object[src=svg][height=0] -> file:svg a[xlink|href] --- object[src=svg][height=0]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] --- object[src=svg][height=0]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] --- object[src=svg][height=0]", + "object[src=svg][height=0] -> file:svg a[focusable=false] --- object[src=svg][height=0]", + "shadow-host input[tabindex=0] --- shadow-host", + "shadow-host input[tabindex=-1] --- shadow-host", + "shadow-host input[tabindex=2] --- shadow-host", + "shadow-host inner-host input[tabindex=-1] --- shadow-host", + "shadow-host inner-host input[tabindex=0] --- shadow-host", + "shadow-host inner-host input[tabindex=1] --- shadow-host", + "shadow-host[tabindex=-1] input[tabindex=0] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=-1] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=0] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=-1] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=2] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1] --- shadow-host[tabindex=0]" + ], "noFocusMethod": [], "tabOrder": [ + "input[tabindex=1]", + "svg a[xlink|href][tabindex=1]", "[tabindex=1]", + "input[tabindex=1]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -309,19 +672,52 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", - "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", "iframe{focusable}", + "iframe{focusable} -> input", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "shadow-host input[tabindex=2]", + "shadow-host", + "shadow-host input[tabindex=0]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -349,14 +745,15 @@ "input[tabindex=hello]", "div[tabindex=0]:empty", "span[tabindex=0]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "canvas > input", "canvas > a", @@ -365,6 +762,7 @@ "tabIndex": { "html": -1, "body": -1, + "input[tabindex=1]": 1, "input[type=text]": 0, "input[type=text][tabindex=-1]": -1, "input[type=password]": 0, @@ -388,35 +786,56 @@ "label": -1, "label[tabindex=-1]": -1, "label[tabindex=0]": 0, - "label[for=\"label-target\"]": -1, - "label[for=\"label-target-focusable\"]": -1, - "label[for=\"label-target\"][tabindex=-1]": -1, + "label[for=label-target]": -1, + "label[for=label-target-focusable]": -1, + "label[for=label-target][tabindex=-1]": -1, "input[type=text][disabled]": 0, "input[type=password][disabled]": 0, "input[type=checkbox][disabled]": 0, "input[type=radio][disabled]": 0, "input[type=submit][disabled]": 0, + "input[type=reset][disabled]": 0, "input[type=hidden][disabled]": 0, "select[disabled]": 0, "textarea[disabled]": 0, "button[type=button][disabled]": 0, + "label[disabled]": -1, + "form": -1, + "form input": 0, + "form[tabindex=-1]": -1, + "form[tabindex=-1] input": 0, + "form[tabindex=0]": 0, + "form[tabindex=0] input": 0, + "form[disabled]": -1, + "form[disabled] input": 0, + "form[disabled][tabindex=-1]": -1, + "form[disabled][tabindex=-1] input": 0, + "form[disabled][tabindex=0]": 0, + "form[disabled][tabindex=0] input": 0, + "fieldset": 0, + "fieldset legend": -1, + "fieldset input": 0, + "fieldset:empty": 0, + "fieldset[disabled]": 0, + "fieldset[disabled] input": 0, + "fieldset[disabled][tabindex=0]": 0, + "fieldset[disabled][tabindex=0] input": 0, + "fieldset[disabled][tabindex=-1]": -1, + "fieldset[disabled][tabindex=-1] input": 0, "a[name]": 0, "a[href]": 0, - "a[href=\"\"]": 0, + "a[href=]": 0, "a[href][tabindex=-1]": -1, "span[href]": -1, "link[itemprop][href]": -1, "area[href].upper": 0, "area": 0, "area[href].lower": 0, - "map.invalid-image area[href].upper": 0, - "map.invalid-image area": 0, - "map.invalid-image area[href].lower": 0, "img[usemap].first": -1, - "img[usemap].invalid": -1, - "img[usemap=\"void\"]": -1, - "img": -1, + "firefox-bug-1116126": 0, "img[usemap].second": -1, + "img[usemap=void]": -1, + "img": -1, "area[href][tabindex=-1].upper": -1, "area[tabindex=-1]": -1, "area[href][tabindex=-1].lower": -1, @@ -425,6 +844,10 @@ "img[tabindex=-1] area": 0, "img[tabindex=-1] area[href].lower": 0, "img[usemap][tabindex=-1]": -1, + "map.invalid-image area[href].upper": 0, + "map.invalid-image area": 0, + "map.invalid-image area[href].lower": 0, + "img[usemap].invalid": -1, "a:has([ismap])": 0, "a > img[ismap]": -1, "a[tabindex=-1]:has([ismap])": -1, @@ -435,6 +858,11 @@ "iframe[tabindex=-1]": -1, "iframe{focusable}": 0, "iframe{focusable}[tabindex=-1]": -1, + "iframe[src=svg]": 0, + "iframe[src=svg][tabindex=-1]": -1, + "shadow-host": -1, + "shadow-host[tabindex=-1]": -1, + "shadow-host[tabindex=0]": 0, "audio": -1, "audio[controls]": 0, "audio[controls][tabindex=-1]": -1, @@ -489,15 +917,20 @@ "details a[href]": 0, "details[tabindex=-1]": -1, "details[tabindex=-1] summary": 0, + "details[tabindex=-1] a[href]": 0, + "details:has(summary[tabindex=-1])": -1, "details summary[tabindex=-1]": -1, + "details:has(summary[tabindex=-1]) a[href]": 0, "details[open]": -1, "details[open] summary": 0, "details[open] a[href]": 0, - "object[src=swf]": -1, + "object[src=swf]": 0, + "object[src=swf][tabindex=0]": 0, "object[src=swf][tabindex=-1]": -1, "object[src=swf][height=0]": 0, "object[src=svg]": 0, "object[src=svg][tabindex=-1]": -1, + "object[src=svg][tabindex=0]": 0, "object[src=svg][height=0]": 0, "map.object area[href].upper": 0, "map.object area": 0, @@ -513,14 +946,22 @@ "svg[tabindex=-1]": -1, "svg[tabindex=-1] a[xlink|href]": 0, "svg[tabindex=-1] a[xlink|href] text": -1, + "svg[tabindex=-1] text": -1, + "svg[tabindex=-1] rect": -1, "svg[focusable=false]": -1, "svg[focusable=false] a[xlink|href]": 0, "svg[focusable=false] a[xlink|href] text": -1, + "svg[focusable=false] text": -1, + "svg[focusable=false] rect": -1, "svg:has(a[tabindex=0])": -1, "svg a[xlink|href][tabindex=0]": 0, "svg a[xlink|href][tabindex=0] text": -1, + "svg a[xlink|href][tabindex=1]": 1, + "svg a[xlink|href][tabindex=1] text": -1, + "svg:has(a[tabindex=0]) text": -1, "svg rect[tabindex=0]": 0, "svg rect[tabindex=-1]": -1, + "svg:has(a[tabindex=0]) rect": -1, "svg a[focusable=false]": 0, "svg{viewbox}": -1, "svg rect[tabindex=0]{viewbox}": 0, @@ -529,6 +970,8 @@ "svg:has(a[tabindex=-1])": -1, "svg a[xlink|href][tabindex=-1]": -1, "svg a[xlink|href][tabindex=-1] text": -1, + "svg:has(a[tabindex=-1]) text": -1, + "svg:has(a[tabindex=-1]) rect": -1, "svg{tiny}": -1, "svg{tiny} rect": -1, "svg{tiny} rect[tabindex=0]": 0, @@ -549,7 +992,7 @@ "[tabindex=+2]": 2, "[tabindex= +2]": 2, "input[tabindex=hello]": 0, - "[tabindex=\"\"]": -1, + "[tabindex=]": -1, "[tabindex=hello]": -1, "[tabindex=3 ]": 3, "[tabindex=3x]": 3, @@ -557,14 +1000,6 @@ "div[tabindex=-1]:empty": -1, "span[tabindex=0]:empty": 0, "span[tabindex=-1]:empty": -1, - "fieldset[tabindex=0][disabled]": 0, - "fieldset[tabindex=-1][disabled]": -1, - "fieldset": 0, - "fieldset legend": -1, - "fieldset input": 0, - "fieldset:empty": 0, - "fieldset[disabled]": 0, - "fieldset[disabled] input": 0, "[hidden]": -1, "[hidden] input": 0, "[hidden][tabindex=-1]": -1, @@ -592,18 +1027,24 @@ "table tbody tr{collapse}": -1, "table tbody tr{collapse} td": -1, "table tbody tr{collapse} td a": 0, + "table tbody tr{collapse} td a{visible}": 0, "table tbody tr{collapse} td{visible}": -1, "table tbody tr{collapse} td{visible} a": 0, - "table tbody tr{collapse} td a{visible}": 0, "{none} > a": 0, "{none} > a{inline}": 0, "a{none}": 0, "div{no-dimension}": 0, "a{flexbox}": 0, "a{flexbox} > span": -1, - "[tabindex=\"-1\"]{flexbox}": -1, - "[tabindex=\"-1\"]{flexbox} > span1": -1, - "[tabindex=\"-1\"]{flexbox} > span2": -1, + "[tabindex=-1]{flexbox}": -1, + "[tabindex=-1]{flexbox} > span1": -1, + "[tabindex=-1]{flexbox} > span2": -1, + "div{flexbox}": -1, + "div{flexbox} span{order:2}": -1, + "div{flexbox} span{order:2} input": 0, + "div{flexbox} span{order:1}": -1, + "div{flexbox} span{order:1} input": 0, + "span{flexbox}": -1, "span{user-modify}": 0, "span{user-modify}[tabindex=-1]": -1, "canvas": -1, @@ -612,10 +1053,122 @@ "canvas > a": 0, "canvas > a[tabindex=-1]": -1, "canvas > [tabindex=0]": 0, - "canvas > [tabindex=-1]": -1 + "canvas > [tabindex=-1]": -1, + "iframe -> body": -1, + "iframe[tabindex=-1] -> body": -1, + "iframe{focusable} -> body": -1, + "iframe{focusable} -> input": 0, + "iframe{focusable} -> input[tabindex=1]": 1, + "iframe{focusable}[tabindex=-1] -> body": -1, + "iframe{focusable}[tabindex=-1] -> input": 0, + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]": 1, + "iframe[src=svg] -> file:svg a[xlink|href]": 0, + "iframe[src=svg] -> file:svg a[xlink|href] text": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "iframe[src=svg] -> file:svg a[focusable=false]": 0, + "iframe[src=svg] -> file:svg svg a[focusable=false]": -1, + "iframe[src=svg] -> file:svg svg text[focusable=true]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg] -> file:svg a[xlink|href]": 0, + "embed[type=svg] -> file:svg a[xlink|href] text": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg] -> file:svg a[focusable=false]": 0, + "embed[type=svg] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]": 0, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]": 0, + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]": -1, + "object[src=svg] -> file:svg a[xlink|href]": 0, + "object[src=svg] -> file:svg a[xlink|href] text": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg] -> file:svg a[focusable=false]": 0, + "object[src=svg] -> file:svg svg a[focusable=false]": -1, + "object[src=svg] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]": 0, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]": 0, + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href]": 0, + "object[src=svg][height=0] -> file:svg a[xlink|href] text": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][height=0] -> file:svg a[focusable=false]": 0, + "object[src=svg][height=0] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][height=0] -> file:svg svg text[focusable=true]": -1, + "shadow-host input[tabindex=0]": 0, + "shadow-host inner-host": -1, + "shadow-host input[tabindex=-1]": -1, + "shadow-host input[tabindex=2]": 2, + "shadow-host inner-host input[tabindex=-1]": -1, + "shadow-host inner-host input[tabindex=0]": 0, + "shadow-host inner-host input[tabindex=1]": 1, + "shadow-host[tabindex=-1] input[tabindex=0]": 0, + "shadow-host[tabindex=-1] inner-host": -1, + "shadow-host[tabindex=-1] input[tabindex=-1]": -1, + "shadow-host[tabindex=-1] input[tabindex=2]": 2, + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]": -1, + "shadow-host[tabindex=-1] inner-host input[tabindex=0]": 0, + "shadow-host[tabindex=-1] inner-host input[tabindex=1]": 1, + "shadow-host[tabindex=0] input[tabindex=0]": 0, + "shadow-host[tabindex=0] inner-host": -1, + "shadow-host[tabindex=0] input[tabindex=-1]": -1, + "shadow-host[tabindex=0] input[tabindex=2]": 2, + "shadow-host[tabindex=0] inner-host input[tabindex=-1]": -1, + "shadow-host[tabindex=0] inner-host input[tabindex=0]": 0, + "shadow-host[tabindex=0] inner-host input[tabindex=1]": 1 }, "ally": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -636,17 +1189,29 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1]", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -655,6 +1220,28 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=2]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -667,16 +1254,19 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg a[xlink|href]", "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -705,15 +1295,16 @@ "div[tabindex=-1]:empty", "span[tabindex=0]:empty", "span[tabindex=-1]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", @@ -723,6 +1314,8 @@ "canvas > [tabindex=-1]" ], "focusableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -743,17 +1336,29 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1]", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -762,6 +1367,28 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=2]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -774,16 +1401,19 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg a[xlink|href]", "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -812,15 +1442,16 @@ "div[tabindex=-1]:empty", "span[tabindex=0]:empty", "span[tabindex=-1]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "span{user-modify}[tabindex=-1]", "canvas > input", @@ -831,6 +1462,8 @@ "canvas > [tabindex=-1]" ], "tabbable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -841,18 +1474,42 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=2]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -865,6 +1522,7 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg a[focusable=false]", "svg rect[tabindex=0]{viewbox}", @@ -883,19 +1541,22 @@ "[tabindex=3x]", "div[tabindex=0]:empty", "span[tabindex=0]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" ], "tabbableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -906,18 +1567,42 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=2]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -930,6 +1615,7 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg a[focusable=false]", "svg rect[tabindex=0]{viewbox}", @@ -948,14 +1634,15 @@ "[tabindex=3x]", "div[tabindex=0]:empty", "span[tabindex=0]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "canvas > input", "canvas > a", @@ -963,7 +1650,10 @@ ], "onlyTabbable": [], "tabOrder": [ + "input[tabindex=1]", + "svg a[xlink|href][tabindex=1]", "[tabindex=1]", + "input[tabindex=1]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -978,18 +1668,42 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host input[tabindex=2]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -1015,14 +1729,15 @@ "input[tabindex=hello]", "div[tabindex=0]:empty", "span[tabindex=0]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" @@ -1030,6 +1745,8 @@ }, "jquery": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -1050,25 +1767,45 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1]", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", + "fieldset[disabled] input", + "fieldset[disabled][tabindex=0]", + "fieldset[disabled][tabindex=0] input", + "fieldset[disabled][tabindex=-1]", + "fieldset[disabled][tabindex=-1] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", "a > img[ismap][tabindex=-1]", "iframe[tabindex=-1]", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls][tabindex=-1]", "video[controls][tabindex=-1]", "embed[tabindex=-1]", @@ -1082,10 +1819,12 @@ "details summary[tabindex=-1]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "svg[tabindex=-1]", @@ -1097,23 +1836,23 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=3 ]", "div[tabindex=0]:empty", "div[tabindex=-1]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset[tabindex=-1][disabled]", - "fieldset input", - "fieldset[disabled] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]" ], "tabOrder": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -1124,20 +1863,38 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", + "fieldset[disabled] input", + "fieldset[disabled][tabindex=0]", + "fieldset[disabled][tabindex=0] input", + "fieldset[disabled][tabindex=-1] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", + "shadow-host[tabindex=0]", "embed[type=svg][tabindex=0]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "[tabindex=0]", @@ -1145,17 +1902,16 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=3 ]", "div[tabindex=0]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset input", - "fieldset[disabled] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", - "a{flexbox}" + "table tbody tr{collapse} td{visible} a", + "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input" ] } } \ No newline at end of file diff --git a/tests/focusable/data/chrome-stable.json b/tests/focusable/data/chrome-stable.json index 9d454c6a..d9e54159 100644 --- a/tests/focusable/data/chrome-stable.json +++ b/tests/focusable/data/chrome-stable.json @@ -1,13 +1,13 @@ { "platform": { - "description": "Chrome 47.0.2526.73 on OS X 10.10.5", + "description": "Chrome 47.0.2526.106 on OS X 10.10.5", "layout": "Blink", "manufacturer": null, "name": "Chrome", "prerelease": null, "product": null, - "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36", - "version": "47.0.2526.73", + "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36", + "version": "47.0.2526.106", "os": { "architecture": 32, "family": "OS X", @@ -16,6 +16,8 @@ }, "focusable": [ "body", + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -34,16 +36,39 @@ "textarea[tabindex=-1]", "button[type=button]", "button[type=button][tabindex=-1]", + "label:has(input) input", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1]", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input[tabindex=-1]", + "fieldset input", + "fieldset:has(input[tabindex=-1]) input[tabindex=-1]", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", + "fieldset[disabled][tabindex=0]", + "fieldset[disabled][tabindex=-1]", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -52,6 +77,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -75,10 +104,12 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg a[xlink|href]", "svg rect[onfocus]", @@ -86,6 +117,7 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -114,17 +146,20 @@ "div[tabindex=-1]:empty", "span[tabindex=0]:empty", "span[tabindex=-1]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset[tabindex=-1][disabled]", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=-1]", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=-1]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "span{user-modify}", "span{user-modify}[tabindex=-1]", "canvas > input", @@ -132,9 +167,136 @@ "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg a[focusable=false]", + "shadow-host input[tabindex=0]", + "shadow-host input[tabindex=0]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=2]", + "shadow-host input[tabindex=2]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]" ], "focusEvents": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -156,16 +318,39 @@ "input[type=text]", "input[type=text][tabindex=-1]", "input[type=text]", + "label:has(input) input", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1]", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input[tabindex=-1]", + "fieldset input", + "fieldset:has(input[tabindex=-1]) input[tabindex=-1]", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", + "fieldset[disabled][tabindex=0]", + "fieldset[disabled][tabindex=-1]", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -174,6 +359,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -197,10 +386,12 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg", "svg a[xlink|href]", @@ -212,20 +403,22 @@ "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[tabindex=-1] a[xlink|href] text", - "svg text", - "svg rect", + "svg[tabindex=-1] text", + "svg[tabindex=-1] rect", "svg[focusable=false]", "svg[focusable=false] a[xlink|href]", "svg[focusable=false] a[xlink|href] text", - "svg text", - "svg rect", + "svg[focusable=false] text", + "svg[focusable=false] rect", "svg:has(a[tabindex=0])", "svg a[xlink|href][tabindex=0]", "svg a[xlink|href][tabindex=0] text", - "svg text", + "svg a[xlink|href][tabindex=1]", + "svg a[xlink|href][tabindex=1] text", + "svg:has(a[tabindex=0]) text", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", - "svg rect", + "svg:has(a[tabindex=0]) rect", "svg a[focusable=false]", "rect", "svg{viewbox}", @@ -235,8 +428,8 @@ "svg:has(a[tabindex=-1])", "svg a[xlink|href][tabindex=-1]", "svg a[xlink|href][tabindex=-1] text", - "svg text", - "svg rect", + "svg:has(a[tabindex=-1]) text", + "svg:has(a[tabindex=-1]) rect", "svg{tiny}", "svg{tiny} rect", "svg{tiny} rect[tabindex=0]", @@ -266,17 +459,20 @@ "div[tabindex=-1]:empty", "span[tabindex=0]:empty", "span[tabindex=-1]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset[tabindex=-1][disabled]", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=-1]", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=-1]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "span{user-modify}", "span{user-modify}[tabindex=-1]", "canvas > input", @@ -284,17 +480,216 @@ "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg text[focusable=true]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg svg a[focusable=false]", + "embed[type=svg] -> file:svg svg text[focusable=true]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg svg a[focusable=false]", + "object[src=svg] -> file:svg svg text[focusable=true]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][height=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg text[focusable=true]", + "shadow-host input[tabindex=0]", + "shadow-host", + "shadow-host input[tabindex=-1]", + "shadow-host", + "shadow-host input[tabindex=2]", + "shadow-host", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host", + "shadow-host", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host", + "shadow-host", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host", + "shadow-host", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]" ], "focusRedirection": [ - "label[for=\"label-target\"] --- input[type=text]", - "label[for=\"label-target-focusable\"] --- input[type=text][tabindex=-1]", - "label[for=\"label-target\"][tabindex=-1] --- input[type=text]", - "fieldset legend --- fieldset input" + "label[for=label-target] --- input[type=text]", + "label[for=label-target-focusable] --- input[type=text][tabindex=-1]", + "label[for=label-target][tabindex=-1] --- input[type=text]", + "label:has(input) --- label:has(input) input", + "fieldset legend --- fieldset input[tabindex=-1]", + "fieldset:has(input[tabindex=-1]) legend --- fieldset:has(input[tabindex=-1]) input[tabindex=-1]", + "fieldset:has(textarea) legend --- fieldset:has(textarea) textarea", + "fieldset:has(select) legend --- fieldset:has(select) select", + "fieldset:has(button) legend --- fieldset:has(button) button" + ], + "focusEncapsulation": [ + "iframe{focusable} -> input --- iframe{focusable}", + "iframe{focusable} -> input[tabindex=1] --- iframe{focusable}", + "iframe{focusable}[tabindex=-1] -> input --- iframe{focusable}[tabindex=-1]", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1] --- iframe{focusable}[tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href] --- iframe[src=svg]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] --- iframe[src=svg]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] --- iframe[src=svg]", + "iframe[src=svg] -> file:svg a[focusable=false] --- iframe[src=svg]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] --- iframe[src=svg][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] --- iframe[src=svg][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] --- iframe[src=svg][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false] --- iframe[src=svg][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href] --- embed[type=svg]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] --- embed[type=svg]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] --- embed[type=svg]", + "embed[type=svg] -> file:svg a[focusable=false] --- embed[type=svg]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] --- embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] --- embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] --- embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false] --- embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] --- embed[type=svg][tabindex=0]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] --- embed[type=svg][tabindex=0]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] --- embed[type=svg][tabindex=0]", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false] --- embed[type=svg][tabindex=0]", + "object[src=svg] -> file:svg a[xlink|href] --- object[src=svg]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] --- object[src=svg]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] --- object[src=svg]", + "object[src=svg] -> file:svg a[focusable=false] --- object[src=svg]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] --- object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] --- object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] --- object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false] --- object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] --- object[src=svg][tabindex=0]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] --- object[src=svg][tabindex=0]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] --- object[src=svg][tabindex=0]", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false] --- object[src=svg][tabindex=0]", + "object[src=svg][height=0] -> file:svg a[xlink|href] --- object[src=svg][height=0]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] --- object[src=svg][height=0]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] --- object[src=svg][height=0]", + "object[src=svg][height=0] -> file:svg a[focusable=false] --- object[src=svg][height=0]", + "shadow-host input[tabindex=0] --- shadow-host", + "shadow-host input[tabindex=-1] --- shadow-host", + "shadow-host input[tabindex=2] --- shadow-host", + "shadow-host inner-host input[tabindex=-1] --- shadow-host", + "shadow-host inner-host input[tabindex=0] --- shadow-host", + "shadow-host inner-host input[tabindex=1] --- shadow-host", + "shadow-host[tabindex=-1] input[tabindex=0] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=-1] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=0] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=-1] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=2] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1] --- shadow-host[tabindex=0]" ], "noFocusMethod": [], "tabOrder": [ + "input[tabindex=1]", + "fieldset{no-tabbable} a[tabindex=1]", + "svg a[xlink|href][tabindex=1]", "[tabindex=1]", + "input[tabindex=1]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -308,19 +703,59 @@ "select", "textarea", "button[type=button]", + "label:has(input) input", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", + "fieldset[disabled][tabindex=0]", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", + "iframe{focusable} -> input[tabindex=1]", "iframe{focusable}", "iframe{focusable} -> input", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "shadow-host input[tabindex=2]", + "shadow-host", + "shadow-host input[tabindex=0]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -348,15 +783,17 @@ "input[tabindex=hello]", "div[tabindex=0]:empty", "span[tabindex=0]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "span{user-modify}", "canvas > input", "canvas > a", @@ -365,6 +802,7 @@ "tabIndex": { "html": -1, "body": -1, + "input[tabindex=1]": 1, "input[type=text]": 0, "input[type=text][tabindex=-1]": -1, "input[type=password]": 0, @@ -385,38 +823,74 @@ "textarea[tabindex=-1]": -1, "button[type=button]": 0, "button[type=button][tabindex=-1]": -1, - "label": -1, - "label[tabindex=-1]": -1, - "label[tabindex=0]": 0, - "label[for=\"label-target\"]": -1, - "label[for=\"label-target-focusable\"]": -1, - "label[for=\"label-target\"][tabindex=-1]": -1, "input[type=text][disabled]": 0, "input[type=password][disabled]": 0, "input[type=checkbox][disabled]": 0, "input[type=radio][disabled]": 0, "input[type=submit][disabled]": 0, + "input[type=reset][disabled]": 0, "input[type=hidden][disabled]": 0, "select[disabled]": 0, "textarea[disabled]": 0, "button[type=button][disabled]": 0, + "label": -1, + "label[tabindex=-1]": -1, + "label[tabindex=0]": 0, + "label[for=label-target]": -1, + "label[for=label-target-focusable]": -1, + "label[for=label-target][tabindex=-1]": -1, + "label:has(input)": -1, + "label:has(input) input": 0, + "label[disabled]": -1, + "form": -1, + "form input": 0, + "form[tabindex=-1]": -1, + "form[tabindex=-1] input": 0, + "form[tabindex=0]": 0, + "form[tabindex=0] input": 0, + "form[disabled]": -1, + "form[disabled] input": 0, + "form[disabled][tabindex=-1]": -1, + "form[disabled][tabindex=-1] input": 0, + "form[disabled][tabindex=0]": 0, + "form[disabled][tabindex=0] input": 0, + "fieldset": 0, + "fieldset legend": -1, + "fieldset input[tabindex=-1]": -1, + "fieldset input": 0, + "fieldset:has(input[tabindex=-1]) legend": -1, + "fieldset:has(input[tabindex=-1]) input[tabindex=-1]": -1, + "fieldset{no-tabbable} a[tabindex=1]": 1, + "fieldset{no-tabbable} a": 0, + "fieldset:has(textarea) legend": -1, + "fieldset:has(textarea) textarea": 0, + "fieldset:has(select) legend": -1, + "fieldset:has(select) select": 0, + "fieldset:has(button) legend": -1, + "fieldset:has(button) button": 0, + "fieldset:has(a) legend": -1, + "fieldset:has(a) a": 0, + "fieldset:empty": 0, + "fieldset[disabled]": 0, + "fieldset[disabled] input": 0, + "fieldset[disabled][tabindex=0]": 0, + "fieldset[disabled][tabindex=0] input": 0, + "fieldset[disabled][tabindex=-1]": -1, + "fieldset[disabled][tabindex=-1] input": 0, "a[name]": 0, "a[href]": 0, - "a[href=\"\"]": 0, + "a[href=]": 0, "a[href][tabindex=-1]": -1, "span[href]": -1, "link[itemprop][href]": -1, "area[href].upper": 0, "area": 0, "area[href].lower": 0, - "map.invalid-image area[href].upper": 0, - "map.invalid-image area": 0, - "map.invalid-image area[href].lower": 0, "img[usemap].first": -1, - "img[usemap].invalid": -1, - "img[usemap=\"void\"]": -1, - "img": -1, + "firefox-bug-1116126": 0, "img[usemap].second": -1, + "img[usemap=void]": -1, + "img": -1, "area[href][tabindex=-1].upper": -1, "area[tabindex=-1]": -1, "area[href][tabindex=-1].lower": -1, @@ -425,6 +899,10 @@ "img[tabindex=-1] area": 0, "img[tabindex=-1] area[href].lower": 0, "img[usemap][tabindex=-1]": -1, + "map.invalid-image area[href].upper": 0, + "map.invalid-image area": 0, + "map.invalid-image area[href].lower": 0, + "img[usemap].invalid": -1, "a:has([ismap])": 0, "a > img[ismap]": -1, "a[tabindex=-1]:has([ismap])": -1, @@ -435,6 +913,11 @@ "iframe[tabindex=-1]": -1, "iframe{focusable}": 0, "iframe{focusable}[tabindex=-1]": -1, + "iframe[src=svg]": 0, + "iframe[src=svg][tabindex=-1]": -1, + "shadow-host": -1, + "shadow-host[tabindex=-1]": -1, + "shadow-host[tabindex=0]": 0, "audio": -1, "audio[controls]": 0, "audio[controls][tabindex=-1]": -1, @@ -489,15 +972,20 @@ "details a[href]": 0, "details[tabindex=-1]": -1, "details[tabindex=-1] summary": 0, + "details[tabindex=-1] a[href]": 0, + "details:has(summary[tabindex=-1])": -1, "details summary[tabindex=-1]": -1, + "details:has(summary[tabindex=-1]) a[href]": 0, "details[open]": -1, "details[open] summary": 0, "details[open] a[href]": 0, - "object[src=swf]": -1, + "object[src=swf]": 0, + "object[src=swf][tabindex=0]": 0, "object[src=swf][tabindex=-1]": -1, "object[src=swf][height=0]": 0, "object[src=svg]": 0, "object[src=svg][tabindex=-1]": -1, + "object[src=svg][tabindex=0]": 0, "object[src=svg][height=0]": 0, "map.object area[href].upper": 0, "map.object area": 0, @@ -513,14 +1001,22 @@ "svg[tabindex=-1]": -1, "svg[tabindex=-1] a[xlink|href]": 0, "svg[tabindex=-1] a[xlink|href] text": -1, + "svg[tabindex=-1] text": -1, + "svg[tabindex=-1] rect": -1, "svg[focusable=false]": -1, "svg[focusable=false] a[xlink|href]": 0, "svg[focusable=false] a[xlink|href] text": -1, + "svg[focusable=false] text": -1, + "svg[focusable=false] rect": -1, "svg:has(a[tabindex=0])": -1, "svg a[xlink|href][tabindex=0]": 0, "svg a[xlink|href][tabindex=0] text": -1, + "svg a[xlink|href][tabindex=1]": 1, + "svg a[xlink|href][tabindex=1] text": -1, + "svg:has(a[tabindex=0]) text": -1, "svg rect[tabindex=0]": 0, "svg rect[tabindex=-1]": -1, + "svg:has(a[tabindex=0]) rect": -1, "svg a[focusable=false]": 0, "svg{viewbox}": -1, "svg rect[tabindex=0]{viewbox}": 0, @@ -529,6 +1025,8 @@ "svg:has(a[tabindex=-1])": -1, "svg a[xlink|href][tabindex=-1]": -1, "svg a[xlink|href][tabindex=-1] text": -1, + "svg:has(a[tabindex=-1]) text": -1, + "svg:has(a[tabindex=-1]) rect": -1, "svg{tiny}": -1, "svg{tiny} rect": -1, "svg{tiny} rect[tabindex=0]": 0, @@ -549,7 +1047,7 @@ "[tabindex=+2]": 2, "[tabindex= +2]": 2, "input[tabindex=hello]": 0, - "[tabindex=\"\"]": -1, + "[tabindex=]": -1, "[tabindex=hello]": -1, "[tabindex=3 ]": 3, "[tabindex=3x]": 3, @@ -557,14 +1055,6 @@ "div[tabindex=-1]:empty": -1, "span[tabindex=0]:empty": 0, "span[tabindex=-1]:empty": -1, - "fieldset[tabindex=0][disabled]": 0, - "fieldset[tabindex=-1][disabled]": -1, - "fieldset": 0, - "fieldset legend": -1, - "fieldset input": 0, - "fieldset:empty": 0, - "fieldset[disabled]": 0, - "fieldset[disabled] input": 0, "[hidden]": -1, "[hidden] input": 0, "[hidden][tabindex=-1]": -1, @@ -592,18 +1082,29 @@ "table tbody tr{collapse}": -1, "table tbody tr{collapse} td": -1, "table tbody tr{collapse} td a": 0, + "table tbody tr{collapse} td a{visible}": 0, "table tbody tr{collapse} td{visible}": -1, "table tbody tr{collapse} td{visible} a": 0, - "table tbody tr{collapse} td a{visible}": 0, "{none} > a": 0, "{none} > a{inline}": 0, "a{none}": 0, "div{no-dimension}": 0, "a{flexbox}": 0, "a{flexbox} > span": -1, - "[tabindex=\"-1\"]{flexbox}": -1, - "[tabindex=\"-1\"]{flexbox} > span1": -1, - "[tabindex=\"-1\"]{flexbox} > span2": -1, + "[tabindex=-1]{flexbox}": -1, + "[tabindex=-1]{flexbox} > span": -1, + "[tabindex=-1]{flexbox} > span[tabindex=-1]": -1, + "[tabindex=-1]{flexbox} > span[tabindex=0]": 0, + "span{flexbox}": -1, + "span{flexbox} > span": -1, + "span{flexbox} > span[tabindex=-1]": -1, + "span{flexbox} > span[tabindex=0]": 0, + "div{flexbox}": -1, + "div{flexbox} > span{order:2}": -1, + "div{flexbox} > span{order:2} > input": 0, + "div{flexbox} > span{order:1}": -1, + "div{flexbox} > span{order:1} > input": 0, + "span{flexbox}:empty": -1, "span{user-modify}": 0, "span{user-modify}[tabindex=-1]": -1, "canvas": -1, @@ -612,10 +1113,122 @@ "canvas > a": 0, "canvas > a[tabindex=-1]": -1, "canvas > [tabindex=0]": 0, - "canvas > [tabindex=-1]": -1 + "canvas > [tabindex=-1]": -1, + "iframe -> body": -1, + "iframe[tabindex=-1] -> body": -1, + "iframe{focusable} -> body": -1, + "iframe{focusable} -> input": 0, + "iframe{focusable} -> input[tabindex=1]": 1, + "iframe{focusable}[tabindex=-1] -> body": -1, + "iframe{focusable}[tabindex=-1] -> input": 0, + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]": 1, + "iframe[src=svg] -> file:svg a[xlink|href]": 0, + "iframe[src=svg] -> file:svg a[xlink|href] text": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "iframe[src=svg] -> file:svg a[focusable=false]": 0, + "iframe[src=svg] -> file:svg svg a[focusable=false]": -1, + "iframe[src=svg] -> file:svg svg text[focusable=true]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg] -> file:svg a[xlink|href]": 0, + "embed[type=svg] -> file:svg a[xlink|href] text": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg] -> file:svg a[focusable=false]": 0, + "embed[type=svg] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]": 0, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]": 0, + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]": -1, + "object[src=svg] -> file:svg a[xlink|href]": 0, + "object[src=svg] -> file:svg a[xlink|href] text": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg] -> file:svg a[focusable=false]": 0, + "object[src=svg] -> file:svg svg a[focusable=false]": -1, + "object[src=svg] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]": 0, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]": 0, + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href]": 0, + "object[src=svg][height=0] -> file:svg a[xlink|href] text": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][height=0] -> file:svg a[focusable=false]": 0, + "object[src=svg][height=0] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][height=0] -> file:svg svg text[focusable=true]": -1, + "shadow-host input[tabindex=0]": 0, + "shadow-host inner-host": -1, + "shadow-host input[tabindex=-1]": -1, + "shadow-host input[tabindex=2]": 2, + "shadow-host inner-host input[tabindex=-1]": -1, + "shadow-host inner-host input[tabindex=0]": 0, + "shadow-host inner-host input[tabindex=1]": 1, + "shadow-host[tabindex=-1] input[tabindex=0]": 0, + "shadow-host[tabindex=-1] inner-host": -1, + "shadow-host[tabindex=-1] input[tabindex=-1]": -1, + "shadow-host[tabindex=-1] input[tabindex=2]": 2, + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]": -1, + "shadow-host[tabindex=-1] inner-host input[tabindex=0]": 0, + "shadow-host[tabindex=-1] inner-host input[tabindex=1]": 1, + "shadow-host[tabindex=0] input[tabindex=0]": 0, + "shadow-host[tabindex=0] inner-host": -1, + "shadow-host[tabindex=0] input[tabindex=-1]": -1, + "shadow-host[tabindex=0] input[tabindex=2]": 2, + "shadow-host[tabindex=0] inner-host input[tabindex=-1]": -1, + "shadow-host[tabindex=0] inner-host input[tabindex=0]": 0, + "shadow-host[tabindex=0] inner-host input[tabindex=1]": 1 }, "ally": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -634,16 +1247,39 @@ "textarea[tabindex=-1]", "button[type=button]", "button[type=button][tabindex=-1]", + "label:has(input) input", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1]", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input[tabindex=-1]", + "fieldset input", + "fieldset:has(input[tabindex=-1]) input[tabindex=-1]", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", + "fieldset[disabled][tabindex=0]", + "fieldset[disabled][tabindex=-1]", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -652,6 +1288,28 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=2]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -664,16 +1322,19 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg a[xlink|href]", "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -702,17 +1363,20 @@ "div[tabindex=-1]:empty", "span[tabindex=0]:empty", "span[tabindex=-1]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset[tabindex=-1][disabled]", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=-1]", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=-1]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", @@ -722,6 +1386,8 @@ "canvas > [tabindex=-1]" ], "focusableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -740,16 +1406,39 @@ "textarea[tabindex=-1]", "button[type=button]", "button[type=button][tabindex=-1]", + "label:has(input) input", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1]", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input[tabindex=-1]", + "fieldset input", + "fieldset:has(input[tabindex=-1]) input[tabindex=-1]", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", + "fieldset[disabled][tabindex=0]", + "fieldset[disabled][tabindex=-1]", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -758,6 +1447,28 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=2]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -770,16 +1481,19 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg a[xlink|href]", "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -808,17 +1522,20 @@ "div[tabindex=-1]:empty", "span[tabindex=0]:empty", "span[tabindex=-1]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset[tabindex=-1][disabled]", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=-1]", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=-1]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "span{user-modify}", "span{user-modify}[tabindex=-1]", "canvas > input", @@ -829,6 +1546,8 @@ "canvas > [tabindex=-1]" ], "tabbable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -838,18 +1557,50 @@ "select", "textarea", "button[type=button]", + "label:has(input) input", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", + "fieldset[disabled][tabindex=0]", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=2]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -862,6 +1613,7 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg a[focusable=false]", "svg rect[tabindex=0]{viewbox}", @@ -880,20 +1632,24 @@ "[tabindex=3x]", "div[tabindex=0]:empty", "span[tabindex=0]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" ], "tabbableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -903,18 +1659,50 @@ "select", "textarea", "button[type=button]", + "label:has(input) input", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", + "fieldset[disabled][tabindex=0]", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=2]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -927,6 +1715,7 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg a[focusable=false]", "svg rect[tabindex=0]{viewbox}", @@ -945,15 +1734,17 @@ "[tabindex=3x]", "div[tabindex=0]:empty", "span[tabindex=0]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "span{user-modify}", "canvas > input", "canvas > a", @@ -961,7 +1752,11 @@ ], "onlyTabbable": [], "tabOrder": [ + "input[tabindex=1]", + "fieldset{no-tabbable} a[tabindex=1]", + "svg a[xlink|href][tabindex=1]", "[tabindex=1]", + "input[tabindex=1]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -975,18 +1770,49 @@ "select", "textarea", "button[type=button]", + "label:has(input) input", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", + "fieldset[disabled][tabindex=0]", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host input[tabindex=2]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -1012,22 +1838,37 @@ "input[tabindex=hello]", "div[tabindex=0]:empty", "span[tabindex=0]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" - ] + ], + "focusRedirection": { + "label[for=label-target]": "input[type=text]", + "label[for=label-target-focusable]": "input[type=text][tabindex=-1]", + "label[for=label-target][tabindex=-1]": "input[type=text]", + "label:has(input)": "label:has(input) input", + "fieldset legend": "fieldset input[tabindex=-1]", + "fieldset:has(input[tabindex=-1]) legend": "fieldset:has(input[tabindex=-1]) input[tabindex=-1]", + "fieldset:has(textarea) legend": "fieldset:has(textarea) textarea", + "fieldset:has(select) legend": "fieldset:has(select) select", + "fieldset:has(button) legend": "fieldset:has(button) button" + } }, "jquery": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -1048,25 +1889,54 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "label:has(input) input", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1]", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input[tabindex=-1]", + "fieldset input", + "fieldset:has(input[tabindex=-1]) input[tabindex=-1]", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", + "fieldset[disabled] input", + "fieldset[disabled][tabindex=0]", + "fieldset[disabled][tabindex=0] input", + "fieldset[disabled][tabindex=-1]", + "fieldset[disabled][tabindex=-1] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", "a > img[ismap][tabindex=-1]", "iframe[tabindex=-1]", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls][tabindex=-1]", "video[controls][tabindex=-1]", "embed[tabindex=-1]", @@ -1080,10 +1950,12 @@ "details summary[tabindex=-1]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "svg[tabindex=-1]", @@ -1095,23 +1967,27 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=3 ]", "div[tabindex=0]:empty", "div[tabindex=-1]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset[tabindex=-1][disabled]", - "fieldset input", - "fieldset[disabled] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=-1]", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=-1]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "span{user-modify}[tabindex=-1]" ], "tabOrder": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -1122,20 +1998,45 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "label:has(input) input", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", + "fieldset[disabled] input", + "fieldset[disabled][tabindex=0]", + "fieldset[disabled][tabindex=0] input", + "fieldset[disabled][tabindex=-1] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", + "shadow-host[tabindex=0]", "embed[type=svg][tabindex=0]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "[tabindex=0]", @@ -1143,17 +2044,18 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=3 ]", "div[tabindex=0]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset input", - "fieldset[disabled] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", - "a{flexbox}" + "table tbody tr{collapse} td{visible} a", + "a{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input" ] } } \ No newline at end of file diff --git a/tests/focusable/data/firefox-nightly.json b/tests/focusable/data/firefox-nightly.json index e086a751..144f0aa3 100644 --- a/tests/focusable/data/firefox-nightly.json +++ b/tests/focusable/data/firefox-nightly.json @@ -1,13 +1,13 @@ { "platform": { - "description": "Firefox 45.0 on OS X 10.10", + "description": "Firefox 46.0 on OS X 10.10", "layout": "Gecko", "manufacturer": null, "name": "Firefox", "prerelease": null, "product": null, - "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:45.0) Gecko/20100101 Firefox/45.0", - "version": "45.0", + "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:46.0) Gecko/20100101 Firefox/46.0", + "version": "46.0", "os": { "architecture": 32, "family": "OS X", @@ -17,6 +17,8 @@ "focusable": [ "html", "body", + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -35,18 +37,14 @@ "textarea[tabindex=-1]", "button[type=button]", "button[type=button][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", - "area[href].upper", - "area", - "area[href].lower", - "area[href][tabindex=-1].upper", - "area[tabindex=-1]", - "area[href][tabindex=-1].lower", - "img[tabindex=-1] area[href].upper", - "img[tabindex=-1] area", - "img[tabindex=-1] area[href].lower", + "firefox-bug-1116126", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -55,6 +53,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video", @@ -87,15 +89,17 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -107,7 +111,7 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=hello]", "[tabindex=3 ]", "[tabindex=3x]", @@ -119,20 +123,77 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "shadow-host input[tabindex=0]", + "shadow-host input[tabindex=0]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=2]", + "shadow-host input[tabindex=2]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]" ], "focusEvents": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -154,22 +215,20 @@ "input[type=text]", "input[type=text][tabindex=-1]", "input[type=text]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", - "area[href].upper", - "area", - "area[href].lower", - "area[href][tabindex=-1].upper", - "area[tabindex=-1]", - "area[href][tabindex=-1].lower", - "img[tabindex=-1] area[href].upper", - "img[tabindex=-1] area", - "img[tabindex=-1] area[href].lower", + "firefox-bug-1116126", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", "a > img[ismap][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video", @@ -199,11 +258,12 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "[contenteditable]:empty", @@ -216,7 +276,7 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=hello]", "[tabindex=3 ]", "[tabindex=3x]", @@ -228,25 +288,85 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "shadow-host input[tabindex=0]", + "shadow-host", + "shadow-host input[tabindex=-1]", + "shadow-host", + "shadow-host input[tabindex=2]", + "shadow-host", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host", + "shadow-host", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host", + "shadow-host", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host", + "shadow-host", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]" ], "focusRedirection": [ - "label[for=\"label-target\"] --- input[type=text]", - "label[for=\"label-target-focusable\"] --- input[type=text][tabindex=-1]", - "label[for=\"label-target\"][tabindex=-1] --- input[type=text]", + "label[for=label-target] --- input[type=text]", + "label[for=label-target-focusable] --- input[type=text][tabindex=-1]", + "label[for=label-target][tabindex=-1] --- input[type=text]", "fieldset legend --- fieldset input" ], + "focusEncapsulation": [ + "iframe{focusable} -> input --- iframe{focusable}", + "iframe{focusable} -> input[tabindex=1] --- iframe{focusable}", + "iframe{focusable}[tabindex=-1] -> input --- iframe{focusable}[tabindex=-1]", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1] --- iframe{focusable}[tabindex=-1]" + ], "noFocusMethod": [ "svg", "svg a[xlink|href]", @@ -258,20 +378,22 @@ "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[tabindex=-1] a[xlink|href] text", - "svg text", - "svg rect", + "svg[tabindex=-1] text", + "svg[tabindex=-1] rect", "svg[focusable=false]", "svg[focusable=false] a[xlink|href]", "svg[focusable=false] a[xlink|href] text", - "svg text", - "svg rect", + "svg[focusable=false] text", + "svg[focusable=false] rect", "svg:has(a[tabindex=0])", "svg a[xlink|href][tabindex=0]", "svg a[xlink|href][tabindex=0] text", - "svg text", + "svg a[xlink|href][tabindex=1]", + "svg a[xlink|href][tabindex=1] text", + "svg:has(a[tabindex=0]) text", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", - "svg rect", + "svg:has(a[tabindex=0]) rect", "svg a[focusable=false]", "rect", "svg{viewbox}", @@ -281,8 +403,8 @@ "svg:has(a[tabindex=-1])", "svg a[xlink|href][tabindex=-1]", "svg a[xlink|href][tabindex=-1] text", - "svg text", - "svg rect", + "svg:has(a[tabindex=-1]) text", + "svg:has(a[tabindex=-1]) rect", "svg{tiny}", "svg{tiny} rect", "svg{tiny} rect[tabindex=0]", @@ -295,11 +417,118 @@ "svg{tiny} rect[focusable=false][tabindex=0]", "svg{tiny}[focusable=false]", "svg{tiny}[focusable=false] a", - "rect" + "rect", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg text[focusable=true]", + "script", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "script", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg svg a[focusable=false]", + "embed[type=svg] -> file:svg svg text[focusable=true]", + "script", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "script", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg svg a[focusable=false]", + "object[src=svg] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][height=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg text[focusable=true]", + "script" ], "tabOrder": [ "html", + "input[tabindex=1]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", "[tabindex=1]", + "input[tabindex=1]", + "shadow-host input[tabindex=2]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] input[tabindex=2]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -314,8 +543,11 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area", "area[href].lower", @@ -326,14 +558,44 @@ "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe{focusable} -> input[tabindex=1]", "iframe{focusable} -> input", + "iframe[src=svg]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "shadow-host input[tabindex=0]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", "audio[controls]", "video", "video[controls]", "video[controls][tabindex=-1]", + "embed", + "embed[tabindex=-1]", + "embed[type=mp4]", + "embed[type=mp4][tabindex=-1]", "embed[type=ogv]", "embed[type=ogv][tabindex=-1]", "embed[type=svg][tabindex=0]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", "keygen", "div{scroll-container-horizontal}", "div{scroll-container-horizontal-scroll-x}", @@ -349,13 +611,30 @@ "div-span{scroll-container-overflow-scroll}", "div-section{scroll-container-overflow-scroll}", "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf][tabindex=0]", "object[src=svg]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", "object[src=svg][height=0]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[focusable=false]", "svg a[xlink|href]", "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg a[focusable=false]", "svg a[xlink|href][tabindex=-1]", "svg{tiny} a[focusable=false]", @@ -371,10 +650,12 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:1} input", + "div{flexbox} span{order:2} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" @@ -382,6 +663,7 @@ "tabIndex": { "html": -1, "body": -1, + "input[tabindex=1]": 1, "input[type=text]": 0, "input[type=text][tabindex=-1]": -1, "input[type=password]": 0, @@ -405,35 +687,40 @@ "label": -1, "label[tabindex=-1]": -1, "label[tabindex=0]": 0, - "label[for=\"label-target\"]": -1, - "label[for=\"label-target-focusable\"]": -1, - "label[for=\"label-target\"][tabindex=-1]": -1, + "label[for=label-target]": -1, + "label[for=label-target-focusable]": -1, + "label[for=label-target][tabindex=-1]": -1, + "form": -1, + "form input": 0, + "form[tabindex=-1]": -1, + "form[tabindex=-1] input": 0, + "form[disabled]": -1, + "form[disabled] input": 0, "input[type=text][disabled]": 0, "input[type=password][disabled]": 0, "input[type=checkbox][disabled]": 0, "input[type=radio][disabled]": 0, "input[type=submit][disabled]": 0, + "input[type=reset][disabled]": 0, "input[type=hidden][disabled]": 0, "select[disabled]": 0, "textarea[disabled]": 0, "button[type=button][disabled]": 0, + "label[disabled]": -1, "a[name]": 0, "a[href]": 0, - "a[href=\"\"]": 0, + "a[href=]": 0, "a[href][tabindex=-1]": -1, "span[href]": -1, "link[itemprop][href]": -1, "area[href].upper": 0, "area": 0, "area[href].lower": 0, - "map.invalid-image area[href].upper": 0, - "map.invalid-image area": 0, - "map.invalid-image area[href].lower": 0, "img[usemap].first": -1, - "img[usemap].invalid": -1, - "img[usemap=\"void\"]": -1, - "img": -1, + "firefox-bug-1116126": 0, "img[usemap].second": -1, + "img[usemap=void]": -1, + "img": -1, "area[href][tabindex=-1].upper": -1, "area[tabindex=-1]": -1, "area[href][tabindex=-1].lower": -1, @@ -442,6 +729,10 @@ "img[tabindex=-1] area": 0, "img[tabindex=-1] area[href].lower": 0, "img[usemap][tabindex=-1]": -1, + "map.invalid-image area[href].upper": 0, + "map.invalid-image area": 0, + "map.invalid-image area[href].lower": 0, + "img[usemap].invalid": -1, "a:has([ismap])": 0, "a > img[ismap]": -1, "a[tabindex=-1]:has([ismap])": -1, @@ -452,6 +743,11 @@ "iframe[tabindex=-1]": -1, "iframe{focusable}": 0, "iframe{focusable}[tabindex=-1]": -1, + "iframe[src=svg]": 0, + "iframe[src=svg][tabindex=-1]": -1, + "shadow-host": -1, + "shadow-host[tabindex=-1]": -1, + "shadow-host[tabindex=0]": 0, "audio": 0, "audio[controls]": 0, "audio[controls][tabindex=-1]": -1, @@ -506,15 +802,20 @@ "details a[href]": 0, "details[tabindex=-1]": -1, "details[tabindex=-1] summary": -1, + "details[tabindex=-1] a[href]": 0, + "details:has(summary[tabindex=-1])": -1, "details summary[tabindex=-1]": -1, + "details:has(summary[tabindex=-1]) a[href]": 0, "details[open]": -1, "details[open] summary": -1, "details[open] a[href]": 0, "object[src=swf]": -1, + "object[src=swf][tabindex=0]": 0, "object[src=swf][tabindex=-1]": -1, "object[src=swf][height=0]": -1, "object[src=svg]": 0, "object[src=svg][tabindex=-1]": -1, + "object[src=svg][tabindex=0]": 0, "object[src=svg][height=0]": 0, "map.object area[href].upper": 0, "map.object area": 0, @@ -530,7 +831,7 @@ "[tabindex=+2]": 2, "[tabindex= +2]": 2, "input[tabindex=hello]": 0, - "[tabindex=\"\"]": -1, + "[tabindex=]": -1, "[tabindex=hello]": -1, "[tabindex=3 ]": 3, "[tabindex=3x]": 3, @@ -573,18 +874,24 @@ "table tbody tr{collapse}": -1, "table tbody tr{collapse} td": -1, "table tbody tr{collapse} td a": 0, + "table tbody tr{collapse} td a{visible}": 0, "table tbody tr{collapse} td{visible}": -1, "table tbody tr{collapse} td{visible} a": 0, - "table tbody tr{collapse} td a{visible}": 0, "{none} > a": 0, "{none} > a{inline}": 0, "a{none}": 0, "div{no-dimension}": 0, "a{flexbox}": 0, "a{flexbox} > span": -1, - "[tabindex=\"-1\"]{flexbox}": -1, - "[tabindex=\"-1\"]{flexbox} > span1": -1, - "[tabindex=\"-1\"]{flexbox} > span2": -1, + "[tabindex=-1]{flexbox}": -1, + "[tabindex=-1]{flexbox} > span1": -1, + "[tabindex=-1]{flexbox} > span2": -1, + "div{flexbox}": -1, + "div{flexbox} span{order:2}": -1, + "div{flexbox} span{order:2} input": 0, + "div{flexbox} span{order:1}": -1, + "div{flexbox} span{order:1} input": 0, + "span{flexbox}": -1, "span{user-modify}": -1, "span{user-modify}[tabindex=-1]": -1, "canvas": -1, @@ -593,10 +900,41 @@ "canvas > a": 0, "canvas > a[tabindex=-1]": -1, "canvas > [tabindex=0]": 0, - "canvas > [tabindex=-1]": -1 + "canvas > [tabindex=-1]": -1, + "iframe -> body": -1, + "iframe[tabindex=-1] -> body": -1, + "iframe{focusable} -> body": -1, + "iframe{focusable} -> input": 0, + "iframe{focusable} -> input[tabindex=1]": 1, + "iframe{focusable}[tabindex=-1] -> body": -1, + "iframe{focusable}[tabindex=-1] -> input": 0, + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]": 1, + "shadow-host input[tabindex=0]": 0, + "shadow-host inner-host": -1, + "shadow-host input[tabindex=-1]": -1, + "shadow-host input[tabindex=2]": 2, + "shadow-host inner-host input[tabindex=-1]": -1, + "shadow-host inner-host input[tabindex=0]": 0, + "shadow-host inner-host input[tabindex=1]": 1, + "shadow-host[tabindex=-1] input[tabindex=0]": 0, + "shadow-host[tabindex=-1] inner-host": -1, + "shadow-host[tabindex=-1] input[tabindex=-1]": -1, + "shadow-host[tabindex=-1] input[tabindex=2]": 2, + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]": -1, + "shadow-host[tabindex=-1] inner-host input[tabindex=0]": 0, + "shadow-host[tabindex=-1] inner-host input[tabindex=1]": 1, + "shadow-host[tabindex=0] input[tabindex=0]": 0, + "shadow-host[tabindex=0] inner-host": -1, + "shadow-host[tabindex=0] input[tabindex=-1]": -1, + "shadow-host[tabindex=0] input[tabindex=2]": 2, + "shadow-host[tabindex=0] inner-host input[tabindex=-1]": -1, + "shadow-host[tabindex=0] inner-host input[tabindex=0]": 0, + "shadow-host[tabindex=0] inner-host input[tabindex=1]": 1 }, "ally": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -615,11 +953,16 @@ "textarea[tabindex=-1]", "button[type=button]", "button[type=button][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[tabindex=-1]", "area[href][tabindex=-1].lower", @@ -633,6 +976,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video", @@ -643,15 +990,17 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -663,7 +1012,7 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=hello]", "[tabindex=3 ]", "[tabindex=3x]", @@ -675,11 +1024,13 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", @@ -689,6 +1040,8 @@ "canvas > [tabindex=-1]" ], "focusableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -707,12 +1060,17 @@ "textarea[tabindex=-1]", "button[type=button]", "button[type=button][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area", "area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[tabindex=-1]", "area[href][tabindex=-1].lower", @@ -727,6 +1085,28 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=2]", "audio[controls]", "audio[controls][tabindex=-1]", "video", @@ -750,15 +1130,17 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -770,7 +1152,7 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=hello]", "[tabindex=3 ]", "[tabindex=3x]", @@ -782,11 +1164,13 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", @@ -796,6 +1180,8 @@ "canvas > [tabindex=-1]" ], "tabbable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -805,26 +1191,34 @@ "select", "textarea", "button[type=button]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host[tabindex=0]", "audio[controls]", "video", "video[controls]", "video[controls][tabindex=-1]", "keygen", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf][tabindex=0]", "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -841,15 +1235,19 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" ], "tabbableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -859,11 +1257,15 @@ "select", "textarea", "button[type=button]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area", "area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area", "img[tabindex=-1] area[href].lower", @@ -871,6 +1273,20 @@ "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=2]", "audio[controls]", "video", "video[controls]", @@ -890,10 +1306,12 @@ "div-span{scroll-container-overflow-scroll}", "div-section{scroll-container-overflow-scroll}", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf][tabindex=0]", "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -910,10 +1328,12 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" @@ -924,14 +1344,59 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg a[focusable=false]", "svg a[xlink|href][tabindex=-1]", "svg{tiny} a[focusable=false]", "svg{tiny} a[tabindex=-1]", - "svg{tiny}[focusable=false] a" + "svg{tiny}[focusable=false] a", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[focusable=false]" ], "tabOrder": [ + "input[tabindex=1]", + "area[href].upper", + "area[href].lower", + "area[href].upper", + "area[href].lower", + "img[tabindex=-1] area[href].upper", + "img[tabindex=-1] area[href].lower", "[tabindex=1]", + "input[tabindex=1]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -945,26 +1410,30 @@ "select", "textarea", "button[type=button]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", - "area[href].upper", - "area[href].lower", - "img[tabindex=-1] area[href].upper", - "img[tabindex=-1] area[href].lower", + "a[href=]", + "firefox-bug-1116126", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host[tabindex=0]", "audio[controls]", "video", "video[controls]", "video[controls][tabindex=-1]", "keygen", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf][tabindex=0]", "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -976,10 +1445,12 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" @@ -987,6 +1458,8 @@ }, "jquery": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -1007,25 +1480,33 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", "a > img[ismap][tabindex=-1]", "iframe[tabindex=-1]", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls][tabindex=-1]", "video[controls][tabindex=-1]", "embed[tabindex=-1]", @@ -1038,15 +1519,17 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "svg a[xlink|href]", @@ -1054,6 +1537,7 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -1074,7 +1558,7 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=3 ]", "div[tabindex=0]:empty", "div[tabindex=-1]:empty", @@ -1086,10 +1570,12 @@ "fieldset[disabled] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", @@ -1099,6 +1585,8 @@ "canvas > [tabindex=-1]" ], "tabOrder": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -1109,30 +1597,39 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", + "shadow-host[tabindex=0]", "embed[type=svg][tabindex=0]", "keygen", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "svg a[xlink|href]", "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg a[focusable=false]", "svg rect[tabindex=0]{viewbox}", @@ -1145,7 +1642,7 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=3 ]", "div[tabindex=0]:empty", "span[tabindex=0]:empty", @@ -1154,9 +1651,11 @@ "fieldset[disabled] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" diff --git a/tests/focusable/data/firefox-stable.json b/tests/focusable/data/firefox-stable.json index 0f78c365..785aba1e 100644 --- a/tests/focusable/data/firefox-stable.json +++ b/tests/focusable/data/firefox-stable.json @@ -1,13 +1,13 @@ { "platform": { - "description": "Firefox 42.0 on OS X 10.10", + "description": "Firefox 43.0 on OS X 10.10", "layout": "Gecko", "manufacturer": null, "name": "Firefox", "prerelease": null, "product": null, - "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:42.0) Gecko/20100101 Firefox/42.0", - "version": "42.0", + "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:43.0) Gecko/20100101 Firefox/43.0", + "version": "43.0", "os": { "architecture": 32, "family": "OS X", @@ -17,6 +17,8 @@ "focusable": [ "html", "body", + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -35,18 +37,30 @@ "textarea[tabindex=-1]", "button[type=button]", "button[type=button][tabindex=-1]", + "label:has(input) input", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1]", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input[tabindex=-1]", + "fieldset input", + "fieldset:has(input[tabindex=-1]) input[tabindex=-1]", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", - "area[href].upper", - "area", - "area[href].lower", - "area[href][tabindex=-1].upper", - "area[tabindex=-1]", - "area[href][tabindex=-1].lower", - "img[tabindex=-1] area[href].upper", - "img[tabindex=-1] area", - "img[tabindex=-1] area[href].lower", + "firefox-bug-1116126", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -55,6 +69,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video", @@ -87,15 +105,17 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -107,7 +127,7 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=hello]", "[tabindex=3 ]", "[tabindex=3x]", @@ -115,24 +135,84 @@ "div[tabindex=-1]:empty", "span[tabindex=0]:empty", "span[tabindex=-1]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=-1]", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=-1]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "shadow-host input[tabindex=0]", + "shadow-host input[tabindex=0]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=2]", + "shadow-host input[tabindex=2]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]" ], "focusEvents": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -154,22 +234,36 @@ "input[type=text]", "input[type=text][tabindex=-1]", "input[type=text]", + "label:has(input) input", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1]", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input[tabindex=-1]", + "fieldset input", + "fieldset:has(input[tabindex=-1]) input[tabindex=-1]", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", - "area[href].upper", - "area", - "area[href].lower", - "area[href][tabindex=-1].upper", - "area[tabindex=-1]", - "area[href][tabindex=-1].lower", - "img[tabindex=-1] area[href].upper", - "img[tabindex=-1] area", - "img[tabindex=-1] area[href].lower", + "firefox-bug-1116126", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", "a > img[ismap][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video", @@ -199,11 +293,12 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "[contenteditable]:empty", @@ -216,7 +311,7 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=hello]", "[tabindex=3 ]", "[tabindex=3x]", @@ -224,28 +319,97 @@ "div[tabindex=-1]:empty", "span[tabindex=0]:empty", "span[tabindex=-1]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=-1]", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=-1]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "shadow-host input[tabindex=0]", + "shadow-host", + "shadow-host input[tabindex=-1]", + "shadow-host", + "shadow-host input[tabindex=2]", + "shadow-host", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host", + "shadow-host", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host", + "shadow-host", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host", + "shadow-host", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]" ], "focusRedirection": [ - "label[for=\"label-target\"] --- input[type=text]", - "label[for=\"label-target-focusable\"] --- input[type=text][tabindex=-1]", - "label[for=\"label-target\"][tabindex=-1] --- input[type=text]", - "fieldset legend --- fieldset input" + "label[for=label-target] --- input[type=text]", + "label[for=label-target-focusable] --- input[type=text][tabindex=-1]", + "label[for=label-target][tabindex=-1] --- input[type=text]", + "label:has(input) --- label:has(input) input", + "fieldset legend --- fieldset input", + "fieldset:has(input[tabindex=-1]) legend --- fieldset{no-tabbable} a[tabindex=1]", + "fieldset:has(textarea) legend --- fieldset:has(textarea) textarea", + "fieldset:has(select) legend --- fieldset:has(select) select", + "fieldset:has(button) legend --- fieldset:has(button) button", + "fieldset:has(a) legend --- fieldset:has(a) a" + ], + "focusEncapsulation": [ + "iframe{focusable} -> input --- iframe{focusable}", + "iframe{focusable} -> input[tabindex=1] --- iframe{focusable}", + "iframe{focusable}[tabindex=-1] -> input --- iframe{focusable}[tabindex=-1]", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1] --- iframe{focusable}[tabindex=-1]" ], "noFocusMethod": [ "svg", @@ -258,20 +422,22 @@ "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[tabindex=-1] a[xlink|href] text", - "svg text", - "svg rect", + "svg[tabindex=-1] text", + "svg[tabindex=-1] rect", "svg[focusable=false]", "svg[focusable=false] a[xlink|href]", "svg[focusable=false] a[xlink|href] text", - "svg text", - "svg rect", + "svg[focusable=false] text", + "svg[focusable=false] rect", "svg:has(a[tabindex=0])", "svg a[xlink|href][tabindex=0]", "svg a[xlink|href][tabindex=0] text", - "svg text", + "svg a[xlink|href][tabindex=1]", + "svg a[xlink|href][tabindex=1] text", + "svg:has(a[tabindex=0]) text", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", - "svg rect", + "svg:has(a[tabindex=0]) rect", "svg a[focusable=false]", "rect", "svg{viewbox}", @@ -281,8 +447,8 @@ "svg:has(a[tabindex=-1])", "svg a[xlink|href][tabindex=-1]", "svg a[xlink|href][tabindex=-1] text", - "svg text", - "svg rect", + "svg:has(a[tabindex=-1]) text", + "svg:has(a[tabindex=-1]) rect", "svg{tiny}", "svg{tiny} rect", "svg{tiny} rect[tabindex=0]", @@ -295,11 +461,119 @@ "svg{tiny} rect[focusable=false][tabindex=0]", "svg{tiny}[focusable=false]", "svg{tiny}[focusable=false] a", - "rect" + "rect", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg text[focusable=true]", + "script", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "script", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg svg a[focusable=false]", + "embed[type=svg] -> file:svg svg text[focusable=true]", + "script", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "script", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg svg a[focusable=false]", + "object[src=svg] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][height=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg text[focusable=true]", + "script" ], "tabOrder": [ "html", + "input[tabindex=1]", + "fieldset{no-tabbable} a[tabindex=1]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", "[tabindex=1]", + "input[tabindex=1]", + "shadow-host input[tabindex=2]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] input[tabindex=2]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -314,8 +588,23 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "label:has(input) input", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area", "area[href].lower", @@ -326,14 +615,44 @@ "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe{focusable} -> input[tabindex=1]", "iframe{focusable} -> input", + "iframe[src=svg]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "shadow-host input[tabindex=0]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", "audio[controls]", "video", "video[controls]", "video[controls][tabindex=-1]", + "embed", + "embed[tabindex=-1]", + "embed[type=mp4]", + "embed[type=mp4][tabindex=-1]", "embed[type=ogv]", "embed[type=ogv][tabindex=-1]", "embed[type=svg][tabindex=0]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", "keygen", "div{scroll-container-horizontal}", "div{scroll-container-horizontal-scroll-x}", @@ -349,13 +668,30 @@ "div-span{scroll-container-overflow-scroll}", "div-section{scroll-container-overflow-scroll}", "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf][tabindex=0]", "object[src=svg]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", "object[src=svg][height=0]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[focusable=false]", "svg a[xlink|href]", "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg a[focusable=false]", "svg a[xlink|href][tabindex=-1]", "svg{tiny} a[focusable=false]", @@ -367,14 +703,17 @@ "input[tabindex=hello]", "div[tabindex=0]:empty", "span[tabindex=0]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:1} > input", + "div{flexbox} > span{order:2} > input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" @@ -382,6 +721,7 @@ "tabIndex": { "html": -1, "body": -1, + "input[tabindex=1]": 1, "input[type=text]": 0, "input[type=text][tabindex=-1]": -1, "input[type=password]": 0, @@ -402,38 +742,74 @@ "textarea[tabindex=-1]": -1, "button[type=button]": 0, "button[type=button][tabindex=-1]": -1, - "label": -1, - "label[tabindex=-1]": -1, - "label[tabindex=0]": 0, - "label[for=\"label-target\"]": -1, - "label[for=\"label-target-focusable\"]": -1, - "label[for=\"label-target\"][tabindex=-1]": -1, "input[type=text][disabled]": 0, "input[type=password][disabled]": 0, "input[type=checkbox][disabled]": 0, "input[type=radio][disabled]": 0, "input[type=submit][disabled]": 0, + "input[type=reset][disabled]": 0, "input[type=hidden][disabled]": 0, "select[disabled]": 0, "textarea[disabled]": 0, "button[type=button][disabled]": 0, + "label": -1, + "label[tabindex=-1]": -1, + "label[tabindex=0]": 0, + "label[for=label-target]": -1, + "label[for=label-target-focusable]": -1, + "label[for=label-target][tabindex=-1]": -1, + "label:has(input)": -1, + "label:has(input) input": 0, + "label[disabled]": -1, + "form": -1, + "form input": 0, + "form[tabindex=-1]": -1, + "form[tabindex=-1] input": 0, + "form[tabindex=0]": 0, + "form[tabindex=0] input": 0, + "form[disabled]": -1, + "form[disabled] input": 0, + "form[disabled][tabindex=-1]": -1, + "form[disabled][tabindex=-1] input": 0, + "form[disabled][tabindex=0]": 0, + "form[disabled][tabindex=0] input": 0, + "fieldset": -1, + "fieldset legend": -1, + "fieldset input[tabindex=-1]": -1, + "fieldset input": 0, + "fieldset:has(input[tabindex=-1]) legend": -1, + "fieldset:has(input[tabindex=-1]) input[tabindex=-1]": -1, + "fieldset{no-tabbable} a[tabindex=1]": 1, + "fieldset{no-tabbable} a": 0, + "fieldset:has(textarea) legend": -1, + "fieldset:has(textarea) textarea": 0, + "fieldset:has(select) legend": -1, + "fieldset:has(select) select": 0, + "fieldset:has(button) legend": -1, + "fieldset:has(button) button": 0, + "fieldset:has(a) legend": -1, + "fieldset:has(a) a": 0, + "fieldset:empty": -1, + "fieldset[disabled]": -1, + "fieldset[disabled] input": 0, + "fieldset[disabled][tabindex=0]": 0, + "fieldset[disabled][tabindex=0] input": 0, + "fieldset[disabled][tabindex=-1]": -1, + "fieldset[disabled][tabindex=-1] input": 0, "a[name]": 0, "a[href]": 0, - "a[href=\"\"]": 0, + "a[href=]": 0, "a[href][tabindex=-1]": -1, "span[href]": -1, "link[itemprop][href]": -1, "area[href].upper": 0, "area": 0, "area[href].lower": 0, - "map.invalid-image area[href].upper": 0, - "map.invalid-image area": 0, - "map.invalid-image area[href].lower": 0, "img[usemap].first": -1, - "img[usemap].invalid": -1, - "img[usemap=\"void\"]": -1, - "img": -1, + "firefox-bug-1116126": 0, "img[usemap].second": -1, + "img[usemap=void]": -1, + "img": -1, "area[href][tabindex=-1].upper": -1, "area[tabindex=-1]": -1, "area[href][tabindex=-1].lower": -1, @@ -442,6 +818,10 @@ "img[tabindex=-1] area": 0, "img[tabindex=-1] area[href].lower": 0, "img[usemap][tabindex=-1]": -1, + "map.invalid-image area[href].upper": 0, + "map.invalid-image area": 0, + "map.invalid-image area[href].lower": 0, + "img[usemap].invalid": -1, "a:has([ismap])": 0, "a > img[ismap]": -1, "a[tabindex=-1]:has([ismap])": -1, @@ -452,6 +832,11 @@ "iframe[tabindex=-1]": -1, "iframe{focusable}": 0, "iframe{focusable}[tabindex=-1]": -1, + "iframe[src=svg]": 0, + "iframe[src=svg][tabindex=-1]": -1, + "shadow-host": -1, + "shadow-host[tabindex=-1]": -1, + "shadow-host[tabindex=0]": 0, "audio": 0, "audio[controls]": 0, "audio[controls][tabindex=-1]": -1, @@ -506,15 +891,20 @@ "details a[href]": 0, "details[tabindex=-1]": -1, "details[tabindex=-1] summary": -1, + "details[tabindex=-1] a[href]": 0, + "details:has(summary[tabindex=-1])": -1, "details summary[tabindex=-1]": -1, + "details:has(summary[tabindex=-1]) a[href]": 0, "details[open]": -1, "details[open] summary": -1, "details[open] a[href]": 0, "object[src=swf]": -1, + "object[src=swf][tabindex=0]": 0, "object[src=swf][tabindex=-1]": -1, "object[src=swf][height=0]": -1, "object[src=svg]": 0, "object[src=svg][tabindex=-1]": -1, + "object[src=svg][tabindex=0]": 0, "object[src=svg][height=0]": 0, "map.object area[href].upper": 0, "map.object area": 0, @@ -530,7 +920,7 @@ "[tabindex=+2]": 2, "[tabindex= +2]": 2, "input[tabindex=hello]": 0, - "[tabindex=\"\"]": -1, + "[tabindex=]": -1, "[tabindex=hello]": -1, "[tabindex=3 ]": 3, "[tabindex=3x]": 3, @@ -538,14 +928,6 @@ "div[tabindex=-1]:empty": -1, "span[tabindex=0]:empty": 0, "span[tabindex=-1]:empty": -1, - "fieldset[tabindex=0][disabled]": 0, - "fieldset[tabindex=-1][disabled]": -1, - "fieldset": -1, - "fieldset legend": -1, - "fieldset input": 0, - "fieldset:empty": -1, - "fieldset[disabled]": -1, - "fieldset[disabled] input": 0, "[hidden]": -1, "[hidden] input": 0, "[hidden][tabindex=-1]": -1, @@ -573,18 +955,29 @@ "table tbody tr{collapse}": -1, "table tbody tr{collapse} td": -1, "table tbody tr{collapse} td a": 0, + "table tbody tr{collapse} td a{visible}": 0, "table tbody tr{collapse} td{visible}": -1, "table tbody tr{collapse} td{visible} a": 0, - "table tbody tr{collapse} td a{visible}": 0, "{none} > a": 0, "{none} > a{inline}": 0, "a{none}": 0, "div{no-dimension}": 0, "a{flexbox}": 0, "a{flexbox} > span": -1, - "[tabindex=\"-1\"]{flexbox}": -1, - "[tabindex=\"-1\"]{flexbox} > span1": -1, - "[tabindex=\"-1\"]{flexbox} > span2": -1, + "[tabindex=-1]{flexbox}": -1, + "[tabindex=-1]{flexbox} > span": -1, + "[tabindex=-1]{flexbox} > span[tabindex=-1]": -1, + "[tabindex=-1]{flexbox} > span[tabindex=0]": 0, + "span{flexbox}": -1, + "span{flexbox} > span": -1, + "span{flexbox} > span[tabindex=-1]": -1, + "span{flexbox} > span[tabindex=0]": 0, + "div{flexbox}": -1, + "div{flexbox} > span{order:2}": -1, + "div{flexbox} > span{order:2} > input": 0, + "div{flexbox} > span{order:1}": -1, + "div{flexbox} > span{order:1} > input": 0, + "span{flexbox}:empty": -1, "span{user-modify}": -1, "span{user-modify}[tabindex=-1]": -1, "canvas": -1, @@ -593,10 +986,41 @@ "canvas > a": 0, "canvas > a[tabindex=-1]": -1, "canvas > [tabindex=0]": 0, - "canvas > [tabindex=-1]": -1 + "canvas > [tabindex=-1]": -1, + "iframe -> body": -1, + "iframe[tabindex=-1] -> body": -1, + "iframe{focusable} -> body": -1, + "iframe{focusable} -> input": 0, + "iframe{focusable} -> input[tabindex=1]": 1, + "iframe{focusable}[tabindex=-1] -> body": -1, + "iframe{focusable}[tabindex=-1] -> input": 0, + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]": 1, + "shadow-host input[tabindex=0]": 0, + "shadow-host inner-host": -1, + "shadow-host input[tabindex=-1]": -1, + "shadow-host input[tabindex=2]": 2, + "shadow-host inner-host input[tabindex=-1]": -1, + "shadow-host inner-host input[tabindex=0]": 0, + "shadow-host inner-host input[tabindex=1]": 1, + "shadow-host[tabindex=-1] input[tabindex=0]": 0, + "shadow-host[tabindex=-1] inner-host": -1, + "shadow-host[tabindex=-1] input[tabindex=-1]": -1, + "shadow-host[tabindex=-1] input[tabindex=2]": 2, + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]": -1, + "shadow-host[tabindex=-1] inner-host input[tabindex=0]": 0, + "shadow-host[tabindex=-1] inner-host input[tabindex=1]": 1, + "shadow-host[tabindex=0] input[tabindex=0]": 0, + "shadow-host[tabindex=0] inner-host": -1, + "shadow-host[tabindex=0] input[tabindex=-1]": -1, + "shadow-host[tabindex=0] input[tabindex=2]": 2, + "shadow-host[tabindex=0] inner-host input[tabindex=-1]": -1, + "shadow-host[tabindex=0] inner-host input[tabindex=0]": 0, + "shadow-host[tabindex=0] inner-host input[tabindex=1]": 1 }, "ally": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -615,11 +1039,32 @@ "textarea[tabindex=-1]", "button[type=button]", "button[type=button][tabindex=-1]", + "label:has(input) input", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1]", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input[tabindex=-1]", + "fieldset input", + "fieldset:has(input[tabindex=-1]) input[tabindex=-1]", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[tabindex=-1]", "area[href][tabindex=-1].lower", @@ -633,6 +1078,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video", @@ -643,15 +1092,17 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -663,7 +1114,7 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=hello]", "[tabindex=3 ]", "[tabindex=3x]", @@ -671,15 +1122,20 @@ "div[tabindex=-1]:empty", "span[tabindex=0]:empty", "span[tabindex=-1]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=-1]", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=-1]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", @@ -689,6 +1145,8 @@ "canvas > [tabindex=-1]" ], "focusableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -707,12 +1165,33 @@ "textarea[tabindex=-1]", "button[type=button]", "button[type=button][tabindex=-1]", + "label:has(input) input", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1]", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input[tabindex=-1]", + "fieldset input", + "fieldset:has(input[tabindex=-1]) input[tabindex=-1]", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area", "area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[tabindex=-1]", "area[href][tabindex=-1].lower", @@ -727,6 +1206,28 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=2]", "audio[controls]", "audio[controls][tabindex=-1]", "video", @@ -750,15 +1251,17 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -770,7 +1273,7 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=hello]", "[tabindex=3 ]", "[tabindex=3x]", @@ -778,15 +1281,20 @@ "div[tabindex=-1]:empty", "span[tabindex=0]:empty", "span[tabindex=-1]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=-1]", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=-1]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", @@ -796,6 +1304,8 @@ "canvas > [tabindex=-1]" ], "tabbable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -805,26 +1315,47 @@ "select", "textarea", "button[type=button]", + "label:has(input) input", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host[tabindex=0]", "audio[controls]", "video", "video[controls]", "video[controls][tabindex=-1]", "keygen", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf][tabindex=0]", "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -837,19 +1368,24 @@ "[tabindex=3x]", "div[tabindex=0]:empty", "span[tabindex=0]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" ], "tabbableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -859,11 +1395,28 @@ "select", "textarea", "button[type=button]", + "label:has(input) input", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area", "area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area", "img[tabindex=-1] area[href].lower", @@ -871,6 +1424,20 @@ "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=2]", "audio[controls]", "video", "video[controls]", @@ -890,10 +1457,12 @@ "div-span{scroll-container-overflow-scroll}", "div-section{scroll-container-overflow-scroll}", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf][tabindex=0]", "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -906,14 +1475,17 @@ "[tabindex=3x]", "div[tabindex=0]:empty", "span[tabindex=0]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" @@ -924,14 +1496,60 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg a[focusable=false]", "svg a[xlink|href][tabindex=-1]", "svg{tiny} a[focusable=false]", "svg{tiny} a[tabindex=-1]", - "svg{tiny}[focusable=false] a" + "svg{tiny}[focusable=false] a", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[focusable=false]" ], "tabOrder": [ + "input[tabindex=1]", + "fieldset{no-tabbable} a[tabindex=1]", + "area[href].upper", + "area[href].lower", + "area[href].upper", + "area[href].lower", + "img[tabindex=-1] area[href].upper", + "img[tabindex=-1] area[href].lower", "[tabindex=1]", + "input[tabindex=1]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -945,26 +1563,42 @@ "select", "textarea", "button[type=button]", + "label:has(input) input", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", "a[href]", - "a[href=\"\"]", - "area[href].upper", - "area[href].lower", - "img[tabindex=-1] area[href].upper", - "img[tabindex=-1] area[href].lower", + "a[href=]", + "firefox-bug-1116126", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host[tabindex=0]", "audio[controls]", "video", "video[controls]", "video[controls][tabindex=-1]", "keygen", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf][tabindex=0]", "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -972,21 +1606,38 @@ "input[tabindex=hello]", "div[tabindex=0]:empty", "span[tabindex=0]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" - ] + ], + "focusRedirection": { + "label[for=label-target]": "input[type=text]", + "label[for=label-target-focusable]": "input[type=text][tabindex=-1]", + "label[for=label-target][tabindex=-1]": "input[type=text]", + "label:has(input)": "label:has(input) input", + "fieldset legend": "fieldset input", + "fieldset:has(input[tabindex=-1]) legend": "fieldset{no-tabbable} a[tabindex=1]", + "fieldset:has(textarea) legend": "fieldset:has(textarea) textarea", + "fieldset:has(select) legend": "fieldset:has(select) select", + "fieldset:has(button) legend": "fieldset:has(button) button", + "fieldset:has(a) legend": "fieldset:has(a) a" + } }, "jquery": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -1007,25 +1658,54 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "label:has(input) input", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1]", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input[tabindex=-1]", + "fieldset input", + "fieldset:has(input[tabindex=-1]) input[tabindex=-1]", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", + "fieldset[disabled] input", + "fieldset[disabled][tabindex=0]", + "fieldset[disabled][tabindex=0] input", + "fieldset[disabled][tabindex=-1]", + "fieldset[disabled][tabindex=-1] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", "a > img[ismap][tabindex=-1]", "iframe[tabindex=-1]", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls][tabindex=-1]", "video[controls][tabindex=-1]", "embed[tabindex=-1]", @@ -1038,15 +1718,17 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "svg a[xlink|href]", @@ -1054,6 +1736,7 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -1074,22 +1757,24 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=3 ]", "div[tabindex=0]:empty", "div[tabindex=-1]:empty", "span[tabindex=0]:empty", "span[tabindex=-1]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset[tabindex=-1][disabled]", - "fieldset input", - "fieldset[disabled] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=-1]", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=-1]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", @@ -1099,6 +1784,8 @@ "canvas > [tabindex=-1]" ], "tabOrder": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -1109,30 +1796,56 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "label:has(input) input", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", + "fieldset[disabled] input", + "fieldset[disabled][tabindex=0]", + "fieldset[disabled][tabindex=0] input", + "fieldset[disabled][tabindex=-1] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", + "shadow-host[tabindex=0]", "embed[type=svg][tabindex=0]", "keygen", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "svg a[xlink|href]", "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg a[focusable=false]", "svg rect[tabindex=0]{viewbox}", @@ -1145,18 +1858,19 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=3 ]", "div[tabindex=0]:empty", "span[tabindex=0]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset input", - "fieldset[disabled] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "a{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" diff --git a/tests/focusable/data/ie-10.json b/tests/focusable/data/ie-10.json index c7a1debe..13ad14b8 100644 --- a/tests/focusable/data/ie-10.json +++ b/tests/focusable/data/ie-10.json @@ -17,6 +17,8 @@ "focusable": [ "html", "body", + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -37,20 +39,24 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[tabindex=-1]", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a > img[ismap]", "a[tabindex=-1]:has([ismap])", @@ -61,6 +67,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio", "audio[controls]", "audio[controls][tabindex=-1]", @@ -104,11 +114,12 @@ "div{body-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "[contenteditable]:empty", @@ -141,26 +152,43 @@ "table tfoot tr td", "table tbody tr td", "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", "table tbody tr{collapse} td{visible}", "table tbody tr{collapse} td{visible} a", - "table tbody tr{collapse} td a{visible}", "div{no-dimension}", "a{flexbox}", "a{flexbox} > span", - "[tabindex=\"-1\"]{flexbox}", - "[tabindex=\"-1\"]{flexbox} > span1", - "[tabindex=\"-1\"]{flexbox} > span2", + "[tabindex=-1]{flexbox}", + "[tabindex=-1]{flexbox} > span1", + "[tabindex=-1]{flexbox} > span2", + "div{flexbox}", + "div{flexbox} span{order:2}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1}", + "div{flexbox} span{order:1} input", + "span{flexbox}", + "span{flexbox}", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe -> body", + "iframe[tabindex=-1] -> body", + "iframe{focusable} -> body", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> body", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]" ], "focusEvents": [ "html", "body", + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -181,16 +209,17 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", "area[href].upper", - "map.invalid-image area[href].upper", + "firefox-bug-1116126", "area[href].upper", "area[href][tabindex=-1].upper", "area[tabindex=-1]", @@ -200,6 +229,9 @@ "img[tabindex=-1] area", "img[tabindex=-1] area[href].lower", "img[tabindex=-1] area[href].upper", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", + "map.invalid-image area[href].upper", "a:has([ismap])", "a > img[ismap]", "a[tabindex=-1]:has([ismap])", @@ -210,6 +242,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio", "audio[controls]", "audio[controls][tabindex=-1]", @@ -253,11 +289,12 @@ "div{body-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "[contenteditable]:empty", @@ -290,29 +327,58 @@ "table tfoot tr td", "table tbody tr td", "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", "table tbody tr{collapse} td{visible}", "table tbody tr{collapse} td{visible} a", - "table tbody tr{collapse} td a{visible}", "div{no-dimension}", "a{flexbox}", "a{flexbox} > span", - "[tabindex=\"-1\"]{flexbox}", - "[tabindex=\"-1\"]{flexbox} > span1", - "[tabindex=\"-1\"]{flexbox} > span2", + "[tabindex=-1]{flexbox}", + "[tabindex=-1]{flexbox} > span1", + "[tabindex=-1]{flexbox} > span2", + "div{flexbox}", + "div{flexbox} span{order:2}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1}", + "div{flexbox} span{order:1} input", + "span{flexbox}", + "span{flexbox}", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe", + "iframe[tabindex=-1]", + "iframe{focusable}", + "iframe{focusable}", + "iframe{focusable}", + "iframe{focusable}[tabindex=-1]", + "iframe{focusable}[tabindex=-1]", + "iframe{focusable}[tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]" ], "focusRedirection": [ "img[usemap].first --- area[href].upper", - "img[usemap].invalid --- map.invalid-image area[href].upper", "img[usemap].second --- area[href].upper", "img[usemap].focusable --- area[href][tabindex=-1].upper", - "img[usemap][tabindex=-1] --- img[tabindex=-1] area[href].upper" + "img[usemap][tabindex=-1] --- img[tabindex=-1] area[href].upper", + "img[usemap].invalid --- map.invalid-image area[href].upper" + ], + "focusEncapsulation": [ + "iframe -> body --- iframe", + "iframe[tabindex=-1] -> body --- iframe[tabindex=-1]", + "iframe{focusable} -> body --- iframe{focusable}", + "iframe{focusable} -> input --- iframe{focusable}", + "iframe{focusable} -> input[tabindex=1] --- iframe{focusable}", + "iframe{focusable}[tabindex=-1] -> body --- iframe{focusable}[tabindex=-1]", + "iframe{focusable}[tabindex=-1] -> input --- iframe{focusable}[tabindex=-1]", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1] --- iframe{focusable}[tabindex=-1]" ], "noFocusMethod": [ "svg", @@ -325,20 +391,22 @@ "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[tabindex=-1] a[xlink|href] text", - "svg text", - "svg rect", + "svg[tabindex=-1] text", + "svg[tabindex=-1] rect", "svg[focusable=false]", "svg[focusable=false] a[xlink|href]", "svg[focusable=false] a[xlink|href] text", - "svg text", - "svg rect", + "svg[focusable=false] text", + "svg[focusable=false] rect", "svg:has(a[tabindex=0])", "svg a[xlink|href][tabindex=0]", "svg a[xlink|href][tabindex=0] text", - "svg text", + "svg a[xlink|href][tabindex=1]", + "svg a[xlink|href][tabindex=1] text", + "svg:has(a[tabindex=0]) text", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", - "svg rect", + "svg:has(a[tabindex=0]) rect", "svg a[focusable=false]", "rect", "svg{viewbox}", @@ -348,8 +416,8 @@ "svg:has(a[tabindex=-1])", "svg a[xlink|href][tabindex=-1]", "svg a[xlink|href][tabindex=-1] text", - "svg text", - "svg rect", + "svg:has(a[tabindex=-1]) text", + "svg:has(a[tabindex=-1]) rect", "svg{tiny}", "svg{tiny} rect", "svg{tiny} rect[tabindex=0]", @@ -362,10 +430,102 @@ "svg{tiny} rect[focusable=false][tabindex=0]", "svg{tiny}[focusable=false]", "svg{tiny}[focusable=false] a", - "rect" + "rect", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg text[focusable=true]", + "script", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "script", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg svg a[focusable=false]", + "embed[type=svg] -> file:svg svg text[focusable=true]", + "script", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "script", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg svg a[focusable=false]", + "object[src=svg] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][height=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg text[focusable=true]", + "script" ], "tabOrder": [ + "input[tabindex=1]", "[tabindex=1]", + "input[tabindex=1]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -379,33 +539,66 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href].upper", "area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a > img[ismap]", "a[tabindex=-1] > img[ismap]", "a:has([ismap][tabindex=-1])", "iframe -> body", "iframe", - "iframe{focusable} -> body", + "iframe{focusable} -> input[tabindex=1]", "iframe{focusable}", + "iframe{focusable} -> body", "iframe{focusable} -> input", + "iframe[src=svg] -> file:svg", + "iframe[src=svg]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "video[controls]", "embed", "embed[type=mp4]", + "embed[type=svg] -> file:svg", "embed[type=svg]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg", "embed[type=svg][tabindex=0]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=svg] -> file:svg", "object[src=svg]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg", + "object[src=svg][tabindex=0]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg", "object[src=svg][height=0]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", "svg", "svg a[xlink|href]", "svg rect[focusable=true]", @@ -414,6 +607,7 @@ "svg[focusable=false] a[xlink|href]", "svg:has(a[tabindex=0])", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg{viewbox}", "svg rect[focusable=true]{viewbox}", "svg:has(a[tabindex=-1])", @@ -437,10 +631,12 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]", @@ -449,6 +645,7 @@ "tabIndex": { "html": 0, "body": 0, + "input[tabindex=1]": 1, "input[type=text]": 0, "input[type=text][tabindex=-1]": -1, "input[type=password]": 0, @@ -472,35 +669,40 @@ "label": 0, "label[tabindex=-1]": -1, "label[tabindex=0]": 0, - "label[for=\"label-target\"]": 0, - "label[for=\"label-target-focusable\"]": 0, - "label[for=\"label-target\"][tabindex=-1]": -1, + "label[for=label-target]": 0, + "label[for=label-target-focusable]": 0, + "label[for=label-target][tabindex=-1]": -1, + "form": 0, + "form input": 0, + "form[tabindex=-1]": -1, + "form[tabindex=-1] input": 0, + "form[disabled]": 0, + "form[disabled] input": 0, "input[type=text][disabled]": 0, "input[type=password][disabled]": 0, "input[type=checkbox][disabled]": 0, "input[type=radio][disabled]": 0, "input[type=submit][disabled]": 0, + "input[type=reset][disabled]": 0, "input[type=hidden][disabled]": 0, "select[disabled]": 0, "textarea[disabled]": 0, "button[type=button][disabled]": 0, + "label[disabled]": 0, "a[name]": 0, "a[href]": 0, - "a[href=\"\"]": 0, + "a[href=]": 0, "a[href][tabindex=-1]": -1, "span[href]": 0, "link[itemprop][href]": 0, "area[href].upper": 0, "area": 0, "area[href].lower": 0, - "map.invalid-image area[href].upper": 0, - "map.invalid-image area": 0, - "map.invalid-image area[href].lower": 0, "img[usemap].first": 0, - "img[usemap].invalid": 0, - "img[usemap=\"void\"]": 0, - "img": 0, + "firefox-bug-1116126": 0, "img[usemap].second": 0, + "img[usemap=void]": 0, + "img": 0, "area[href][tabindex=-1].upper": -1, "area[tabindex=-1]": -1, "area[href][tabindex=-1].lower": -1, @@ -509,6 +711,10 @@ "img[tabindex=-1] area": 0, "img[tabindex=-1] area[href].lower": 0, "img[usemap][tabindex=-1]": -1, + "map.invalid-image area[href].upper": 0, + "map.invalid-image area": 0, + "map.invalid-image area[href].lower": 0, + "img[usemap].invalid": 0, "a:has([ismap])": 0, "a > img[ismap]": 0, "a[tabindex=-1]:has([ismap])": -1, @@ -519,6 +725,11 @@ "iframe[tabindex=-1]": -1, "iframe{focusable}": 0, "iframe{focusable}[tabindex=-1]": -1, + "iframe[src=svg]": 0, + "iframe[src=svg][tabindex=-1]": -1, + "shadow-host": 0, + "shadow-host[tabindex=-1]": -1, + "shadow-host[tabindex=0]": 0, "audio": 0, "audio[controls]": 0, "audio[controls][tabindex=-1]": -1, @@ -573,15 +784,20 @@ "details a[href]": 0, "details[tabindex=-1]": -1, "details[tabindex=-1] summary": 0, + "details[tabindex=-1] a[href]": 0, + "details:has(summary[tabindex=-1])": 0, "details summary[tabindex=-1]": -1, + "details:has(summary[tabindex=-1]) a[href]": 0, "details[open]": 0, "details[open] summary": 0, "details[open] a[href]": 0, - "object[src=swf]": -1, + "object[src=swf]": 0, + "object[src=swf][tabindex=0]": 0, "object[src=swf][tabindex=-1]": -1, "object[src=swf][height=0]": 0, "object[src=svg]": 0, "object[src=svg][tabindex=-1]": -1, + "object[src=svg][tabindex=0]": 0, "object[src=svg][height=0]": 0, "map.object area[href].upper": 0, "map.object area": 0, @@ -597,7 +813,7 @@ "[tabindex=+2]": 2, "[tabindex= +2]": 2, "input[tabindex=hello]": 0, - "[tabindex=\"\"]": 0, + "[tabindex=]": 0, "[tabindex=hello]": 0, "[tabindex=3 ]": 3, "[tabindex=3x]": 0, @@ -640,18 +856,24 @@ "table tbody tr{collapse}": 0, "table tbody tr{collapse} td": 0, "table tbody tr{collapse} td a": 0, + "table tbody tr{collapse} td a{visible}": 0, "table tbody tr{collapse} td{visible}": 0, "table tbody tr{collapse} td{visible} a": 0, - "table tbody tr{collapse} td a{visible}": 0, "{none} > a": 0, "{none} > a{inline}": 0, "a{none}": 0, "div{no-dimension}": 0, "a{flexbox}": 0, "a{flexbox} > span": 0, - "[tabindex=\"-1\"]{flexbox}": -1, - "[tabindex=\"-1\"]{flexbox} > span1": 0, - "[tabindex=\"-1\"]{flexbox} > span2": 0, + "[tabindex=-1]{flexbox}": -1, + "[tabindex=-1]{flexbox} > span1": 0, + "[tabindex=-1]{flexbox} > span2": 0, + "div{flexbox}": 0, + "div{flexbox} span{order:2}": 0, + "div{flexbox} span{order:2} input": 0, + "div{flexbox} span{order:1}": 0, + "div{flexbox} span{order:1} input": 0, + "span{flexbox}": 0, "span{user-modify}": 0, "span{user-modify}[tabindex=-1]": -1, "canvas": 0, @@ -660,10 +882,20 @@ "canvas > a": 0, "canvas > a[tabindex=-1]": -1, "canvas > [tabindex=0]": 0, - "canvas > [tabindex=-1]": -1 + "canvas > [tabindex=-1]": -1, + "iframe -> body": 0, + "iframe[tabindex=-1] -> body": 0, + "iframe{focusable} -> body": 0, + "iframe{focusable} -> input": 0, + "iframe{focusable} -> input[tabindex=1]": 1, + "iframe{focusable}[tabindex=-1] -> body": 0, + "iframe{focusable}[tabindex=-1] -> input": 0, + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]": 1 }, "ally": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -684,19 +916,24 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[tabindex=-1]", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -705,6 +942,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio", "audio[controls]", "audio[controls][tabindex=-1]", @@ -714,11 +955,12 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "[contenteditable]:empty", @@ -751,12 +993,14 @@ "table tfoot tr td", "table tbody tr td", "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", "table tbody tr{collapse} td{visible}", "table tbody tr{collapse} td{visible} a", - "table tbody tr{collapse} td a{visible}", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", @@ -766,6 +1010,8 @@ "canvas > [tabindex=-1]" ], "focusableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -786,20 +1032,25 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[tabindex=-1]", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a > img[ismap]", "a[tabindex=-1]:has([ismap])", @@ -810,6 +1061,11 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio", "audio[controls]", "audio[controls][tabindex=-1]", @@ -848,11 +1104,12 @@ "div{body-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "[contenteditable]:empty", @@ -885,15 +1142,20 @@ "table tfoot tr td", "table tbody tr td", "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", "table tbody tr{collapse} td{visible}", "table tbody tr{collapse} td{visible} a", - "table tbody tr{collapse} td a{visible}", "div{no-dimension}", "a{flexbox}", "a{flexbox} > span", - "[tabindex=\"-1\"]{flexbox}", - "[tabindex=\"-1\"]{flexbox} > span1", - "[tabindex=\"-1\"]{flexbox} > span2", + "[tabindex=-1]{flexbox}", + "[tabindex=-1]{flexbox} > span1", + "[tabindex=-1]{flexbox} > span2", + "div{flexbox} span{order:2}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1}", + "div{flexbox} span{order:1} input", + "span{flexbox}", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", @@ -903,6 +1165,8 @@ "canvas > [tabindex=-1]" ], "tabbable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -913,22 +1177,29 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", + "firefox-bug-1116126", "map.invalid-image area[href].upper", "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", "audio[controls]", "video[controls]", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -948,15 +1219,19 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" ], "tabbableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -967,10 +1242,14 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", + "firefox-bug-1116126", "map.invalid-image area[href].upper", "map.invalid-image area[href].lower", "a:has([ismap])", @@ -979,12 +1258,15 @@ "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", "audio[controls]", "video[controls]", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -1004,16 +1286,19 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" ], "onlyTabbable": [ "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg", "svg a[xlink|href]", @@ -1023,6 +1308,7 @@ "svg[focusable=false] a[xlink|href]", "svg:has(a[tabindex=0])", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg{viewbox}", "svg rect[focusable=true]{viewbox}", "svg:has(a[tabindex=-1])", @@ -1031,10 +1317,45 @@ "svg{tiny} rect[focusable=true]", "svg{tiny} a[tabindex=-1]", "svg{tiny} rect[focusable=true][tabindex=-1]", - "svg{tiny}[focusable=false] a" + "svg{tiny}[focusable=false] a", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]" ], "tabOrder": [ + "input[tabindex=1]", + "area[href].upper", + "area[href].lower", + "area[href].upper", + "area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "[tabindex=1]", + "input[tabindex=1]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -1048,22 +1369,25 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", - "area[href].upper", - "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "a[href=]", + "firefox-bug-1116126", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", "audio[controls]", "video[controls]", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -1079,10 +1403,12 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" @@ -1090,6 +1416,8 @@ }, "jquery": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -1110,25 +1438,33 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", "a > img[ismap][tabindex=-1]", "iframe[tabindex=-1]", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls][tabindex=-1]", "video[controls][tabindex=-1]", "embed[tabindex=-1]", @@ -1139,15 +1475,17 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "svg a[xlink|href]", @@ -1155,6 +1493,7 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -1175,7 +1514,7 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=3 ]", "div[tabindex=0]:empty", "div[tabindex=-1]:empty", @@ -1190,13 +1529,17 @@ "[hidden][tabindex=0] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]" ], "tabOrder": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -1207,29 +1550,38 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", + "shadow-host[tabindex=0]", "embed[type=svg][tabindex=0]", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "svg a[xlink|href]", "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg a[focusable=false]", "svg rect[tabindex=0]{viewbox}", @@ -1253,9 +1605,11 @@ "[hidden][tabindex=0] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", - "a{flexbox}" + "table tbody tr{collapse} td{visible} a", + "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input" ] } } \ No newline at end of file diff --git a/tests/focusable/data/ie-11.json b/tests/focusable/data/ie-11.json index 14e3823f..a7759e39 100644 --- a/tests/focusable/data/ie-11.json +++ b/tests/focusable/data/ie-11.json @@ -17,6 +17,8 @@ "focusable": [ "html", "body", + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -37,20 +39,38 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "label:has(input) input", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "fieldset", + "fieldset input[tabindex=-1]", + "fieldset input", + "fieldset:has(input[tabindex=-1]) input[tabindex=-1]", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", + "fieldset:empty", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[tabindex=-1]", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a > img[ismap]", "a[tabindex=-1]:has([ismap])", @@ -61,6 +81,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio", "audio[controls]", "audio[controls][tabindex=-1]", @@ -104,11 +128,12 @@ "div{body-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "[contenteditable]:empty", @@ -126,9 +151,6 @@ "div[tabindex=-1]:empty", "span[tabindex=0]:empty", "span[tabindex=-1]:empty", - "fieldset", - "fieldset input", - "fieldset:empty", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table", @@ -136,26 +158,47 @@ "table tfoot tr td", "table tbody tr td", "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", "table tbody tr{collapse} td{visible}", "table tbody tr{collapse} td{visible} a", - "table tbody tr{collapse} td a{visible}", "div{no-dimension}", "a{flexbox}", "a{flexbox} > span", - "[tabindex=\"-1\"]{flexbox}", - "[tabindex=\"-1\"]{flexbox} > span1", - "[tabindex=\"-1\"]{flexbox} > span2", + "[tabindex=-1]{flexbox}", + "[tabindex=-1]{flexbox} > span", + "[tabindex=-1]{flexbox} > span[tabindex=-1]", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox}", + "span{flexbox} > span", + "span{flexbox} > span[tabindex=-1]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox}", + "div{flexbox} > span{order:2}", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1}", + "div{flexbox} > span{order:1} > input", + "span{flexbox}:empty", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe -> body", + "iframe[tabindex=-1] -> body", + "iframe{focusable} -> body", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> body", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]" ], "focusEvents": [ "html", "body", + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -176,16 +219,31 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "label:has(input) input", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "fieldset", + "fieldset input[tabindex=-1]", + "fieldset input", + "fieldset:has(input[tabindex=-1]) input[tabindex=-1]", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", + "fieldset:empty", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", "area[href].upper", - "map.invalid-image area[href].upper", + "firefox-bug-1116126", "area[href].upper", "area[href][tabindex=-1].upper", "area[tabindex=-1]", @@ -195,6 +253,9 @@ "img[tabindex=-1] area", "img[tabindex=-1] area[href].lower", "img[tabindex=-1] area[href].upper", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", + "map.invalid-image area[href].upper", "a:has([ismap])", "a > img[ismap]", "a[tabindex=-1]:has([ismap])", @@ -205,6 +266,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio", "audio[controls]", "audio[controls][tabindex=-1]", @@ -248,11 +313,12 @@ "div{body-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "[contenteditable]:empty", @@ -270,9 +336,6 @@ "div[tabindex=-1]:empty", "span[tabindex=0]:empty", "span[tabindex=-1]:empty", - "fieldset", - "fieldset input", - "fieldset:empty", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table", @@ -280,29 +343,62 @@ "table tfoot tr td", "table tbody tr td", "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", "table tbody tr{collapse} td{visible}", "table tbody tr{collapse} td{visible} a", - "table tbody tr{collapse} td a{visible}", "div{no-dimension}", "a{flexbox}", "a{flexbox} > span", - "[tabindex=\"-1\"]{flexbox}", - "[tabindex=\"-1\"]{flexbox} > span1", - "[tabindex=\"-1\"]{flexbox} > span2", + "[tabindex=-1]{flexbox}", + "[tabindex=-1]{flexbox} > span", + "[tabindex=-1]{flexbox} > span[tabindex=-1]", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox}", + "span{flexbox} > span", + "span{flexbox} > span[tabindex=-1]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox}", + "div{flexbox} > span{order:2}", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1}", + "div{flexbox} > span{order:1} > input", + "span{flexbox}:empty", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe", + "iframe[tabindex=-1]", + "iframe{focusable}", + "iframe{focusable}", + "iframe{focusable}", + "iframe{focusable}[tabindex=-1]", + "iframe{focusable}[tabindex=-1]", + "iframe{focusable}[tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]" ], "focusRedirection": [ "img[usemap].first --- area[href].upper", - "img[usemap].invalid --- map.invalid-image area[href].upper", "img[usemap].second --- area[href].upper", "img[usemap].focusable --- area[href][tabindex=-1].upper", - "img[usemap][tabindex=-1] --- img[tabindex=-1] area[href].upper" + "img[usemap][tabindex=-1] --- img[tabindex=-1] area[href].upper", + "img[usemap].invalid --- map.invalid-image area[href].upper" + ], + "focusEncapsulation": [ + "iframe -> body --- iframe", + "iframe[tabindex=-1] -> body --- iframe[tabindex=-1]", + "iframe{focusable} -> body --- iframe{focusable}", + "iframe{focusable} -> input --- iframe{focusable}", + "iframe{focusable} -> input[tabindex=1] --- iframe{focusable}", + "iframe{focusable}[tabindex=-1] -> body --- iframe{focusable}[tabindex=-1]", + "iframe{focusable}[tabindex=-1] -> input --- iframe{focusable}[tabindex=-1]", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1] --- iframe{focusable}[tabindex=-1]" ], "noFocusMethod": [ "svg", @@ -315,20 +411,22 @@ "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[tabindex=-1] a[xlink|href] text", - "svg text", - "svg rect", + "svg[tabindex=-1] text", + "svg[tabindex=-1] rect", "svg[focusable=false]", "svg[focusable=false] a[xlink|href]", "svg[focusable=false] a[xlink|href] text", - "svg text", - "svg rect", + "svg[focusable=false] text", + "svg[focusable=false] rect", "svg:has(a[tabindex=0])", "svg a[xlink|href][tabindex=0]", "svg a[xlink|href][tabindex=0] text", - "svg text", + "svg a[xlink|href][tabindex=1]", + "svg a[xlink|href][tabindex=1] text", + "svg:has(a[tabindex=0]) text", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", - "svg rect", + "svg:has(a[tabindex=0]) rect", "svg a[focusable=false]", "rect", "svg{viewbox}", @@ -338,8 +436,8 @@ "svg:has(a[tabindex=-1])", "svg a[xlink|href][tabindex=-1]", "svg a[xlink|href][tabindex=-1] text", - "svg text", - "svg rect", + "svg:has(a[tabindex=-1]) text", + "svg:has(a[tabindex=-1]) rect", "svg{tiny}", "svg{tiny} rect", "svg{tiny} rect[tabindex=0]", @@ -352,10 +450,103 @@ "svg{tiny} rect[focusable=false][tabindex=0]", "svg{tiny}[focusable=false]", "svg{tiny}[focusable=false] a", - "rect" + "rect", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg text[focusable=true]", + "script", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "script", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg svg a[focusable=false]", + "embed[type=svg] -> file:svg svg text[focusable=true]", + "script", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "script", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg svg a[focusable=false]", + "object[src=svg] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][height=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg text[focusable=true]", + "script" ], "tabOrder": [ + "input[tabindex=1]", + "fieldset{no-tabbable} a[tabindex=1]", "[tabindex=1]", + "input[tabindex=1]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -369,34 +560,78 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "label:has(input) input", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "fieldset input", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href].upper", "area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a > img[ismap]", "a[tabindex=-1] > img[ismap]", "a:has([ismap][tabindex=-1])", "iframe -> body", "iframe", - "iframe{focusable} -> body", + "iframe{focusable} -> input[tabindex=1]", "iframe{focusable}", + "iframe{focusable} -> body", "iframe{focusable} -> input", + "iframe[src=svg] -> file:svg", + "iframe[src=svg]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "video[controls]", "embed", "embed[type=mp4]", + "embed[type=svg] -> file:svg", "embed[type=svg]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg", "embed[type=svg][tabindex=0]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", + "object[src=svg] -> file:svg", "object[src=svg]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg", + "object[src=svg][tabindex=0]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg", "object[src=svg][height=0]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", "svg", "svg a[xlink|href]", "svg rect[focusable=true]", @@ -405,6 +640,7 @@ "svg[focusable=false] a[xlink|href]", "svg:has(a[tabindex=0])", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg{viewbox}", "svg rect[focusable=true]{viewbox}", "svg:has(a[tabindex=-1])", @@ -420,14 +656,17 @@ "input[tabindex=hello]", "div[tabindex=0]:empty", "span[tabindex=0]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "canvas > input", "canvas > a", "canvas > [tabindex=0]", @@ -436,6 +675,7 @@ "tabIndex": { "html": 0, "body": 0, + "input[tabindex=1]": 1, "input[type=text]": 0, "input[type=text][tabindex=-1]": -1, "input[type=password]": 0, @@ -456,38 +696,74 @@ "textarea[tabindex=-1]": -1, "button[type=button]": 0, "button[type=button][tabindex=-1]": -1, - "label": 0, - "label[tabindex=-1]": -1, - "label[tabindex=0]": 0, - "label[for=\"label-target\"]": 0, - "label[for=\"label-target-focusable\"]": 0, - "label[for=\"label-target\"][tabindex=-1]": -1, "input[type=text][disabled]": 0, "input[type=password][disabled]": 0, "input[type=checkbox][disabled]": 0, "input[type=radio][disabled]": 0, "input[type=submit][disabled]": 0, + "input[type=reset][disabled]": 0, "input[type=hidden][disabled]": 0, "select[disabled]": 0, "textarea[disabled]": 0, "button[type=button][disabled]": 0, + "label": 0, + "label[tabindex=-1]": -1, + "label[tabindex=0]": 0, + "label[for=label-target]": 0, + "label[for=label-target-focusable]": 0, + "label[for=label-target][tabindex=-1]": -1, + "label:has(input)": 0, + "label:has(input) input": 0, + "label[disabled]": 0, + "form": 0, + "form input": 0, + "form[tabindex=-1]": -1, + "form[tabindex=-1] input": 0, + "form[tabindex=0]": 0, + "form[tabindex=0] input": 0, + "form[disabled]": 0, + "form[disabled] input": 0, + "form[disabled][tabindex=-1]": -1, + "form[disabled][tabindex=-1] input": 0, + "form[disabled][tabindex=0]": 0, + "form[disabled][tabindex=0] input": 0, + "fieldset": 0, + "fieldset legend": 0, + "fieldset input[tabindex=-1]": -1, + "fieldset input": 0, + "fieldset:has(input[tabindex=-1]) legend": 0, + "fieldset:has(input[tabindex=-1]) input[tabindex=-1]": -1, + "fieldset{no-tabbable} a[tabindex=1]": 1, + "fieldset{no-tabbable} a": 0, + "fieldset:has(textarea) legend": 0, + "fieldset:has(textarea) textarea": 0, + "fieldset:has(select) legend": 0, + "fieldset:has(select) select": 0, + "fieldset:has(button) legend": 0, + "fieldset:has(button) button": 0, + "fieldset:has(a) legend": 0, + "fieldset:has(a) a": 0, + "fieldset:empty": 0, + "fieldset[disabled]": 0, + "fieldset[disabled] input": 0, + "fieldset[disabled][tabindex=0]": 0, + "fieldset[disabled][tabindex=0] input": 0, + "fieldset[disabled][tabindex=-1]": -1, + "fieldset[disabled][tabindex=-1] input": 0, "a[name]": 0, "a[href]": 0, - "a[href=\"\"]": 0, + "a[href=]": 0, "a[href][tabindex=-1]": -1, "span[href]": 0, "link[itemprop][href]": 0, "area[href].upper": 0, "area": 0, "area[href].lower": 0, - "map.invalid-image area[href].upper": 0, - "map.invalid-image area": 0, - "map.invalid-image area[href].lower": 0, "img[usemap].first": 0, - "img[usemap].invalid": 0, - "img[usemap=\"void\"]": 0, - "img": 0, + "firefox-bug-1116126": 0, "img[usemap].second": 0, + "img[usemap=void]": 0, + "img": 0, "area[href][tabindex=-1].upper": -1, "area[tabindex=-1]": -1, "area[href][tabindex=-1].lower": -1, @@ -496,6 +772,10 @@ "img[tabindex=-1] area": 0, "img[tabindex=-1] area[href].lower": 0, "img[usemap][tabindex=-1]": -1, + "map.invalid-image area[href].upper": 0, + "map.invalid-image area": 0, + "map.invalid-image area[href].lower": 0, + "img[usemap].invalid": 0, "a:has([ismap])": 0, "a > img[ismap]": 0, "a[tabindex=-1]:has([ismap])": -1, @@ -506,6 +786,11 @@ "iframe[tabindex=-1]": -1, "iframe{focusable}": 0, "iframe{focusable}[tabindex=-1]": -1, + "iframe[src=svg]": 0, + "iframe[src=svg][tabindex=-1]": -1, + "shadow-host": 0, + "shadow-host[tabindex=-1]": -1, + "shadow-host[tabindex=0]": 0, "audio": 0, "audio[controls]": 0, "audio[controls][tabindex=-1]": -1, @@ -560,15 +845,20 @@ "details a[href]": 0, "details[tabindex=-1]": -1, "details[tabindex=-1] summary": 0, + "details[tabindex=-1] a[href]": 0, + "details:has(summary[tabindex=-1])": 0, "details summary[tabindex=-1]": -1, + "details:has(summary[tabindex=-1]) a[href]": 0, "details[open]": 0, "details[open] summary": 0, "details[open] a[href]": 0, - "object[src=swf]": -1, + "object[src=swf]": 0, + "object[src=swf][tabindex=0]": 0, "object[src=swf][tabindex=-1]": -1, "object[src=swf][height=0]": 0, "object[src=svg]": 0, "object[src=svg][tabindex=-1]": -1, + "object[src=svg][tabindex=0]": 0, "object[src=svg][height=0]": 0, "map.object area[href].upper": 0, "map.object area": 0, @@ -584,7 +874,7 @@ "[tabindex=+2]": 2, "[tabindex= +2]": 2, "input[tabindex=hello]": 0, - "[tabindex=\"\"]": 0, + "[tabindex=]": 0, "[tabindex=hello]": 0, "[tabindex=3 ]": 3, "[tabindex=3x]": 0, @@ -592,14 +882,6 @@ "div[tabindex=-1]:empty": -1, "span[tabindex=0]:empty": 0, "span[tabindex=-1]:empty": -1, - "fieldset[tabindex=0][disabled]": 0, - "fieldset[tabindex=-1][disabled]": -1, - "fieldset": 0, - "fieldset legend": 0, - "fieldset input": 0, - "fieldset:empty": 0, - "fieldset[disabled]": 0, - "fieldset[disabled] input": 0, "[hidden]": 0, "[hidden] input": 0, "[hidden][tabindex=-1]": -1, @@ -627,18 +909,29 @@ "table tbody tr{collapse}": 0, "table tbody tr{collapse} td": 0, "table tbody tr{collapse} td a": 0, + "table tbody tr{collapse} td a{visible}": 0, "table tbody tr{collapse} td{visible}": 0, "table tbody tr{collapse} td{visible} a": 0, - "table tbody tr{collapse} td a{visible}": 0, "{none} > a": 0, "{none} > a{inline}": 0, "a{none}": 0, "div{no-dimension}": 0, "a{flexbox}": 0, "a{flexbox} > span": 0, - "[tabindex=\"-1\"]{flexbox}": -1, - "[tabindex=\"-1\"]{flexbox} > span1": 0, - "[tabindex=\"-1\"]{flexbox} > span2": 0, + "[tabindex=-1]{flexbox}": -1, + "[tabindex=-1]{flexbox} > span": 0, + "[tabindex=-1]{flexbox} > span[tabindex=-1]": -1, + "[tabindex=-1]{flexbox} > span[tabindex=0]": 0, + "span{flexbox}": 0, + "span{flexbox} > span": 0, + "span{flexbox} > span[tabindex=-1]": -1, + "span{flexbox} > span[tabindex=0]": 0, + "div{flexbox}": 0, + "div{flexbox} > span{order:2}": 0, + "div{flexbox} > span{order:2} > input": 0, + "div{flexbox} > span{order:1}": 0, + "div{flexbox} > span{order:1} > input": 0, + "span{flexbox}:empty": 0, "span{user-modify}": 0, "span{user-modify}[tabindex=-1]": -1, "canvas": 0, @@ -647,10 +940,20 @@ "canvas > a": 0, "canvas > a[tabindex=-1]": -1, "canvas > [tabindex=0]": 0, - "canvas > [tabindex=-1]": -1 + "canvas > [tabindex=-1]": -1, + "iframe -> body": 0, + "iframe[tabindex=-1] -> body": 0, + "iframe{focusable} -> body": 0, + "iframe{focusable} -> input": 0, + "iframe{focusable} -> input[tabindex=1]": 1, + "iframe{focusable}[tabindex=-1] -> body": 0, + "iframe{focusable}[tabindex=-1] -> input": 0, + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]": 1 }, "ally": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -671,19 +974,37 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "label:has(input) input", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "fieldset", + "fieldset input[tabindex=-1]", + "fieldset input", + "fieldset:has(input[tabindex=-1]) input[tabindex=-1]", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", + "fieldset:empty", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[tabindex=-1]", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -692,6 +1013,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio", "audio[controls]", "audio[controls][tabindex=-1]", @@ -701,11 +1026,12 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "[contenteditable]:empty", @@ -723,9 +1049,6 @@ "div[tabindex=-1]:empty", "span[tabindex=0]:empty", "span[tabindex=-1]:empty", - "fieldset", - "fieldset input", - "fieldset:empty", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table", @@ -733,12 +1056,18 @@ "table tfoot tr td", "table tbody tr td", "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", "table tbody tr{collapse} td{visible}", "table tbody tr{collapse} td{visible} a", - "table tbody tr{collapse} td a{visible}", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=-1]", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=-1]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", @@ -748,6 +1077,8 @@ "canvas > [tabindex=-1]" ], "focusableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -768,20 +1099,38 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "label:has(input) input", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "fieldset", + "fieldset input[tabindex=-1]", + "fieldset input", + "fieldset:has(input[tabindex=-1]) input[tabindex=-1]", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", + "fieldset:empty", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[tabindex=-1]", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a > img[ismap]", "a[tabindex=-1]:has([ismap])", @@ -792,6 +1141,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio", "audio[controls]", "audio[controls][tabindex=-1]", @@ -830,11 +1183,12 @@ "div{body-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "[contenteditable]:empty", @@ -852,9 +1206,6 @@ "div[tabindex=-1]:empty", "span[tabindex=0]:empty", "span[tabindex=-1]:empty", - "fieldset", - "fieldset input", - "fieldset:empty", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table", @@ -862,15 +1213,26 @@ "table tfoot tr td", "table tbody tr td", "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", "table tbody tr{collapse} td{visible}", "table tbody tr{collapse} td{visible} a", - "table tbody tr{collapse} td a{visible}", "div{no-dimension}", "a{flexbox}", "a{flexbox} > span", - "[tabindex=\"-1\"]{flexbox}", - "[tabindex=\"-1\"]{flexbox} > span1", - "[tabindex=\"-1\"]{flexbox} > span2", + "[tabindex=-1]{flexbox}", + "[tabindex=-1]{flexbox} > span", + "[tabindex=-1]{flexbox} > span[tabindex=-1]", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox}", + "span{flexbox} > span", + "span{flexbox} > span[tabindex=-1]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox}", + "div{flexbox} > span{order:2}", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1}", + "div{flexbox} > span{order:1} > input", + "span{flexbox}:empty", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", @@ -880,6 +1242,8 @@ "canvas > [tabindex=-1]" ], "tabbable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -890,22 +1254,39 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "label:has(input) input", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "fieldset input", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", + "firefox-bug-1116126", "map.invalid-image area[href].upper", "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host[tabindex=0]", "audio[controls]", "video[controls]", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -917,19 +1298,23 @@ "[tabindex=3 ]", "div[tabindex=0]:empty", "span[tabindex=0]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", - "a{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" ], "tabbableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -940,10 +1325,23 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "label:has(input) input", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "fieldset input", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", + "firefox-bug-1116126", "map.invalid-image area[href].upper", "map.invalid-image area[href].lower", "a:has([ismap])", @@ -952,12 +1350,16 @@ "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host[tabindex=0]", "audio[controls]", "video[controls]", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -969,20 +1371,23 @@ "[tabindex=3 ]", "div[tabindex=0]:empty", "span[tabindex=0]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", - "a{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" ], "onlyTabbable": [ "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg", "svg a[xlink|href]", @@ -992,6 +1397,7 @@ "svg[focusable=false] a[xlink|href]", "svg:has(a[tabindex=0])", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg{viewbox}", "svg rect[focusable=true]{viewbox}", "svg:has(a[tabindex=-1])", @@ -1000,10 +1406,46 @@ "svg{tiny} rect[focusable=true]", "svg{tiny} a[tabindex=-1]", "svg{tiny} rect[focusable=true][tabindex=-1]", - "svg{tiny}[focusable=false] a" + "svg{tiny}[focusable=false] a", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]" ], "tabOrder": [ + "input[tabindex=1]", + "fieldset{no-tabbable} a[tabindex=1]", + "area[href].upper", + "area[href].lower", + "area[href].upper", + "area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "[tabindex=1]", + "input[tabindex=1]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -1017,22 +1459,34 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "label:has(input) input", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "fieldset input", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", "a[href]", - "a[href=\"\"]", - "area[href].upper", - "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "a[href=]", + "firefox-bug-1116126", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host[tabindex=0]", "audio[controls]", "video[controls]", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -1040,21 +1494,35 @@ "input[tabindex=hello]", "div[tabindex=0]:empty", "span[tabindex=0]:empty", - "fieldset input", "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", - "a{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" - ] + ], + "focusRedirection": { + "label[for=label-target]": "input[type=text]", + "label[for=label-target-focusable]": "input[type=text][tabindex=-1]", + "label:has(input)": "label:has(input) input", + "img[usemap].first": "area[href].upper", + "img[usemap].second": "area[href].upper", + "img[usemap].focusable": "area[href][tabindex=-1].upper", + "img[usemap][tabindex=-1]": "img[tabindex=-1] area[href].upper", + "img[usemap].invalid": "map.invalid-image area[href].upper" + } }, "jquery": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -1075,25 +1543,54 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "label:has(input) input", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1]", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input[tabindex=-1]", + "fieldset input", + "fieldset:has(input[tabindex=-1]) input[tabindex=-1]", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", + "fieldset[disabled] input", + "fieldset[disabled][tabindex=0]", + "fieldset[disabled][tabindex=0] input", + "fieldset[disabled][tabindex=-1]", + "fieldset[disabled][tabindex=-1] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", "a > img[ismap][tabindex=-1]", "iframe[tabindex=-1]", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls][tabindex=-1]", "video[controls][tabindex=-1]", "embed[tabindex=-1]", @@ -1104,15 +1601,17 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "svg a[xlink|href]", @@ -1120,6 +1619,7 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -1140,23 +1640,27 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=3 ]", "div[tabindex=0]:empty", "div[tabindex=-1]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset[tabindex=-1][disabled]", - "fieldset input", - "fieldset[disabled] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=-1]", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=-1]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input", "span{user-modify}[tabindex=-1]" ], "tabOrder": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -1167,29 +1671,55 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "label:has(input) input", + "form input", + "form[tabindex=-1] input", + "form[tabindex=0]", + "form[tabindex=0] input", + "form[disabled] input", + "form[disabled][tabindex=-1] input", + "form[disabled][tabindex=0]", + "form[disabled][tabindex=0] input", + "fieldset input", + "fieldset{no-tabbable} a[tabindex=1]", + "fieldset{no-tabbable} a", + "fieldset:has(textarea) textarea", + "fieldset:has(select) select", + "fieldset:has(button) button", + "fieldset:has(a) a", + "fieldset[disabled] input", + "fieldset[disabled][tabindex=0]", + "fieldset[disabled][tabindex=0] input", + "fieldset[disabled][tabindex=-1] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", + "shadow-host[tabindex=0]", "embed[type=svg][tabindex=0]", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "svg a[xlink|href]", "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg a[focusable=false]", "svg rect[tabindex=0]{viewbox}", @@ -1204,14 +1734,15 @@ "input[tabindex=hello]", "[tabindex=3 ]", "div[tabindex=0]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset input", - "fieldset[disabled] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", - "a{flexbox}" + "table tbody tr{collapse} td{visible} a", + "a{flexbox}", + "[tabindex=-1]{flexbox} > span[tabindex=0]", + "span{flexbox} > span[tabindex=0]", + "div{flexbox} > span{order:2} > input", + "div{flexbox} > span{order:1} > input" ] } } \ No newline at end of file diff --git a/tests/focusable/data/ie-12.json b/tests/focusable/data/ie-12.json index 0489ff15..b54a1686 100644 --- a/tests/focusable/data/ie-12.json +++ b/tests/focusable/data/ie-12.json @@ -16,6 +16,8 @@ }, "focusable": [ "body", + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -36,20 +38,25 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[tabindex=-1]", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a > img[ismap]", "a[tabindex=-1]:has([ismap])", @@ -60,6 +67,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio", "audio[controls]", "audio[controls][tabindex=-1]", @@ -70,11 +81,12 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "[contenteditable]:empty", @@ -96,11 +108,13 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "span{user-modify}[tabindex=-1]", "canvas > input", @@ -108,9 +122,17 @@ "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]" ], "focusEvents": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -131,16 +153,18 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", "area[href].upper", - "map.invalid-image area[href].upper", + "firefox-bug-1116126", "area[href].upper", "area[href][tabindex=-1].upper", "area[tabindex=-1]", @@ -150,6 +174,9 @@ "img[tabindex=-1] area", "img[tabindex=-1] area[href].lower", "img[tabindex=-1] area[href].upper", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", + "map.invalid-image area[href].upper", "a:has([ismap])", "a > img[ismap]", "a[tabindex=-1]:has([ismap])", @@ -160,6 +187,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio", "audio[controls]", "audio[controls][tabindex=-1]", @@ -170,11 +201,12 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "[contenteditable]:empty", @@ -196,11 +228,13 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "span{user-modify}[tabindex=-1]", "canvas > input", @@ -208,14 +242,22 @@ "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]" ], "focusRedirection": [ "img[usemap].first --- area[href].upper", - "img[usemap].invalid --- map.invalid-image area[href].upper", "img[usemap].second --- area[href].upper", "img[usemap].focusable --- area[href][tabindex=-1].upper", - "img[usemap][tabindex=-1] --- img[tabindex=-1] area[href].upper" + "img[usemap][tabindex=-1] --- img[tabindex=-1] area[href].upper", + "img[usemap].invalid --- map.invalid-image area[href].upper" + ], + "focusEncapsulation": [ + "iframe{focusable} -> input --- iframe{focusable}", + "iframe{focusable}[tabindex=-1] -> input --- iframe{focusable}[tabindex=-1]" ], "noFocusMethod": [ "svg", @@ -228,20 +270,22 @@ "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[tabindex=-1] a[xlink|href] text", - "svg text", - "svg rect", + "svg[tabindex=-1] text", + "svg[tabindex=-1] rect", "svg[focusable=false]", "svg[focusable=false] a[xlink|href]", "svg[focusable=false] a[xlink|href] text", - "svg text", - "svg rect", + "svg[focusable=false] text", + "svg[focusable=false] rect", "svg:has(a[tabindex=0])", "svg a[xlink|href][tabindex=0]", "svg a[xlink|href][tabindex=0] text", - "svg text", + "svg a[xlink|href][tabindex=1]", + "svg a[xlink|href][tabindex=1] text", + "svg:has(a[tabindex=0]) text", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", - "svg rect", + "svg:has(a[tabindex=0]) rect", "svg a[focusable=false]", "rect", "svg{viewbox}", @@ -251,8 +295,8 @@ "svg:has(a[tabindex=-1])", "svg a[xlink|href][tabindex=-1]", "svg a[xlink|href][tabindex=-1] text", - "svg text", - "svg rect", + "svg:has(a[tabindex=-1]) text", + "svg:has(a[tabindex=-1]) rect", "svg{tiny}", "svg{tiny} rect", "svg{tiny} rect[tabindex=0]", @@ -265,10 +309,102 @@ "svg{tiny} rect[focusable=false][tabindex=0]", "svg{tiny}[focusable=false]", "svg{tiny}[focusable=false] a", - "rect" + "rect", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg text[focusable=true]", + "script", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "script", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg svg a[focusable=false]", + "embed[type=svg] -> file:svg svg text[focusable=true]", + "script", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "script", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg svg a[focusable=false]", + "object[src=svg] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][height=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg text[focusable=true]", + "script" ], "tabOrder": [ + "input[tabindex=1]", "[tabindex=1]", + "input[tabindex=1]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -282,29 +418,65 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href].upper", "area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a > img[ismap]", "a[tabindex=-1] > img[ismap]", "a:has([ismap][tabindex=-1])", - "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", "iframe{focusable}", + "iframe{focusable} -> input", + "iframe[src=svg] -> file:svg", + "iframe[src=svg]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "video[controls]", + "embed[type=svg] -> file:svg", "embed[type=svg]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg", "embed[type=svg][tabindex=0]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", + "object[src=svg] -> file:svg", "object[src=svg]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg", + "object[src=svg][tabindex=0]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg", "object[src=svg][height=0]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", "svg", "svg a[xlink|href]", "svg rect[focusable=true]", @@ -313,6 +485,7 @@ "svg[focusable=false] a[xlink|href]", "svg:has(a[tabindex=0])", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg{viewbox}", "svg rect[focusable=true]{viewbox}", "svg:has(a[tabindex=-1])", @@ -332,10 +505,12 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "canvas > input", "canvas > a", @@ -344,6 +519,7 @@ "tabIndex": { "html": 0, "body": 0, + "input[tabindex=1]": 1, "input[type=text]": 0, "input[type=text][tabindex=-1]": -1, "input[type=password]": 0, @@ -367,35 +543,40 @@ "label": 0, "label[tabindex=-1]": -1, "label[tabindex=0]": 0, - "label[for=\"label-target\"]": 0, - "label[for=\"label-target-focusable\"]": 0, - "label[for=\"label-target\"][tabindex=-1]": -1, + "label[for=label-target]": 0, + "label[for=label-target-focusable]": 0, + "label[for=label-target][tabindex=-1]": -1, + "form": 0, + "form input": 0, + "form[tabindex=-1]": -1, + "form[tabindex=-1] input": 0, + "form[disabled]": 0, + "form[disabled] input": 0, "input[type=text][disabled]": 0, "input[type=password][disabled]": 0, "input[type=checkbox][disabled]": 0, "input[type=radio][disabled]": 0, "input[type=submit][disabled]": 0, + "input[type=reset][disabled]": 0, "input[type=hidden][disabled]": 0, "select[disabled]": 0, "textarea[disabled]": 0, "button[type=button][disabled]": 0, + "label[disabled]": 0, "a[name]": 0, "a[href]": 0, - "a[href=\"\"]": 0, + "a[href=]": 0, "a[href][tabindex=-1]": -1, "span[href]": 0, "link[itemprop][href]": 0, "area[href].upper": 0, "area": 0, "area[href].lower": 0, - "map.invalid-image area[href].upper": 0, - "map.invalid-image area": 0, - "map.invalid-image area[href].lower": 0, "img[usemap].first": 0, - "img[usemap].invalid": 0, - "img[usemap=\"void\"]": 0, - "img": 0, + "firefox-bug-1116126": 0, "img[usemap].second": 0, + "img[usemap=void]": 0, + "img": 0, "area[href][tabindex=-1].upper": -1, "area[tabindex=-1]": -1, "area[href][tabindex=-1].lower": -1, @@ -404,6 +585,10 @@ "img[tabindex=-1] area": 0, "img[tabindex=-1] area[href].lower": 0, "img[usemap][tabindex=-1]": -1, + "map.invalid-image area[href].upper": 0, + "map.invalid-image area": 0, + "map.invalid-image area[href].lower": 0, + "img[usemap].invalid": 0, "a:has([ismap])": 0, "a > img[ismap]": 0, "a[tabindex=-1]:has([ismap])": -1, @@ -414,6 +599,11 @@ "iframe[tabindex=-1]": -1, "iframe{focusable}": 0, "iframe{focusable}[tabindex=-1]": -1, + "iframe[src=svg]": 0, + "iframe[src=svg][tabindex=-1]": -1, + "shadow-host": 0, + "shadow-host[tabindex=-1]": -1, + "shadow-host[tabindex=0]": 0, "audio": 0, "audio[controls]": 0, "audio[controls][tabindex=-1]": -1, @@ -468,15 +658,20 @@ "details a[href]": 0, "details[tabindex=-1]": -1, "details[tabindex=-1] summary": 0, + "details[tabindex=-1] a[href]": 0, + "details:has(summary[tabindex=-1])": 0, "details summary[tabindex=-1]": -1, + "details:has(summary[tabindex=-1]) a[href]": 0, "details[open]": 0, "details[open] summary": 0, "details[open] a[href]": 0, - "object[src=swf]": -1, + "object[src=swf]": 0, + "object[src=swf][tabindex=0]": 0, "object[src=swf][tabindex=-1]": -1, "object[src=swf][height=0]": 0, "object[src=svg]": 0, "object[src=svg][tabindex=-1]": -1, + "object[src=svg][tabindex=0]": 0, "object[src=svg][height=0]": 0, "map.object area[href].upper": 0, "map.object area": 0, @@ -492,7 +687,7 @@ "[tabindex=+2]": 2, "[tabindex= +2]": 2, "input[tabindex=hello]": 0, - "[tabindex=\"\"]": 0, + "[tabindex=]": 0, "[tabindex=hello]": 0, "[tabindex=3 ]": 3, "[tabindex=3x]": 0, @@ -535,18 +730,24 @@ "table tbody tr{collapse}": 0, "table tbody tr{collapse} td": 0, "table tbody tr{collapse} td a": 0, + "table tbody tr{collapse} td a{visible}": 0, "table tbody tr{collapse} td{visible}": 0, "table tbody tr{collapse} td{visible} a": 0, - "table tbody tr{collapse} td a{visible}": 0, "{none} > a": 0, "{none} > a{inline}": 0, "a{none}": 0, "div{no-dimension}": 0, "a{flexbox}": 0, "a{flexbox} > span": 0, - "[tabindex=\"-1\"]{flexbox}": -1, - "[tabindex=\"-1\"]{flexbox} > span1": 0, - "[tabindex=\"-1\"]{flexbox} > span2": 0, + "[tabindex=-1]{flexbox}": -1, + "[tabindex=-1]{flexbox} > span1": 0, + "[tabindex=-1]{flexbox} > span2": 0, + "div{flexbox}": 0, + "div{flexbox} span{order:2}": 0, + "div{flexbox} span{order:2} input": 0, + "div{flexbox} span{order:1}": 0, + "div{flexbox} span{order:1} input": 0, + "span{flexbox}": 0, "span{user-modify}": 0, "span{user-modify}[tabindex=-1]": -1, "canvas": 0, @@ -555,10 +756,20 @@ "canvas > a": 0, "canvas > a[tabindex=-1]": -1, "canvas > [tabindex=0]": 0, - "canvas > [tabindex=-1]": -1 + "canvas > [tabindex=-1]": -1, + "iframe -> body": 0, + "iframe[tabindex=-1] -> body": 0, + "iframe{focusable} -> body": 0, + "iframe{focusable} -> input": 0, + "iframe{focusable} -> input[tabindex=1]": 1, + "iframe{focusable}[tabindex=-1] -> body": 0, + "iframe{focusable}[tabindex=-1] -> input": 0, + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]": 1 }, "ally": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -579,19 +790,24 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[tabindex=-1]", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -600,6 +816,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio", "audio[controls]", "audio[controls][tabindex=-1]", @@ -609,11 +829,12 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "[contenteditable]:empty", @@ -635,11 +856,13 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", @@ -649,6 +872,8 @@ "canvas > [tabindex=-1]" ], "focusableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -669,20 +894,25 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[tabindex=-1]", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a > img[ismap]", "a[tabindex=-1]:has([ismap])", @@ -693,6 +923,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio", "audio[controls]", "audio[controls][tabindex=-1]", @@ -702,11 +936,12 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "[contenteditable]:empty", @@ -728,11 +963,13 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "span{user-modify}[tabindex=-1]", "canvas > input", @@ -743,6 +980,8 @@ "canvas > [tabindex=-1]" ], "tabbable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -753,22 +992,29 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", + "firefox-bug-1116126", "map.invalid-image area[href].upper", "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", "audio[controls]", "video[controls]", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -784,15 +1030,19 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" ], "tabbableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -803,10 +1053,14 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", + "firefox-bug-1116126", "map.invalid-image area[href].upper", "map.invalid-image area[href].lower", "a:has([ismap])", @@ -815,12 +1069,15 @@ "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", "audio[controls]", "video[controls]", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -836,10 +1093,12 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "canvas > input", "canvas > a", @@ -847,6 +1106,7 @@ ], "onlyTabbable": [ "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg", "svg a[xlink|href]", @@ -856,6 +1116,7 @@ "svg[focusable=false] a[xlink|href]", "svg:has(a[tabindex=0])", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg{viewbox}", "svg rect[focusable=true]{viewbox}", "svg:has(a[tabindex=-1])", @@ -864,10 +1125,45 @@ "svg{tiny} rect[focusable=true]", "svg{tiny} a[tabindex=-1]", "svg{tiny} rect[focusable=true][tabindex=-1]", - "svg{tiny}[focusable=false] a" + "svg{tiny}[focusable=false] a", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]" ], "tabOrder": [ + "input[tabindex=1]", + "area[href].upper", + "area[href].lower", + "area[href].upper", + "area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "[tabindex=1]", + "input[tabindex=1]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -881,22 +1177,25 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", - "area[href].upper", - "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "a[href=]", + "firefox-bug-1116126", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", "audio[controls]", "video[controls]", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "[contenteditable]:empty", "[contenteditable]", @@ -908,10 +1207,12 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" @@ -919,6 +1220,8 @@ }, "jquery": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -939,25 +1242,33 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", "a > img[ismap][tabindex=-1]", "iframe[tabindex=-1]", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls][tabindex=-1]", "video[controls][tabindex=-1]", "embed[tabindex=-1]", @@ -968,15 +1279,17 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "svg a[xlink|href]", @@ -984,6 +1297,7 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -1004,7 +1318,7 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=3 ]", "div[tabindex=0]:empty", "div[tabindex=-1]:empty", @@ -1014,13 +1328,17 @@ "fieldset[disabled] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]" ], "tabOrder": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -1031,29 +1349,38 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", + "shadow-host[tabindex=0]", "embed[type=svg][tabindex=0]", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "svg a[xlink|href]", "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg a[focusable=false]", "svg rect[tabindex=0]{viewbox}", @@ -1073,9 +1400,11 @@ "fieldset[disabled] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", - "a{flexbox}" + "table tbody tr{collapse} td{visible} a", + "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input" ] } } \ No newline at end of file diff --git a/tests/focusable/data/ie-9.json b/tests/focusable/data/ie-9.json index 611e5888..de1512de 100644 --- a/tests/focusable/data/ie-9.json +++ b/tests/focusable/data/ie-9.json @@ -6,7 +6,7 @@ "name": "IE", "prerelease": null, "product": null, - "ua": "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)", + "ua": "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; GWX:QUALIFIED)", "version": "9.0", "os": { "architecture": 64, @@ -17,6 +17,8 @@ "focusable": [ "html", "body", + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -37,20 +39,24 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[tabindex=-1]", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a > img[ismap]", "a[tabindex=-1]:has([ismap])", @@ -61,6 +67,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio", "audio[controls]", "audio[controls][tabindex=-1]", @@ -103,9 +113,9 @@ "div{body-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "[contenteditable]:empty", "[contenteditable]", @@ -137,23 +147,35 @@ "table tfoot tr td", "table tbody tr td", "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", "table tbody tr{collapse} td{visible}", "table tbody tr{collapse} td{visible} a", - "table tbody tr{collapse} td a{visible}", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe -> body", + "iframe[tabindex=-1] -> body", + "iframe{focusable} -> body", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> body", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]" ], "focusEvents": [ "html", "body", + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -174,16 +196,17 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", "area[href].upper", - "map.invalid-image area[href].upper", + "firefox-bug-1116126", "area[href].upper", "area[href][tabindex=-1].upper", "area[tabindex=-1]", @@ -193,6 +216,9 @@ "img[tabindex=-1] area", "img[tabindex=-1] area[href].lower", "img[tabindex=-1] area[href].upper", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", + "map.invalid-image area[href].upper", "a:has([ismap])", "a > img[ismap]", "a[tabindex=-1]:has([ismap])", @@ -203,6 +229,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio", "audio[controls]", "audio[controls][tabindex=-1]", @@ -245,9 +275,9 @@ "div{body-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "[contenteditable]:empty", "[contenteditable]", @@ -279,26 +309,50 @@ "table tfoot tr td", "table tbody tr td", "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", "table tbody tr{collapse} td{visible}", "table tbody tr{collapse} td{visible} a", - "table tbody tr{collapse} td a{visible}", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe", + "iframe[tabindex=-1]", + "iframe{focusable}", + "iframe{focusable}", + "iframe{focusable}", + "iframe{focusable}[tabindex=-1]", + "iframe{focusable}[tabindex=-1]", + "iframe{focusable}[tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]" ], "focusRedirection": [ "img[usemap].first --- area[href].upper", - "img[usemap].invalid --- map.invalid-image area[href].upper", "img[usemap].second --- area[href].upper", "img[usemap].focusable --- area[href][tabindex=-1].upper", - "img[usemap][tabindex=-1] --- img[tabindex=-1] area[href].upper" + "img[usemap][tabindex=-1] --- img[tabindex=-1] area[href].upper", + "img[usemap].invalid --- map.invalid-image area[href].upper" + ], + "focusEncapsulation": [ + "iframe -> body --- iframe", + "iframe[tabindex=-1] -> body --- iframe[tabindex=-1]", + "iframe{focusable} -> body --- iframe{focusable}", + "iframe{focusable} -> input --- iframe{focusable}", + "iframe{focusable} -> input[tabindex=1] --- iframe{focusable}", + "iframe{focusable}[tabindex=-1] -> body --- iframe{focusable}[tabindex=-1]", + "iframe{focusable}[tabindex=-1] -> input --- iframe{focusable}[tabindex=-1]", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1] --- iframe{focusable}[tabindex=-1]" ], "noFocusMethod": [ "svg", @@ -311,20 +365,22 @@ "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[tabindex=-1] a[xlink|href] text", - "svg text", - "svg rect", + "svg[tabindex=-1] text", + "svg[tabindex=-1] rect", "svg[focusable=false]", "svg[focusable=false] a[xlink|href]", "svg[focusable=false] a[xlink|href] text", - "svg text", - "svg rect", + "svg[focusable=false] text", + "svg[focusable=false] rect", "svg:has(a[tabindex=0])", "svg a[xlink|href][tabindex=0]", "svg a[xlink|href][tabindex=0] text", - "svg text", + "svg a[xlink|href][tabindex=1]", + "svg a[xlink|href][tabindex=1] text", + "svg:has(a[tabindex=0]) text", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", - "svg rect", + "svg:has(a[tabindex=0]) rect", "svg a[focusable=false]", "rect", "svg{viewbox}", @@ -334,8 +390,8 @@ "svg:has(a[tabindex=-1])", "svg a[xlink|href][tabindex=-1]", "svg a[xlink|href][tabindex=-1] text", - "svg text", - "svg rect", + "svg:has(a[tabindex=-1]) text", + "svg:has(a[tabindex=-1]) rect", "svg{tiny}", "svg{tiny} rect", "svg{tiny} rect[tabindex=0]", @@ -348,10 +404,102 @@ "svg{tiny} rect[focusable=false][tabindex=0]", "svg{tiny}[focusable=false]", "svg{tiny}[focusable=false] a", - "rect" + "rect", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg text[focusable=true]", + "script", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "script", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg svg a[focusable=false]", + "embed[type=svg] -> file:svg svg text[focusable=true]", + "script", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "script", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg svg a[focusable=false]", + "object[src=svg] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "script", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][height=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg text[focusable=true]", + "script" ], "tabOrder": [ + "input[tabindex=1]", "[tabindex=1]", + "input[tabindex=1]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -365,33 +513,66 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href].upper", "area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a > img[ismap]", "a[tabindex=-1] > img[ismap]", "a:has([ismap][tabindex=-1])", "iframe -> body", "iframe", - "iframe{focusable} -> body", + "iframe{focusable} -> input[tabindex=1]", "iframe{focusable}", + "iframe{focusable} -> body", "iframe{focusable} -> input", + "iframe[src=svg] -> file:svg", + "iframe[src=svg]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "video[controls]", "embed", "embed[type=mp4]", + "embed[type=svg] -> file:svg", "embed[type=svg]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg", "embed[type=svg][tabindex=0]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=svg] -> file:svg", "object[src=svg]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg", + "object[src=svg][tabindex=0]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg", "object[src=svg][height=0]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", "svg", "svg a[xlink|href]", "svg rect[focusable=true]", @@ -400,6 +581,7 @@ "svg[focusable=false] a[xlink|href]", "svg:has(a[tabindex=0])", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg{viewbox}", "svg rect[focusable=true]{viewbox}", "svg:has(a[tabindex=-1])", @@ -423,10 +605,12 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]", @@ -435,6 +619,7 @@ "tabIndex": { "html": 0, "body": 0, + "input[tabindex=1]": 1, "input[type=text]": 0, "input[type=text][tabindex=-1]": -1, "input[type=password]": 0, @@ -458,35 +643,40 @@ "label": 0, "label[tabindex=-1]": -1, "label[tabindex=0]": 0, - "label[for=\"label-target\"]": 0, - "label[for=\"label-target-focusable\"]": 0, - "label[for=\"label-target\"][tabindex=-1]": -1, + "label[for=label-target]": 0, + "label[for=label-target-focusable]": 0, + "label[for=label-target][tabindex=-1]": -1, + "form": 0, + "form input": 0, + "form[tabindex=-1]": -1, + "form[tabindex=-1] input": 0, + "form[disabled]": 0, + "form[disabled] input": 0, "input[type=text][disabled]": 0, "input[type=password][disabled]": 0, "input[type=checkbox][disabled]": 0, "input[type=radio][disabled]": 0, "input[type=submit][disabled]": 0, + "input[type=reset][disabled]": 0, "input[type=hidden][disabled]": 0, "select[disabled]": 0, "textarea[disabled]": 0, "button[type=button][disabled]": 0, + "label[disabled]": 0, "a[name]": 0, "a[href]": 0, - "a[href=\"\"]": 0, + "a[href=]": 0, "a[href][tabindex=-1]": -1, "span[href]": 0, "link[itemprop][href]": 0, "area[href].upper": 0, "area": 0, "area[href].lower": 0, - "map.invalid-image area[href].upper": 0, - "map.invalid-image area": 0, - "map.invalid-image area[href].lower": 0, "img[usemap].first": 0, - "img[usemap].invalid": 0, - "img[usemap=\"void\"]": 0, - "img": 0, + "firefox-bug-1116126": 0, "img[usemap].second": 0, + "img[usemap=void]": 0, + "img": 0, "area[href][tabindex=-1].upper": -1, "area[tabindex=-1]": -1, "area[href][tabindex=-1].lower": -1, @@ -495,6 +685,10 @@ "img[tabindex=-1] area": 0, "img[tabindex=-1] area[href].lower": 0, "img[usemap][tabindex=-1]": -1, + "map.invalid-image area[href].upper": 0, + "map.invalid-image area": 0, + "map.invalid-image area[href].lower": 0, + "img[usemap].invalid": 0, "a:has([ismap])": 0, "a > img[ismap]": 0, "a[tabindex=-1]:has([ismap])": -1, @@ -505,6 +699,11 @@ "iframe[tabindex=-1]": -1, "iframe{focusable}": 0, "iframe{focusable}[tabindex=-1]": -1, + "iframe[src=svg]": 0, + "iframe[src=svg][tabindex=-1]": -1, + "shadow-host": 0, + "shadow-host[tabindex=-1]": -1, + "shadow-host[tabindex=0]": 0, "audio": 0, "audio[controls]": 0, "audio[controls][tabindex=-1]": -1, @@ -559,15 +758,20 @@ "details a[href]": 0, "details[tabindex=-1]": -1, "details[tabindex=-1] summary": 0, + "details[tabindex=-1] a[href]": 0, + "details:has(summary[tabindex=-1])": 0, "details summary[tabindex=-1]": -1, + "details:has(summary[tabindex=-1]) a[href]": 0, "details[open]": 0, "details[open] summary": 0, "details[open] a[href]": 0, - "object[src=swf]": -1, + "object[src=swf]": 0, + "object[src=swf][tabindex=0]": 0, "object[src=swf][tabindex=-1]": -1, "object[src=swf][height=0]": 0, "object[src=svg]": 0, "object[src=svg][tabindex=-1]": -1, + "object[src=svg][tabindex=0]": 0, "object[src=svg][height=0]": 0, "map.object area[href].upper": 0, "map.object area": 0, @@ -583,7 +787,7 @@ "[tabindex=+2]": 2, "[tabindex= +2]": 2, "input[tabindex=hello]": 0, - "[tabindex=\"\"]": 0, + "[tabindex=]": 0, "[tabindex=hello]": 0, "[tabindex=3 ]": 3, "[tabindex=3x]": 0, @@ -626,18 +830,24 @@ "table tbody tr{collapse}": 0, "table tbody tr{collapse} td": 0, "table tbody tr{collapse} td a": 0, + "table tbody tr{collapse} td a{visible}": 0, "table tbody tr{collapse} td{visible}": 0, "table tbody tr{collapse} td{visible} a": 0, - "table tbody tr{collapse} td a{visible}": 0, "{none} > a": 0, "{none} > a{inline}": 0, "a{none}": 0, "div{no-dimension}": 0, "a{flexbox}": 0, "a{flexbox} > span": 0, - "[tabindex=\"-1\"]{flexbox}": -1, - "[tabindex=\"-1\"]{flexbox} > span1": 0, - "[tabindex=\"-1\"]{flexbox} > span2": 0, + "[tabindex=-1]{flexbox}": -1, + "[tabindex=-1]{flexbox} > span1": 0, + "[tabindex=-1]{flexbox} > span2": 0, + "div{flexbox}": 0, + "div{flexbox} span{order:2}": 0, + "div{flexbox} span{order:2} input": 0, + "div{flexbox} span{order:1}": 0, + "div{flexbox} span{order:1} input": 0, + "span{flexbox}": 0, "span{user-modify}": 0, "span{user-modify}[tabindex=-1]": -1, "canvas": 0, @@ -646,10 +856,20 @@ "canvas > a": 0, "canvas > a[tabindex=-1]": -1, "canvas > [tabindex=0]": 0, - "canvas > [tabindex=-1]": -1 + "canvas > [tabindex=-1]": -1, + "iframe -> body": 0, + "iframe[tabindex=-1] -> body": 0, + "iframe{focusable} -> body": 0, + "iframe{focusable} -> input": 0, + "iframe{focusable} -> input[tabindex=1]": 1, + "iframe{focusable}[tabindex=-1] -> body": 0, + "iframe{focusable}[tabindex=-1] -> input": 0, + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]": 1 }, "ally": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -670,19 +890,24 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[tabindex=-1]", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -691,6 +916,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio", "audio[controls]", "audio[controls][tabindex=-1]", @@ -700,9 +929,9 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "[contenteditable]:empty", "[contenteditable]", @@ -734,12 +963,14 @@ "table tfoot tr td", "table tbody tr td", "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", "table tbody tr{collapse} td{visible}", "table tbody tr{collapse} td{visible} a", - "table tbody tr{collapse} td a{visible}", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", @@ -749,6 +980,8 @@ "canvas > [tabindex=-1]" ], "focusableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -769,20 +1002,25 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[tabindex=-1]", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a > img[ismap]", "a[tabindex=-1]:has([ismap])", @@ -793,6 +1031,11 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio", "audio[controls]", "audio[controls][tabindex=-1]", @@ -831,9 +1074,9 @@ "div{body-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "[contenteditable]:empty", "[contenteditable]", @@ -865,12 +1108,14 @@ "table tfoot tr td", "table tbody tr td", "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", "table tbody tr{collapse} td{visible}", "table tbody tr{collapse} td{visible} a", - "table tbody tr{collapse} td a{visible}", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", @@ -880,6 +1125,8 @@ "canvas > [tabindex=-1]" ], "tabbable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -890,21 +1137,26 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", + "firefox-bug-1116126", "map.invalid-image area[href].upper", "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", "audio[controls]", "video[controls]", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "[contenteditable]:empty", "[contenteditable]", @@ -924,15 +1176,19 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" ], "tabbableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -943,10 +1199,14 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", + "firefox-bug-1116126", "map.invalid-image area[href].upper", "map.invalid-image area[href].lower", "a:has([ismap])", @@ -955,11 +1215,12 @@ "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", "audio[controls]", "video[controls]", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "[contenteditable]:empty", "[contenteditable]", @@ -979,16 +1240,19 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" ], "onlyTabbable": [ "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg", "svg a[xlink|href]", @@ -998,6 +1262,7 @@ "svg[focusable=false] a[xlink|href]", "svg:has(a[tabindex=0])", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg{viewbox}", "svg rect[focusable=true]{viewbox}", "svg:has(a[tabindex=-1])", @@ -1006,16 +1271,45 @@ "svg{tiny} rect[focusable=true]", "svg{tiny} a[tabindex=-1]", "svg{tiny} rect[focusable=true][tabindex=-1]", - "svg{tiny}[focusable=false] a" + "svg{tiny}[focusable=false] a", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]" ], "tabOrder": [ + "input[tabindex=1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", "area[href].upper", "area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "[tabindex=1]", + "input[tabindex=1]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -1029,17 +1323,22 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", + "firefox-bug-1116126", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", "audio[controls]", "video[controls]", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "[contenteditable]:empty", "[contenteditable]", @@ -1055,10 +1354,12 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" @@ -1066,6 +1367,8 @@ }, "jquery": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -1086,25 +1389,33 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", "a > img[ismap][tabindex=-1]", "iframe[tabindex=-1]", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls][tabindex=-1]", "video[controls][tabindex=-1]", "embed[tabindex=-1]", @@ -1116,15 +1427,17 @@ "div{container-overflow-scroll}[tabindex=-1]", "details a[href]", "details[tabindex=-1]", - "details a[href]", + "details[tabindex=-1] a[href]", "details summary[tabindex=-1]", - "details a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "svg a[xlink|href]", @@ -1132,6 +1445,7 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -1152,7 +1466,7 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=3 ]", "div[tabindex=0]:empty", "div[tabindex=-1]:empty", @@ -1169,10 +1483,14 @@ "[hidden][tabindex=0] input", "table tbody tr td a", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]" ], "tabOrder": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -1183,29 +1501,38 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", + "shadow-host[tabindex=0]", "embed[type=svg][tabindex=0]", "details a[href]", - "details a[href]", - "details a[href]", + "details[tabindex=-1] a[href]", + "details:has(summary[tabindex=-1]) a[href]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "svg a[xlink|href]", "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg a[focusable=false]", "svg rect[tabindex=0]{viewbox}", @@ -1229,7 +1556,9 @@ "[hidden][tabindex=0]", "[hidden][tabindex=0] input", "table tbody tr td a", - "a{flexbox}" + "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input" ] } } \ No newline at end of file diff --git a/tests/focusable/data/ios-9.json b/tests/focusable/data/ios-9.json index 084b9f4f..91652df2 100644 --- a/tests/focusable/data/ios-9.json +++ b/tests/focusable/data/ios-9.json @@ -1,936 +1,1319 @@ { - "platform": { - "description": "Safari 9.0 on Apple iPhone (iOS 9.1)", - "layout": "WebKit", - "manufacturer": "Apple", - "name": "Safari", - "prerelease": null, - "product": "iPhone", - "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1", - "version": "9.0", - "os": { - "architecture": 32, - "family": "iOS", - "version": "9.1" - } - }, - "focusable": [ - "body", - "input[type=text]", - "input[type=text][tabindex=-1]", - "input[type=password]", - "input[type=password][tabindex=-1]", - "input[type=checkbox]", - "input[type=checkbox][tabindex=-1]", - "input[type=radio]", - "input[type=radio][tabindex=-1]", - "input[type=submit]", - "input[type=submit][tabindex=-1]", - "input[type=reset]", - "input[type=reset][tabindex=-1]", - "select", - "select[tabindex=-1]", - "textarea", - "textarea[tabindex=-1]", - "button[type=button]", - "button[type=button][tabindex=-1]", - "a[href]", - "a[href=\"\"]", - "a[href][tabindex=-1]", - "area[href].upper", - "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", - "img[tabindex=-1] area[href].upper", - "img[tabindex=-1] area[href].lower", - "img[usemap][tabindex=-1]", - "a:has([ismap])", - "a[tabindex=-1]:has([ismap])", - "a:has([ismap][tabindex=-1])", - "a > img[ismap][tabindex=-1]", - "iframe", - "iframe[tabindex=-1]", - "iframe{focusable}", - "iframe{focusable}[tabindex=-1]", - "audio[controls]", - "audio[controls][tabindex=-1]", - "video[controls]", - "video[controls][tabindex=-1]", - "embed[tabindex=-1]", - "embed[type=mp4][tabindex=-1]", - "embed[type=ogv]", - "embed[type=ogv][tabindex=-1]", - "embed[type=svg]", - "embed[type=svg][tabindex=-1]", - "embed[type=svg][tabindex=0]", - "keygen", - "keygen[tabindex=-1]", - "div{container-overflow-scroll}[tabindex=-1]", - "details summary", - "details[tabindex=-1]", - "details[tabindex=-1] summary", - "details summary[tabindex=-1]", - "details[open] summary", - "details[open] a[href]", - "object[src=swf]", - "object[src=swf][tabindex=-1]", - "object[src=swf][height=0]", - "object[src=svg]", - "object[src=svg][tabindex=-1]", - "object[src=svg][height=0]", - "svg a[xlink|href]", - "svg rect[onfocus]", - "svg[tabindex=-1]", - "svg[tabindex=-1] a[xlink|href]", - "svg[focusable=false] a[xlink|href]", - "svg a[xlink|href][tabindex=0]", - "svg rect[tabindex=0]", - "svg rect[tabindex=-1]", - "svg a[focusable=false]", - "svg rect[tabindex=0]{viewbox}", - "svg rect[tabindex=-1]{viewbox}", - "svg a[xlink|href][tabindex=-1]", - "svg{tiny} rect[tabindex=0]", - "svg{tiny} a[focusable=false]", - "svg{tiny} a[tabindex=-1]", - "svg{tiny} rect[focusable=true][tabindex=-1]", - "svg{tiny} rect[focusable=false][tabindex=0]", - "svg{tiny}[focusable=false] a", - "[contenteditable]:empty", - "[contenteditable]", - "[contenteditable][tabindex=-1]", - "[tabindex=-2]", - "[tabindex=-1]", - "[tabindex=0]", - "[tabindex=1]", - "[tabindex=+2]", - "[tabindex= +2]", - "input[tabindex=hello]", - "[tabindex=3 ]", - "[tabindex=3x]", - "div[tabindex=0]:empty", - "div[tabindex=-1]:empty", - "span[tabindex=0]:empty", - "span[tabindex=-1]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset[tabindex=-1][disabled]", - "fieldset input", - "{hidden} > a{visible}", - "{hidden} > {visible} > a", - "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", - "table tbody tr{collapse} td a{visible}", - "div{no-dimension}", - "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", - "span{user-modify}", - "span{user-modify}[tabindex=-1]", - "canvas > input", - "canvas > input[tabindex=-1]", - "canvas > a", - "canvas > a[tabindex=-1]", - "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" - ], - "focusEvents": [ - "input[type=text]", - "input[type=text][tabindex=-1]", - "input[type=password]", - "input[type=password][tabindex=-1]", - "input[type=checkbox]", - "input[type=checkbox][tabindex=-1]", - "input[type=radio]", - "input[type=radio][tabindex=-1]", - "input[type=submit]", - "input[type=submit][tabindex=-1]", - "input[type=reset]", - "input[type=reset][tabindex=-1]", - "select", - "select[tabindex=-1]", - "textarea", - "textarea[tabindex=-1]", - "button[type=button]", - "button[type=button][tabindex=-1]", - "input[type=text]", - "input[type=text][tabindex=-1]", - "input[type=text]", - "a[href]", - "a[href=\"\"]", - "a[href][tabindex=-1]", - "area[href].upper", - "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", - "img[tabindex=-1] area[href].upper", - "img[tabindex=-1] area[href].lower", - "img[usemap][tabindex=-1]", - "a:has([ismap])", - "a[tabindex=-1]:has([ismap])", - "a:has([ismap][tabindex=-1])", - "a > img[ismap][tabindex=-1]", - "iframe", - "iframe[tabindex=-1]", - "iframe{focusable}", - "iframe{focusable}[tabindex=-1]", - "audio[controls]", - "audio[controls][tabindex=-1]", - "video[controls]", - "video[controls][tabindex=-1]", - "embed[tabindex=-1]", - "embed[type=mp4][tabindex=-1]", - "embed[type=ogv]", - "embed[type=ogv][tabindex=-1]", - "embed[type=svg]", - "embed[type=svg][tabindex=-1]", - "embed[type=svg][tabindex=0]", - "keygen", - "keygen[tabindex=-1]", - "div{container-overflow-scroll}[tabindex=-1]", - "details summary", - "details[tabindex=-1]", - "details[tabindex=-1] summary", - "details summary[tabindex=-1]", - "details[open] summary", - "details[open] a[href]", - "object[src=swf]", - "object[src=swf][tabindex=-1]", - "object[src=swf][height=0]", - "object[src=svg]", - "object[src=svg][tabindex=-1]", - "object[src=svg][height=0]", - "svg", - "svg a[xlink|href]", - "svg a[xlink|href] text", - "svg text", - "svg rect", - "svg rect[onfocus]", - "svg rect[focusable=true]", - "svg[tabindex=-1]", - "svg[tabindex=-1] a[xlink|href]", - "svg[tabindex=-1] a[xlink|href] text", - "svg text", - "svg rect", - "svg[focusable=false]", - "svg[focusable=false] a[xlink|href]", - "svg[focusable=false] a[xlink|href] text", - "svg text", - "svg rect", - "svg:has(a[tabindex=0])", - "svg a[xlink|href][tabindex=0]", - "svg a[xlink|href][tabindex=0] text", - "svg text", - "svg rect[tabindex=0]", - "svg rect[tabindex=-1]", - "svg rect", - "svg a[focusable=false]", - "rect", - "svg{viewbox}", - "svg rect[tabindex=0]{viewbox}", - "svg rect[tabindex=-1]{viewbox}", - "svg rect[focusable=true]{viewbox}", - "svg:has(a[tabindex=-1])", - "svg a[xlink|href][tabindex=-1]", - "svg a[xlink|href][tabindex=-1] text", - "svg text", - "svg rect", - "svg{tiny}", - "svg{tiny} rect", - "svg{tiny} rect[tabindex=0]", - "svg{tiny} rect[focusable=true]", - "svg{tiny} a[focusable=false]", - "rect", - "svg{tiny} a[tabindex=-1]", - "rect", - "svg{tiny} rect[focusable=true][tabindex=-1]", - "svg{tiny} rect[focusable=false][tabindex=0]", - "svg{tiny}[focusable=false]", - "svg{tiny}[focusable=false] a", - "rect", - "[contenteditable]:empty", - "[contenteditable]", - "[contenteditable][tabindex=-1]", - "[tabindex=-2]", - "[tabindex=-1]", - "[tabindex=0]", - "[tabindex=1]", - "[tabindex=+2]", - "[tabindex= +2]", - "input[tabindex=hello]", - "[tabindex=3 ]", - "[tabindex=3x]", - "div[tabindex=0]:empty", - "div[tabindex=-1]:empty", - "span[tabindex=0]:empty", - "span[tabindex=-1]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset[tabindex=-1][disabled]", - "fieldset input", - "{hidden} > a{visible}", - "{hidden} > {visible} > a", - "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", - "table tbody tr{collapse} td a{visible}", - "div{no-dimension}", - "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", - "span{user-modify}", - "span{user-modify}[tabindex=-1]", - "canvas > input", - "canvas > input[tabindex=-1]", - "canvas > a", - "canvas > a[tabindex=-1]", - "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" - ], - "focusRedirection": [ - "label[for=\"label-target\"] --- input[type=text]", - "label[for=\"label-target-focusable\"] --- input[type=text][tabindex=-1]", - "label[for=\"label-target\"][tabindex=-1] --- input[type=text]", - "fieldset legend --- fieldset input" - ], - "noFocusMethod": [], - "tabOrder": [ - "input[type=text]", - "input[type=password]", - "select", - "textarea", - "[contenteditable]:empty", - "[contenteditable]", - "input[tabindex=hello]", - "fieldset input", - "span{user-modify}", - "canvas > input" - ], - "tabIndex": { - "html": -1, - "body": -1, - "input[type=text]": 0, - "input[type=text][tabindex=-1]": -1, - "input[type=password]": 0, - "input[type=password][tabindex=-1]": -1, - "input[type=checkbox]": 0, - "input[type=checkbox][tabindex=-1]": -1, - "input[type=radio]": 0, - "input[type=radio][tabindex=-1]": -1, - "input[type=submit]": 0, - "input[type=submit][tabindex=-1]": -1, - "input[type=reset]": 0, - "input[type=reset][tabindex=-1]": -1, - "input[type=hidden]": 0, - "input[type=hidden][tabindex=-1]": -1, - "select": 0, - "select[tabindex=-1]": -1, - "textarea": 0, - "textarea[tabindex=-1]": -1, - "button[type=button]": 0, - "button[type=button][tabindex=-1]": -1, - "label": -1, - "label[tabindex=-1]": -1, - "label[tabindex=0]": 0, - "label[for=\"label-target\"]": -1, - "label[for=\"label-target-focusable\"]": -1, - "label[for=\"label-target\"][tabindex=-1]": -1, - "input[type=text][disabled]": 0, - "input[type=password][disabled]": 0, - "input[type=checkbox][disabled]": 0, - "input[type=radio][disabled]": 0, - "input[type=submit][disabled]": 0, - "input[type=hidden][disabled]": 0, - "select[disabled]": 0, - "textarea[disabled]": 0, - "button[type=button][disabled]": 0, - "a[name]": 0, - "a[href]": 0, - "a[href=\"\"]": 0, - "a[href][tabindex=-1]": -1, - "span[href]": -1, - "link[itemprop][href]": -1, - "area[href].upper": 0, - "area": 0, - "area[href].lower": 0, - "map.invalid-image area[href].upper": 0, - "map.invalid-image area": 0, - "map.invalid-image area[href].lower": 0, - "img[usemap].first": -1, - "img[usemap].invalid": -1, - "img[usemap=\"void\"]": -1, - "img": -1, - "img[usemap].second": -1, - "area[href][tabindex=-1].upper": -1, - "area[tabindex=-1]": -1, - "area[href][tabindex=-1].lower": -1, - "img[usemap].focusable": -1, - "img[tabindex=-1] area[href].upper": 0, - "img[tabindex=-1] area": 0, - "img[tabindex=-1] area[href].lower": 0, - "img[usemap][tabindex=-1]": -1, - "a:has([ismap])": 0, - "a > img[ismap]": -1, - "a[tabindex=-1]:has([ismap])": -1, - "a[tabindex=-1] > img[ismap]": -1, - "a:has([ismap][tabindex=-1])": 0, - "a > img[ismap][tabindex=-1]": -1, - "iframe": 0, - "iframe[tabindex=-1]": -1, - "iframe{focusable}": 0, - "iframe{focusable}[tabindex=-1]": -1, - "audio": -1, - "audio[controls]": 0, - "audio[controls][tabindex=-1]": -1, - "video": -1, - "video[controls]": 0, - "video[controls][tabindex=-1]": -1, - "embed": -1, - "embed[tabindex=-1]": -1, - "embed[type=mp4]": -1, - "embed[type=mp4][tabindex=-1]": -1, - "embed[type=ogv]": 0, - "embed[type=ogv][tabindex=-1]": -1, - "embed[type=svg]": 0, - "embed[type=svg][tabindex=-1]": -1, - "embed[type=svg][tabindex=0]": 0, - "keygen": 0, - "keygen[tabindex=-1]": -1, - "div{scroll-container-horizontal}": -1, - "div{scroll-body-horizontal}": -1, - "div{scroll-container-horizontal-scroll-x}": -1, - "div{scroll-body-horizontal-scroll-x}": -1, - "div{scroll-container-horizontal-scroll-y}": -1, - "div{scroll-body-horizontal-scroll-y}": -1, - "div{scroll-container-vertical}": -1, - "div{scroll-body-vertical}": -1, - "div{scroll-container-vertical-scroll-x}": -1, - "div{scroll-body-vertical-scroll-x}": -1, - "div{scroll-container-vertical-scroll-y}": -1, - "div{scroll-body-vertical-scroll-y}": -1, - "div{scroll-container-overflow-scroll}": -1, - "div{scroll-body-overflow-scroll}": -1, - "div{scroll-container-overflow-hidden}": -1, - "div{scroll-body-overflow-hidden}": -1, - "div{scroll-container-overflow-visible}": -1, - "div{scroll-body-overflow-visible}": -1, - "div{container-overflow-scroll}": -1, - "div{body-overflow-scroll}": -1, - "div{container-overflow-auto}": -1, - "div{body-overflow-auto}": -1, - "span{scroll-container-overflow-scroll}": -1, - "span{scroll-body-overflow-scroll}": -1, - "section{scroll-container-overflow-scroll}": -1, - "section{scroll-body-overflow-scroll}": -1, - "div-span{scroll-container-overflow-scroll}": -1, - "div-span{scroll-body-overflow-scroll}": -1, - "div-section{scroll-container-overflow-scroll}": -1, - "div-section{scroll-body-overflow-scroll}": -1, - "div{container-overflow-scroll}[tabindex=-1]": -1, - "div{body-overflow-scroll}[tabindex=-1]": -1, - "details": -1, - "details summary": 0, - "details a[href]": 0, - "details[tabindex=-1]": -1, - "details[tabindex=-1] summary": 0, - "details summary[tabindex=-1]": -1, - "details[open]": -1, - "details[open] summary": 0, - "details[open] a[href]": 0, - "object[src=swf]": -1, - "object[src=swf][tabindex=-1]": -1, - "object[src=swf][height=0]": 0, - "object[src=svg]": 0, - "object[src=svg][tabindex=-1]": -1, - "object[src=svg][height=0]": 0, - "map.object area[href].upper": 0, - "map.object area": 0, - "map.object area[href].lower": 0, - "object[usemap]": -1, - "svg": -1, - "svg a[xlink|href]": 0, - "svg a[xlink|href] text": -1, - "svg text": -1, - "svg rect": -1, - "svg rect[onfocus]": 0, - "svg rect[focusable=true]": -1, - "svg[tabindex=-1]": -1, - "svg[tabindex=-1] a[xlink|href]": 0, - "svg[tabindex=-1] a[xlink|href] text": -1, - "svg[focusable=false]": -1, - "svg[focusable=false] a[xlink|href]": 0, - "svg[focusable=false] a[xlink|href] text": -1, - "svg:has(a[tabindex=0])": -1, - "svg a[xlink|href][tabindex=0]": 0, - "svg a[xlink|href][tabindex=0] text": -1, - "svg rect[tabindex=0]": 0, - "svg rect[tabindex=-1]": -1, - "svg a[focusable=false]": 0, - "svg{viewbox}": -1, - "svg rect[tabindex=0]{viewbox}": 0, - "svg rect[tabindex=-1]{viewbox}": -1, - "svg rect[focusable=true]{viewbox}": -1, - "svg:has(a[tabindex=-1])": -1, - "svg a[xlink|href][tabindex=-1]": -1, - "svg a[xlink|href][tabindex=-1] text": -1, - "svg{tiny}": -1, - "svg{tiny} rect": -1, - "svg{tiny} rect[tabindex=0]": 0, - "svg{tiny} rect[focusable=true]": -1, - "svg{tiny} a[focusable=false]": 0, - "svg{tiny} a[tabindex=-1]": -1, - "svg{tiny} rect[focusable=true][tabindex=-1]": -1, - "svg{tiny} rect[focusable=false][tabindex=0]": 0, - "svg{tiny}[focusable=false]": -1, - "svg{tiny}[focusable=false] a": 0, - "[contenteditable]:empty": 0, - "[contenteditable]": 0, - "[contenteditable][tabindex=-1]": -1, - "[tabindex=-2]": -2, - "[tabindex=-1]": -1, - "[tabindex=0]": 0, - "[tabindex=1]": 1, - "[tabindex=+2]": 2, - "[tabindex= +2]": 2, - "input[tabindex=hello]": 0, - "[tabindex=\"\"]": -1, - "[tabindex=hello]": -1, - "[tabindex=3 ]": 3, - "[tabindex=3x]": 3, - "div[tabindex=0]:empty": 0, - "div[tabindex=-1]:empty": -1, - "span[tabindex=0]:empty": 0, - "span[tabindex=-1]:empty": -1, - "fieldset[tabindex=0][disabled]": 0, - "fieldset[tabindex=-1][disabled]": -1, - "fieldset": 0, - "fieldset legend": -1, - "fieldset input": 0, - "fieldset:empty": 0, - "fieldset[disabled]": 0, - "fieldset[disabled] input": 0, - "[hidden]": -1, - "[hidden] input": 0, - "[hidden][tabindex=-1]": -1, - "[hidden][tabindex=-1] input": 0, - "[hidden][tabindex=0]": 0, - "[hidden][tabindex=0] input": 0, - "{hidden} > a": 0, - "{hidden} > a{visible}": 0, - "{hidden} > {visible} > a": 0, - "a{hidden}": 0, - "table": -1, - "table thead": -1, - "table thead tr": -1, - "table thead tr th": -1, - "table thead tr td": -1, - "table tfoot": -1, - "table tfoot tr": -1, - "table tfoot tr th": -1, - "table tfoot tr td": -1, - "table tbody": -1, - "table tbody tr": -1, - "table tbody tr th": -1, - "table tbody tr td": -1, - "table tbody tr td a": 0, - "table tbody tr{collapse}": -1, - "table tbody tr{collapse} td": -1, - "table tbody tr{collapse} td a": 0, - "table tbody tr{collapse} td{visible}": -1, - "table tbody tr{collapse} td{visible} a": 0, - "table tbody tr{collapse} td a{visible}": 0, - "{none} > a": 0, - "{none} > a{inline}": 0, - "a{none}": 0, - "div{no-dimension}": 0, - "a{flexbox}": 0, - "a{flexbox} > span": -1, - "[tabindex=\"-1\"]{flexbox}": -1, - "[tabindex=\"-1\"]{flexbox} > span1": -1, - "[tabindex=\"-1\"]{flexbox} > span2": -1, - "span{user-modify}": 0, - "span{user-modify}[tabindex=-1]": -1, - "canvas": -1, - "canvas > input": 0, - "canvas > input[tabindex=-1]": -1, - "canvas > a": 0, - "canvas > a[tabindex=-1]": -1, - "canvas > [tabindex=0]": 0, - "canvas > [tabindex=-1]": -1 - }, - "ally": { - "focusable": [ - "input[type=text]", - "input[type=text][tabindex=-1]", - "input[type=password]", - "input[type=password][tabindex=-1]", - "input[type=checkbox]", - "input[type=checkbox][tabindex=-1]", - "input[type=radio]", - "input[type=radio][tabindex=-1]", - "input[type=submit]", - "input[type=submit][tabindex=-1]", - "input[type=reset]", - "input[type=reset][tabindex=-1]", - "select", - "select[tabindex=-1]", - "textarea", - "textarea[tabindex=-1]", - "button[type=button]", - "button[type=button][tabindex=-1]", - "a[href]", - "a[href=\"\"]", - "a[href][tabindex=-1]", - "area[href].upper", - "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", - "img[tabindex=-1] area[href].upper", - "img[tabindex=-1] area[href].lower", - "img[usemap][tabindex=-1]", - "a:has([ismap])", - "a[tabindex=-1]:has([ismap])", - "a:has([ismap][tabindex=-1])", - "a > img[ismap][tabindex=-1]", - "iframe", - "iframe[tabindex=-1]", - "iframe{focusable}", - "iframe{focusable}[tabindex=-1]", - "audio[controls]", - "audio[controls][tabindex=-1]", - "video[controls]", - "video[controls][tabindex=-1]", - "div{container-overflow-scroll}[tabindex=-1]", - "details summary", - "details[tabindex=-1]", - "details[tabindex=-1] summary", - "details summary[tabindex=-1]", - "details[open] summary", - "details[open] a[href]", - "object[src=swf]", - "object[src=swf][tabindex=-1]", - "object[src=swf][height=0]", - "object[src=svg]", - "object[src=svg][tabindex=-1]", - "object[src=svg][height=0]", - "svg a[xlink|href]", - "svg[tabindex=-1]", - "svg[tabindex=-1] a[xlink|href]", - "svg[focusable=false] a[xlink|href]", - "svg a[xlink|href][tabindex=0]", - "svg rect[tabindex=0]", - "svg rect[tabindex=-1]", - "svg a[focusable=false]", - "svg rect[tabindex=0]{viewbox}", - "svg rect[tabindex=-1]{viewbox}", - "svg a[xlink|href][tabindex=-1]", - "svg{tiny} rect[tabindex=0]", - "svg{tiny} a[focusable=false]", - "svg{tiny} a[tabindex=-1]", - "svg{tiny} rect[focusable=true][tabindex=-1]", - "svg{tiny} rect[focusable=false][tabindex=0]", - "svg{tiny}[focusable=false] a", - "[contenteditable]:empty", - "[contenteditable]", - "[contenteditable][tabindex=-1]", - "[tabindex=-2]", - "[tabindex=-1]", - "[tabindex=0]", - "[tabindex=1]", - "[tabindex=+2]", - "[tabindex= +2]", - "input[tabindex=hello]", - "[tabindex=3 ]", - "[tabindex=3x]", - "div[tabindex=0]:empty", - "div[tabindex=-1]:empty", - "span[tabindex=0]:empty", - "span[tabindex=-1]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset[tabindex=-1][disabled]", - "fieldset input", - "{hidden} > a{visible}", - "{hidden} > {visible} > a", - "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", - "table tbody tr{collapse} td a{visible}", - "div{no-dimension}", - "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", - "span{user-modify}[tabindex=-1]", - "canvas > input", - "canvas > input[tabindex=-1]", - "canvas > a", - "canvas > a[tabindex=-1]", - "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" - ], - "focusableStrict": [ - "input[type=text]", - "input[type=text][tabindex=-1]", - "input[type=password]", - "input[type=password][tabindex=-1]", - "input[type=checkbox]", - "input[type=checkbox][tabindex=-1]", - "input[type=radio]", - "input[type=radio][tabindex=-1]", - "input[type=submit]", - "input[type=submit][tabindex=-1]", - "input[type=reset]", - "input[type=reset][tabindex=-1]", - "select", - "select[tabindex=-1]", - "textarea", - "textarea[tabindex=-1]", - "button[type=button]", - "button[type=button][tabindex=-1]", - "a[href]", - "a[href=\"\"]", - "a[href][tabindex=-1]", - "area[href].upper", - "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", - "img[tabindex=-1] area[href].upper", - "img[tabindex=-1] area[href].lower", - "img[usemap][tabindex=-1]", - "a:has([ismap])", - "a[tabindex=-1]:has([ismap])", - "a:has([ismap][tabindex=-1])", - "a > img[ismap][tabindex=-1]", - "iframe", - "iframe[tabindex=-1]", - "iframe{focusable}", - "iframe{focusable}[tabindex=-1]", - "audio[controls]", - "audio[controls][tabindex=-1]", - "video[controls]", - "video[controls][tabindex=-1]", - "div{container-overflow-scroll}[tabindex=-1]", - "details summary", - "details[tabindex=-1]", - "details[tabindex=-1] summary", - "details summary[tabindex=-1]", - "details[open] summary", - "details[open] a[href]", - "object[src=swf]", - "object[src=swf][tabindex=-1]", - "object[src=swf][height=0]", - "object[src=svg]", - "object[src=svg][tabindex=-1]", - "object[src=svg][height=0]", - "svg a[xlink|href]", - "svg[tabindex=-1]", - "svg[tabindex=-1] a[xlink|href]", - "svg[focusable=false] a[xlink|href]", - "svg a[xlink|href][tabindex=0]", - "svg rect[tabindex=0]", - "svg rect[tabindex=-1]", - "svg a[focusable=false]", - "svg rect[tabindex=0]{viewbox}", - "svg rect[tabindex=-1]{viewbox}", - "svg a[xlink|href][tabindex=-1]", - "svg{tiny} rect[tabindex=0]", - "svg{tiny} a[focusable=false]", - "svg{tiny} a[tabindex=-1]", - "svg{tiny} rect[focusable=true][tabindex=-1]", - "svg{tiny} rect[focusable=false][tabindex=0]", - "svg{tiny}[focusable=false] a", - "[contenteditable]:empty", - "[contenteditable]", - "[contenteditable][tabindex=-1]", - "[tabindex=-2]", - "[tabindex=-1]", - "[tabindex=0]", - "[tabindex=1]", - "[tabindex=+2]", - "[tabindex= +2]", - "input[tabindex=hello]", - "[tabindex=3 ]", - "[tabindex=3x]", - "div[tabindex=0]:empty", - "div[tabindex=-1]:empty", - "span[tabindex=0]:empty", - "span[tabindex=-1]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset[tabindex=-1][disabled]", - "fieldset input", - "{hidden} > a{visible}", - "{hidden} > {visible} > a", - "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", - "table tbody tr{collapse} td a{visible}", - "div{no-dimension}", - "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", - "span{user-modify}", - "span{user-modify}[tabindex=-1]", - "canvas > input", - "canvas > input[tabindex=-1]", - "canvas > a", - "canvas > a[tabindex=-1]", - "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" - ], - "tabbable": [ - "input[type=text]", - "input[type=password]", - "select", - "textarea", - "[contenteditable]:empty", - "[contenteditable]", - "input[tabindex=hello]", - "fieldset input", - "canvas > input" - ], - "tabbableStrict": [ - "input[type=text]", - "input[type=password]", - "select", - "textarea", - "[contenteditable]:empty", - "[contenteditable]", - "input[tabindex=hello]", - "fieldset input", - "span{user-modify}", - "canvas > input" - ], - "onlyTabbable": [], - "tabOrder": [ - "input[type=text]", - "input[type=password]", - "select", - "textarea", - "[contenteditable]:empty", - "[contenteditable]", - "input[tabindex=hello]", - "fieldset input", - "canvas > input" - ] - }, - "jquery": { - "focusable": [ - "input[type=text]", - "input[type=text][tabindex=-1]", - "input[type=password]", - "input[type=password][tabindex=-1]", - "input[type=checkbox]", - "input[type=checkbox][tabindex=-1]", - "input[type=radio]", - "input[type=radio][tabindex=-1]", - "input[type=submit]", - "input[type=submit][tabindex=-1]", - "input[type=reset]", - "input[type=reset][tabindex=-1]", - "select", - "select[tabindex=-1]", - "textarea", - "textarea[tabindex=-1]", - "button[type=button]", - "button[type=button][tabindex=-1]", - "label[tabindex=-1]", - "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", - "a[href]", - "a[href=\"\"]", - "a[href][tabindex=-1]", - "area[href].upper", - "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", - "area[href][tabindex=-1].upper", - "area[href][tabindex=-1].lower", - "img[tabindex=-1] area[href].upper", - "img[tabindex=-1] area[href].lower", - "img[usemap][tabindex=-1]", - "a:has([ismap])", - "a[tabindex=-1]:has([ismap])", - "a:has([ismap][tabindex=-1])", - "a > img[ismap][tabindex=-1]", - "iframe[tabindex=-1]", - "iframe{focusable}[tabindex=-1]", - "audio[controls][tabindex=-1]", - "video[controls][tabindex=-1]", - "embed[tabindex=-1]", - "embed[type=mp4][tabindex=-1]", - "embed[type=ogv][tabindex=-1]", - "embed[type=svg][tabindex=-1]", - "embed[type=svg][tabindex=0]", - "keygen[tabindex=-1]", - "div{container-overflow-scroll}[tabindex=-1]", - "details[tabindex=-1]", - "details summary[tabindex=-1]", - "details[open] a[href]", - "object[src=swf]", - "object[src=swf][tabindex=-1]", - "object[src=swf][height=0]", - "object[src=svg]", - "object[src=svg][tabindex=-1]", - "object[src=svg][height=0]", - "object[usemap]", - "svg[tabindex=-1]", - "[contenteditable][tabindex=-1]", - "[tabindex=-2]", - "[tabindex=-1]", - "[tabindex=0]", - "[tabindex=1]", - "[tabindex=+2]", - "[tabindex= +2]", - "input[tabindex=hello]", - "[tabindex=\"\"]", - "[tabindex=3 ]", - "div[tabindex=0]:empty", - "div[tabindex=-1]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset[tabindex=-1][disabled]", - "fieldset input", - "fieldset[disabled] input", - "table tbody tr td a", - "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", - "table tbody tr{collapse} td a{visible}", - "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", - "span{user-modify}[tabindex=-1]" - ], - "tabOrder": [ - "input[type=text]", - "input[type=password]", - "input[type=checkbox]", - "input[type=radio]", - "input[type=submit]", - "input[type=reset]", - "select", - "textarea", - "button[type=button]", - "label[tabindex=0]", - "a[href]", - "a[href=\"\"]", - "area[href].upper", - "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", - "img[tabindex=-1] area[href].upper", - "img[tabindex=-1] area[href].lower", - "a:has([ismap])", - "a:has([ismap][tabindex=-1])", - "embed[type=svg][tabindex=0]", - "details[open] a[href]", - "object[src=swf][height=0]", - "object[src=svg]", - "object[src=svg][height=0]", - "object[usemap]", - "[tabindex=0]", - "[tabindex=1]", - "[tabindex=+2]", - "[tabindex= +2]", - "input[tabindex=hello]", - "[tabindex=\"\"]", - "[tabindex=3 ]", - "div[tabindex=0]:empty", - "fieldset[tabindex=0][disabled]", - "fieldset input", - "fieldset[disabled] input", - "table tbody tr td a", - "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", - "table tbody tr{collapse} td a{visible}", - "a{flexbox}" - ] - } + "platform": { + "description": "Safari 9.0 on Apple iPhone (iOS 9.2)", + "layout": "WebKit", + "manufacturer": "Apple", + "name": "Safari", + "prerelease": null, + "product": "iPhone", + "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13C75 Safari/601.1", + "version": "9.0", + "os": { + "architecture": 32, + "family": "iOS", + "version": "9.2" + } + }, + "focusable": [ + "body", + "input[tabindex=1]", + "input[tabindex=1]", + "input[type=text]", + "input[type=text][tabindex=-1]", + "input[type=password]", + "input[type=password][tabindex=-1]", + "input[type=checkbox]", + "input[type=checkbox][tabindex=-1]", + "input[type=radio]", + "input[type=radio][tabindex=-1]", + "input[type=submit]", + "input[type=submit][tabindex=-1]", + "input[type=reset]", + "input[type=reset][tabindex=-1]", + "select", + "select[tabindex=-1]", + "textarea", + "textarea[tabindex=-1]", + "button[type=button]", + "button[type=button][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", + "a[href]", + "a[href=]", + "a[href][tabindex=-1]", + "area[href].upper", + "area[href].lower", + "firefox-bug-1116126", + "img[tabindex=-1] area[href].upper", + "img[tabindex=-1] area[href].lower", + "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", + "a:has([ismap])", + "a[tabindex=-1]:has([ismap])", + "a:has([ismap][tabindex=-1])", + "a > img[ismap][tabindex=-1]", + "iframe", + "iframe[tabindex=-1]", + "iframe{focusable}", + "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", + "audio[controls]", + "audio[controls][tabindex=-1]", + "video[controls]", + "video[controls][tabindex=-1]", + "embed[tabindex=-1]", + "embed[type=mp4][tabindex=-1]", + "embed[type=ogv]", + "embed[type=ogv][tabindex=-1]", + "embed[type=svg]", + "embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=0]", + "keygen", + "keygen[tabindex=-1]", + "div{container-overflow-scroll}[tabindex=-1]", + "details summary", + "details[tabindex=-1]", + "details[tabindex=-1] summary", + "details summary[tabindex=-1]", + "details[open] summary", + "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", + "object[src=swf][tabindex=-1]", + "object[src=swf][height=0]", + "object[src=svg]", + "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", + "object[src=svg][height=0]", + "svg a[xlink|href]", + "svg rect[onfocus]", + "svg[tabindex=-1]", + "svg[tabindex=-1] a[xlink|href]", + "svg[focusable=false] a[xlink|href]", + "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", + "svg rect[tabindex=0]", + "svg rect[tabindex=-1]", + "svg a[focusable=false]", + "svg rect[tabindex=0]{viewbox}", + "svg rect[tabindex=-1]{viewbox}", + "svg a[xlink|href][tabindex=-1]", + "svg{tiny} rect[tabindex=0]", + "svg{tiny} a[focusable=false]", + "svg{tiny} a[tabindex=-1]", + "svg{tiny} rect[focusable=true][tabindex=-1]", + "svg{tiny} rect[focusable=false][tabindex=0]", + "svg{tiny}[focusable=false] a", + "[contenteditable]:empty", + "[contenteditable]", + "[contenteditable][tabindex=-1]", + "[tabindex=-2]", + "[tabindex=-1]", + "[tabindex=0]", + "[tabindex=1]", + "[tabindex=+2]", + "[tabindex= +2]", + "input[tabindex=hello]", + "[tabindex=3 ]", + "[tabindex=3x]", + "div[tabindex=0]:empty", + "div[tabindex=-1]:empty", + "span[tabindex=0]:empty", + "span[tabindex=-1]:empty", + "fieldset[tabindex=0][disabled]", + "fieldset[tabindex=-1][disabled]", + "fieldset input", + "{hidden} > a{visible}", + "{hidden} > {visible} > a", + "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", + "div{no-dimension}", + "a{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", + "span{user-modify}", + "span{user-modify}[tabindex=-1]", + "canvas > input", + "canvas > input[tabindex=-1]", + "canvas > a", + "canvas > a[tabindex=-1]", + "canvas > [tabindex=0]", + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]" + ], + "focusEvents": [ + "input[tabindex=1]", + "input[tabindex=1]", + "input[type=text]", + "input[type=text][tabindex=-1]", + "input[type=password]", + "input[type=password][tabindex=-1]", + "input[type=checkbox]", + "input[type=checkbox][tabindex=-1]", + "input[type=radio]", + "input[type=radio][tabindex=-1]", + "input[type=submit]", + "input[type=submit][tabindex=-1]", + "input[type=reset]", + "input[type=reset][tabindex=-1]", + "select", + "select[tabindex=-1]", + "textarea", + "textarea[tabindex=-1]", + "button[type=button]", + "button[type=button][tabindex=-1]", + "input[type=text]", + "input[type=text][tabindex=-1]", + "input[type=text]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", + "a[href]", + "a[href=]", + "a[href][tabindex=-1]", + "area[href].upper", + "area[href].lower", + "firefox-bug-1116126", + "img[tabindex=-1] area[href].upper", + "img[tabindex=-1] area[href].lower", + "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", + "a:has([ismap])", + "a[tabindex=-1]:has([ismap])", + "a:has([ismap][tabindex=-1])", + "a > img[ismap][tabindex=-1]", + "iframe", + "iframe[tabindex=-1]", + "iframe{focusable}", + "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", + "audio[controls]", + "audio[controls][tabindex=-1]", + "video[controls]", + "video[controls][tabindex=-1]", + "embed[tabindex=-1]", + "embed[type=mp4][tabindex=-1]", + "embed[type=ogv]", + "embed[type=ogv][tabindex=-1]", + "embed[type=svg]", + "embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=0]", + "keygen", + "keygen[tabindex=-1]", + "div{container-overflow-scroll}[tabindex=-1]", + "details summary", + "details[tabindex=-1]", + "details[tabindex=-1] summary", + "details summary[tabindex=-1]", + "details[open] summary", + "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", + "object[src=swf][tabindex=-1]", + "object[src=swf][height=0]", + "object[src=svg]", + "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", + "object[src=svg][height=0]", + "svg", + "svg a[xlink|href]", + "svg a[xlink|href] text", + "svg text", + "svg rect", + "svg rect[onfocus]", + "svg rect[focusable=true]", + "svg[tabindex=-1]", + "svg[tabindex=-1] a[xlink|href]", + "svg[tabindex=-1] a[xlink|href] text", + "svg[tabindex=-1] text", + "svg[tabindex=-1] rect", + "svg[focusable=false]", + "svg[focusable=false] a[xlink|href]", + "svg[focusable=false] a[xlink|href] text", + "svg[focusable=false] text", + "svg[focusable=false] rect", + "svg:has(a[tabindex=0])", + "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=0] text", + "svg a[xlink|href][tabindex=1]", + "svg a[xlink|href][tabindex=1] text", + "svg:has(a[tabindex=0]) text", + "svg rect[tabindex=0]", + "svg rect[tabindex=-1]", + "svg:has(a[tabindex=0]) rect", + "svg a[focusable=false]", + "rect", + "svg{viewbox}", + "svg rect[tabindex=0]{viewbox}", + "svg rect[tabindex=-1]{viewbox}", + "svg rect[focusable=true]{viewbox}", + "svg:has(a[tabindex=-1])", + "svg a[xlink|href][tabindex=-1]", + "svg a[xlink|href][tabindex=-1] text", + "svg:has(a[tabindex=-1]) text", + "svg:has(a[tabindex=-1]) rect", + "svg{tiny}", + "svg{tiny} rect", + "svg{tiny} rect[tabindex=0]", + "svg{tiny} rect[focusable=true]", + "svg{tiny} a[focusable=false]", + "rect", + "svg{tiny} a[tabindex=-1]", + "rect", + "svg{tiny} rect[focusable=true][tabindex=-1]", + "svg{tiny} rect[focusable=false][tabindex=0]", + "svg{tiny}[focusable=false]", + "svg{tiny}[focusable=false] a", + "rect", + "[contenteditable]:empty", + "[contenteditable]", + "[contenteditable][tabindex=-1]", + "[tabindex=-2]", + "[tabindex=-1]", + "[tabindex=0]", + "[tabindex=1]", + "[tabindex=+2]", + "[tabindex= +2]", + "input[tabindex=hello]", + "[tabindex=3 ]", + "[tabindex=3x]", + "div[tabindex=0]:empty", + "div[tabindex=-1]:empty", + "span[tabindex=0]:empty", + "span[tabindex=-1]:empty", + "fieldset[tabindex=0][disabled]", + "fieldset[tabindex=-1][disabled]", + "fieldset input", + "{hidden} > a{visible}", + "{hidden} > {visible} > a", + "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", + "div{no-dimension}", + "a{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", + "span{user-modify}", + "span{user-modify}[tabindex=-1]", + "canvas > input", + "canvas > input[tabindex=-1]", + "canvas > a", + "canvas > a[tabindex=-1]", + "canvas > [tabindex=0]", + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg text[focusable=true]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg svg a[focusable=false]", + "embed[type=svg] -> file:svg svg text[focusable=true]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg svg a[focusable=false]", + "object[src=svg] -> file:svg svg text[focusable=true]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "object[src=svg][height=0] -> file:svg a[xlink|href] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][height=0] -> file:svg svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg text[focusable=true]" + ], + "focusRedirection": [ + "label[for=label-target] --- input[type=text]", + "label[for=label-target-focusable] --- input[type=text][tabindex=-1]", + "label[for=label-target][tabindex=-1] --- input[type=text]", + "fieldset legend --- fieldset input" + ], + "focusEncapsulation": [ + "iframe{focusable} -> input --- iframe{focusable}", + "iframe{focusable}[tabindex=-1] -> input --- iframe{focusable}[tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href] --- iframe[src=svg]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] --- iframe[src=svg][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href] --- embed[type=svg]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] --- embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] --- embed[type=svg][tabindex=0]", + "object[src=svg] -> file:svg a[xlink|href] --- object[src=svg]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] --- object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] --- object[src=svg][tabindex=0]" + ], + "noFocusMethod": [], + "tabOrder": [ + "object[src=svg][height=0]", + "input[tabindex=1]", + "input[type=text]", + "input[type=password]", + "select", + "textarea", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", + "firefox-bug-1116126", + "[contenteditable]:empty", + "[contenteditable]", + "input[tabindex=hello]", + "fieldset input", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", + "span{user-modify}", + "canvas > input" + ], + "tabIndex": { + "html": -1, + "body": -1, + "input[tabindex=1]": 1, + "input[type=text]": 0, + "input[type=text][tabindex=-1]": -1, + "input[type=password]": 0, + "input[type=password][tabindex=-1]": -1, + "input[type=checkbox]": 0, + "input[type=checkbox][tabindex=-1]": -1, + "input[type=radio]": 0, + "input[type=radio][tabindex=-1]": -1, + "input[type=submit]": 0, + "input[type=submit][tabindex=-1]": -1, + "input[type=reset]": 0, + "input[type=reset][tabindex=-1]": -1, + "input[type=hidden]": 0, + "input[type=hidden][tabindex=-1]": -1, + "select": 0, + "select[tabindex=-1]": -1, + "textarea": 0, + "textarea[tabindex=-1]": -1, + "button[type=button]": 0, + "button[type=button][tabindex=-1]": -1, + "label": -1, + "label[tabindex=-1]": -1, + "label[tabindex=0]": 0, + "label[for=label-target]": -1, + "label[for=label-target-focusable]": -1, + "label[for=label-target][tabindex=-1]": -1, + "form": -1, + "form input": 0, + "form[tabindex=-1]": -1, + "form[tabindex=-1] input": 0, + "form[disabled]": -1, + "form[disabled] input": 0, + "input[type=text][disabled]": 0, + "input[type=password][disabled]": 0, + "input[type=checkbox][disabled]": 0, + "input[type=radio][disabled]": 0, + "input[type=submit][disabled]": 0, + "input[type=reset][disabled]": 0, + "input[type=hidden][disabled]": 0, + "select[disabled]": 0, + "textarea[disabled]": 0, + "button[type=button][disabled]": 0, + "label[disabled]": -1, + "a[name]": 0, + "a[href]": 0, + "a[href=]": 0, + "a[href][tabindex=-1]": -1, + "span[href]": -1, + "link[itemprop][href]": -1, + "area[href].upper": 0, + "area": 0, + "area[href].lower": 0, + "img[usemap].first": -1, + "firefox-bug-1116126": 0, + "img[usemap].second": -1, + "img[usemap=void]": -1, + "img": -1, + "area[href][tabindex=-1].upper": -1, + "area[tabindex=-1]": -1, + "area[href][tabindex=-1].lower": -1, + "img[usemap].focusable": -1, + "img[tabindex=-1] area[href].upper": 0, + "img[tabindex=-1] area": 0, + "img[tabindex=-1] area[href].lower": 0, + "img[usemap][tabindex=-1]": -1, + "map.invalid-image area[href].upper": 0, + "map.invalid-image area": 0, + "map.invalid-image area[href].lower": 0, + "img[usemap].invalid": -1, + "a:has([ismap])": 0, + "a > img[ismap]": -1, + "a[tabindex=-1]:has([ismap])": -1, + "a[tabindex=-1] > img[ismap]": -1, + "a:has([ismap][tabindex=-1])": 0, + "a > img[ismap][tabindex=-1]": -1, + "iframe": 0, + "iframe[tabindex=-1]": -1, + "iframe{focusable}": 0, + "iframe{focusable}[tabindex=-1]": -1, + "iframe[src=svg]": 0, + "iframe[src=svg][tabindex=-1]": -1, + "shadow-host": -1, + "shadow-host[tabindex=-1]": -1, + "shadow-host[tabindex=0]": 0, + "audio": -1, + "audio[controls]": 0, + "audio[controls][tabindex=-1]": -1, + "video": -1, + "video[controls]": 0, + "video[controls][tabindex=-1]": -1, + "embed": -1, + "embed[tabindex=-1]": -1, + "embed[type=mp4]": -1, + "embed[type=mp4][tabindex=-1]": -1, + "embed[type=ogv]": 0, + "embed[type=ogv][tabindex=-1]": -1, + "embed[type=svg]": 0, + "embed[type=svg][tabindex=-1]": -1, + "embed[type=svg][tabindex=0]": 0, + "keygen": 0, + "keygen[tabindex=-1]": -1, + "div{scroll-container-horizontal}": -1, + "div{scroll-body-horizontal}": -1, + "div{scroll-container-horizontal-scroll-x}": -1, + "div{scroll-body-horizontal-scroll-x}": -1, + "div{scroll-container-horizontal-scroll-y}": -1, + "div{scroll-body-horizontal-scroll-y}": -1, + "div{scroll-container-vertical}": -1, + "div{scroll-body-vertical}": -1, + "div{scroll-container-vertical-scroll-x}": -1, + "div{scroll-body-vertical-scroll-x}": -1, + "div{scroll-container-vertical-scroll-y}": -1, + "div{scroll-body-vertical-scroll-y}": -1, + "div{scroll-container-overflow-scroll}": -1, + "div{scroll-body-overflow-scroll}": -1, + "div{scroll-container-overflow-hidden}": -1, + "div{scroll-body-overflow-hidden}": -1, + "div{scroll-container-overflow-visible}": -1, + "div{scroll-body-overflow-visible}": -1, + "div{container-overflow-scroll}": -1, + "div{body-overflow-scroll}": -1, + "div{container-overflow-auto}": -1, + "div{body-overflow-auto}": -1, + "span{scroll-container-overflow-scroll}": -1, + "span{scroll-body-overflow-scroll}": -1, + "section{scroll-container-overflow-scroll}": -1, + "section{scroll-body-overflow-scroll}": -1, + "div-span{scroll-container-overflow-scroll}": -1, + "div-span{scroll-body-overflow-scroll}": -1, + "div-section{scroll-container-overflow-scroll}": -1, + "div-section{scroll-body-overflow-scroll}": -1, + "div{container-overflow-scroll}[tabindex=-1]": -1, + "div{body-overflow-scroll}[tabindex=-1]": -1, + "details": -1, + "details summary": 0, + "details a[href]": 0, + "details[tabindex=-1]": -1, + "details[tabindex=-1] summary": 0, + "details[tabindex=-1] a[href]": 0, + "details:has(summary[tabindex=-1])": -1, + "details summary[tabindex=-1]": -1, + "details:has(summary[tabindex=-1]) a[href]": 0, + "details[open]": -1, + "details[open] summary": 0, + "details[open] a[href]": 0, + "object[src=swf]": 0, + "object[src=swf][tabindex=0]": 0, + "object[src=swf][tabindex=-1]": -1, + "object[src=swf][height=0]": 0, + "object[src=svg]": 0, + "object[src=svg][tabindex=-1]": -1, + "object[src=svg][tabindex=0]": 0, + "object[src=svg][height=0]": 0, + "map.object area[href].upper": 0, + "map.object area": 0, + "map.object area[href].lower": 0, + "object[usemap]": -1, + "svg": -1, + "svg a[xlink|href]": 0, + "svg a[xlink|href] text": -1, + "svg text": -1, + "svg rect": -1, + "svg rect[onfocus]": 0, + "svg rect[focusable=true]": -1, + "svg[tabindex=-1]": -1, + "svg[tabindex=-1] a[xlink|href]": 0, + "svg[tabindex=-1] a[xlink|href] text": -1, + "svg[tabindex=-1] text": -1, + "svg[tabindex=-1] rect": -1, + "svg[focusable=false]": -1, + "svg[focusable=false] a[xlink|href]": 0, + "svg[focusable=false] a[xlink|href] text": -1, + "svg[focusable=false] text": -1, + "svg[focusable=false] rect": -1, + "svg:has(a[tabindex=0])": -1, + "svg a[xlink|href][tabindex=0]": 0, + "svg a[xlink|href][tabindex=0] text": -1, + "svg a[xlink|href][tabindex=1]": 1, + "svg a[xlink|href][tabindex=1] text": -1, + "svg:has(a[tabindex=0]) text": -1, + "svg rect[tabindex=0]": 0, + "svg rect[tabindex=-1]": -1, + "svg:has(a[tabindex=0]) rect": -1, + "svg a[focusable=false]": 0, + "svg{viewbox}": -1, + "svg rect[tabindex=0]{viewbox}": 0, + "svg rect[tabindex=-1]{viewbox}": -1, + "svg rect[focusable=true]{viewbox}": -1, + "svg:has(a[tabindex=-1])": -1, + "svg a[xlink|href][tabindex=-1]": -1, + "svg a[xlink|href][tabindex=-1] text": -1, + "svg:has(a[tabindex=-1]) text": -1, + "svg:has(a[tabindex=-1]) rect": -1, + "svg{tiny}": -1, + "svg{tiny} rect": -1, + "svg{tiny} rect[tabindex=0]": 0, + "svg{tiny} rect[focusable=true]": -1, + "svg{tiny} a[focusable=false]": 0, + "svg{tiny} a[tabindex=-1]": -1, + "svg{tiny} rect[focusable=true][tabindex=-1]": -1, + "svg{tiny} rect[focusable=false][tabindex=0]": 0, + "svg{tiny}[focusable=false]": -1, + "svg{tiny}[focusable=false] a": 0, + "[contenteditable]:empty": 0, + "[contenteditable]": 0, + "[contenteditable][tabindex=-1]": -1, + "[tabindex=-2]": -2, + "[tabindex=-1]": -1, + "[tabindex=0]": 0, + "[tabindex=1]": 1, + "[tabindex=+2]": 2, + "[tabindex= +2]": 2, + "input[tabindex=hello]": 0, + "[tabindex=]": -1, + "[tabindex=hello]": -1, + "[tabindex=3 ]": 3, + "[tabindex=3x]": 3, + "div[tabindex=0]:empty": 0, + "div[tabindex=-1]:empty": -1, + "span[tabindex=0]:empty": 0, + "span[tabindex=-1]:empty": -1, + "fieldset[tabindex=0][disabled]": 0, + "fieldset[tabindex=-1][disabled]": -1, + "fieldset": 0, + "fieldset legend": -1, + "fieldset input": 0, + "fieldset:empty": 0, + "fieldset[disabled]": 0, + "fieldset[disabled] input": 0, + "[hidden]": -1, + "[hidden] input": 0, + "[hidden][tabindex=-1]": -1, + "[hidden][tabindex=-1] input": 0, + "[hidden][tabindex=0]": 0, + "[hidden][tabindex=0] input": 0, + "{hidden} > a": 0, + "{hidden} > a{visible}": 0, + "{hidden} > {visible} > a": 0, + "a{hidden}": 0, + "table": -1, + "table thead": -1, + "table thead tr": -1, + "table thead tr th": -1, + "table thead tr td": -1, + "table tfoot": -1, + "table tfoot tr": -1, + "table tfoot tr th": -1, + "table tfoot tr td": -1, + "table tbody": -1, + "table tbody tr": -1, + "table tbody tr th": -1, + "table tbody tr td": -1, + "table tbody tr td a": 0, + "table tbody tr{collapse}": -1, + "table tbody tr{collapse} td": -1, + "table tbody tr{collapse} td a": 0, + "table tbody tr{collapse} td a{visible}": 0, + "table tbody tr{collapse} td{visible}": -1, + "table tbody tr{collapse} td{visible} a": 0, + "{none} > a": 0, + "{none} > a{inline}": 0, + "a{none}": 0, + "div{no-dimension}": 0, + "a{flexbox}": 0, + "a{flexbox} > span": -1, + "[tabindex=-1]{flexbox}": -1, + "[tabindex=-1]{flexbox} > span1": -1, + "[tabindex=-1]{flexbox} > span2": -1, + "div{flexbox}": -1, + "div{flexbox} span{order:2}": -1, + "div{flexbox} span{order:2} input": 0, + "div{flexbox} span{order:1}": -1, + "div{flexbox} span{order:1} input": 0, + "span{flexbox}": -1, + "span{user-modify}": 0, + "span{user-modify}[tabindex=-1]": -1, + "canvas": -1, + "canvas > input": 0, + "canvas > input[tabindex=-1]": -1, + "canvas > a": 0, + "canvas > a[tabindex=-1]": -1, + "canvas > [tabindex=0]": 0, + "canvas > [tabindex=-1]": -1, + "iframe -> body": -1, + "iframe[tabindex=-1] -> body": -1, + "iframe{focusable} -> body": -1, + "iframe{focusable} -> input": 0, + "iframe{focusable} -> input[tabindex=1]": 1, + "iframe{focusable}[tabindex=-1] -> body": -1, + "iframe{focusable}[tabindex=-1] -> input": 0, + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]": 1, + "iframe[src=svg] -> file:svg a[xlink|href]": 0, + "iframe[src=svg] -> file:svg a[xlink|href] text": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "iframe[src=svg] -> file:svg a[focusable=false]": 0, + "iframe[src=svg] -> file:svg svg a[focusable=false]": -1, + "iframe[src=svg] -> file:svg svg text[focusable=true]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg] -> file:svg a[xlink|href]": 0, + "embed[type=svg] -> file:svg a[xlink|href] text": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg] -> file:svg a[focusable=false]": 0, + "embed[type=svg] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]": 0, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]": 0, + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]": -1, + "object[src=svg] -> file:svg a[xlink|href]": 0, + "object[src=svg] -> file:svg a[xlink|href] text": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg] -> file:svg a[focusable=false]": 0, + "object[src=svg] -> file:svg svg a[focusable=false]": -1, + "object[src=svg] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]": 0, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]": 0, + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href]": 0, + "object[src=svg][height=0] -> file:svg a[xlink|href] text": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][height=0] -> file:svg a[focusable=false]": 0, + "object[src=svg][height=0] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][height=0] -> file:svg svg text[focusable=true]": -1 + }, + "ally": { + "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", + "input[type=text]", + "input[type=text][tabindex=-1]", + "input[type=password]", + "input[type=password][tabindex=-1]", + "input[type=checkbox]", + "input[type=checkbox][tabindex=-1]", + "input[type=radio]", + "input[type=radio][tabindex=-1]", + "input[type=submit]", + "input[type=submit][tabindex=-1]", + "input[type=reset]", + "input[type=reset][tabindex=-1]", + "select", + "select[tabindex=-1]", + "textarea", + "textarea[tabindex=-1]", + "button[type=button]", + "button[type=button][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", + "a[href]", + "a[href=]", + "a[href][tabindex=-1]", + "area[href].upper", + "area[href].lower", + "firefox-bug-1116126", + "img[tabindex=-1] area[href].upper", + "img[tabindex=-1] area[href].lower", + "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", + "a:has([ismap])", + "a[tabindex=-1]:has([ismap])", + "a:has([ismap][tabindex=-1])", + "a > img[ismap][tabindex=-1]", + "iframe", + "iframe[tabindex=-1]", + "iframe{focusable}", + "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", + "audio[controls]", + "audio[controls][tabindex=-1]", + "video[controls]", + "video[controls][tabindex=-1]", + "div{container-overflow-scroll}[tabindex=-1]", + "details summary", + "details[tabindex=-1]", + "details[tabindex=-1] summary", + "details summary[tabindex=-1]", + "details[open] summary", + "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", + "object[src=swf][tabindex=-1]", + "object[src=swf][height=0]", + "object[src=svg]", + "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", + "object[src=svg][height=0]", + "svg a[xlink|href]", + "svg[tabindex=-1]", + "svg[tabindex=-1] a[xlink|href]", + "svg[focusable=false] a[xlink|href]", + "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", + "svg rect[tabindex=0]", + "svg rect[tabindex=-1]", + "svg a[focusable=false]", + "svg rect[tabindex=0]{viewbox}", + "svg rect[tabindex=-1]{viewbox}", + "svg a[xlink|href][tabindex=-1]", + "svg{tiny} rect[tabindex=0]", + "svg{tiny} a[focusable=false]", + "svg{tiny} a[tabindex=-1]", + "svg{tiny} rect[focusable=true][tabindex=-1]", + "svg{tiny} rect[focusable=false][tabindex=0]", + "svg{tiny}[focusable=false] a", + "[contenteditable]:empty", + "[contenteditable]", + "[contenteditable][tabindex=-1]", + "[tabindex=-2]", + "[tabindex=-1]", + "[tabindex=0]", + "[tabindex=1]", + "[tabindex=+2]", + "[tabindex= +2]", + "input[tabindex=hello]", + "[tabindex=3 ]", + "[tabindex=3x]", + "div[tabindex=0]:empty", + "div[tabindex=-1]:empty", + "span[tabindex=0]:empty", + "span[tabindex=-1]:empty", + "fieldset[tabindex=0][disabled]", + "fieldset[tabindex=-1][disabled]", + "fieldset input", + "{hidden} > a{visible}", + "{hidden} > {visible} > a", + "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", + "div{no-dimension}", + "a{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", + "span{user-modify}[tabindex=-1]", + "canvas > input", + "canvas > input[tabindex=-1]", + "canvas > a", + "canvas > a[tabindex=-1]", + "canvas > [tabindex=0]", + "canvas > [tabindex=-1]" + ], + "focusableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", + "input[type=text]", + "input[type=text][tabindex=-1]", + "input[type=password]", + "input[type=password][tabindex=-1]", + "input[type=checkbox]", + "input[type=checkbox][tabindex=-1]", + "input[type=radio]", + "input[type=radio][tabindex=-1]", + "input[type=submit]", + "input[type=submit][tabindex=-1]", + "input[type=reset]", + "input[type=reset][tabindex=-1]", + "select", + "select[tabindex=-1]", + "textarea", + "textarea[tabindex=-1]", + "button[type=button]", + "button[type=button][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", + "a[href]", + "a[href=]", + "a[href][tabindex=-1]", + "area[href].upper", + "area[href].lower", + "firefox-bug-1116126", + "img[tabindex=-1] area[href].upper", + "img[tabindex=-1] area[href].lower", + "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", + "a:has([ismap])", + "a[tabindex=-1]:has([ismap])", + "a:has([ismap][tabindex=-1])", + "a > img[ismap][tabindex=-1]", + "iframe", + "iframe[tabindex=-1]", + "iframe{focusable}", + "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", + "audio[controls]", + "audio[controls][tabindex=-1]", + "video[controls]", + "video[controls][tabindex=-1]", + "div{container-overflow-scroll}[tabindex=-1]", + "details summary", + "details[tabindex=-1]", + "details[tabindex=-1] summary", + "details summary[tabindex=-1]", + "details[open] summary", + "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", + "object[src=swf][tabindex=-1]", + "object[src=swf][height=0]", + "object[src=svg]", + "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", + "object[src=svg][height=0]", + "svg a[xlink|href]", + "svg[tabindex=-1]", + "svg[tabindex=-1] a[xlink|href]", + "svg[focusable=false] a[xlink|href]", + "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", + "svg rect[tabindex=0]", + "svg rect[tabindex=-1]", + "svg a[focusable=false]", + "svg rect[tabindex=0]{viewbox}", + "svg rect[tabindex=-1]{viewbox}", + "svg a[xlink|href][tabindex=-1]", + "svg{tiny} rect[tabindex=0]", + "svg{tiny} a[focusable=false]", + "svg{tiny} a[tabindex=-1]", + "svg{tiny} rect[focusable=true][tabindex=-1]", + "svg{tiny} rect[focusable=false][tabindex=0]", + "svg{tiny}[focusable=false] a", + "[contenteditable]:empty", + "[contenteditable]", + "[contenteditable][tabindex=-1]", + "[tabindex=-2]", + "[tabindex=-1]", + "[tabindex=0]", + "[tabindex=1]", + "[tabindex=+2]", + "[tabindex= +2]", + "input[tabindex=hello]", + "[tabindex=3 ]", + "[tabindex=3x]", + "div[tabindex=0]:empty", + "div[tabindex=-1]:empty", + "span[tabindex=0]:empty", + "span[tabindex=-1]:empty", + "fieldset[tabindex=0][disabled]", + "fieldset[tabindex=-1][disabled]", + "fieldset input", + "{hidden} > a{visible}", + "{hidden} > {visible} > a", + "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", + "div{no-dimension}", + "a{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", + "span{user-modify}", + "span{user-modify}[tabindex=-1]", + "canvas > input", + "canvas > input[tabindex=-1]", + "canvas > a", + "canvas > a[tabindex=-1]", + "canvas > [tabindex=0]", + "canvas > [tabindex=-1]" + ], + "tabbable": [ + "input[tabindex=1]", + "input[tabindex=1]", + "input[type=text]", + "input[type=password]", + "select", + "textarea", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", + "firefox-bug-1116126", + "[contenteditable]:empty", + "[contenteditable]", + "input[tabindex=hello]", + "fieldset input", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", + "canvas > input" + ], + "tabbableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", + "input[type=text]", + "input[type=password]", + "select", + "textarea", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", + "firefox-bug-1116126", + "[contenteditable]:empty", + "[contenteditable]", + "input[tabindex=hello]", + "fieldset input", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", + "span{user-modify}", + "canvas > input" + ], + "onlyTabbable": [], + "tabOrder": [ + "input[tabindex=1]", + "input[tabindex=1]", + "input[type=text]", + "input[type=password]", + "select", + "textarea", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", + "firefox-bug-1116126", + "[contenteditable]:empty", + "[contenteditable]", + "input[tabindex=hello]", + "fieldset input", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", + "canvas > input" + ] + }, + "jquery": { + "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", + "input[type=text]", + "input[type=text][tabindex=-1]", + "input[type=password]", + "input[type=password][tabindex=-1]", + "input[type=checkbox]", + "input[type=checkbox][tabindex=-1]", + "input[type=radio]", + "input[type=radio][tabindex=-1]", + "input[type=submit]", + "input[type=submit][tabindex=-1]", + "input[type=reset]", + "input[type=reset][tabindex=-1]", + "select", + "select[tabindex=-1]", + "textarea", + "textarea[tabindex=-1]", + "button[type=button]", + "button[type=button][tabindex=-1]", + "label[tabindex=-1]", + "label[tabindex=0]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", + "a[href]", + "a[href=]", + "a[href][tabindex=-1]", + "area[href].upper", + "area[href].lower", + "firefox-bug-1116126", + "area[href][tabindex=-1].upper", + "area[href][tabindex=-1].lower", + "img[tabindex=-1] area[href].upper", + "img[tabindex=-1] area[href].lower", + "img[usemap][tabindex=-1]", + "a:has([ismap])", + "a[tabindex=-1]:has([ismap])", + "a:has([ismap][tabindex=-1])", + "a > img[ismap][tabindex=-1]", + "iframe[tabindex=-1]", + "iframe{focusable}[tabindex=-1]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", + "audio[controls][tabindex=-1]", + "video[controls][tabindex=-1]", + "embed[tabindex=-1]", + "embed[type=mp4][tabindex=-1]", + "embed[type=ogv][tabindex=-1]", + "embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=0]", + "keygen[tabindex=-1]", + "div{container-overflow-scroll}[tabindex=-1]", + "details[tabindex=-1]", + "details summary[tabindex=-1]", + "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", + "object[src=swf][tabindex=-1]", + "object[src=swf][height=0]", + "object[src=svg]", + "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", + "object[src=svg][height=0]", + "object[usemap]", + "svg[tabindex=-1]", + "[contenteditable][tabindex=-1]", + "[tabindex=-2]", + "[tabindex=-1]", + "[tabindex=0]", + "[tabindex=1]", + "[tabindex=+2]", + "[tabindex= +2]", + "input[tabindex=hello]", + "[tabindex=]", + "[tabindex=3 ]", + "div[tabindex=0]:empty", + "div[tabindex=-1]:empty", + "fieldset[tabindex=0][disabled]", + "fieldset[tabindex=-1][disabled]", + "fieldset input", + "fieldset[disabled] input", + "table tbody tr td a", + "table tbody tr{collapse} td a", + "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", + "a{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", + "span{user-modify}[tabindex=-1]" + ], + "tabOrder": [ + "input[tabindex=1]", + "input[tabindex=1]", + "input[type=text]", + "input[type=password]", + "input[type=checkbox]", + "input[type=radio]", + "input[type=submit]", + "input[type=reset]", + "select", + "textarea", + "button[type=button]", + "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", + "a[href]", + "a[href=]", + "area[href].upper", + "area[href].lower", + "firefox-bug-1116126", + "img[tabindex=-1] area[href].upper", + "img[tabindex=-1] area[href].lower", + "a:has([ismap])", + "a:has([ismap][tabindex=-1])", + "shadow-host[tabindex=0]", + "embed[type=svg][tabindex=0]", + "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", + "object[src=swf][height=0]", + "object[src=svg]", + "object[src=svg][tabindex=0]", + "object[src=svg][height=0]", + "object[usemap]", + "[tabindex=0]", + "[tabindex=1]", + "[tabindex=+2]", + "[tabindex= +2]", + "input[tabindex=hello]", + "[tabindex=]", + "[tabindex=3 ]", + "div[tabindex=0]:empty", + "fieldset[tabindex=0][disabled]", + "fieldset input", + "fieldset[disabled] input", + "table tbody tr td a", + "table tbody tr{collapse} td a", + "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", + "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input" + ] + } } \ No newline at end of file diff --git a/tests/focusable/data/opera-stable.json b/tests/focusable/data/opera-stable.json new file mode 100644 index 00000000..b04cae22 --- /dev/null +++ b/tests/focusable/data/opera-stable.json @@ -0,0 +1,1848 @@ +{ + "platform": { + "description": "Opera 34.0.2036.25 (like Chrome 47.0.2526.73) on OS X 10.10.5", + "layout": "Blink", + "manufacturer": null, + "name": "Opera", + "prerelease": null, + "product": null, + "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36 OPR/34.0.2036.25", + "version": "34.0.2036.25", + "os": { + "architecture": 32, + "family": "OS X", + "version": "10.10.5" + } + }, + "focusable": [ + "body", + "input[tabindex=1]", + "input[tabindex=1]", + "input[type=text]", + "input[type=text][tabindex=-1]", + "input[type=password]", + "input[type=password][tabindex=-1]", + "input[type=checkbox]", + "input[type=checkbox][tabindex=-1]", + "input[type=radio]", + "input[type=radio][tabindex=-1]", + "input[type=submit]", + "input[type=submit][tabindex=-1]", + "input[type=reset]", + "input[type=reset][tabindex=-1]", + "select", + "select[tabindex=-1]", + "textarea", + "textarea[tabindex=-1]", + "button[type=button]", + "button[type=button][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", + "a[href]", + "a[href=]", + "a[href][tabindex=-1]", + "area[href].upper", + "area[href].lower", + "firefox-bug-1116126", + "img[tabindex=-1] area[href].upper", + "img[tabindex=-1] area[href].lower", + "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", + "a:has([ismap])", + "a[tabindex=-1]:has([ismap])", + "a:has([ismap][tabindex=-1])", + "a > img[ismap][tabindex=-1]", + "iframe", + "iframe[tabindex=-1]", + "iframe{focusable}", + "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", + "audio[controls]", + "audio[controls][tabindex=-1]", + "video[controls]", + "video[controls][tabindex=-1]", + "embed", + "embed[tabindex=-1]", + "embed[type=mp4]", + "embed[type=mp4][tabindex=-1]", + "embed[type=ogv]", + "embed[type=ogv][tabindex=-1]", + "embed[type=svg]", + "embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=0]", + "keygen", + "keygen[tabindex=-1]", + "div{container-overflow-scroll}[tabindex=-1]", + "details summary", + "details[tabindex=-1]", + "details[tabindex=-1] summary", + "details summary[tabindex=-1]", + "details[open] summary", + "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", + "object[src=swf][tabindex=-1]", + "object[src=swf][height=0]", + "object[src=svg]", + "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", + "object[src=svg][height=0]", + "svg a[xlink|href]", + "svg rect[onfocus]", + "svg[tabindex=-1]", + "svg[tabindex=-1] a[xlink|href]", + "svg[focusable=false] a[xlink|href]", + "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", + "svg rect[tabindex=0]", + "svg rect[tabindex=-1]", + "svg a[focusable=false]", + "svg rect[tabindex=0]{viewbox}", + "svg rect[tabindex=-1]{viewbox}", + "svg a[xlink|href][tabindex=-1]", + "svg{tiny} rect[tabindex=0]", + "svg{tiny} a[focusable=false]", + "svg{tiny} a[tabindex=-1]", + "svg{tiny} rect[focusable=true][tabindex=-1]", + "svg{tiny} rect[focusable=false][tabindex=0]", + "svg{tiny}[focusable=false] a", + "[contenteditable]:empty", + "[contenteditable]", + "[contenteditable][tabindex=-1]", + "[tabindex=-2]", + "[tabindex=-1]", + "[tabindex=0]", + "[tabindex=1]", + "[tabindex=+2]", + "[tabindex= +2]", + "input[tabindex=hello]", + "[tabindex=3 ]", + "[tabindex=3x]", + "div[tabindex=0]:empty", + "div[tabindex=-1]:empty", + "span[tabindex=0]:empty", + "span[tabindex=-1]:empty", + "fieldset[tabindex=0][disabled]", + "fieldset[tabindex=-1][disabled]", + "fieldset input", + "{hidden} > a{visible}", + "{hidden} > {visible} > a", + "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", + "div{no-dimension}", + "a{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", + "span{user-modify}", + "span{user-modify}[tabindex=-1]", + "canvas > input", + "canvas > input[tabindex=-1]", + "canvas > a", + "canvas > a[tabindex=-1]", + "canvas > [tabindex=0]", + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg a[focusable=false]", + "shadow-host input[tabindex=0]", + "shadow-host input[tabindex=0]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=2]", + "shadow-host input[tabindex=2]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]" + ], + "focusEvents": [ + "input[tabindex=1]", + "input[tabindex=1]", + "input[type=text]", + "input[type=text][tabindex=-1]", + "input[type=password]", + "input[type=password][tabindex=-1]", + "input[type=checkbox]", + "input[type=checkbox][tabindex=-1]", + "input[type=radio]", + "input[type=radio][tabindex=-1]", + "input[type=submit]", + "input[type=submit][tabindex=-1]", + "input[type=reset]", + "input[type=reset][tabindex=-1]", + "select", + "select[tabindex=-1]", + "textarea", + "textarea[tabindex=-1]", + "button[type=button]", + "button[type=button][tabindex=-1]", + "input[type=text]", + "input[type=text][tabindex=-1]", + "input[type=text]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", + "a[href]", + "a[href=]", + "a[href][tabindex=-1]", + "area[href].upper", + "area[href].lower", + "firefox-bug-1116126", + "img[tabindex=-1] area[href].upper", + "img[tabindex=-1] area[href].lower", + "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", + "a:has([ismap])", + "a[tabindex=-1]:has([ismap])", + "a:has([ismap][tabindex=-1])", + "a > img[ismap][tabindex=-1]", + "iframe", + "iframe[tabindex=-1]", + "iframe{focusable}", + "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", + "audio[controls]", + "audio[controls][tabindex=-1]", + "video[controls]", + "video[controls][tabindex=-1]", + "embed", + "embed[tabindex=-1]", + "embed[type=mp4]", + "embed[type=mp4][tabindex=-1]", + "embed[type=ogv]", + "embed[type=ogv][tabindex=-1]", + "embed[type=svg]", + "embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=0]", + "keygen", + "keygen[tabindex=-1]", + "div{container-overflow-scroll}[tabindex=-1]", + "details summary", + "details[tabindex=-1]", + "details[tabindex=-1] summary", + "details summary[tabindex=-1]", + "details[open] summary", + "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", + "object[src=swf][tabindex=-1]", + "object[src=swf][height=0]", + "object[src=svg]", + "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", + "object[src=svg][height=0]", + "svg", + "svg a[xlink|href]", + "svg a[xlink|href] text", + "svg text", + "svg rect", + "svg rect[onfocus]", + "svg rect[focusable=true]", + "svg[tabindex=-1]", + "svg[tabindex=-1] a[xlink|href]", + "svg[tabindex=-1] a[xlink|href] text", + "svg[tabindex=-1] text", + "svg[tabindex=-1] rect", + "svg[focusable=false]", + "svg[focusable=false] a[xlink|href]", + "svg[focusable=false] a[xlink|href] text", + "svg[focusable=false] text", + "svg[focusable=false] rect", + "svg:has(a[tabindex=0])", + "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=0] text", + "svg a[xlink|href][tabindex=1]", + "svg a[xlink|href][tabindex=1] text", + "svg:has(a[tabindex=0]) text", + "svg rect[tabindex=0]", + "svg rect[tabindex=-1]", + "svg:has(a[tabindex=0]) rect", + "svg a[focusable=false]", + "rect", + "svg{viewbox}", + "svg rect[tabindex=0]{viewbox}", + "svg rect[tabindex=-1]{viewbox}", + "svg rect[focusable=true]{viewbox}", + "svg:has(a[tabindex=-1])", + "svg a[xlink|href][tabindex=-1]", + "svg a[xlink|href][tabindex=-1] text", + "svg:has(a[tabindex=-1]) text", + "svg:has(a[tabindex=-1]) rect", + "svg{tiny}", + "svg{tiny} rect", + "svg{tiny} rect[tabindex=0]", + "svg{tiny} rect[focusable=true]", + "svg{tiny} a[focusable=false]", + "rect", + "svg{tiny} a[tabindex=-1]", + "rect", + "svg{tiny} rect[focusable=true][tabindex=-1]", + "svg{tiny} rect[focusable=false][tabindex=0]", + "svg{tiny}[focusable=false]", + "svg{tiny}[focusable=false] a", + "rect", + "[contenteditable]:empty", + "[contenteditable]", + "[contenteditable][tabindex=-1]", + "[tabindex=-2]", + "[tabindex=-1]", + "[tabindex=0]", + "[tabindex=1]", + "[tabindex=+2]", + "[tabindex= +2]", + "input[tabindex=hello]", + "[tabindex=3 ]", + "[tabindex=3x]", + "div[tabindex=0]:empty", + "div[tabindex=-1]:empty", + "span[tabindex=0]:empty", + "span[tabindex=-1]:empty", + "fieldset[tabindex=0][disabled]", + "fieldset[tabindex=-1][disabled]", + "fieldset input", + "{hidden} > a{visible}", + "{hidden} > {visible} > a", + "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", + "div{no-dimension}", + "a{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", + "span{user-modify}", + "span{user-modify}[tabindex=-1]", + "canvas > input", + "canvas > input[tabindex=-1]", + "canvas > a", + "canvas > a[tabindex=-1]", + "canvas > [tabindex=0]", + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg text[focusable=true]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg svg a[focusable=false]", + "embed[type=svg] -> file:svg svg text[focusable=true]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg svg a[focusable=false]", + "object[src=svg] -> file:svg svg text[focusable=true]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "object[src=svg][height=0] -> file:svg a[xlink|href]", + "object[src=svg][height=0] -> file:svg a[xlink|href] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][height=0] -> file:svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg text[focusable=true]", + "shadow-host input[tabindex=0]", + "shadow-host", + "shadow-host input[tabindex=-1]", + "shadow-host", + "shadow-host input[tabindex=2]", + "shadow-host", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host", + "shadow-host", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host", + "shadow-host", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host", + "shadow-host", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0]" + ], + "focusRedirection": [ + "label[for=label-target] --- input[type=text]", + "label[for=label-target-focusable] --- input[type=text][tabindex=-1]", + "label[for=label-target][tabindex=-1] --- input[type=text]", + "fieldset legend --- fieldset input" + ], + "focusEncapsulation": [ + "iframe{focusable} -> input --- iframe{focusable}", + "iframe{focusable} -> input[tabindex=1] --- iframe{focusable}", + "iframe{focusable}[tabindex=-1] -> input --- iframe{focusable}[tabindex=-1]", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1] --- iframe{focusable}[tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href] --- iframe[src=svg]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] --- iframe[src=svg]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] --- iframe[src=svg]", + "iframe[src=svg] -> file:svg a[focusable=false] --- iframe[src=svg]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] --- iframe[src=svg][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] --- iframe[src=svg][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] --- iframe[src=svg][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false] --- iframe[src=svg][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href] --- embed[type=svg]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] --- embed[type=svg]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] --- embed[type=svg]", + "embed[type=svg] -> file:svg a[focusable=false] --- embed[type=svg]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] --- embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] --- embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] --- embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false] --- embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] --- embed[type=svg][tabindex=0]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] --- embed[type=svg][tabindex=0]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] --- embed[type=svg][tabindex=0]", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false] --- embed[type=svg][tabindex=0]", + "object[src=svg] -> file:svg a[xlink|href] --- object[src=svg]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] --- object[src=svg]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] --- object[src=svg]", + "object[src=svg] -> file:svg a[focusable=false] --- object[src=svg]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] --- object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] --- object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] --- object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false] --- object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] --- object[src=svg][tabindex=0]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] --- object[src=svg][tabindex=0]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] --- object[src=svg][tabindex=0]", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false] --- object[src=svg][tabindex=0]", + "object[src=svg][height=0] -> file:svg a[xlink|href] --- object[src=svg][height=0]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] --- object[src=svg][height=0]", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] --- object[src=svg][height=0]", + "object[src=svg][height=0] -> file:svg a[focusable=false] --- object[src=svg][height=0]", + "shadow-host input[tabindex=0] --- shadow-host", + "shadow-host input[tabindex=-1] --- shadow-host", + "shadow-host input[tabindex=2] --- shadow-host", + "shadow-host inner-host input[tabindex=-1] --- shadow-host", + "shadow-host inner-host input[tabindex=0] --- shadow-host", + "shadow-host inner-host input[tabindex=1] --- shadow-host", + "shadow-host[tabindex=-1] input[tabindex=0] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=-1] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1] --- shadow-host[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=0] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=-1] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=2] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0] --- shadow-host[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1] --- shadow-host[tabindex=0]" + ], + "noFocusMethod": [], + "tabOrder": [ + "input[tabindex=1]", + "svg a[xlink|href][tabindex=1]", + "[tabindex=1]", + "input[tabindex=1]", + "[tabindex=+2]", + "[tabindex= +2]", + "[tabindex=3 ]", + "[tabindex=3x]", + "input[type=text]", + "input[type=password]", + "input[type=checkbox]", + "input[type=radio]", + "input[type=submit]", + "input[type=reset]", + "select", + "textarea", + "button[type=button]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", + "a[href]", + "a[href=]", + "area[href].upper", + "area[href].lower", + "firefox-bug-1116126", + "img[tabindex=-1] area[href].upper", + "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", + "a:has([ismap])", + "a:has([ismap][tabindex=-1])", + "iframe", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}", + "iframe{focusable} -> input", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "shadow-host input[tabindex=2]", + "shadow-host", + "shadow-host input[tabindex=0]", + "shadow-host inner-host", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "audio[controls]", + "audio[controls][tabindex=-1]", + "video[controls]", + "video[controls][tabindex=-1]", + "keygen", + "details summary", + "details[tabindex=-1] summary", + "details[open] summary", + "details[open] a[href]", + "svg a[xlink|href]", + "svg rect[onfocus]", + "svg[tabindex=-1] a[xlink|href]", + "svg[focusable=false] a[xlink|href]", + "svg a[xlink|href][tabindex=0]", + "svg rect[tabindex=0]", + "svg a[focusable=false]", + "svg rect[tabindex=0]{viewbox}", + "svg{tiny} rect[tabindex=0]", + "svg{tiny} a[focusable=false]", + "svg{tiny} rect[focusable=false][tabindex=0]", + "svg{tiny}[focusable=false] a", + "[contenteditable]:empty", + "[contenteditable]", + "[tabindex=0]", + "input[tabindex=hello]", + "div[tabindex=0]:empty", + "span[tabindex=0]:empty", + "fieldset[tabindex=0][disabled]", + "fieldset input", + "{hidden} > a{visible}", + "{hidden} > {visible} > a", + "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", + "div{no-dimension}", + "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", + "span{user-modify}", + "canvas > input", + "canvas > a", + "canvas > [tabindex=0]" + ], + "tabIndex": { + "html": -1, + "body": -1, + "input[tabindex=1]": 1, + "input[type=text]": 0, + "input[type=text][tabindex=-1]": -1, + "input[type=password]": 0, + "input[type=password][tabindex=-1]": -1, + "input[type=checkbox]": 0, + "input[type=checkbox][tabindex=-1]": -1, + "input[type=radio]": 0, + "input[type=radio][tabindex=-1]": -1, + "input[type=submit]": 0, + "input[type=submit][tabindex=-1]": -1, + "input[type=reset]": 0, + "input[type=reset][tabindex=-1]": -1, + "input[type=hidden]": 0, + "input[type=hidden][tabindex=-1]": -1, + "select": 0, + "select[tabindex=-1]": -1, + "textarea": 0, + "textarea[tabindex=-1]": -1, + "button[type=button]": 0, + "button[type=button][tabindex=-1]": -1, + "label": -1, + "label[tabindex=-1]": -1, + "label[tabindex=0]": 0, + "label[for=label-target]": -1, + "label[for=label-target-focusable]": -1, + "label[for=label-target][tabindex=-1]": -1, + "form": -1, + "form input": 0, + "form[tabindex=-1]": -1, + "form[tabindex=-1] input": 0, + "form[disabled]": -1, + "form[disabled] input": 0, + "input[type=text][disabled]": 0, + "input[type=password][disabled]": 0, + "input[type=checkbox][disabled]": 0, + "input[type=radio][disabled]": 0, + "input[type=submit][disabled]": 0, + "input[type=reset][disabled]": 0, + "input[type=hidden][disabled]": 0, + "select[disabled]": 0, + "textarea[disabled]": 0, + "button[type=button][disabled]": 0, + "label[disabled]": -1, + "a[name]": 0, + "a[href]": 0, + "a[href=]": 0, + "a[href][tabindex=-1]": -1, + "span[href]": -1, + "link[itemprop][href]": -1, + "area[href].upper": 0, + "area": 0, + "area[href].lower": 0, + "img[usemap].first": -1, + "firefox-bug-1116126": 0, + "img[usemap].second": -1, + "img[usemap=void]": -1, + "img": -1, + "area[href][tabindex=-1].upper": -1, + "area[tabindex=-1]": -1, + "area[href][tabindex=-1].lower": -1, + "img[usemap].focusable": -1, + "img[tabindex=-1] area[href].upper": 0, + "img[tabindex=-1] area": 0, + "img[tabindex=-1] area[href].lower": 0, + "img[usemap][tabindex=-1]": -1, + "map.invalid-image area[href].upper": 0, + "map.invalid-image area": 0, + "map.invalid-image area[href].lower": 0, + "img[usemap].invalid": -1, + "a:has([ismap])": 0, + "a > img[ismap]": -1, + "a[tabindex=-1]:has([ismap])": -1, + "a[tabindex=-1] > img[ismap]": -1, + "a:has([ismap][tabindex=-1])": 0, + "a > img[ismap][tabindex=-1]": -1, + "iframe": 0, + "iframe[tabindex=-1]": -1, + "iframe{focusable}": 0, + "iframe{focusable}[tabindex=-1]": -1, + "iframe[src=svg]": 0, + "iframe[src=svg][tabindex=-1]": -1, + "shadow-host": -1, + "shadow-host[tabindex=-1]": -1, + "shadow-host[tabindex=0]": 0, + "audio": -1, + "audio[controls]": 0, + "audio[controls][tabindex=-1]": -1, + "video": -1, + "video[controls]": 0, + "video[controls][tabindex=-1]": -1, + "embed": 0, + "embed[tabindex=-1]": -1, + "embed[type=mp4]": 0, + "embed[type=mp4][tabindex=-1]": -1, + "embed[type=ogv]": 0, + "embed[type=ogv][tabindex=-1]": -1, + "embed[type=svg]": 0, + "embed[type=svg][tabindex=-1]": -1, + "embed[type=svg][tabindex=0]": 0, + "keygen": 0, + "keygen[tabindex=-1]": -1, + "div{scroll-container-horizontal}": -1, + "div{scroll-body-horizontal}": -1, + "div{scroll-container-horizontal-scroll-x}": -1, + "div{scroll-body-horizontal-scroll-x}": -1, + "div{scroll-container-horizontal-scroll-y}": -1, + "div{scroll-body-horizontal-scroll-y}": -1, + "div{scroll-container-vertical}": -1, + "div{scroll-body-vertical}": -1, + "div{scroll-container-vertical-scroll-x}": -1, + "div{scroll-body-vertical-scroll-x}": -1, + "div{scroll-container-vertical-scroll-y}": -1, + "div{scroll-body-vertical-scroll-y}": -1, + "div{scroll-container-overflow-scroll}": -1, + "div{scroll-body-overflow-scroll}": -1, + "div{scroll-container-overflow-hidden}": -1, + "div{scroll-body-overflow-hidden}": -1, + "div{scroll-container-overflow-visible}": -1, + "div{scroll-body-overflow-visible}": -1, + "div{container-overflow-scroll}": -1, + "div{body-overflow-scroll}": -1, + "div{container-overflow-auto}": -1, + "div{body-overflow-auto}": -1, + "span{scroll-container-overflow-scroll}": -1, + "span{scroll-body-overflow-scroll}": -1, + "section{scroll-container-overflow-scroll}": -1, + "section{scroll-body-overflow-scroll}": -1, + "div-span{scroll-container-overflow-scroll}": -1, + "div-span{scroll-body-overflow-scroll}": -1, + "div-section{scroll-container-overflow-scroll}": -1, + "div-section{scroll-body-overflow-scroll}": -1, + "div{container-overflow-scroll}[tabindex=-1]": -1, + "div{body-overflow-scroll}[tabindex=-1]": -1, + "details": -1, + "details summary": 0, + "details a[href]": 0, + "details[tabindex=-1]": -1, + "details[tabindex=-1] summary": 0, + "details[tabindex=-1] a[href]": 0, + "details:has(summary[tabindex=-1])": -1, + "details summary[tabindex=-1]": -1, + "details:has(summary[tabindex=-1]) a[href]": 0, + "details[open]": -1, + "details[open] summary": 0, + "details[open] a[href]": 0, + "object[src=swf]": 0, + "object[src=swf][tabindex=0]": 0, + "object[src=swf][tabindex=-1]": -1, + "object[src=swf][height=0]": 0, + "object[src=svg]": 0, + "object[src=svg][tabindex=-1]": -1, + "object[src=svg][tabindex=0]": 0, + "object[src=svg][height=0]": 0, + "map.object area[href].upper": 0, + "map.object area": 0, + "map.object area[href].lower": 0, + "object[usemap]": 0, + "svg": -1, + "svg a[xlink|href]": 0, + "svg a[xlink|href] text": -1, + "svg text": -1, + "svg rect": -1, + "svg rect[onfocus]": 0, + "svg rect[focusable=true]": -1, + "svg[tabindex=-1]": -1, + "svg[tabindex=-1] a[xlink|href]": 0, + "svg[tabindex=-1] a[xlink|href] text": -1, + "svg[tabindex=-1] text": -1, + "svg[tabindex=-1] rect": -1, + "svg[focusable=false]": -1, + "svg[focusable=false] a[xlink|href]": 0, + "svg[focusable=false] a[xlink|href] text": -1, + "svg[focusable=false] text": -1, + "svg[focusable=false] rect": -1, + "svg:has(a[tabindex=0])": -1, + "svg a[xlink|href][tabindex=0]": 0, + "svg a[xlink|href][tabindex=0] text": -1, + "svg a[xlink|href][tabindex=1]": 1, + "svg a[xlink|href][tabindex=1] text": -1, + "svg:has(a[tabindex=0]) text": -1, + "svg rect[tabindex=0]": 0, + "svg rect[tabindex=-1]": -1, + "svg:has(a[tabindex=0]) rect": -1, + "svg a[focusable=false]": 0, + "svg{viewbox}": -1, + "svg rect[tabindex=0]{viewbox}": 0, + "svg rect[tabindex=-1]{viewbox}": -1, + "svg rect[focusable=true]{viewbox}": -1, + "svg:has(a[tabindex=-1])": -1, + "svg a[xlink|href][tabindex=-1]": -1, + "svg a[xlink|href][tabindex=-1] text": -1, + "svg:has(a[tabindex=-1]) text": -1, + "svg:has(a[tabindex=-1]) rect": -1, + "svg{tiny}": -1, + "svg{tiny} rect": -1, + "svg{tiny} rect[tabindex=0]": 0, + "svg{tiny} rect[focusable=true]": -1, + "svg{tiny} a[focusable=false]": 0, + "svg{tiny} a[tabindex=-1]": -1, + "svg{tiny} rect[focusable=true][tabindex=-1]": -1, + "svg{tiny} rect[focusable=false][tabindex=0]": 0, + "svg{tiny}[focusable=false]": -1, + "svg{tiny}[focusable=false] a": 0, + "[contenteditable]:empty": 0, + "[contenteditable]": 0, + "[contenteditable][tabindex=-1]": -1, + "[tabindex=-2]": -2, + "[tabindex=-1]": -1, + "[tabindex=0]": 0, + "[tabindex=1]": 1, + "[tabindex=+2]": 2, + "[tabindex= +2]": 2, + "input[tabindex=hello]": 0, + "[tabindex=]": -1, + "[tabindex=hello]": -1, + "[tabindex=3 ]": 3, + "[tabindex=3x]": 3, + "div[tabindex=0]:empty": 0, + "div[tabindex=-1]:empty": -1, + "span[tabindex=0]:empty": 0, + "span[tabindex=-1]:empty": -1, + "fieldset[tabindex=0][disabled]": 0, + "fieldset[tabindex=-1][disabled]": -1, + "fieldset": 0, + "fieldset legend": -1, + "fieldset input": 0, + "fieldset:empty": 0, + "fieldset[disabled]": 0, + "fieldset[disabled] input": 0, + "[hidden]": -1, + "[hidden] input": 0, + "[hidden][tabindex=-1]": -1, + "[hidden][tabindex=-1] input": 0, + "[hidden][tabindex=0]": 0, + "[hidden][tabindex=0] input": 0, + "{hidden} > a": 0, + "{hidden} > a{visible}": 0, + "{hidden} > {visible} > a": 0, + "a{hidden}": 0, + "table": -1, + "table thead": -1, + "table thead tr": -1, + "table thead tr th": -1, + "table thead tr td": -1, + "table tfoot": -1, + "table tfoot tr": -1, + "table tfoot tr th": -1, + "table tfoot tr td": -1, + "table tbody": -1, + "table tbody tr": -1, + "table tbody tr th": -1, + "table tbody tr td": -1, + "table tbody tr td a": 0, + "table tbody tr{collapse}": -1, + "table tbody tr{collapse} td": -1, + "table tbody tr{collapse} td a": 0, + "table tbody tr{collapse} td a{visible}": 0, + "table tbody tr{collapse} td{visible}": -1, + "table tbody tr{collapse} td{visible} a": 0, + "{none} > a": 0, + "{none} > a{inline}": 0, + "a{none}": 0, + "div{no-dimension}": 0, + "a{flexbox}": 0, + "a{flexbox} > span": -1, + "[tabindex=-1]{flexbox}": -1, + "[tabindex=-1]{flexbox} > span1": -1, + "[tabindex=-1]{flexbox} > span2": -1, + "div{flexbox}": -1, + "div{flexbox} span{order:2}": -1, + "div{flexbox} span{order:2} input": 0, + "div{flexbox} span{order:1}": -1, + "div{flexbox} span{order:1} input": 0, + "span{flexbox}": -1, + "span{user-modify}": 0, + "span{user-modify}[tabindex=-1]": -1, + "canvas": -1, + "canvas > input": 0, + "canvas > input[tabindex=-1]": -1, + "canvas > a": 0, + "canvas > a[tabindex=-1]": -1, + "canvas > [tabindex=0]": 0, + "canvas > [tabindex=-1]": -1, + "iframe -> body": -1, + "iframe[tabindex=-1] -> body": -1, + "iframe{focusable} -> body": -1, + "iframe{focusable} -> input": 0, + "iframe{focusable} -> input[tabindex=1]": 1, + "iframe{focusable}[tabindex=-1] -> body": -1, + "iframe{focusable}[tabindex=-1] -> input": 0, + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]": 1, + "iframe[src=svg] -> file:svg a[xlink|href]": 0, + "iframe[src=svg] -> file:svg a[xlink|href] text": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "iframe[src=svg] -> file:svg a[focusable=false]": 0, + "iframe[src=svg] -> file:svg svg a[focusable=false]": -1, + "iframe[src=svg] -> file:svg svg text[focusable=true]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg] -> file:svg a[xlink|href]": 0, + "embed[type=svg] -> file:svg a[xlink|href] text": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg] -> file:svg a[focusable=false]": 0, + "embed[type=svg] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]": 0, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]": 0, + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]": -1, + "object[src=svg] -> file:svg a[xlink|href]": 0, + "object[src=svg] -> file:svg a[xlink|href] text": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg] -> file:svg a[focusable=false]": 0, + "object[src=svg] -> file:svg svg a[focusable=false]": -1, + "object[src=svg] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]": 0, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]": 0, + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href]": 0, + "object[src=svg][height=0] -> file:svg a[xlink|href] text": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][height=0] -> file:svg a[focusable=false]": 0, + "object[src=svg][height=0] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][height=0] -> file:svg svg text[focusable=true]": -1, + "shadow-host input[tabindex=0]": 0, + "shadow-host inner-host": -1, + "shadow-host input[tabindex=-1]": -1, + "shadow-host input[tabindex=2]": 2, + "shadow-host inner-host input[tabindex=-1]": -1, + "shadow-host inner-host input[tabindex=0]": 0, + "shadow-host inner-host input[tabindex=1]": 1, + "shadow-host[tabindex=-1] input[tabindex=0]": 0, + "shadow-host[tabindex=-1] inner-host": -1, + "shadow-host[tabindex=-1] input[tabindex=-1]": -1, + "shadow-host[tabindex=-1] input[tabindex=2]": 2, + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]": -1, + "shadow-host[tabindex=-1] inner-host input[tabindex=0]": 0, + "shadow-host[tabindex=-1] inner-host input[tabindex=1]": 1, + "shadow-host[tabindex=0] input[tabindex=0]": 0, + "shadow-host[tabindex=0] inner-host": -1, + "shadow-host[tabindex=0] input[tabindex=-1]": -1, + "shadow-host[tabindex=0] input[tabindex=2]": 2, + "shadow-host[tabindex=0] inner-host input[tabindex=-1]": -1, + "shadow-host[tabindex=0] inner-host input[tabindex=0]": 0, + "shadow-host[tabindex=0] inner-host input[tabindex=1]": 1 + }, + "ally": { + "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", + "input[type=text]", + "input[type=text][tabindex=-1]", + "input[type=password]", + "input[type=password][tabindex=-1]", + "input[type=checkbox]", + "input[type=checkbox][tabindex=-1]", + "input[type=radio]", + "input[type=radio][tabindex=-1]", + "input[type=submit]", + "input[type=submit][tabindex=-1]", + "input[type=reset]", + "input[type=reset][tabindex=-1]", + "select", + "select[tabindex=-1]", + "textarea", + "textarea[tabindex=-1]", + "button[type=button]", + "button[type=button][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", + "a[href]", + "a[href=]", + "a[href][tabindex=-1]", + "area[href].upper", + "area[href].lower", + "firefox-bug-1116126", + "img[tabindex=-1] area[href].upper", + "img[tabindex=-1] area[href].lower", + "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", + "a:has([ismap])", + "a[tabindex=-1]:has([ismap])", + "a:has([ismap][tabindex=-1])", + "a > img[ismap][tabindex=-1]", + "iframe", + "iframe[tabindex=-1]", + "iframe{focusable}", + "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=2]", + "audio[controls]", + "audio[controls][tabindex=-1]", + "video[controls]", + "video[controls][tabindex=-1]", + "div{container-overflow-scroll}[tabindex=-1]", + "details summary", + "details[tabindex=-1]", + "details[tabindex=-1] summary", + "details summary[tabindex=-1]", + "details[open] summary", + "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", + "object[src=swf][tabindex=-1]", + "object[src=swf][height=0]", + "object[src=svg]", + "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", + "object[src=svg][height=0]", + "svg a[xlink|href]", + "svg[tabindex=-1]", + "svg[tabindex=-1] a[xlink|href]", + "svg[focusable=false] a[xlink|href]", + "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", + "svg rect[tabindex=0]", + "svg rect[tabindex=-1]", + "svg a[focusable=false]", + "svg rect[tabindex=0]{viewbox}", + "svg rect[tabindex=-1]{viewbox}", + "svg a[xlink|href][tabindex=-1]", + "svg{tiny} rect[tabindex=0]", + "svg{tiny} a[focusable=false]", + "svg{tiny} a[tabindex=-1]", + "svg{tiny} rect[focusable=true][tabindex=-1]", + "svg{tiny} rect[focusable=false][tabindex=0]", + "svg{tiny}[focusable=false] a", + "[contenteditable]:empty", + "[contenteditable]", + "[contenteditable][tabindex=-1]", + "[tabindex=-2]", + "[tabindex=-1]", + "[tabindex=0]", + "[tabindex=1]", + "[tabindex=+2]", + "[tabindex= +2]", + "input[tabindex=hello]", + "[tabindex=3 ]", + "[tabindex=3x]", + "div[tabindex=0]:empty", + "div[tabindex=-1]:empty", + "span[tabindex=0]:empty", + "span[tabindex=-1]:empty", + "fieldset[tabindex=0][disabled]", + "fieldset[tabindex=-1][disabled]", + "fieldset input", + "{hidden} > a{visible}", + "{hidden} > {visible} > a", + "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", + "div{no-dimension}", + "a{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", + "span{user-modify}[tabindex=-1]", + "canvas > input", + "canvas > input[tabindex=-1]", + "canvas > a", + "canvas > a[tabindex=-1]", + "canvas > [tabindex=0]", + "canvas > [tabindex=-1]" + ], + "focusableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", + "input[type=text]", + "input[type=text][tabindex=-1]", + "input[type=password]", + "input[type=password][tabindex=-1]", + "input[type=checkbox]", + "input[type=checkbox][tabindex=-1]", + "input[type=radio]", + "input[type=radio][tabindex=-1]", + "input[type=submit]", + "input[type=submit][tabindex=-1]", + "input[type=reset]", + "input[type=reset][tabindex=-1]", + "select", + "select[tabindex=-1]", + "textarea", + "textarea[tabindex=-1]", + "button[type=button]", + "button[type=button][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", + "a[href]", + "a[href=]", + "a[href][tabindex=-1]", + "area[href].upper", + "area[href].lower", + "firefox-bug-1116126", + "img[tabindex=-1] area[href].upper", + "img[tabindex=-1] area[href].lower", + "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", + "a:has([ismap])", + "a[tabindex=-1]:has([ismap])", + "a:has([ismap][tabindex=-1])", + "a > img[ismap][tabindex=-1]", + "iframe", + "iframe[tabindex=-1]", + "iframe{focusable}", + "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=-1]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host input[tabindex=-1]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=-1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=-1]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=-1]", + "shadow-host[tabindex=0] input[tabindex=2]", + "audio[controls]", + "audio[controls][tabindex=-1]", + "video[controls]", + "video[controls][tabindex=-1]", + "div{container-overflow-scroll}[tabindex=-1]", + "details summary", + "details[tabindex=-1]", + "details[tabindex=-1] summary", + "details summary[tabindex=-1]", + "details[open] summary", + "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", + "object[src=swf][tabindex=-1]", + "object[src=swf][height=0]", + "object[src=svg]", + "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", + "object[src=svg][height=0]", + "svg a[xlink|href]", + "svg[tabindex=-1]", + "svg[tabindex=-1] a[xlink|href]", + "svg[focusable=false] a[xlink|href]", + "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", + "svg rect[tabindex=0]", + "svg rect[tabindex=-1]", + "svg a[focusable=false]", + "svg rect[tabindex=0]{viewbox}", + "svg rect[tabindex=-1]{viewbox}", + "svg a[xlink|href][tabindex=-1]", + "svg{tiny} rect[tabindex=0]", + "svg{tiny} a[focusable=false]", + "svg{tiny} a[tabindex=-1]", + "svg{tiny} rect[focusable=true][tabindex=-1]", + "svg{tiny} rect[focusable=false][tabindex=0]", + "svg{tiny}[focusable=false] a", + "[contenteditable]:empty", + "[contenteditable]", + "[contenteditable][tabindex=-1]", + "[tabindex=-2]", + "[tabindex=-1]", + "[tabindex=0]", + "[tabindex=1]", + "[tabindex=+2]", + "[tabindex= +2]", + "input[tabindex=hello]", + "[tabindex=3 ]", + "[tabindex=3x]", + "div[tabindex=0]:empty", + "div[tabindex=-1]:empty", + "span[tabindex=0]:empty", + "span[tabindex=-1]:empty", + "fieldset[tabindex=0][disabled]", + "fieldset[tabindex=-1][disabled]", + "fieldset input", + "{hidden} > a{visible}", + "{hidden} > {visible} > a", + "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", + "div{no-dimension}", + "a{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", + "span{user-modify}", + "span{user-modify}[tabindex=-1]", + "canvas > input", + "canvas > input[tabindex=-1]", + "canvas > a", + "canvas > a[tabindex=-1]", + "canvas > [tabindex=0]", + "canvas > [tabindex=-1]" + ], + "tabbable": [ + "input[tabindex=1]", + "input[tabindex=1]", + "input[type=text]", + "input[type=password]", + "input[type=checkbox]", + "input[type=radio]", + "input[type=submit]", + "input[type=reset]", + "select", + "textarea", + "button[type=button]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", + "a[href]", + "a[href=]", + "area[href].upper", + "area[href].lower", + "firefox-bug-1116126", + "img[tabindex=-1] area[href].upper", + "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", + "a:has([ismap])", + "a:has([ismap][tabindex=-1])", + "iframe", + "iframe{focusable}", + "iframe[src=svg]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=2]", + "audio[controls]", + "audio[controls][tabindex=-1]", + "video[controls]", + "video[controls][tabindex=-1]", + "details summary", + "details[tabindex=-1] summary", + "details[open] summary", + "details[open] a[href]", + "svg a[xlink|href]", + "svg[tabindex=-1] a[xlink|href]", + "svg[focusable=false] a[xlink|href]", + "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", + "svg rect[tabindex=0]", + "svg a[focusable=false]", + "svg rect[tabindex=0]{viewbox}", + "svg{tiny} rect[tabindex=0]", + "svg{tiny} a[focusable=false]", + "svg{tiny} rect[focusable=false][tabindex=0]", + "svg{tiny}[focusable=false] a", + "[contenteditable]:empty", + "[contenteditable]", + "[tabindex=0]", + "[tabindex=1]", + "[tabindex=+2]", + "[tabindex= +2]", + "input[tabindex=hello]", + "[tabindex=3 ]", + "[tabindex=3x]", + "div[tabindex=0]:empty", + "span[tabindex=0]:empty", + "fieldset[tabindex=0][disabled]", + "fieldset input", + "{hidden} > a{visible}", + "{hidden} > {visible} > a", + "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", + "div{no-dimension}", + "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", + "canvas > input", + "canvas > a", + "canvas > [tabindex=0]" + ], + "tabbableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", + "input[type=text]", + "input[type=password]", + "input[type=checkbox]", + "input[type=radio]", + "input[type=submit]", + "input[type=reset]", + "select", + "textarea", + "button[type=button]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", + "a[href]", + "a[href=]", + "area[href].upper", + "area[href].lower", + "firefox-bug-1116126", + "img[tabindex=-1] area[href].upper", + "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", + "a:has([ismap])", + "a:has([ismap][tabindex=-1])", + "iframe", + "iframe{focusable}", + "iframe[src=svg]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] input[tabindex=2]", + "audio[controls]", + "audio[controls][tabindex=-1]", + "video[controls]", + "video[controls][tabindex=-1]", + "details summary", + "details[tabindex=-1] summary", + "details[open] summary", + "details[open] a[href]", + "svg a[xlink|href]", + "svg[tabindex=-1] a[xlink|href]", + "svg[focusable=false] a[xlink|href]", + "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", + "svg rect[tabindex=0]", + "svg a[focusable=false]", + "svg rect[tabindex=0]{viewbox}", + "svg{tiny} rect[tabindex=0]", + "svg{tiny} a[focusable=false]", + "svg{tiny} rect[focusable=false][tabindex=0]", + "svg{tiny}[focusable=false] a", + "[contenteditable]:empty", + "[contenteditable]", + "[tabindex=0]", + "[tabindex=1]", + "[tabindex=+2]", + "[tabindex= +2]", + "input[tabindex=hello]", + "[tabindex=3 ]", + "[tabindex=3x]", + "div[tabindex=0]:empty", + "span[tabindex=0]:empty", + "fieldset[tabindex=0][disabled]", + "fieldset input", + "{hidden} > a{visible}", + "{hidden} > {visible} > a", + "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", + "div{no-dimension}", + "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", + "span{user-modify}", + "canvas > input", + "canvas > a", + "canvas > [tabindex=0]" + ], + "onlyTabbable": [], + "tabOrder": [ + "input[tabindex=1]", + "svg a[xlink|href][tabindex=1]", + "[tabindex=1]", + "input[tabindex=1]", + "[tabindex=+2]", + "[tabindex= +2]", + "[tabindex=3 ]", + "[tabindex=3x]", + "input[type=text]", + "input[type=password]", + "input[type=checkbox]", + "input[type=radio]", + "input[type=submit]", + "input[type=reset]", + "select", + "textarea", + "button[type=button]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", + "a[href]", + "a[href=]", + "area[href].upper", + "area[href].lower", + "firefox-bug-1116126", + "img[tabindex=-1] area[href].upper", + "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", + "a:has([ismap])", + "a:has([ismap][tabindex=-1])", + "iframe", + "iframe{focusable}", + "iframe[src=svg]", + "shadow-host input[tabindex=2]", + "shadow-host input[tabindex=0]", + "shadow-host inner-host input[tabindex=1]", + "shadow-host inner-host input[tabindex=0]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=-1] input[tabindex=2]", + "shadow-host[tabindex=-1] input[tabindex=0]", + "shadow-host[tabindex=-1] inner-host input[tabindex=1]", + "shadow-host[tabindex=-1] inner-host input[tabindex=0]", + "shadow-host[tabindex=0] input[tabindex=2]", + "shadow-host[tabindex=0] input[tabindex=0]", + "shadow-host[tabindex=0] inner-host input[tabindex=1]", + "shadow-host[tabindex=0] inner-host input[tabindex=0]", + "audio[controls]", + "audio[controls][tabindex=-1]", + "video[controls]", + "video[controls][tabindex=-1]", + "details summary", + "details[tabindex=-1] summary", + "details[open] summary", + "details[open] a[href]", + "svg a[xlink|href]", + "svg[tabindex=-1] a[xlink|href]", + "svg[focusable=false] a[xlink|href]", + "svg a[xlink|href][tabindex=0]", + "svg rect[tabindex=0]", + "svg a[focusable=false]", + "svg rect[tabindex=0]{viewbox}", + "svg{tiny} rect[tabindex=0]", + "svg{tiny} a[focusable=false]", + "svg{tiny} rect[focusable=false][tabindex=0]", + "svg{tiny}[focusable=false] a", + "[contenteditable]:empty", + "[contenteditable]", + "[tabindex=0]", + "input[tabindex=hello]", + "div[tabindex=0]:empty", + "span[tabindex=0]:empty", + "fieldset[tabindex=0][disabled]", + "fieldset input", + "{hidden} > a{visible}", + "{hidden} > {visible} > a", + "table tbody tr td a", + "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", + "div{no-dimension}", + "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", + "canvas > input", + "canvas > a", + "canvas > [tabindex=0]" + ] + }, + "jquery": { + "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", + "input[type=text]", + "input[type=text][tabindex=-1]", + "input[type=password]", + "input[type=password][tabindex=-1]", + "input[type=checkbox]", + "input[type=checkbox][tabindex=-1]", + "input[type=radio]", + "input[type=radio][tabindex=-1]", + "input[type=submit]", + "input[type=submit][tabindex=-1]", + "input[type=reset]", + "input[type=reset][tabindex=-1]", + "select", + "select[tabindex=-1]", + "textarea", + "textarea[tabindex=-1]", + "button[type=button]", + "button[type=button][tabindex=-1]", + "label[tabindex=-1]", + "label[tabindex=0]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", + "a[href]", + "a[href=]", + "a[href][tabindex=-1]", + "area[href].upper", + "area[href].lower", + "firefox-bug-1116126", + "area[href][tabindex=-1].upper", + "area[href][tabindex=-1].lower", + "img[tabindex=-1] area[href].upper", + "img[tabindex=-1] area[href].lower", + "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", + "a:has([ismap])", + "a[tabindex=-1]:has([ismap])", + "a:has([ismap][tabindex=-1])", + "a > img[ismap][tabindex=-1]", + "iframe[tabindex=-1]", + "iframe{focusable}[tabindex=-1]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", + "audio[controls][tabindex=-1]", + "video[controls][tabindex=-1]", + "embed[tabindex=-1]", + "embed[type=mp4][tabindex=-1]", + "embed[type=ogv][tabindex=-1]", + "embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=0]", + "keygen[tabindex=-1]", + "div{container-overflow-scroll}[tabindex=-1]", + "details[tabindex=-1]", + "details summary[tabindex=-1]", + "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", + "object[src=swf][tabindex=-1]", + "object[src=swf][height=0]", + "object[src=svg]", + "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", + "object[src=svg][height=0]", + "object[usemap]", + "svg[tabindex=-1]", + "[contenteditable][tabindex=-1]", + "[tabindex=-2]", + "[tabindex=-1]", + "[tabindex=0]", + "[tabindex=1]", + "[tabindex=+2]", + "[tabindex= +2]", + "input[tabindex=hello]", + "[tabindex=]", + "[tabindex=3 ]", + "div[tabindex=0]:empty", + "div[tabindex=-1]:empty", + "fieldset[tabindex=0][disabled]", + "fieldset[tabindex=-1][disabled]", + "fieldset input", + "fieldset[disabled] input", + "table tbody tr td a", + "table tbody tr{collapse} td a", + "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", + "a{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", + "span{user-modify}[tabindex=-1]" + ], + "tabOrder": [ + "input[tabindex=1]", + "input[tabindex=1]", + "input[type=text]", + "input[type=password]", + "input[type=checkbox]", + "input[type=radio]", + "input[type=submit]", + "input[type=reset]", + "select", + "textarea", + "button[type=button]", + "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", + "a[href]", + "a[href=]", + "area[href].upper", + "area[href].lower", + "firefox-bug-1116126", + "img[tabindex=-1] area[href].upper", + "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", + "a:has([ismap])", + "a:has([ismap][tabindex=-1])", + "shadow-host[tabindex=0]", + "embed[type=svg][tabindex=0]", + "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", + "object[src=swf][height=0]", + "object[src=svg]", + "object[src=svg][tabindex=0]", + "object[src=svg][height=0]", + "object[usemap]", + "[tabindex=0]", + "[tabindex=1]", + "[tabindex=+2]", + "[tabindex= +2]", + "input[tabindex=hello]", + "[tabindex=]", + "[tabindex=3 ]", + "div[tabindex=0]:empty", + "fieldset[tabindex=0][disabled]", + "fieldset input", + "fieldset[disabled] input", + "table tbody tr td a", + "table tbody tr{collapse} td a", + "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", + "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input" + ] + } +} \ No newline at end of file diff --git a/tests/focusable/data/safari-9.json b/tests/focusable/data/safari-9.json index e638f453..0eb11d18 100644 --- a/tests/focusable/data/safari-9.json +++ b/tests/focusable/data/safari-9.json @@ -1,13 +1,13 @@ { "platform": { - "description": "Safari 9.0.1 on OS X 10.10.5", + "description": "Safari 9.0.2 on OS X 10.10.5", "layout": "WebKit", "manufacturer": null, "name": "Safari", "prerelease": null, "product": null, - "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/601.2.7 (KHTML, like Gecko) Version/9.0.1 Safari/601.2.7", - "version": "9.0.1", + "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9", + "version": "9.0.2", "os": { "architecture": 32, "family": "OS X", @@ -16,6 +16,8 @@ }, "focusable": [ "body", + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -34,16 +36,21 @@ "textarea[tabindex=-1]", "button[type=button]", "button[type=button][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -52,13 +59,15 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", "video[controls][tabindex=-1]", - "embed", "embed[tabindex=-1]", - "embed[type=mp4]", "embed[type=mp4][tabindex=-1]", "embed[type=ogv][tabindex=-1]", "embed[type=svg]", @@ -74,10 +83,12 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg a[xlink|href]", "svg rect[onfocus]", @@ -85,6 +96,7 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -119,11 +131,13 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "span{user-modify}[tabindex=-1]", "canvas > input", @@ -131,9 +145,57 @@ "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]" ], "focusEvents": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -155,16 +217,21 @@ "input[type=text]", "input[type=text][tabindex=-1]", "input[type=text]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -173,13 +240,15 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", "video[controls][tabindex=-1]", - "embed", "embed[tabindex=-1]", - "embed[type=mp4]", "embed[type=mp4][tabindex=-1]", "embed[type=ogv][tabindex=-1]", "embed[type=svg]", @@ -195,10 +264,12 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg", "svg a[xlink|href]", @@ -210,20 +281,22 @@ "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[tabindex=-1] a[xlink|href] text", - "svg text", - "svg rect", + "svg[tabindex=-1] text", + "svg[tabindex=-1] rect", "svg[focusable=false]", "svg[focusable=false] a[xlink|href]", "svg[focusable=false] a[xlink|href] text", - "svg text", - "svg rect", + "svg[focusable=false] text", + "svg[focusable=false] rect", "svg:has(a[tabindex=0])", "svg a[xlink|href][tabindex=0]", "svg a[xlink|href][tabindex=0] text", - "svg text", + "svg a[xlink|href][tabindex=1]", + "svg a[xlink|href][tabindex=1] text", + "svg:has(a[tabindex=0]) text", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", - "svg rect", + "svg:has(a[tabindex=0]) rect", "svg a[focusable=false]", "rect", "svg{viewbox}", @@ -233,8 +306,8 @@ "svg:has(a[tabindex=-1])", "svg a[xlink|href][tabindex=-1]", "svg a[xlink|href][tabindex=-1] text", - "svg text", - "svg rect", + "svg:has(a[tabindex=-1]) text", + "svg:has(a[tabindex=-1]) rect", "svg{tiny}", "svg{tiny} rect", "svg{tiny} rect[tabindex=0]", @@ -270,11 +343,13 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "span{user-modify}[tabindex=-1]", "canvas > input", @@ -282,17 +357,114 @@ "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg text[focusable=true]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg svg a[focusable=false]", + "embed[type=svg] -> file:svg svg text[focusable=true]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg svg a[focusable=false]", + "object[src=svg] -> file:svg svg text[focusable=true]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "object[src=svg][height=0] -> file:svg a[xlink|href] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][height=0] -> file:svg svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg text[focusable=true]" ], "focusRedirection": [ - "label[for=\"label-target\"] --- input[type=text]", - "label[for=\"label-target-focusable\"] --- input[type=text][tabindex=-1]", - "label[for=\"label-target\"][tabindex=-1] --- input[type=text]", + "label[for=label-target] --- input[type=text]", + "label[for=label-target-focusable] --- input[type=text][tabindex=-1]", + "label[for=label-target][tabindex=-1] --- input[type=text]", "fieldset legend --- fieldset input" ], + "focusEncapsulation": [ + "iframe{focusable} -> input --- iframe{focusable}", + "iframe{focusable}[tabindex=-1] -> input --- iframe{focusable}[tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href] --- iframe[src=svg]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] --- iframe[src=svg][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href] --- embed[type=svg]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] --- embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] --- embed[type=svg][tabindex=0]", + "object[src=svg] -> file:svg a[xlink|href] --- object[src=svg]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] --- object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] --- object[src=svg][tabindex=0]" + ], "noFocusMethod": [], "tabOrder": [ + "object[src=svg][height=0]", + "input[tabindex=1]", + "svg a[xlink|href][tabindex=1]", "[tabindex=1]", + "input[tabindex=1]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -306,19 +478,29 @@ "select", "textarea", "button[type=button]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", - "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", "iframe{focusable}", + "iframe{focusable} -> input", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "shadow-host[tabindex=0]", "audio[controls]", "video[controls]", "keygen", @@ -349,10 +531,12 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "canvas > input", "canvas > a", @@ -361,6 +545,7 @@ "tabIndex": { "html": -1, "body": -1, + "input[tabindex=1]": 1, "input[type=text]": 0, "input[type=text][tabindex=-1]": -1, "input[type=password]": 0, @@ -384,35 +569,40 @@ "label": -1, "label[tabindex=-1]": -1, "label[tabindex=0]": 0, - "label[for=\"label-target\"]": -1, - "label[for=\"label-target-focusable\"]": -1, - "label[for=\"label-target\"][tabindex=-1]": -1, + "label[for=label-target]": -1, + "label[for=label-target-focusable]": -1, + "label[for=label-target][tabindex=-1]": -1, + "form": -1, + "form input": 0, + "form[tabindex=-1]": -1, + "form[tabindex=-1] input": 0, + "form[disabled]": -1, + "form[disabled] input": 0, "input[type=text][disabled]": 0, "input[type=password][disabled]": 0, "input[type=checkbox][disabled]": 0, "input[type=radio][disabled]": 0, "input[type=submit][disabled]": 0, + "input[type=reset][disabled]": 0, "input[type=hidden][disabled]": 0, "select[disabled]": 0, "textarea[disabled]": 0, "button[type=button][disabled]": 0, + "label[disabled]": -1, "a[name]": 0, "a[href]": 0, - "a[href=\"\"]": 0, + "a[href=]": 0, "a[href][tabindex=-1]": -1, "span[href]": -1, "link[itemprop][href]": -1, "area[href].upper": 0, "area": 0, "area[href].lower": 0, - "map.invalid-image area[href].upper": 0, - "map.invalid-image area": 0, - "map.invalid-image area[href].lower": 0, "img[usemap].first": -1, - "img[usemap].invalid": -1, - "img[usemap=\"void\"]": -1, - "img": -1, + "firefox-bug-1116126": 0, "img[usemap].second": -1, + "img[usemap=void]": -1, + "img": -1, "area[href][tabindex=-1].upper": -1, "area[tabindex=-1]": -1, "area[href][tabindex=-1].lower": -1, @@ -421,6 +611,10 @@ "img[tabindex=-1] area": 0, "img[tabindex=-1] area[href].lower": 0, "img[usemap][tabindex=-1]": -1, + "map.invalid-image area[href].upper": 0, + "map.invalid-image area": 0, + "map.invalid-image area[href].lower": 0, + "img[usemap].invalid": -1, "a:has([ismap])": 0, "a > img[ismap]": -1, "a[tabindex=-1]:has([ismap])": -1, @@ -431,15 +625,20 @@ "iframe[tabindex=-1]": -1, "iframe{focusable}": 0, "iframe{focusable}[tabindex=-1]": -1, + "iframe[src=svg]": 0, + "iframe[src=svg][tabindex=-1]": -1, + "shadow-host": -1, + "shadow-host[tabindex=-1]": -1, + "shadow-host[tabindex=0]": 0, "audio": -1, "audio[controls]": 0, "audio[controls][tabindex=-1]": -1, "video": -1, "video[controls]": 0, "video[controls][tabindex=-1]": -1, - "embed": 0, + "embed": -1, "embed[tabindex=-1]": -1, - "embed[type=mp4]": 0, + "embed[type=mp4]": -1, "embed[type=mp4][tabindex=-1]": -1, "embed[type=ogv]": -1, "embed[type=ogv][tabindex=-1]": -1, @@ -485,15 +684,20 @@ "details a[href]": 0, "details[tabindex=-1]": -1, "details[tabindex=-1] summary": 0, + "details[tabindex=-1] a[href]": 0, + "details:has(summary[tabindex=-1])": -1, "details summary[tabindex=-1]": -1, + "details:has(summary[tabindex=-1]) a[href]": 0, "details[open]": -1, "details[open] summary": 0, "details[open] a[href]": 0, - "object[src=swf]": -1, + "object[src=swf]": 0, + "object[src=swf][tabindex=0]": 0, "object[src=swf][tabindex=-1]": -1, "object[src=swf][height=0]": 0, "object[src=svg]": 0, "object[src=svg][tabindex=-1]": -1, + "object[src=svg][tabindex=0]": 0, "object[src=svg][height=0]": 0, "map.object area[href].upper": 0, "map.object area": 0, @@ -509,14 +713,22 @@ "svg[tabindex=-1]": -1, "svg[tabindex=-1] a[xlink|href]": 0, "svg[tabindex=-1] a[xlink|href] text": -1, + "svg[tabindex=-1] text": -1, + "svg[tabindex=-1] rect": -1, "svg[focusable=false]": -1, "svg[focusable=false] a[xlink|href]": 0, "svg[focusable=false] a[xlink|href] text": -1, + "svg[focusable=false] text": -1, + "svg[focusable=false] rect": -1, "svg:has(a[tabindex=0])": -1, "svg a[xlink|href][tabindex=0]": 0, "svg a[xlink|href][tabindex=0] text": -1, + "svg a[xlink|href][tabindex=1]": 1, + "svg a[xlink|href][tabindex=1] text": -1, + "svg:has(a[tabindex=0]) text": -1, "svg rect[tabindex=0]": 0, "svg rect[tabindex=-1]": -1, + "svg:has(a[tabindex=0]) rect": -1, "svg a[focusable=false]": 0, "svg{viewbox}": -1, "svg rect[tabindex=0]{viewbox}": 0, @@ -525,6 +737,8 @@ "svg:has(a[tabindex=-1])": -1, "svg a[xlink|href][tabindex=-1]": -1, "svg a[xlink|href][tabindex=-1] text": -1, + "svg:has(a[tabindex=-1]) text": -1, + "svg:has(a[tabindex=-1]) rect": -1, "svg{tiny}": -1, "svg{tiny} rect": -1, "svg{tiny} rect[tabindex=0]": 0, @@ -545,7 +759,7 @@ "[tabindex=+2]": 2, "[tabindex= +2]": 2, "input[tabindex=hello]": 0, - "[tabindex=\"\"]": -1, + "[tabindex=]": -1, "[tabindex=hello]": -1, "[tabindex=3 ]": 3, "[tabindex=3x]": 3, @@ -588,18 +802,24 @@ "table tbody tr{collapse}": -1, "table tbody tr{collapse} td": -1, "table tbody tr{collapse} td a": 0, + "table tbody tr{collapse} td a{visible}": 0, "table tbody tr{collapse} td{visible}": -1, "table tbody tr{collapse} td{visible} a": 0, - "table tbody tr{collapse} td a{visible}": 0, "{none} > a": 0, "{none} > a{inline}": 0, "a{none}": 0, "div{no-dimension}": 0, "a{flexbox}": 0, "a{flexbox} > span": -1, - "[tabindex=\"-1\"]{flexbox}": -1, - "[tabindex=\"-1\"]{flexbox} > span1": -1, - "[tabindex=\"-1\"]{flexbox} > span2": -1, + "[tabindex=-1]{flexbox}": -1, + "[tabindex=-1]{flexbox} > span1": -1, + "[tabindex=-1]{flexbox} > span2": -1, + "div{flexbox}": -1, + "div{flexbox} span{order:2}": -1, + "div{flexbox} span{order:2} input": 0, + "div{flexbox} span{order:1}": -1, + "div{flexbox} span{order:1} input": 0, + "span{flexbox}": -1, "span{user-modify}": 0, "span{user-modify}[tabindex=-1]": -1, "canvas": -1, @@ -608,10 +828,101 @@ "canvas > a": 0, "canvas > a[tabindex=-1]": -1, "canvas > [tabindex=0]": 0, - "canvas > [tabindex=-1]": -1 + "canvas > [tabindex=-1]": -1, + "iframe -> body": -1, + "iframe[tabindex=-1] -> body": -1, + "iframe{focusable} -> body": -1, + "iframe{focusable} -> input": 0, + "iframe{focusable} -> input[tabindex=1]": 1, + "iframe{focusable}[tabindex=-1] -> body": -1, + "iframe{focusable}[tabindex=-1] -> input": 0, + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]": 1, + "iframe[src=svg] -> file:svg a[xlink|href]": 0, + "iframe[src=svg] -> file:svg a[xlink|href] text": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "iframe[src=svg] -> file:svg a[focusable=false]": 0, + "iframe[src=svg] -> file:svg svg a[focusable=false]": -1, + "iframe[src=svg] -> file:svg svg text[focusable=true]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg] -> file:svg a[xlink|href]": 0, + "embed[type=svg] -> file:svg a[xlink|href] text": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg] -> file:svg a[focusable=false]": 0, + "embed[type=svg] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]": 0, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]": 0, + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]": -1, + "object[src=svg] -> file:svg a[xlink|href]": 0, + "object[src=svg] -> file:svg a[xlink|href] text": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg] -> file:svg a[focusable=false]": 0, + "object[src=svg] -> file:svg svg a[focusable=false]": -1, + "object[src=svg] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]": 0, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]": 0, + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href]": 0, + "object[src=svg][height=0] -> file:svg a[xlink|href] text": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][height=0] -> file:svg a[focusable=false]": 0, + "object[src=svg][height=0] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][height=0] -> file:svg svg text[focusable=true]": -1 }, "ally": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -630,16 +941,21 @@ "textarea[tabindex=-1]", "button[type=button]", "button[type=button][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -648,6 +964,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -660,16 +980,19 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg a[xlink|href]", "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -704,11 +1027,13 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", @@ -718,6 +1043,8 @@ "canvas > [tabindex=-1]" ], "focusableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -736,16 +1063,21 @@ "textarea[tabindex=-1]", "button[type=button]", "button[type=button][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -754,6 +1086,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -766,16 +1102,19 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg a[xlink|href]", "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -810,11 +1149,13 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "span{user-modify}[tabindex=-1]", "canvas > input", @@ -825,6 +1166,8 @@ "canvas > [tabindex=-1]" ], "tabbable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -834,18 +1177,24 @@ "select", "textarea", "button[type=button]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host[tabindex=0]", "audio[controls]", "video[controls]", "details summary", @@ -856,6 +1205,7 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg a[focusable=false]", "svg rect[tabindex=0]{viewbox}", @@ -879,15 +1229,19 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" ], "tabbableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -897,18 +1251,24 @@ "select", "textarea", "button[type=button]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host[tabindex=0]", "audio[controls]", "video[controls]", "details summary", @@ -919,6 +1279,7 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg a[focusable=false]", "svg rect[tabindex=0]{viewbox}", @@ -942,10 +1303,12 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "canvas > input", "canvas > a", @@ -953,7 +1316,10 @@ ], "onlyTabbable": [], "tabOrder": [ + "input[tabindex=1]", + "svg a[xlink|href][tabindex=1]", "[tabindex=1]", + "input[tabindex=1]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -967,18 +1333,24 @@ "select", "textarea", "button[type=button]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host[tabindex=0]", "audio[controls]", "video[controls]", "details summary", @@ -1007,10 +1379,12 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" @@ -1018,6 +1392,8 @@ }, "jquery": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -1038,25 +1414,33 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", "a > img[ismap][tabindex=-1]", "iframe[tabindex=-1]", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls][tabindex=-1]", "video[controls][tabindex=-1]", "embed[tabindex=-1]", @@ -1070,10 +1454,12 @@ "details summary[tabindex=-1]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "svg[tabindex=-1]", @@ -1085,7 +1471,7 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=3 ]", "div[tabindex=0]:empty", "div[tabindex=-1]:empty", @@ -1095,13 +1481,17 @@ "fieldset[disabled] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]" ], "tabOrder": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -1112,20 +1502,28 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", + "shadow-host[tabindex=0]", "embed[type=svg][tabindex=0]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "[tabindex=0]", @@ -1133,7 +1531,7 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=3 ]", "div[tabindex=0]:empty", "fieldset[tabindex=0][disabled]", @@ -1141,9 +1539,11 @@ "fieldset[disabled] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", - "a{flexbox}" + "table tbody tr{collapse} td{visible} a", + "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input" ] } } \ No newline at end of file diff --git a/tests/focusable/data/webkit-nightly.json b/tests/focusable/data/webkit-nightly.json index e34a9f3d..cec9af65 100644 --- a/tests/focusable/data/webkit-nightly.json +++ b/tests/focusable/data/webkit-nightly.json @@ -1,13 +1,13 @@ { "platform": { - "description": "WebKit Nightly 602.1.13 (like Safari 8+) on OS X 10.10.5", + "description": "WebKit Nightly 602.1.15 (like Safari 8+) on OS X 10.10.5", "layout": "WebKit", "manufacturer": null, "name": "WebKit Nightly", "prerelease": "alpha", "product": null, - "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/602.1.13+ (KHTML, like Gecko) Version/9.0.1 Safari/601.2.7", - "version": "602.1.13", + "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/602.1.15+ (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9", + "version": "602.1.15", "os": { "architecture": 32, "family": "OS X", @@ -16,6 +16,8 @@ }, "focusable": [ "body", + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -34,16 +36,21 @@ "textarea[tabindex=-1]", "button[type=button]", "button[type=button][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -52,13 +59,15 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", "video[controls][tabindex=-1]", - "embed", "embed[tabindex=-1]", - "embed[type=mp4]", "embed[type=mp4][tabindex=-1]", "embed[type=ogv][tabindex=-1]", "embed[type=svg]", @@ -74,10 +83,12 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg a[xlink|href]", "svg rect[onfocus]", @@ -85,6 +96,7 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -119,11 +131,13 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "span{user-modify}[tabindex=-1]", "canvas > input", @@ -131,9 +145,57 @@ "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]" ], "focusEvents": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -155,16 +217,21 @@ "input[type=text]", "input[type=text][tabindex=-1]", "input[type=text]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -173,13 +240,15 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", "video[controls][tabindex=-1]", - "embed", "embed[tabindex=-1]", - "embed[type=mp4]", "embed[type=mp4][tabindex=-1]", "embed[type=ogv][tabindex=-1]", "embed[type=svg]", @@ -195,10 +264,12 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg", "svg a[xlink|href]", @@ -210,20 +281,22 @@ "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[tabindex=-1] a[xlink|href] text", - "svg text", - "svg rect", + "svg[tabindex=-1] text", + "svg[tabindex=-1] rect", "svg[focusable=false]", "svg[focusable=false] a[xlink|href]", "svg[focusable=false] a[xlink|href] text", - "svg text", - "svg rect", + "svg[focusable=false] text", + "svg[focusable=false] rect", "svg:has(a[tabindex=0])", "svg a[xlink|href][tabindex=0]", "svg a[xlink|href][tabindex=0] text", - "svg text", + "svg a[xlink|href][tabindex=1]", + "svg a[xlink|href][tabindex=1] text", + "svg:has(a[tabindex=0]) text", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", - "svg rect", + "svg:has(a[tabindex=0]) rect", "svg a[focusable=false]", "rect", "svg{viewbox}", @@ -233,8 +306,8 @@ "svg:has(a[tabindex=-1])", "svg a[xlink|href][tabindex=-1]", "svg a[xlink|href][tabindex=-1] text", - "svg text", - "svg rect", + "svg:has(a[tabindex=-1]) text", + "svg:has(a[tabindex=-1]) rect", "svg{tiny}", "svg{tiny} rect", "svg{tiny} rect[tabindex=0]", @@ -270,11 +343,13 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "span{user-modify}[tabindex=-1]", "canvas > input", @@ -282,17 +357,113 @@ "canvas > a", "canvas > a[tabindex=-1]", "canvas > [tabindex=0]", - "canvas > [tabindex=-1]" + "canvas > [tabindex=-1]", + "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", + "iframe{focusable}[tabindex=-1] -> input", + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[xlink|href] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg] -> file:svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg a[focusable=false]", + "iframe[src=svg] -> file:svg svg text[focusable=true]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "embed[type=svg] -> file:svg a[xlink|href]", + "embed[type=svg] -> file:svg a[xlink|href] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg] -> file:svg a[focusable=false]", + "embed[type=svg] -> file:svg svg a[focusable=false]", + "embed[type=svg] -> file:svg svg text[focusable=true]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "object[src=svg] -> file:svg a[xlink|href]", + "object[src=svg] -> file:svg a[xlink|href] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg] -> file:svg a[focusable=false]", + "object[src=svg] -> file:svg svg a[focusable=false]", + "object[src=svg] -> file:svg svg text[focusable=true]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]", + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]", + "object[src=svg][height=0] -> file:svg a[xlink|href] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text", + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text", + "object[src=svg][height=0] -> file:svg svg a[focusable=false]", + "object[src=svg][height=0] -> file:svg svg text[focusable=true]" ], "focusRedirection": [ - "label[for=\"label-target\"] --- input[type=text]", - "label[for=\"label-target-focusable\"] --- input[type=text][tabindex=-1]", - "label[for=\"label-target\"][tabindex=-1] --- input[type=text]", + "label[for=label-target] --- input[type=text]", + "label[for=label-target-focusable] --- input[type=text][tabindex=-1]", + "label[for=label-target][tabindex=-1] --- input[type=text]", "fieldset legend --- fieldset input" ], + "focusEncapsulation": [ + "iframe{focusable} -> input --- iframe{focusable}", + "iframe{focusable}[tabindex=-1] -> input --- iframe{focusable}[tabindex=-1]", + "iframe[src=svg] -> file:svg a[xlink|href] --- iframe[src=svg]", + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] --- iframe[src=svg][tabindex=-1]", + "embed[type=svg] -> file:svg a[xlink|href] --- embed[type=svg]", + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] --- embed[type=svg][tabindex=-1]", + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] --- embed[type=svg][tabindex=0]", + "object[src=svg] -> file:svg a[xlink|href] --- object[src=svg]", + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] --- object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] --- object[src=svg][tabindex=0]" + ], "noFocusMethod": [], "tabOrder": [ + "input[tabindex=1]", + "svg a[xlink|href][tabindex=1]", "[tabindex=1]", + "input[tabindex=1]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -306,19 +477,29 @@ "select", "textarea", "button[type=button]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", - "iframe{focusable} -> input", + "iframe{focusable} -> input[tabindex=1]", "iframe{focusable}", + "iframe{focusable} -> input", + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]", + "iframe[src=svg]", + "iframe[src=svg] -> file:svg a[xlink|href]", + "iframe[src=svg] -> file:svg a[focusable=false]", + "shadow-host[tabindex=0]", "audio[controls]", "video[controls]", "keygen", @@ -345,10 +526,12 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "canvas > input", "canvas > a", @@ -357,6 +540,7 @@ "tabIndex": { "html": -1, "body": -1, + "input[tabindex=1]": 1, "input[type=text]": 0, "input[type=text][tabindex=-1]": -1, "input[type=password]": 0, @@ -380,35 +564,40 @@ "label": -1, "label[tabindex=-1]": -1, "label[tabindex=0]": 0, - "label[for=\"label-target\"]": -1, - "label[for=\"label-target-focusable\"]": -1, - "label[for=\"label-target\"][tabindex=-1]": -1, + "label[for=label-target]": -1, + "label[for=label-target-focusable]": -1, + "label[for=label-target][tabindex=-1]": -1, + "form": -1, + "form input": 0, + "form[tabindex=-1]": -1, + "form[tabindex=-1] input": 0, + "form[disabled]": -1, + "form[disabled] input": 0, "input[type=text][disabled]": 0, "input[type=password][disabled]": 0, "input[type=checkbox][disabled]": 0, "input[type=radio][disabled]": 0, "input[type=submit][disabled]": 0, + "input[type=reset][disabled]": 0, "input[type=hidden][disabled]": 0, "select[disabled]": 0, "textarea[disabled]": 0, "button[type=button][disabled]": 0, + "label[disabled]": -1, "a[name]": 0, "a[href]": 0, - "a[href=\"\"]": 0, + "a[href=]": 0, "a[href][tabindex=-1]": -1, "span[href]": -1, "link[itemprop][href]": -1, "area[href].upper": 0, "area": 0, "area[href].lower": 0, - "map.invalid-image area[href].upper": 0, - "map.invalid-image area": 0, - "map.invalid-image area[href].lower": 0, "img[usemap].first": -1, - "img[usemap].invalid": -1, - "img[usemap=\"void\"]": -1, - "img": -1, + "firefox-bug-1116126": 0, "img[usemap].second": -1, + "img[usemap=void]": -1, + "img": -1, "area[href][tabindex=-1].upper": -1, "area[tabindex=-1]": -1, "area[href][tabindex=-1].lower": -1, @@ -417,6 +606,10 @@ "img[tabindex=-1] area": 0, "img[tabindex=-1] area[href].lower": 0, "img[usemap][tabindex=-1]": -1, + "map.invalid-image area[href].upper": 0, + "map.invalid-image area": 0, + "map.invalid-image area[href].lower": 0, + "img[usemap].invalid": -1, "a:has([ismap])": 0, "a > img[ismap]": -1, "a[tabindex=-1]:has([ismap])": -1, @@ -427,15 +620,20 @@ "iframe[tabindex=-1]": -1, "iframe{focusable}": 0, "iframe{focusable}[tabindex=-1]": -1, + "iframe[src=svg]": 0, + "iframe[src=svg][tabindex=-1]": -1, + "shadow-host": -1, + "shadow-host[tabindex=-1]": -1, + "shadow-host[tabindex=0]": 0, "audio": -1, "audio[controls]": 0, "audio[controls][tabindex=-1]": -1, "video": -1, "video[controls]": 0, "video[controls][tabindex=-1]": -1, - "embed": 0, + "embed": -1, "embed[tabindex=-1]": -1, - "embed[type=mp4]": 0, + "embed[type=mp4]": -1, "embed[type=mp4][tabindex=-1]": -1, "embed[type=ogv]": -1, "embed[type=ogv][tabindex=-1]": -1, @@ -481,15 +679,20 @@ "details a[href]": 0, "details[tabindex=-1]": -1, "details[tabindex=-1] summary": 0, + "details[tabindex=-1] a[href]": 0, + "details:has(summary[tabindex=-1])": -1, "details summary[tabindex=-1]": -1, + "details:has(summary[tabindex=-1]) a[href]": 0, "details[open]": -1, "details[open] summary": 0, "details[open] a[href]": 0, - "object[src=swf]": -1, + "object[src=swf]": 0, + "object[src=swf][tabindex=0]": 0, "object[src=swf][tabindex=-1]": -1, "object[src=swf][height=0]": 0, "object[src=svg]": 0, "object[src=svg][tabindex=-1]": -1, + "object[src=svg][tabindex=0]": 0, "object[src=svg][height=0]": 0, "map.object area[href].upper": 0, "map.object area": 0, @@ -505,14 +708,22 @@ "svg[tabindex=-1]": -1, "svg[tabindex=-1] a[xlink|href]": 0, "svg[tabindex=-1] a[xlink|href] text": -1, + "svg[tabindex=-1] text": -1, + "svg[tabindex=-1] rect": -1, "svg[focusable=false]": -1, "svg[focusable=false] a[xlink|href]": 0, "svg[focusable=false] a[xlink|href] text": -1, + "svg[focusable=false] text": -1, + "svg[focusable=false] rect": -1, "svg:has(a[tabindex=0])": -1, "svg a[xlink|href][tabindex=0]": 0, "svg a[xlink|href][tabindex=0] text": -1, + "svg a[xlink|href][tabindex=1]": 1, + "svg a[xlink|href][tabindex=1] text": -1, + "svg:has(a[tabindex=0]) text": -1, "svg rect[tabindex=0]": 0, "svg rect[tabindex=-1]": -1, + "svg:has(a[tabindex=0]) rect": -1, "svg a[focusable=false]": 0, "svg{viewbox}": -1, "svg rect[tabindex=0]{viewbox}": 0, @@ -521,6 +732,8 @@ "svg:has(a[tabindex=-1])": -1, "svg a[xlink|href][tabindex=-1]": -1, "svg a[xlink|href][tabindex=-1] text": -1, + "svg:has(a[tabindex=-1]) text": -1, + "svg:has(a[tabindex=-1]) rect": -1, "svg{tiny}": -1, "svg{tiny} rect": -1, "svg{tiny} rect[tabindex=0]": 0, @@ -541,7 +754,7 @@ "[tabindex=+2]": 2, "[tabindex= +2]": 2, "input[tabindex=hello]": 0, - "[tabindex=\"\"]": -1, + "[tabindex=]": -1, "[tabindex=hello]": -1, "[tabindex=3 ]": 3, "[tabindex=3x]": 3, @@ -584,18 +797,24 @@ "table tbody tr{collapse}": -1, "table tbody tr{collapse} td": -1, "table tbody tr{collapse} td a": 0, + "table tbody tr{collapse} td a{visible}": 0, "table tbody tr{collapse} td{visible}": -1, "table tbody tr{collapse} td{visible} a": 0, - "table tbody tr{collapse} td a{visible}": 0, "{none} > a": 0, "{none} > a{inline}": 0, "a{none}": 0, "div{no-dimension}": 0, "a{flexbox}": 0, "a{flexbox} > span": -1, - "[tabindex=\"-1\"]{flexbox}": -1, - "[tabindex=\"-1\"]{flexbox} > span1": -1, - "[tabindex=\"-1\"]{flexbox} > span2": -1, + "[tabindex=-1]{flexbox}": -1, + "[tabindex=-1]{flexbox} > span1": -1, + "[tabindex=-1]{flexbox} > span2": -1, + "div{flexbox}": -1, + "div{flexbox} span{order:2}": -1, + "div{flexbox} span{order:2} input": 0, + "div{flexbox} span{order:1}": -1, + "div{flexbox} span{order:1} input": 0, + "span{flexbox}": -1, "span{user-modify}": 0, "span{user-modify}[tabindex=-1]": -1, "canvas": -1, @@ -604,10 +823,101 @@ "canvas > a": 0, "canvas > a[tabindex=-1]": -1, "canvas > [tabindex=0]": 0, - "canvas > [tabindex=-1]": -1 + "canvas > [tabindex=-1]": -1, + "iframe -> body": -1, + "iframe[tabindex=-1] -> body": -1, + "iframe{focusable} -> body": -1, + "iframe{focusable} -> input": 0, + "iframe{focusable} -> input[tabindex=1]": 1, + "iframe{focusable}[tabindex=-1] -> body": -1, + "iframe{focusable}[tabindex=-1] -> input": 0, + "iframe{focusable}[tabindex=-1] -> input[tabindex=1]": 1, + "iframe[src=svg] -> file:svg a[xlink|href]": 0, + "iframe[src=svg] -> file:svg a[xlink|href] text": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "iframe[src=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "iframe[src=svg] -> file:svg a[focusable=false]": 0, + "iframe[src=svg] -> file:svg svg a[focusable=false]": -1, + "iframe[src=svg] -> file:svg svg text[focusable=true]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "iframe[src=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "iframe[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "iframe[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg] -> file:svg a[xlink|href]": 0, + "embed[type=svg] -> file:svg a[xlink|href] text": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg] -> file:svg a[focusable=false]": 0, + "embed[type=svg] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "embed[type=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href]": 0, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "embed[type=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "embed[type=svg][tabindex=0] -> file:svg a[focusable=false]": 0, + "embed[type=svg][tabindex=0] -> file:svg svg a[focusable=false]": -1, + "embed[type=svg][tabindex=0] -> file:svg svg text[focusable=true]": -1, + "object[src=svg] -> file:svg a[xlink|href]": 0, + "object[src=svg] -> file:svg a[xlink|href] text": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg] -> file:svg a[focusable=false]": 0, + "object[src=svg] -> file:svg svg a[focusable=false]": -1, + "object[src=svg] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href]": 0, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][tabindex=-1] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][tabindex=-1] -> file:svg a[focusable=false]": 0, + "object[src=svg][tabindex=-1] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][tabindex=-1] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href]": 0, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][tabindex=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][tabindex=0] -> file:svg a[focusable=false]": 0, + "object[src=svg][tabindex=0] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][tabindex=0] -> file:svg svg text[focusable=true]": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href]": 0, + "object[src=svg][height=0] -> file:svg a[xlink|href] text": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1]": 1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=1] text": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1]": -1, + "object[src=svg][height=0] -> file:svg a[xlink|href][tabindex=-1] text": -1, + "object[src=svg][height=0] -> file:svg a[focusable=false]": 0, + "object[src=svg][height=0] -> file:svg svg a[focusable=false]": -1, + "object[src=svg][height=0] -> file:svg svg text[focusable=true]": -1 }, "ally": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -626,16 +936,21 @@ "textarea[tabindex=-1]", "button[type=button]", "button[type=button][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -644,6 +959,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -656,16 +975,19 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg a[xlink|href]", "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -700,11 +1022,13 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]", "canvas > input", "canvas > input[tabindex=-1]", @@ -714,6 +1038,8 @@ "canvas > [tabindex=-1]" ], "focusableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -732,16 +1058,21 @@ "textarea[tabindex=-1]", "button[type=button]", "button[type=button][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", @@ -750,6 +1081,10 @@ "iframe[tabindex=-1]", "iframe{focusable}", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls]", "audio[controls][tabindex=-1]", "video[controls]", @@ -762,16 +1097,19 @@ "details[open] summary", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "svg a[xlink|href]", "svg[tabindex=-1]", "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg rect[tabindex=-1]", "svg a[focusable=false]", @@ -806,11 +1144,13 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "span{user-modify}[tabindex=-1]", "canvas > input", @@ -821,6 +1161,8 @@ "canvas > [tabindex=-1]" ], "tabbable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -830,18 +1172,24 @@ "select", "textarea", "button[type=button]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host[tabindex=0]", "audio[controls]", "video[controls]", "details summary", @@ -852,6 +1200,7 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg a[focusable=false]", "svg rect[tabindex=0]{viewbox}", @@ -875,15 +1224,19 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" ], "tabbableStrict": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -893,18 +1246,24 @@ "select", "textarea", "button[type=button]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host[tabindex=0]", "audio[controls]", "video[controls]", "details summary", @@ -915,6 +1274,7 @@ "svg[tabindex=-1] a[xlink|href]", "svg[focusable=false] a[xlink|href]", "svg a[xlink|href][tabindex=0]", + "svg a[xlink|href][tabindex=1]", "svg rect[tabindex=0]", "svg a[focusable=false]", "svg rect[tabindex=0]{viewbox}", @@ -938,10 +1298,12 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}", "canvas > input", "canvas > a", @@ -949,7 +1311,10 @@ ], "onlyTabbable": [], "tabOrder": [ + "input[tabindex=1]", + "svg a[xlink|href][tabindex=1]", "[tabindex=1]", + "input[tabindex=1]", "[tabindex=+2]", "[tabindex= +2]", "[tabindex=3 ]", @@ -963,18 +1328,24 @@ "select", "textarea", "button[type=button]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", "iframe", "iframe{focusable}", + "iframe[src=svg]", + "shadow-host[tabindex=0]", "audio[controls]", "video[controls]", "details summary", @@ -1003,10 +1374,12 @@ "{hidden} > a{visible}", "{hidden} > {visible} > a", "table tbody tr td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "div{no-dimension}", "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "canvas > input", "canvas > a", "canvas > [tabindex=0]" @@ -1014,6 +1387,8 @@ }, "jquery": { "focusable": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=text][tabindex=-1]", "input[type=password]", @@ -1034,25 +1409,33 @@ "button[type=button][tabindex=-1]", "label[tabindex=-1]", "label[tabindex=0]", - "label[for=\"label-target\"][tabindex=-1]", + "label[for=label-target][tabindex=-1]", + "form input", + "form[tabindex=-1]", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "a[href][tabindex=-1]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "area[href][tabindex=-1].upper", "area[href][tabindex=-1].lower", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", "img[usemap][tabindex=-1]", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a[tabindex=-1]:has([ismap])", "a:has([ismap][tabindex=-1])", "a > img[ismap][tabindex=-1]", "iframe[tabindex=-1]", "iframe{focusable}[tabindex=-1]", + "iframe[src=svg][tabindex=-1]", + "shadow-host[tabindex=-1]", + "shadow-host[tabindex=0]", "audio[controls][tabindex=-1]", "video[controls][tabindex=-1]", "embed[tabindex=-1]", @@ -1066,10 +1449,12 @@ "details summary[tabindex=-1]", "details[open] a[href]", "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][tabindex=-1]", "object[src=swf][height=0]", "object[src=svg]", "object[src=svg][tabindex=-1]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "svg[tabindex=-1]", @@ -1081,7 +1466,7 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=3 ]", "div[tabindex=0]:empty", "div[tabindex=-1]:empty", @@ -1091,13 +1476,17 @@ "fieldset[disabled] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", + "table tbody tr{collapse} td{visible} a", "a{flexbox}", - "[tabindex=\"-1\"]{flexbox}", + "[tabindex=-1]{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input", "span{user-modify}[tabindex=-1]" ], "tabOrder": [ + "input[tabindex=1]", + "input[tabindex=1]", "input[type=text]", "input[type=password]", "input[type=checkbox]", @@ -1108,20 +1497,28 @@ "textarea", "button[type=button]", "label[tabindex=0]", + "form input", + "form[tabindex=-1] input", + "form[disabled] input", "a[href]", - "a[href=\"\"]", + "a[href=]", "area[href].upper", "area[href].lower", - "map.invalid-image area[href].upper", - "map.invalid-image area[href].lower", + "firefox-bug-1116126", "img[tabindex=-1] area[href].upper", "img[tabindex=-1] area[href].lower", + "map.invalid-image area[href].upper", + "map.invalid-image area[href].lower", "a:has([ismap])", "a:has([ismap][tabindex=-1])", + "shadow-host[tabindex=0]", "embed[type=svg][tabindex=0]", "details[open] a[href]", + "object[src=swf]", + "object[src=swf][tabindex=0]", "object[src=swf][height=0]", "object[src=svg]", + "object[src=svg][tabindex=0]", "object[src=svg][height=0]", "object[usemap]", "[tabindex=0]", @@ -1129,7 +1526,7 @@ "[tabindex=+2]", "[tabindex= +2]", "input[tabindex=hello]", - "[tabindex=\"\"]", + "[tabindex=]", "[tabindex=3 ]", "div[tabindex=0]:empty", "fieldset[tabindex=0][disabled]", @@ -1137,9 +1534,11 @@ "fieldset[disabled] input", "table tbody tr td a", "table tbody tr{collapse} td a", - "table tbody tr{collapse} td{visible} a", "table tbody tr{collapse} td a{visible}", - "a{flexbox}" + "table tbody tr{collapse} td{visible} a", + "a{flexbox}", + "div{flexbox} span{order:2} input", + "div{flexbox} span{order:1} input" ] } } \ No newline at end of file