mirror of
https://github.com/servo/servo.git
synced 2025-08-04 21:20:23 +01:00
Update web-platform-tests to revision 077d53c8da8b47c1d5060893af96a29f27b10008
This commit is contained in:
parent
29103941fe
commit
08d41a134a
74 changed files with 413 additions and 331 deletions
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-floats-002.html]
|
||||||
|
[Hit test float]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-floats-003.html]
|
||||||
|
[Miss float below something else]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-floats-005.html]
|
||||||
|
[Miss clipped float]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[dynamic-import.https.html]
|
||||||
|
expected: CRASH
|
|
@ -2,3 +2,6 @@
|
||||||
[Hit test intersecting scaled box]
|
[Hit test intersecting scaled box]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Hit test within unscaled box]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -17,3 +17,6 @@
|
||||||
[test the top of layer]
|
[test the top of layer]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[test some point of the element: top left corner]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[elementsFromPoint-invalid-cases.html]
|
|
||||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
[parse-focus-visible.html]
|
||||||
|
[":focus-visible" should be a valid selector]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
["a:focus-visible" should be a valid selector]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[":focus:not(:focus-visible)" should be a valid selector]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -309,21 +309,21 @@
|
||||||
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
|
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html */*]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: */* text/html]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/html */*]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -53,9 +53,3 @@
|
||||||
[combined text/javascript ]
|
[combined text/javascript ]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[separate text/javascript x/x]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[separate text/javascript; charset=windows-1252 text/javascript]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,6 @@
|
||||||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Content-Type-Options%3A%20nosniff]
|
[X-Content-Type-Options%3A%20%22nosniFF%22]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[traverse_the_history_1.html]
|
||||||
|
[Multiple history traversals from the same task]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[traverse_the_history_3.html]
|
|
||||||
[Multiple history traversals, last would be aborted]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[embedded-opener-remove-frame.html]
|
[embedded-opener-remove-frame.html]
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[opener of discarded nested browsing context]
|
[opener of discarded nested browsing context]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_escaping-1.html]
|
[iframe_sandbox_popups_escaping-1.html]
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_escaping-2.html]
|
[iframe_sandbox_popups_escaping-2.html]
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[iframe_sandbox_popups_nonescaping-1.html]
|
[iframe_sandbox_popups_nonescaping-1.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: FAIL
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[form-double-submit-2.html]
|
|
||||||
[preventDefault should allow onclick submit() to succeed]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[form-double-submit-3.html]
|
|
||||||
[<button> should have the same double-submit protection as <input type=submit>]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,25 +1,10 @@
|
||||||
[select-event.html]
|
[select-event.html]
|
||||||
[textarea: selectionStart out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type text: selectionStart a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type url: setRangeText() a second time (must not fire select)]
|
[input type url: setRangeText() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type text: selectionStart out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type url: setSelectionRange() a second time (must not fire select)]
|
[input type url: setSelectionRange() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type password: setRangeText() a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type password: selectionStart out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type tel: selectionDirection a second time (must not fire select)]
|
[input type tel: selectionDirection a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -29,42 +14,51 @@
|
||||||
[input type password: selectionDirection a second time (must not fire select)]
|
[input type password: selectionDirection a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[textarea: selectionEnd a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type tel: selectionEnd out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type password: setSelectionRange out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type url: selectionEnd a second time (must not fire select)]
|
[input type url: selectionEnd a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[textarea: setSelectionRange() a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[textarea: setRangeText() a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type tel: setSelectionRange() a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type url: select() a second time (must not fire select)]
|
[input type url: select() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type password: selectionEnd a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type text: setRangeText() a second time (must not fire select)]
|
[input type text: setRangeText() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type search: setRangeText() a second time (must not fire select)]
|
[input type search: setRangeText() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type url: selectionStart a second time (must not fire select)]
|
[input type password: select() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type url: setSelectionRange out of range a second time (must not fire select)]
|
[input type password: selectionStart a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type text: selectionEnd a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type tel: setRangeText() a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: selectionDirection a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type password: selectionEnd out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type tel: selectionStart out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type search: selectionStart out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type tel: setSelectionRange out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type text: selectionDirection a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type search: selectionDirection a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: setSelectionRange out of range a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[iframe_005.html]
|
||||||
|
[document.write external script into iframe write back into parent]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -3,6 +3,3 @@
|
||||||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[realtimeanalyser-fft-scaling.html]
|
[realtimeanalyser-fft-scaling.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -485,3 +485,6 @@
|
||||||
[X SNR (-673.8482633884685 dB) is not greater than or equal to 65.737. Got -673.8482633884685.]
|
[X SNR (-673.8482633884685 dB) is not greater than or equal to 65.737. Got -673.8482633884685.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-4.0587832018260933e-37\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
[017.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[origin of the script that invoked the method, about:blank]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
[018.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[origin of the script that invoked the method, javascript:]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[import-in-moduleworker.html]
|
[import-in-moduleworker.html]
|
||||||
|
expected: ERROR
|
||||||
[Base URL in module dedicated workers: import]
|
[Base URL in module dedicated workers: import]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[Worker-constructor.html]
|
|
||||||
expected: ERROR
|
|
|
@ -169302,7 +169302,7 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"dynamic-import.html": [
|
"dynamic-import.https.html": [
|
||||||
"62957fcd4b77c799ebb70f788e8c23b5ca0ef677",
|
"62957fcd4b77c799ebb70f788e8c23b5ca0ef677",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
|
@ -171832,7 +171832,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"position-sticky-nested-table.html": [
|
"position-sticky-nested-table.html": [
|
||||||
"7a5fca415dcefacd590ec147efea99e6f4f134c3",
|
"51ea20588ae1678d42b9c931a28edbd848a9a504",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
[
|
[
|
||||||
|
@ -252868,6 +252868,19 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"image-embedding-svg-with-auto-height.svg": [
|
||||||
|
"45ebb573762e03a9494a5c6a317c2d8c2ef2fca2",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/svg/embedded/reference/green-rect-100x100.svg",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"image-embedding-svg-with-viewport-units-inline-style.svg": [
|
"image-embedding-svg-with-viewport-units-inline-style.svg": [
|
||||||
"7ef2655dc91c815d57d1496d2e5707d54ac94c5d",
|
"7ef2655dc91c815d57d1496d2e5707d54ac94c5d",
|
||||||
[
|
[
|
||||||
|
@ -428975,8 +428988,15 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"focus-in-focus-event-001.html": [
|
||||||
|
"bd4145a3fe5390c55a4e7e9eb29bbcfa922bdf1e",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"focus-visible-001.html": [
|
"focus-visible-001.html": [
|
||||||
"78d79e0b4757c82b5ac639ef2d03aaf76ce423af",
|
"068368995794c0559d3551ca3dc3471f7d777240",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{
|
{
|
||||||
|
@ -428985,7 +429005,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"focus-visible-002.html": [
|
"focus-visible-002.html": [
|
||||||
"703c9c0946c85797c2351ceb2aa88214793b0766",
|
"2846ae465a5665ca1d33db3f4c0ec14bf620a47e",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{
|
{
|
||||||
|
@ -428995,7 +429015,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"focus-visible-003.html": [
|
"focus-visible-003.html": [
|
||||||
"4d3df3d7b794eedb84d22dccf8309bbe1e4972dd",
|
"9d57225708a89bfae2c1549144d2284f7f138ba6",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{
|
{
|
||||||
|
@ -429004,7 +429024,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"focus-visible-004.html": [
|
"focus-visible-004.html": [
|
||||||
"f4a33111c09b120679a459447d0f4333d1ffec3a",
|
"318d1eeb05430bd06fb166b8ffc13fa0b67c0c5c",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{
|
{
|
||||||
|
@ -429013,7 +429033,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"focus-visible-005.html": [
|
"focus-visible-005.html": [
|
||||||
"7983727f80e7e7a9b192e7b078c25c5b8740681d",
|
"4aec863e3b9af3d5ba568de34a320bf92dda2adf",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{
|
{
|
||||||
|
@ -429022,7 +429042,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"focus-visible-006.html": [
|
"focus-visible-006.html": [
|
||||||
"0383eb841f4872cd581e457c1af3661a45d6e03d",
|
"89d9782ac8eb439154d5f65f95f622d2c25acf3f",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{
|
{
|
||||||
|
@ -429040,7 +429060,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"focus-visible-008.html": [
|
"focus-visible-008.html": [
|
||||||
"171530f4119aa69f6d8f32b7fbde920845bb0fc9",
|
"c84985fe1015ee756459ad23967810988b38fedb",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{
|
{
|
||||||
|
@ -429049,21 +429069,21 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"focus-visible-009.html": [
|
"focus-visible-009.html": [
|
||||||
"102c47e961207a4263f86ac1540bcbbfe272a9d3",
|
"bbadd578e004e5b84203979c3a6c07a820bd7564",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"focus-visible-010.html": [
|
"focus-visible-010.html": [
|
||||||
"9cfc3b8146ca633b8605268cf8d1fa08b91804fa",
|
"cfd4282e9b599b0caa62cbbfa15ea34d88217a29",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"focus-visible-011.html": [
|
"focus-visible-011.html": [
|
||||||
"73c4607fd10caac6dbd76495026cb13a6fd42ec3",
|
"3d66dc91386ecc1fb7c7cc166150550c5a65275d",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{
|
{
|
||||||
|
@ -429072,7 +429092,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"focus-visible-012.html": [
|
"focus-visible-012.html": [
|
||||||
"2ccb2e675616d4a38f36390db083d5d6c8b60253",
|
"dcb00e18d2535a6ab826f089d1034185de6be446",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{
|
{
|
||||||
|
@ -429658,6 +429678,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"parse-focus-visible.html": [
|
||||||
|
"52ac963add29bf7ef2c6828b12977e1b853d8e83",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"parse-id.html": [
|
"parse-id.html": [
|
||||||
"2441c4217eb4b9ef1c8bde1aa5a96269b09b6304",
|
"2441c4217eb4b9ef1c8bde1aa5a96269b09b6304",
|
||||||
[
|
[
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-floats-002.html]
|
||||||
|
[Hit test float]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-floats-003.html]
|
||||||
|
[Miss float below something else]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-floats-005.html]
|
||||||
|
[Miss clipped float]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[dynamic-import.html]
|
|
||||||
expected: CRASH
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[dynamic-import.https.html]
|
||||||
|
expected: CRASH
|
|
@ -2,3 +2,6 @@
|
||||||
[Hit test intersecting scaled box]
|
[Hit test intersecting scaled box]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Hit test within unscaled box]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -21,3 +21,6 @@
|
||||||
[test the top of layer]
|
[test the top of layer]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[test some point of the element: top left corner]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[elementsFromPoint-invalid-cases.html]
|
|
||||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
[parse-focus-visible.html]
|
||||||
|
[":focus-visible" should be a valid selector]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
["a:focus-visible" should be a valid selector]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[":focus:not(:focus-visible)" should be a valid selector]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -309,21 +309,21 @@
|
||||||
[fetch(): separate response Content-Type: text/plain ]
|
[fetch(): separate response Content-Type: text/plain ]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html */*]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: */* text/html]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/html */*]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -53,9 +53,3 @@
|
||||||
[combined text/javascript ]
|
[combined text/javascript ]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[separate text/javascript x/x]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[separate text/javascript; charset=windows-1252 text/javascript]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,6 @@
|
||||||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Content-Type-Options%3A%20nosniff]
|
[X-Content-Type-Options%3A%20%22nosniFF%22]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[traverse_the_history_1.html]
|
||||||
|
[Multiple history traversals from the same task]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[traverse_the_history_3.html]
|
|
||||||
[Multiple history traversals, last would be aborted]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[embedded-opener-remove-frame.html]
|
[embedded-opener-remove-frame.html]
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[opener and "removed" embedded documents]
|
[opener and "removed" embedded documents]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[iframe_sandbox_popups_escaping-1.html]
|
[iframe_sandbox_popups_escaping-1.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_escaping-2.html]
|
[iframe_sandbox_popups_escaping-2.html]
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
[iframe_sandbox_popups_nonescaping-1.html]
|
[iframe_sandbox_popups_nonescaping-1.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: FAIL
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[form-double-submit-2.html]
|
|
||||||
[preventDefault should allow onclick submit() to succeed]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[form-double-submit-3.html]
|
|
||||||
[<button> should have the same double-submit protection as <input type=submit>]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,25 +1,10 @@
|
||||||
[select-event.html]
|
[select-event.html]
|
||||||
[textarea: selectionStart out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type text: selectionStart a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type url: setRangeText() a second time (must not fire select)]
|
[input type url: setRangeText() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type text: selectionStart out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type url: setSelectionRange() a second time (must not fire select)]
|
[input type url: setSelectionRange() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type password: setRangeText() a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type password: selectionStart out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type tel: selectionDirection a second time (must not fire select)]
|
[input type tel: selectionDirection a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -29,42 +14,51 @@
|
||||||
[input type password: selectionDirection a second time (must not fire select)]
|
[input type password: selectionDirection a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[textarea: selectionEnd a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type tel: selectionEnd out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type password: setSelectionRange out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type url: selectionEnd a second time (must not fire select)]
|
[input type url: selectionEnd a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[textarea: setSelectionRange() a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[textarea: setRangeText() a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type tel: setSelectionRange() a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type url: select() a second time (must not fire select)]
|
[input type url: select() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type password: selectionEnd a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type text: setRangeText() a second time (must not fire select)]
|
[input type text: setRangeText() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type search: setRangeText() a second time (must not fire select)]
|
[input type search: setRangeText() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type url: selectionStart a second time (must not fire select)]
|
[input type password: select() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type url: setSelectionRange out of range a second time (must not fire select)]
|
[input type password: selectionStart a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type text: selectionEnd a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type tel: setRangeText() a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: selectionDirection a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type password: selectionEnd out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type tel: selectionStart out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type search: selectionStart out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type tel: setSelectionRange out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type text: selectionDirection a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type search: selectionDirection a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: setSelectionRange out of range a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[iframe_005.html]
|
||||||
|
[document.write external script into iframe write back into parent]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -4,6 +4,3 @@
|
||||||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[realtimeanalyser-fft-scaling.html]
|
[realtimeanalyser-fft-scaling.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -713,3 +713,6 @@
|
||||||
[X SNR (-673.8482633884685 dB) is not greater than or equal to 65.737. Got -673.8482633884685.]
|
[X SNR (-673.8482633884685 dB) is not greater than or equal to 65.737. Got -673.8482633884685.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-4.0587832018260933e-37\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
5
tests/wpt/metadata/webmessaging/with-ports/017.html.ini
Normal file
5
tests/wpt/metadata/webmessaging/with-ports/017.html.ini
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
[017.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[origin of the script that invoked the method, about:blank]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
[018.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[origin of the script that invoked the method, javascript:]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[import-in-moduleworker.html]
|
[import-in-moduleworker.html]
|
||||||
|
expected: ERROR
|
||||||
[Base URL in module dedicated workers: import]
|
[Base URL in module dedicated workers: import]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[Worker-constructor.html]
|
|
||||||
expected: ERROR
|
|
|
@ -64,7 +64,6 @@ window.addEventListener('load', function() {
|
||||||
document.getElementById('scroller1').scrollTop = 50;
|
document.getElementById('scroller1').scrollTop = 50;
|
||||||
document.getElementById('scroller2').scrollTop = 125;
|
document.getElementById('scroller2').scrollTop = 125;
|
||||||
document.getElementById('scroller3').scrollTop = 250;
|
document.getElementById('scroller3').scrollTop = 250;
|
||||||
createIndicatorForStickyElements(document.querySelectorAll('.sticky'));
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Selectors Level 4: :focus in focus event</title>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/selectors-4/#focus-pseudo">
|
||||||
|
<link rel="help" href="https://w3c.github.io/uievents/#event-type-focus">
|
||||||
|
<link rel="help" href="https://crbug.com/523126">
|
||||||
|
<meta name='author' title='Takayoshi Kochi' href='mailto:kochi@chromium.org'>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<input type="text">
|
||||||
|
<script>
|
||||||
|
var input = document.querySelector('input');
|
||||||
|
input.addEventListener('focus', function(e) {
|
||||||
|
var focused = document.querySelector(':focus');
|
||||||
|
test(() => {
|
||||||
|
assert_equals(e.target, focused, "':focus' matches event.target");
|
||||||
|
}, "Checks that ':focus' pseudo-class matches inside 'focus' evente handler");
|
||||||
|
}, false);
|
||||||
|
input.focus();
|
||||||
|
</script>
|
|
@ -13,17 +13,17 @@
|
||||||
<style>
|
<style>
|
||||||
@supports not (selector(:focus-visible)) {
|
@supports not (selector(:focus-visible)) {
|
||||||
:focus {
|
:focus {
|
||||||
background-color: tomato;
|
background-color: red;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
:focus-visible {
|
:focus-visible {
|
||||||
outline: darkgreen solid 5px;
|
outline: green solid 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
:focus:not(:focus-visible) {
|
:focus:not(:focus-visible) {
|
||||||
outline: 0;
|
outline: 0;
|
||||||
background-color: tomato;
|
background-color: red;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
@ -39,7 +39,8 @@
|
||||||
<script>
|
<script>
|
||||||
async_test(function(t) {
|
async_test(function(t) {
|
||||||
el.addEventListener("focus", t.step_func(function() {
|
el.addEventListener("focus", t.step_func(function() {
|
||||||
assert_equals(getComputedStyle(el).outlineColor, "rgb(0, 100, 0)");
|
assert_equals(getComputedStyle(el).outlineColor, "rgb(0, 128, 0)", `outlineColor for ${el.tagName}#${el.id} should be green`);
|
||||||
|
assert_not_equals(getComputedStyle(el).backgroundColor, "rgb(255, 0, 0)", `backgroundColor for ${el.tagName}#${el.id} should NOT be red`);
|
||||||
t.done();
|
t.done();
|
||||||
}));
|
}));
|
||||||
const tab_key = '\ue004';
|
const tab_key = '\ue004';
|
||||||
|
|
|
@ -14,17 +14,17 @@
|
||||||
<style>
|
<style>
|
||||||
@supports not (selector(:focus-visible)) {
|
@supports not (selector(:focus-visible)) {
|
||||||
:focus {
|
:focus {
|
||||||
background-color: tomato;
|
background-color: red;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
:focus-visible {
|
:focus-visible {
|
||||||
outline: darkgreen solid 5px;
|
outline: green solid 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
:focus:not(:focus-visible) {
|
:focus:not(:focus-visible) {
|
||||||
outline: 0;
|
outline: 0;
|
||||||
background-color: tomato;
|
background-color: red;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
@ -37,76 +37,65 @@
|
||||||
</ol>
|
</ol>
|
||||||
<br>
|
<br>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="input1" value="Focus me."></input>
|
<input class="check" id="input1" value="Focus me."></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="input2" type="text" value="Focus me."></input>
|
<input class="check" id="input2" type="text" value="Focus me."></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="input3" type="email" value="Focus me."></input>
|
<input class="check" id="input3" type="email" value="Focus me."></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="input4" type="password" value="Focus me."></input>
|
<input class="check" id="input4" type="password" value="Focus me."></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="input5" type="search" value="Focus me."></input>
|
<input class="check" id="input5" type="search" value="Focus me."></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="input6" type="telephone" value="Focus me."></input>
|
<input class="check" id="input6" type="telephone" value="Focus me."></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="input7" type="url" value="Focus me."></input>
|
<input class="check" id="input7" type="url" value="Focus me."></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="input8" type="number" value="10000"></input>
|
<input class="check" id="input8" type="number" value="10000"></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="input9" type="date"></input>
|
<input class="check" id="input9" type="date"></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="input10" type="datetime-local"></input>
|
<input class="check" id="input10" type="datetime-local"></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="input11" type="month"></input>
|
<input class="check" id="input11" type="month"></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="input12" type="time"></input>
|
<input class="check" id="input12" type="time"></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="input13" type="week"></input>
|
<input class="check" id="input13" type="week"></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<textarea data-tested="false" id="input14">Focus me.</textarea>
|
<textarea class="check" id="input14">Focus me.</textarea>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<select data-tested="false" id="input15">
|
<select class="check" id="input15">
|
||||||
<option>Focus me.</option>
|
<option>Focus me.</option>
|
||||||
<option>Focus me.</option>
|
<option>Focus me.</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
async_test(function(t) {
|
for (const target of document.querySelectorAll(".check")) {
|
||||||
function mouseClickInTarget(selector) {
|
promise_test(() => {
|
||||||
let target = document.querySelector(selector);
|
return new Promise(resolve => {
|
||||||
return test_driver.click(target);
|
target.addEventListener("focus", resolve);
|
||||||
|
test_driver.click(target);
|
||||||
|
}).then(() => {
|
||||||
|
assert_equals(getComputedStyle(target).outlineColor, "rgb(0, 128, 0)", `outlineColor for ${target.tagName}#${target.id} should be green`);
|
||||||
|
assert_not_equals(getComputedStyle(target).backgroundColor, "rgb(255, 0, 0)", `backgroundColor for ${target.tagName}#${target.id} should NOT be red`);
|
||||||
|
});
|
||||||
|
}, `Focus element ${target.tagName}#${target.id} via mouse should match :focus-visible as it supports keyboard input`);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testNextTarget(e) {
|
|
||||||
let el = e.target;
|
|
||||||
assert_equals(getComputedStyle(el).outlineColor, "rgb(0, 100, 0)");
|
|
||||||
el.dataset.tested = true;
|
|
||||||
let nextTarget = document.querySelector("[data-tested=false]");
|
|
||||||
if (nextTarget) {
|
|
||||||
nextTarget.addEventListener("click", testNextTarget);
|
|
||||||
mouseClickInTarget("[data-tested=false]");
|
|
||||||
} else {
|
|
||||||
t.done();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
input1.addEventListener("click", t.step_func(testNextTarget));
|
|
||||||
|
|
||||||
mouseClickInTarget("[data-tested=false]");
|
|
||||||
}, "Mouse focus on elements which would show a virtual keyboard should match :focus-visible");
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
|
|
||||||
:focus:not(:focus-visible) {
|
:focus:not(:focus-visible) {
|
||||||
outline: 0;
|
outline: 0;
|
||||||
background-color: darkseagreen;
|
background-color: lime;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
@ -36,45 +36,45 @@
|
||||||
</ol>
|
</ol>
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div>
|
||||||
<span data-tested="false" id="el-1" tabindex="1">Focus me</span>
|
<span class="check" id="el-1" tabindex="1">Focus me</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span data-tested="false" id="el-2" tabindex="-1">Focus me</span>
|
<span class="check" id="el-2" tabindex="-1">Focus me</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span data-tested="false" id="el-3" tabindex="0">Focus me</span>
|
<span class="check" id="el-3" tabindex="0">Focus me</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<button data-tested="false" id="el-4">Focus me</span>
|
<button class="check" id="el-4">Focus me</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="el-5" type="button" value="Focus me"></input>
|
<input class="check" id="el-5" type="button" value="Focus me"></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="el-6" type="image" alt="Focus me."></input>
|
<input class="check" id="el-6" type="image" alt="Focus me."></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="el-7" type="reset" value="Focus me."></input>
|
<input class="check" id="el-7" type="reset" value="Focus me."></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="el-8" type="submit" value="Focus me."></input>
|
<input class="check" id="el-8" type="submit" value="Focus me."></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><input data-tested="false" id="el-9" type="checkbox"></input> Focus me.</label>
|
<label><input class="check" id="el-9" type="checkbox"></input> Focus me.</label>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><input data-tested="false" id="el-10" type="radio"></input> Focus me.</label>
|
<label><input class="check" id="el-10" type="radio"></input> Focus me.</label>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<!-- Focusing file input triggers a modal, so only test manually -->
|
<!-- Focusing file input triggers a modal, so only test manually -->
|
||||||
<input id="el-12" type="file" value="Focus me."></input>
|
<input id="el-11" type="file" value="Focus me."></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><input data-tested="false" id="el-13" type="range"></input> Focus me.</label>
|
<label><input class="check" id="el-12" type="range"></input> Focus me.</label>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<!-- Ensure the color input is last, as it has a pop-up which obscures other elements -->
|
<!-- Ensure the color input is last, as it has a pop-up which obscures other elements -->
|
||||||
<label><input data-tested="false" id="el-11" type="color"></input> Focus me.</label>
|
<label><input class="check" id="el-13" type="color"></input> Focus me.</label>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
function mouseClickInTarget(selector) {
|
function mouseClickInTarget(selector) {
|
||||||
|
@ -82,22 +82,17 @@
|
||||||
return test_driver.click(target);
|
return test_driver.click(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
async_test(function(t) {
|
for (const target of document.querySelectorAll(".check")) {
|
||||||
document.querySelectorAll("[data-tested]").forEach((el) => {
|
promise_test(() => {
|
||||||
el.addEventListener("click", t.step_func((e) => {
|
return new Promise(resolve => {
|
||||||
let el = e.target;
|
target.addEventListener("focus", resolve);
|
||||||
assert_equals(getComputedStyle(el).outlineStyle, "none");
|
test_driver.click(target);
|
||||||
el.dataset.tested = true;
|
}).then(() => {
|
||||||
if (document.querySelector("[data-tested=false]")) {
|
assert_equals(getComputedStyle(target).backgroundColor, "rgb(0, 255, 0)", `backgroundColor for ${target.tagName}#${target.id} should be lime`);
|
||||||
mouseClickInTarget("[data-tested=false]");
|
assert_not_equals(getComputedStyle(target).outlineColor, "rgb(255, 0, 0)", `outlineColor for ${target.tagName}#${target.id} should NOT be red`);
|
||||||
} else {
|
|
||||||
t.done();
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
});
|
});
|
||||||
|
}, `Focus element ${target.tagName}#${target.id} via mouse should NOT match :focus-visible as it does NOT support keyboard input`);
|
||||||
mouseClickInTarget("[data-tested=false]");
|
}
|
||||||
}, "Mouse focus on input elements which do not show a virtual keyboard should NOT match :focus-visible");
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -23,7 +23,12 @@
|
||||||
|
|
||||||
:focus:not(:focus-visible) {
|
:focus:not(:focus-visible) {
|
||||||
outline: 0;
|
outline: 0;
|
||||||
background-color: darkseagreen;
|
background-color: lime;
|
||||||
|
}
|
||||||
|
|
||||||
|
.check {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
appearance: none;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
@ -36,47 +41,39 @@
|
||||||
</ol>
|
</ol>
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div>
|
||||||
<span data-tested="false" id="el-1" tabindex="1">Focus me</span>
|
<span class="check" id="el-1" tabindex="1">Focus me</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span data-tested="false" id="el-2" tabindex="-1">Focus me</span>
|
<span class="check" id="el-2" tabindex="-1">Focus me</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span data-tested="false" id="el-3" tabindex="0">Focus me</span>
|
<span class="check" id="el-3" tabindex="0">Focus me</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<button data-tested="false" id="el-4">Focus me</span>
|
<button class="check" id="el-4">Focus me</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="el-5" type="button" value="Focus me"></input>
|
<input class="check" id="el-5" type="button" value="Focus me"></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="el-6" type="image" alt="Focus me."></input>
|
<input class="check" id="el-6" type="image" alt="Focus me."></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="el-7" type="reset" value="Focus me."></input>
|
<input class="check" id="el-7" type="reset" value="Focus me."></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input data-tested="false" id="el-8" type="submit" value="Focus me."></input>
|
<input class="check" id="el-8" type="submit" value="Focus me."></input>
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label><input data-tested="false" id="el-9" type="checkbox"></input> Focus me.</label>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label><input data-tested="false" id="el-10" type="radio"></input> Focus me.</label>
|
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<!-- Focusing file input triggers a modal, so only test manually -->
|
<!-- Focusing file input triggers a modal, so only test manually -->
|
||||||
<input id="el-12" type="file" value="Focus me."></input>
|
<input id="el-9" type="file" value="Focus me."></input>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label><input data-tested="false" id="el-13" type="range"></input> Focus me.</label>
|
<label><input class="check" id="el-10" type="range"></input> Focus me.</label>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<!-- Ensure the color input is last, as it has a pop-up which obscures other elements,
|
<!-- Ensure the color input is last, as it has a pop-up which obscures other elements -->
|
||||||
causing the `mouseClickInTarget` method to fail and the test to hang waiting for
|
<label><input class="check" id="el-11" type="color"></input> Focus me.</label>
|
||||||
a click event.-->
|
|
||||||
<label><input data-tested="false" id="el-11" type="color"></input> Focus me.</label>
|
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
function mouseClickInTarget(selector) {
|
function mouseClickInTarget(selector) {
|
||||||
|
@ -84,22 +81,17 @@
|
||||||
return test_driver.click(target);
|
return test_driver.click(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
async_test(function(t) {
|
for (const target of document.querySelectorAll(".check")) {
|
||||||
document.querySelectorAll("[data-tested]").forEach((el) => {
|
promise_test(() => {
|
||||||
el.addEventListener("click", t.step_func((e) => {
|
return new Promise(resolve => {
|
||||||
let el = e.target;
|
target.addEventListener("focus", resolve);
|
||||||
assert_equals(getComputedStyle(el).outlineStyle, "none");
|
test_driver.click(target);
|
||||||
el.dataset.tested = true;
|
}).then(() => {
|
||||||
if (document.querySelector("[data-tested=false]")) {
|
assert_equals(getComputedStyle(target).backgroundColor, "rgb(0, 255, 0)", `backgroundColor for ${target.tagName}#${target.id} should be lime`);
|
||||||
mouseClickInTarget("[data-tested=false]");
|
assert_not_equals(getComputedStyle(target).outlineColor, "rgb(255, 0, 0)", `outlineColor for ${target.tagName}#${target.id} should NOT be red`);
|
||||||
} else {
|
|
||||||
t.done();
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
});
|
});
|
||||||
|
}, `Focus element ${target.tagName}#${target.id} via mouse should NOT match :focus-visible as it does NOT support keyboard input - not affected by "appearance: none"`);
|
||||||
mouseClickInTarget("[data-tested=false]");
|
}
|
||||||
}, "Mouse focus on input elements which do not show a virtual keyboard should NOT match :focus-visible - not affected by -webkit-appearance");
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -16,9 +16,13 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:focus-visible {
|
||||||
|
outline: red solid 5px;
|
||||||
|
}
|
||||||
|
|
||||||
:focus:not(:focus-visible) {
|
:focus:not(:focus-visible) {
|
||||||
outline: 0;
|
outline: 0;
|
||||||
background-color: darkseagreen;
|
background-color: lime;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
@ -38,7 +42,8 @@
|
||||||
});
|
});
|
||||||
async_test(function(t) {
|
async_test(function(t) {
|
||||||
el.addEventListener("focus", t.step_func(function() {
|
el.addEventListener("focus", t.step_func(function() {
|
||||||
assert_equals(getComputedStyle(el).outlineStyle, "none");
|
assert_equals(getComputedStyle(el).backgroundColor, "rgb(0, 255, 0)", `backgroundColor for ${el.tagName}#${el.id} should be lime`);
|
||||||
|
assert_not_equals(getComputedStyle(el).outlineColor, "rgb(255, 0, 0)", `outlineColor for ${el.tagName}#${el.id} should NOT be red`);
|
||||||
t.done();
|
t.done();
|
||||||
}));
|
}));
|
||||||
test_driver.click(button);
|
test_driver.click(button);
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="/resources/testdriver.js"></script>
|
<script src="/resources/testdriver.js"></script>
|
||||||
<script src="/resources/testdriver-actions.js"></script>
|
|
||||||
<script src="/resources/testdriver-vendor.js"></script>
|
<script src="/resources/testdriver-vendor.js"></script>
|
||||||
<style>
|
<style>
|
||||||
span[contenteditable] {
|
span[contenteditable] {
|
||||||
|
@ -17,19 +16,13 @@
|
||||||
padding: 2px 5px;
|
padding: 2px 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@supports not (selector(:focus-visible)) {
|
|
||||||
:focus {
|
|
||||||
background-color: tomato;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
:focus-visible {
|
:focus-visible {
|
||||||
outline: darkgreen solid 5px;
|
outline: green solid 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
:focus:not(:focus-visible) {
|
:focus:not(:focus-visible) {
|
||||||
outline: 0;
|
outline: 0;
|
||||||
background-color: tomato;
|
background-color: red;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
@ -48,7 +41,8 @@
|
||||||
var actions_promise;
|
var actions_promise;
|
||||||
async_test(function(t) {
|
async_test(function(t) {
|
||||||
el.addEventListener("focus", t.step_func(function() {
|
el.addEventListener("focus", t.step_func(function() {
|
||||||
assert_equals(getComputedStyle(el).outlineColor, "rgb(0, 100, 0)");
|
assert_equals(getComputedStyle(el).outlineColor, "rgb(0, 128, 0)", `outlineColor for ${el.tagName}#${el.id} should be green`);
|
||||||
|
assert_not_equals(getComputedStyle(el).backgroundColor, "rgb(255, 0, 0)", `backgroundColor for ${el.tagName}#${el.id} should NOT be red`);
|
||||||
// Make sure the test finishes after all the input actions are completed.
|
// Make sure the test finishes after all the input actions are completed.
|
||||||
actions_promise.then( () => t.done() );
|
actions_promise.then( () => t.done() );
|
||||||
}));
|
}));
|
||||||
|
|
|
@ -8,21 +8,20 @@
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="/resources/testdriver.js"></script>
|
<script src="/resources/testdriver.js"></script>
|
||||||
<script src="/resources/testdriver-actions.js"></script>
|
|
||||||
<script src="/resources/testdriver-vendor.js"></script>
|
<script src="/resources/testdriver-vendor.js"></script>
|
||||||
<style>
|
<style>
|
||||||
@supports not (selector(:focus-visible)) {
|
@supports not (selector(:focus-visible)) {
|
||||||
#el:focus {
|
#el:focus {
|
||||||
background-color: tomato;
|
background-color: red;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
:focus-visible {
|
:focus-visible {
|
||||||
outline: darkgreen solid 5px;
|
outline: green solid 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#el:focus:not(:focus-visible) {
|
#el:focus:not(:focus-visible) {
|
||||||
background-color: tomato;
|
background-color: red;
|
||||||
outline: 0;
|
outline: 0;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -44,9 +43,11 @@
|
||||||
el.focus();
|
el.focus();
|
||||||
}));
|
}));
|
||||||
el.addEventListener("focus", t.step_func(function() {
|
el.addEventListener("focus", t.step_func(function() {
|
||||||
assert_equals(getComputedStyle(el).outlineColor, "rgb(0, 100, 0)");
|
assert_equals(getComputedStyle(el).outlineColor, "rgb(0, 128, 0)", `outlineColor for ${el.tagName}#${el.id} should be green`);
|
||||||
|
assert_not_equals(getComputedStyle(el).backgroundColor, "rgb(255, 0, 0)", `backgroundColor for ${el.tagName}#${el.id} should NOT be red`);
|
||||||
t.done();
|
t.done();
|
||||||
}));
|
}));
|
||||||
|
test_driver.send_keys(el, "\ue004\ue007"); // TAB and ENTER
|
||||||
}, "Programmatic focus after keypress should match :focus-visible");
|
}, "Programmatic focus after keypress should match :focus-visible");
|
||||||
} else {
|
} else {
|
||||||
button.addEventListener("click", () => {
|
button.addEventListener("click", () => {
|
||||||
|
|
|
@ -10,16 +10,16 @@
|
||||||
<style>
|
<style>
|
||||||
@supports not (selector(:focus-visible)) {
|
@supports not (selector(:focus-visible)) {
|
||||||
#buton:focus {
|
#buton:focus {
|
||||||
background-color: tomato;
|
background-color: red;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
:focus-visible {
|
:focus-visible {
|
||||||
outline: darkgreen solid 5px;
|
outline: green solid 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#button:focus:not(:focus-visible) {
|
#button:focus:not(:focus-visible) {
|
||||||
background-color: tomato;
|
background-color: red;
|
||||||
outline: 0;
|
outline: 0;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -34,13 +34,15 @@
|
||||||
<script>
|
<script>
|
||||||
async_test(function(t) {
|
async_test(function(t) {
|
||||||
button.addEventListener("focus", t.step_func(function() {
|
button.addEventListener("focus", t.step_func(function() {
|
||||||
assert_equals(getComputedStyle(button).outlineColor, "rgb(0, 100, 0)");
|
assert_equals(getComputedStyle(button).outlineColor, "rgb(0, 128, 0)", `outlineColor for ${button.tagName}#${button.id} should be green`);
|
||||||
|
assert_not_equals(getComputedStyle(button).backgroundColor, "rgb(255, 0, 0)", `backgroundColor for ${button.tagName}#${button.id} should NOT be red`);
|
||||||
t.done();
|
t.done();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Handle the case where the button is focused before the test runs.
|
// Handle the case where the button is focused before the test runs.
|
||||||
if (document.activeElement === button) {
|
if (document.activeElement === button) {
|
||||||
assert_equals(getComputedStyle(button).outlineColor, "rgb(0, 100, 0)");
|
assert_equals(getComputedStyle(button).outlineColor, "rgb(0, 128, 0)", `outlineColor for ${button.tagName}#${button.id} should be green`);
|
||||||
|
assert_not_equals(getComputedStyle(button).backgroundColor, "rgb(255, 0, 0)", `backgroundColor for ${button.tagName}#${button.id} should NOT be red`);
|
||||||
t.done();
|
t.done();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,16 +10,16 @@
|
||||||
<style>
|
<style>
|
||||||
@supports not (selector(:focus-visible)) {
|
@supports not (selector(:focus-visible)) {
|
||||||
:focus {
|
:focus {
|
||||||
background-color: tomato;
|
background-color: red;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
:focus-visible {
|
:focus-visible {
|
||||||
outline: darkgreen solid 5px;
|
outline: green solid 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
:focus:not(:focus-visible) {
|
:focus:not(:focus-visible) {
|
||||||
background-color: tomato;
|
background-color: red;
|
||||||
outline: 0;
|
outline: 0;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -38,7 +38,8 @@
|
||||||
|
|
||||||
async_test(function(t) {
|
async_test(function(t) {
|
||||||
el.addEventListener("focus", t.step_func(function() {
|
el.addEventListener("focus", t.step_func(function() {
|
||||||
assert_equals(getComputedStyle(el).outlineColor, "rgb(0, 100, 0)");
|
assert_equals(getComputedStyle(el).outlineColor, "rgb(0, 128, 0)", `outlineColor for ${el.tagName}#${el.id} should be green`);
|
||||||
|
assert_not_equals(getComputedStyle(el).backgroundColor, "rgb(255, 0, 0)", `backgroundColor for ${el.tagName}#${el.id} should NOT be red`);
|
||||||
t.done();
|
t.done();
|
||||||
}));
|
}));
|
||||||
}, "Programmatic focus on page load should match :focus-visible");
|
}, "Programmatic focus on page load should match :focus-visible");
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<style>
|
<style>
|
||||||
@supports not (selector(:focus-visible)) {
|
@supports not (selector(:focus-visible)) {
|
||||||
#next:focus {
|
#next:focus {
|
||||||
background-color: tomato;
|
background-color: red;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,11 +21,11 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
#next:focus-visible {
|
#next:focus-visible {
|
||||||
outline: darkgreen solid 5px;
|
outline: green solid 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#next:focus:not(:focus-visible) {
|
#next:focus:not(:focus-visible) {
|
||||||
background-color: tomato;
|
background-color: red;
|
||||||
outline: 0;
|
outline: 0;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -49,7 +49,8 @@
|
||||||
|
|
||||||
async_test(function(t) {
|
async_test(function(t) {
|
||||||
next.addEventListener("focus", t.step_func(() => {
|
next.addEventListener("focus", t.step_func(() => {
|
||||||
assert_equals(getComputedStyle(next).outlineColor, "rgb(0, 100, 0)");
|
assert_equals(getComputedStyle(next).outlineColor, "rgb(0, 128, 0)", `outlineColor for ${next.tagName}#${next.id} should be green`);
|
||||||
|
assert_not_equals(getComputedStyle(next).backgroundColor, "rgb(255, 0, 0)", `backgroundColor for ${next.tagName}#${next.id} should NOT be red`);
|
||||||
t.done()
|
t.done()
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
|
@ -13,18 +13,18 @@
|
||||||
<style>
|
<style>
|
||||||
@supports not (selector(:focus-visible)) {
|
@supports not (selector(:focus-visible)) {
|
||||||
:focus {
|
:focus {
|
||||||
background-color: tomato;
|
background-color: red;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
:focus-visible {
|
:focus-visible {
|
||||||
outline: 0;
|
outline: 0;
|
||||||
outline-color: tomato;
|
outline-color: red;
|
||||||
background-color: tomato;
|
background-color: red;
|
||||||
}
|
}
|
||||||
|
|
||||||
:focus:not(:focus-visible) {
|
:focus:not(:focus-visible) {
|
||||||
outline: darkgreen solid 5px;
|
outline: green solid 5px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
@ -43,12 +43,14 @@
|
||||||
var t = async_test( "Keyboard focus should match :focus-visible");
|
var t = async_test( "Keyboard focus should match :focus-visible");
|
||||||
|
|
||||||
el.addEventListener("click", t.step_func(function(e) {
|
el.addEventListener("click", t.step_func(function(e) {
|
||||||
assert_equals(getComputedStyle(el).outlineColor, "rgb(0, 100, 0)", "after focus()");
|
assert_equals(getComputedStyle(el).outlineColor, "rgb(0, 128, 0)", `outlineColor for ${el.tagName}#${el.id} should be green`);
|
||||||
|
assert_not_equals(getComputedStyle(el).backgroundColor, "rgb(255, 0, 0)", `backgroundColor for ${el.tagName}#${el.id} should NOT be red`);
|
||||||
}), true);
|
}), true);
|
||||||
|
|
||||||
el.addEventListener("keydown", t.step_func(function(e) {
|
el.addEventListener("keydown", t.step_func(function(e) {
|
||||||
if (e.altKey || e.ctrlKey || e.metaKey) {
|
if (e.altKey || e.ctrlKey || e.metaKey) {
|
||||||
assert_equals(getComputedStyle(el).outlineColor, "rgb(0, 100, 0)", "after kb event");
|
assert_equals(getComputedStyle(el).outlineColor, "rgb(0, 128, 0)", `outlineColor for ${el.tagName}#${el.id} should be green`);
|
||||||
|
assert_not_equals(getComputedStyle(el).backgroundColor, "rgb(255, 0, 0)", `backgroundColor for ${el.tagName}#${el.id} should NOT be red`);
|
||||||
t.done();
|
t.done();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -56,10 +58,6 @@
|
||||||
t.done();
|
t.done();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
t.step_timeout(() => {
|
|
||||||
assert_true(false, "timeout");
|
|
||||||
}, 1000);
|
|
||||||
|
|
||||||
const ctrl_key = '\uE009';
|
const ctrl_key = '\uE009';
|
||||||
test_driver.click(el).then(() => {
|
test_driver.click(el).then(() => {
|
||||||
return test_driver.send_keys(el, ctrl_key);
|
return test_driver.send_keys(el, ctrl_key);
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Selectors: :focus-visible pseudo-class</title>
|
||||||
|
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="/css/support/parsing-testcommon.js"></script>
|
||||||
|
<script>
|
||||||
|
test_valid_selector(':focus-visible');
|
||||||
|
test_valid_selector('a:focus-visible');
|
||||||
|
test_valid_selector(':focus:not(:focus-visible)');
|
||||||
|
</script>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:h="http://www.w3.org/1999/xhtml" viewBox="0 0 3 3" width="200" height="200">
|
||||||
|
<metadata>
|
||||||
|
<title><image> embedding SVG image with auto height</title>
|
||||||
|
<h:link rel="match" href="reference/green-rect-100x100.svg"/>
|
||||||
|
</metadata>
|
||||||
|
<image href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='50' height='50' ><rect width='50' height='50' fill='green'/></svg>" width="1.5"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 479 B |
Loading…
Add table
Add a link
Reference in a new issue