Update web-platform-tests to revision 2f95271debcba3e26e7294beeee4fa5a2ecfbfa0

This commit is contained in:
WPT Sync Bot 2020-12-02 08:20:38 +00:00
parent 6fab7a7d84
commit 48add2991a
74 changed files with 789 additions and 263 deletions

View file

@ -1,4 +0,0 @@
[hit-test-floats-002.html]
[Hit test float]
expected: FAIL

View file

@ -0,0 +1,4 @@
[hit-test-floats-003.html]
[Miss float below something else]
expected: FAIL

View file

@ -0,0 +1,4 @@
[hit-test-floats-004.html]
[Miss float below something else]
expected: FAIL

View file

@ -0,0 +1,2 @@
[transform-animation-under-large-scale.html]
expected: TIMEOUT

View file

@ -1,4 +0,0 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

@ -1,4 +0,0 @@
[elementFromPoint-001.html]
[CSSOM View - 5 - extensions to the Document interface]
expected: FAIL

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,2 @@
[svg-empty-container-with-filter-content-added.html]
expected: FAIL

View file

@ -309,15 +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>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" text/plain] [<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL expected: FAIL
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;x=" text/plain] [<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL expected: FAIL
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL

View file

@ -56,3 +56,6 @@
[separate text/javascript x/x] [separate text/javascript x/x]
expected: FAIL expected: FAIL
[separate text/javascript ]
expected: FAIL

View file

@ -11,6 +11,3 @@
[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
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff]
expected: FAIL

View file

@ -0,0 +1,4 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
expected: FAIL

View file

@ -1,4 +0,0 @@
[traverse_the_history_5.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -1,2 +0,0 @@
[cross-origin-objects-on-new-window.html]
expected: TIMEOUT

View file

@ -1,5 +1,4 @@
[creating_browsing_context_test_01.html] [creating_browsing_context_test_01.html]
expected: TIMEOUT
[first argument: absolute url] [first argument: absolute url]
expected: TIMEOUT expected: FAIL

View file

@ -171,6 +171,3 @@
[XHTML img usemap="#hash-id"] [XHTML img usemap="#hash-id"]
expected: FAIL expected: FAIL
[HTML (standards) IMG usemap="no-hash-name"]
expected: FAIL

View file

@ -1,5 +1,4 @@
[iframe_sandbox_popups_nonescaping-3.html] [iframe_sandbox_popups_nonescaping-3.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: NOTRUN expected: FAIL

View file

@ -0,0 +1,4 @@
[form-double-submit-3.html]
[<button> should have the same double-submit protection as <input type=submit>]
expected: FAIL

View file

@ -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

View file

@ -347,3 +347,6 @@
[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-2.6532444456922729e-32\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] [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-2.6532444456922729e-32\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 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-1.9106894885712045e-15\t9.3139332532882690e-1\t9.3139332532882879e-1\t1.0000000000000020e+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.3139332532882879e-1 at index of 28696.\n\tMax RelError of 1.0000000000000020e+0 at index of 28696.\n]
expected: FAIL

View file

@ -91,6 +91,13 @@
} }
}, },
"css-flexbox": { "css-flexbox": {
"contain-size-layout-abspos-flex-container-crash.html": [
"3197d5b796b032742fa44bbd42ba6fe803268d69",
[
null,
{}
]
],
"fixedpos-video-in-abspos-quirk-crash.html": [ "fixedpos-video-in-abspos-quirk-crash.html": [
"80cae086ca7ba1ceb9af2631ea2a5aa04249040b", "80cae086ca7ba1ceb9af2631ea2a5aa04249040b",
[ [
@ -10995,7 +11002,7 @@
}, },
"css-scroll-snap": { "css-scroll-snap": {
"snap-at-user-scroll-end-manual.html": [ "snap-at-user-scroll-end-manual.html": [
"e87b8e9b3fad8f31f3dd88a59931d1ed30cd2150", "373e3fcb1e1178f0d30d82a06c97c29db150123a",
[ [
null, null,
{} {}
@ -121631,6 +121638,19 @@
], ],
{} {}
] ]
],
"transform-animation-under-large-scale.html": [
"359380d698bb26a4404d027285150de3b63492a0",
[
null,
[
[
"/css/css-animations/transform-animation-under-large-scale-ref.html",
"=="
]
],
{}
]
] ]
}, },
"css-backgrounds": { "css-backgrounds": {
@ -128710,6 +128730,32 @@
], ],
{} {}
] ]
],
"widows-orphans-006.html": [
"39913266412df2a383b6fc091291333856e65c38",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"widows-orphans-007.html": [
"23809c8ffedf7c4702562a08adfbb23f2fd462fd",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
] ]
}, },
"css-cascade": { "css-cascade": {
@ -133184,6 +133230,19 @@
{} {}
] ]
], ],
"contain-size-monolithic-002.html": [
"7f407df30b7e459673fc6481e0b150f0ae39d46a",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square-only.html",
"=="
]
],
{}
]
],
"contain-size-multicol-001.html": [ "contain-size-multicol-001.html": [
"81465c02d6114aa4a27637b2e77b3d62161c0864", "81465c02d6114aa4a27637b2e77b3d62161c0864",
[ [
@ -160662,6 +160721,32 @@
{} {}
] ]
], ],
"balance-break-avoidance-000.html": [
"f6540e4ab0c1ba55ebef6463f90f2246f2801443",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"balance-break-avoidance-001.html": [
"1449110516f35ac89bcadd0dfc59fbff3961966d",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"balance-grid-container.html": [ "balance-grid-container.html": [
"64df23e09fb62c6e71aa834c96b72d4bf2330f06", "64df23e09fb62c6e71aa834c96b72d4bf2330f06",
[ [
@ -160675,6 +160760,19 @@
{} {}
] ]
], ],
"balance-orphans-widows-000.html": [
"97f2d0ccd17699b7b43c6cdc01e0edcde049de9d",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"baseline-000.html": [ "baseline-000.html": [
"e01e9de1dd124af08eb5a2aa07f36254769375a7", "e01e9de1dd124af08eb5a2aa07f36254769375a7",
[ [
@ -161832,6 +161930,19 @@
{} {}
] ]
], ],
"multicol-fill-balance-nested-000.html": [
"5e466df8077545b4d6474389d296bc26c5b28b86",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"multicol-gap-000.xht": [ "multicol-gap-000.xht": [
"88aa17e8b488565dc40398e6e8f1d2e3bf3a97a1", "88aa17e8b488565dc40398e6e8f1d2e3bf3a97a1",
[ [
@ -221498,6 +221609,19 @@
{} {}
] ]
], ],
"svg-empty-container-with-filter-content-added.html": [
"6436461f78bc03b7b2655b7c1b114f15acfc81f9",
[
null,
[
[
"/css/filter-effects/reference/green-100x100.html",
"=="
]
],
{}
]
],
"svg-feflood-001.html": [ "svg-feflood-001.html": [
"4588cf93f6ca52386ce8af1dbe6e0462572bb559", "4588cf93f6ca52386ce8af1dbe6e0462572bb559",
[ [
@ -300300,7 +300424,11 @@
"7d3392a54f65dca018e960874efe19f8ca388a70", "7d3392a54f65dca018e960874efe19f8ca388a70",
[] []
] ]
} },
"transform-animation-under-large-scale-ref.html": [
"14b41366268c3a33f2d49e477bab2d40c6acb432",
[]
]
}, },
"css-backgrounds": { "css-backgrounds": {
"META.yml": [ "META.yml": [
@ -350515,7 +350643,7 @@
[] []
], ],
"html.idl": [ "html.idl": [
"bf8da3733ec26f4979fed63a17a9180c3355a494", "7a900255780ba3849d9184186efe68cf9b916f79",
[] []
], ],
"idle-detection.tentative.idl": [ "idle-detection.tentative.idl": [
@ -350583,7 +350711,7 @@
[] []
], ],
"media-source.idl": [ "media-source.idl": [
"51eccd906e74bbe7a9aad42817c730c29c281d79", "f32df3aaedc0b4722f62379273aa489fd5ea0ab7",
[] []
], ],
"mediacapture-depth.idl": [ "mediacapture-depth.idl": [
@ -350603,7 +350731,7 @@
[] []
], ],
"mediastream-recording.idl": [ "mediastream-recording.idl": [
"c5347959383d1fce74a07be9b2709cac8f9ea5b2", "2878af4b66c276604d4e84e7b9796549f74e7415",
[] []
], ],
"mst-content-hint.idl": [ "mst-content-hint.idl": [
@ -350662,6 +350790,10 @@
"dc0511b0c4b091066a9dcbc94ece9cac28088bde", "dc0511b0c4b091066a9dcbc94ece9cac28088bde",
[] []
], ],
"performance-measure-memory.idl": [
"b1014f679bb7bd88ed2ef5733ae52c48c4ac0e0f",
[]
],
"performance-timeline.idl": [ "performance-timeline.idl": [
"34f62a37823f30360ca94b9d8f695668f3ac0969", "34f62a37823f30360ca94b9d8f695668f3ac0969",
[] []
@ -350767,7 +350899,7 @@
[] []
], ],
"serial.idl": [ "serial.idl": [
"b376bac1ed7a851baff2bde6010944bb7b1c644e", "7bca747757345934b076b5f447cf6274483ecbd5",
[] []
], ],
"server-timing.idl": [ "server-timing.idl": [
@ -350875,7 +351007,7 @@
[] []
], ],
"webaudio.idl": [ "webaudio.idl": [
"d869a978e34da5c5455fe4a99d60841187280474", "c8ad2a851fc03f90aff3b0c8a2289fadffdb85be",
[] []
], ],
"webauthn.idl": [ "webauthn.idl": [
@ -350919,7 +351051,7 @@
[] []
], ],
"webrtc.idl": [ "webrtc.idl": [
"db644f031836bd2dfa8d046f5c78d561186490ec", "e58df13b02c3fa0072b7054df77f4e8eb498aaae",
[] []
], ],
"webusb.idl": [ "webusb.idl": [
@ -356764,7 +356896,7 @@
[] []
], ],
"nfc-mock.js": [ "nfc-mock.js": [
"aa94257e2a394d027972f2fd683e672eeafc8d5e", "2665f3db6b3f2a887ec97d10db6c0123e6a2bb4e",
[] []
], ],
"web-bluetooth-test.js": [ "web-bluetooth-test.js": [
@ -368664,12 +368796,12 @@
[] []
], ],
"chromium.py": [ "chromium.py": [
"3c52f76965b144ba1845c1f6e60fc6ea0bb63d54", "2ff2bd1e083a3439d1289c9f540a8bb2b1e20dbc",
[] []
], ],
"tests": { "tests": {
"test_chromium.py": [ "test_chromium.py": [
"807f5837f7964e329d05377b34029c6ab727611f", "55a12b1d7748aed97b38a56848f052d77412dccb",
[] []
] ]
}, },
@ -375932,7 +376064,7 @@
] ]
], ],
"Blob-stream.any.js": [ "Blob-stream.any.js": [
"bd4f8dc40bca12eb10a2f471dee417d3e31075a0", "792b6639c35a265de4902af83ab5724a178ae8a9",
[ [
"FileAPI/blob/Blob-stream.any.html", "FileAPI/blob/Blob-stream.any.html",
{ {
@ -477201,7 +477333,7 @@
] ]
], ],
"idlharness.https.html": [ "idlharness.https.html": [
"a906b19ac88ab44afbb0d2d6ac355ad337777e7d", "79f949f436a39e3c652b7016e19876d4fdfea983",
[ [
"html/dom/idlharness.https.html?exclude=(Document|Window|HTML.*)", "html/dom/idlharness.https.html?exclude=(Document|Window|HTML.*)",
{ {
@ -498458,6 +498590,85 @@
} }
] ]
], ],
"idlharness.tentative.any.js": [
"3e7589aeb95e2d06aa7bfd799a3e5afb342c0fce",
[
"measure-memory/idlharness.tentative.any.html",
{
"script_metadata": [
[
"global",
"window,worker"
],
[
"script",
"/resources/WebIDLParser.js"
],
[
"script",
"/resources/idlharness.js"
]
]
}
],
[
"measure-memory/idlharness.tentative.any.serviceworker.html",
{
"script_metadata": [
[
"global",
"window,worker"
],
[
"script",
"/resources/WebIDLParser.js"
],
[
"script",
"/resources/idlharness.js"
]
]
}
],
[
"measure-memory/idlharness.tentative.any.sharedworker.html",
{
"script_metadata": [
[
"global",
"window,worker"
],
[
"script",
"/resources/WebIDLParser.js"
],
[
"script",
"/resources/idlharness.js"
]
]
}
],
[
"measure-memory/idlharness.tentative.any.worker.html",
{
"script_metadata": [
[
"global",
"window,worker"
],
[
"script",
"/resources/WebIDLParser.js"
],
[
"script",
"/resources/idlharness.js"
]
]
}
]
],
"iframe.cross-origin.tentative.https.window.js": [ "iframe.cross-origin.tentative.https.window.js": [
"ac0641cc2621df534faedfe50d22dac5bde3cb15", "ac0641cc2621df534faedfe50d22dac5bde3cb15",
[ [
@ -543261,7 +543472,7 @@
] ]
], ],
"NDEFReader_scan.https.html": [ "NDEFReader_scan.https.html": [
"0a8d8cb25a567a795dda572e963d74997de35406", "ba101d67e5debc657b140bd23b7d81f9f5dc525d",
[ [
null, null,
{} {}
@ -543275,7 +543486,7 @@
] ]
], ],
"NDEFReader_write.https.html": [ "NDEFReader_write.https.html": [
"d1541b1b525828ee2f550fdb866365b683f31746", "35e6dd37299485d914df3e9f0c36d5aed4f10e8b",
[ [
null, null,
{} {}
@ -546639,7 +546850,7 @@
] ]
], ],
"RTCConfiguration-iceServers.html": [ "RTCConfiguration-iceServers.html": [
"1cbf1d6c1da47b80d9b3d7173f78062f2e49bf10", "36f1277678ac3e402e60e1254c39bc0d4d84e851",
[ [
null, null,
{} {}
@ -547733,6 +547944,13 @@
} }
}, },
"webrtc-extensions": { "webrtc-extensions": {
"RTCOAuthCredential.html": [
"63e92c6d087d3f3395651b9fd8ea583736bf7030",
[
null,
{}
]
],
"RTCRtpParameters-maxFramerate.html": [ "RTCRtpParameters-maxFramerate.html": [
"c1d472386009d693835263483959a83d0e898048", "c1d472386009d693835263483959a83d0e898048",
[ [

View file

@ -1,4 +0,0 @@
[hit-test-floats-002.html]
[Hit test float]
expected: FAIL

View file

@ -0,0 +1,4 @@
[hit-test-floats-003.html]
[Miss float below something else]
expected: FAIL

View file

@ -0,0 +1,4 @@
[hit-test-floats-004.html]
[Miss float below something else]
expected: FAIL

View file

@ -0,0 +1,2 @@
[transform-animation-under-large-scale.html]
expected: TIMEOUT

View file

@ -1,4 +0,0 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

@ -1,4 +0,0 @@
[elementFromPoint-001.html]
[CSSOM View - 5 - extensions to the Document interface]
expected: FAIL

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,2 @@
[svg-empty-container-with-filter-content-added.html]
expected: FAIL

View file

@ -309,15 +309,21 @@
[fetch(): separate response Content-Type: text/plain ] [fetch(): separate response Content-Type: text/plain ]
expected: NOTRUN expected: NOTRUN
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" text/plain] [<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL expected: FAIL
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;x=" text/plain] [<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL expected: FAIL
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL

View file

@ -56,3 +56,6 @@
[separate text/javascript x/x] [separate text/javascript x/x]
expected: FAIL expected: FAIL
[separate text/javascript ]
expected: FAIL

View file

@ -11,6 +11,3 @@
[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
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff]
expected: FAIL

View file

@ -0,0 +1,4 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
expected: FAIL

View file

@ -1,4 +0,0 @@
[traverse_the_history_5.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -1,2 +0,0 @@
[cross-origin-objects-on-new-window.html]
expected: TIMEOUT

View file

@ -1,5 +1,4 @@
[creating_browsing_context_test_01.html] [creating_browsing_context_test_01.html]
expected: TIMEOUT
[first argument: absolute url] [first argument: absolute url]
expected: TIMEOUT expected: FAIL

View file

@ -172,6 +172,3 @@
[XHTML img usemap="http://example.org/#garbage-before-hash-id"] [XHTML img usemap="http://example.org/#garbage-before-hash-id"]
expected: FAIL expected: FAIL
[HTML (standards) IMG usemap="no-hash-name"]
expected: FAIL

View file

@ -1,5 +1,4 @@
[iframe_sandbox_popups_nonescaping-3.html] [iframe_sandbox_popups_nonescaping-3.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: NOTRUN expected: FAIL

View file

@ -0,0 +1,4 @@
[form-double-submit-3.html]
[<button> should have the same double-submit protection as <input type=submit>]
expected: FAIL

View file

@ -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

View file

@ -575,3 +575,6 @@
[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-2.6532444456922729e-32\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] [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-2.6532444456922729e-32\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 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-1.9106894885712045e-15\t9.3139332532882690e-1\t9.3139332532882879e-1\t1.0000000000000020e+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.3139332532882879e-1 at index of 28696.\n\tMax RelError of 1.0000000000000020e+0 at index of 28696.\n]
expected: FAIL

View file

@ -3,15 +3,25 @@
// META: script=../../streams/resources/test-utils.js // META: script=../../streams/resources/test-utils.js
'use strict'; 'use strict';
// Helper function that triggers garbage collection while reading a chunk
// if perform_gc is true.
async function read_and_gc(reader, perform_gc) {
const read_promise = reader.read();
if (perform_gc)
garbageCollect();
return read_promise;
}
// Takes in a ReadableStream and reads from it until it is done, returning // Takes in a ReadableStream and reads from it until it is done, returning
// an array that contains the results of each read operation // an array that contains the results of each read operation. If perform_gc
async function read_all_chunks(stream) { // is true, garbage collection is triggered while reading every chunk.
async function read_all_chunks(stream, perform_gc = false) {
assert_true(stream instanceof ReadableStream); assert_true(stream instanceof ReadableStream);
assert_true('getReader' in stream); assert_true('getReader' in stream);
const reader = stream.getReader(); const reader = stream.getReader();
assert_true('read' in reader); assert_true('read' in reader);
let read_value = await reader.read(); let read_value = await read_and_gc(reader, perform_gc);
let out = []; let out = [];
let i = 0; let i = 0;
@ -19,7 +29,7 @@ async function read_all_chunks(stream) {
for (let val of read_value.value) { for (let val of read_value.value) {
out[i++] = val; out[i++] = val;
} }
read_value = await reader.read(); read_value = await read_and_gc(reader, perform_gc);
} }
return out; return out;
} }
@ -56,7 +66,7 @@ promise_test(async() => {
const stream = blob.stream(); const stream = blob.stream();
blob = null; blob = null;
garbageCollect(); garbageCollect();
const chunks = await read_all_chunks(stream); const chunks = await read_all_chunks(stream, /*perform_gc=*/true);
assert_array_equals(chunks, input_arr); assert_array_equals(chunks, input_arr);
}, "Blob.stream() garbage collection of blob shouldn't break stream" + }, "Blob.stream() garbage collection of blob shouldn't break stream" +
"consumption") "consumption")

View file

@ -0,0 +1,3 @@
<!DOCTYPE html>
<div style="width: 200px; height: 100px; background: blue"></div>
<div style="width: 200px; height: 100px; background: green"></div>

View file

@ -0,0 +1,17 @@
<!DOCTYPE html>
<title>Transform animation under large scale</title>
<link rel="author" title="Xianzhu Wang" href="mailto:wangxianzhu@chromium.org">
<link rel="help" href="https://crbug.com/1153428">
<link rel="match" href="transform-animation-under-large-scale-ref.html">
<style>
@keyframes move {
0% {transform: translateX(-1px);}
100% {transform: translateX(0);}
}
</style>
<div style="width: 2px; height: 2px; transform: scale(100); transform-origin: 0 0; overflow: hidden">
<div style="animation: move 1s infinite alternate">
<div style="width: 4px; height: 1px; background: blue"></div>
<div style="width: 4px; height: 1px; background: green"></div>
</div>
</div>

View file

@ -0,0 +1,22 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#widows-orphans">
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1153517">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<style>
#mc > div { display:inline-block; width:100%; height:20px; }
#mc > div.red { background:red; }
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div id="mc" style="overflow:hidden; columns:1; column-fill:auto; width:100px; height:100px; orphans:1; widows:1; line-height:0; background:green;">
<div></div>
<div class="red"></div>
<div class="red"></div>
<div class="red"></div>
<div class="red"></div>
<div class="red"></div>
</div>
<script>
document.body.offsetTop,
mc.style.widows = 5;
</script>

View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#widows-orphans">
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1153517">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<style>
#mc > div { display:inline-block; width:100%; height:20px; }
#mc > div.green { height:100px; background:green; }
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div style="width:100px; height:100px; background:red;">
<div id="mc" style="columns:4; orphans:3; widows:1; column-gap:0; line-height:0;">
<div class="green"></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div class="green"></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div class="green"></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div class="green"></div>
</div>
</div>
<script>
document.body.offsetTop;
mc.style.orphans = 5;
</script>

View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<title>CSS Containment Test: absolute positioned 'contain: size' element is monolithic</title>
<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
<link rel="author" title="Mozilla" href="https://www.mozilla.org/">
<link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-size">
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
<meta name="assert" content="This test checks that an absolute positioned element with size containment is monolithic.">
<style>
#multicol {
width: 300px;
column-count: 3;
}
#container {
position: relative;
}
#abs-size-contain {
position: absolute;
contain: size;
width: 100px;
height: 100px;
background: green;
}
</style>
<p>Test passes if there is a filled green square.</p>
<div id="multicol">
<div id="container">
<div id="abs-size-contain"></div>
</div>
</div>
</html>

View file

@ -0,0 +1,37 @@
<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
<link rel="author" title="Mozilla" href="https://www.mozilla.org/">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1678469">
<meta name="assert" content="This test ensures that the browser does not crash after removing the element 'c'.">
<style>
html { columns: 0 }
body {
transform: rotate(14deg);
}
#flex-container {
display: flex;
contain: size layout;
position: absolute;
width: 100px;
height: 100px;
}
</style>
<script>
function boom() {
let flex = document.getElementById('flex-container');
let c = document.getElementById('c');
flex.removeChild(c);
}
</script>
<body onload="boom()">
<div id="flex-container">
x
<div id="c"></div>
</div>
</body>
</html>

View file

@ -0,0 +1,12 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-multicol-1/#filling-columns">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#break-between">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#break-within">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div style="width:100px; height:100px; background:red;">
<div style="columns:4; background:green;">
<div style="break-inside:avoid; height:100px;"></div>
</div>
</div>

View file

@ -0,0 +1,13 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-multicol-1/#filling-columns">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#break-between">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#break-within">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div style="width:100px; height:100px; background:red;">
<div style="columns:4; background:green;">
<div style="break-inside:avoid; break-after:avoid; height:50px;"></div>
<div style="break-inside:avoid; height:50px;"></div>
</div>
</div>

View file

@ -0,0 +1,37 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-multicol-1/#filling-columns">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#widows-orphans">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<style>
.multicol {
columns: 2;
orphans: 4;
widows: 4;
width: 100px;
column-gap: 80px;
column-rule: 80px solid green;
line-height: 0;
background: red;
}
span {
display: inline-block;
width: 100%;
height: 10px;
background: green;
}
span.tall {
height: 40px;
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div class="multicol">
<span></span><br>
<span></span><br>
<span class="tall"></span><br>
<span class="tall"></span><br>
<span class="tall"></span><br>
<span class="tall"></span><br>
<span></span><br>
<span></span><br>
</div>

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-multicol-1/#the-multi-column-model">
<link rel="help" href="https://www.w3.org/TR/css-multicol-1/#filling-columns">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#break-within">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<style>
#outer, #outer div { background: green; }
#inner * { break-inside: avoid; }
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div id="outer" style="columns:2; column-gap:0; column-fill:auto; width:100px; height:100px;">
<div id="inner" style="columns:2; column-gap:0;">
<div style="height:50px;"></div>
<div style="height:100px;">
<div style="margin-left:100%; width:100%; height:50px; background:red;"></div>
</div>
<div style="height:50px;"></div>
</div>
</div>

View file

@ -4,7 +4,7 @@
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<style> <style>
body { html {
margin: 0px; margin: 0px;
scroll-snap-type: both mandatory; scroll-snap-type: both mandatory;
} }

View file

@ -0,0 +1,25 @@
<!doctype html>
<html class="reftest-wait">
<title>Adding content to a previously empty filtered container</title>
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#FilterProperty">
<link rel="match" href="reference/green-100x100.html">
<link rel="bookmark" href="https://crbug.com/1154050">
<script src="/common/rendering-utils.js"></script>
<script src="/common/reftest-wait.js"></script>
<svg>
<filter id="f" color-interpolation-filters="sRGB">
<feComponentTransfer><feFuncA/></feComponentTransfer>
</filter>
<rect width="100" height="100" fill="red"/>
<g id="target" filter="url(#f)"/>
</svg>
<script>
waitForAtLeastOneFrame().then(() => {
const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
rect.setAttribute('fill', 'green');
rect.setAttribute('width', '100');
rect.setAttribute('height', '100');
document.getElementById('target').appendChild(rect);
takeScreenshot();
});
</script>

View file

@ -195,7 +195,6 @@ idl_test(
HashChangeEvent: [], HashChangeEvent: [],
PageTransitionEvent: [], PageTransitionEvent: [],
BeforeUnloadEvent: [], BeforeUnloadEvent: [],
ApplicationCache: ['window.applicationCache'],
WindowModal: [], WindowModal: [],
DOMParser: ['new DOMParser()'], DOMParser: ['new DOMParser()'],
Navigator: ['window.navigator'], Navigator: ['window.navigator'],

View file

@ -1701,7 +1701,6 @@ interface Window : EventTarget {
// the user agent // the user agent
readonly attribute Navigator navigator; readonly attribute Navigator navigator;
[SecureContext] readonly attribute ApplicationCache applicationCache;
readonly attribute boolean originIsolated; readonly attribute boolean originIsolated;
// user prompts // user prompts
@ -1801,39 +1800,6 @@ interface BeforeUnloadEvent : Event {
attribute DOMString returnValue; attribute DOMString returnValue;
}; };
[SecureContext,
Exposed=Window]
interface ApplicationCache : EventTarget {
// update status
const unsigned short UNCACHED = 0;
const unsigned short IDLE = 1;
const unsigned short CHECKING = 2;
const unsigned short DOWNLOADING = 3;
const unsigned short UPDATEREADY = 4;
const unsigned short OBSOLETE = 5;
readonly attribute unsigned short status;
// updates
undefined update();
undefined abort();
undefined swapCache();
// events
attribute EventHandler onchecking;
attribute EventHandler onerror;
attribute EventHandler onnoupdate;
attribute EventHandler ondownloading;
attribute EventHandler onprogress;
attribute EventHandler onupdateready;
attribute EventHandler oncached;
attribute EventHandler onobsolete;
};
interface mixin NavigatorOnLine {
readonly attribute boolean onLine;
};
[Exposed=(Window,Worker)] [Exposed=(Window,Worker)]
interface ErrorEvent : Event { interface ErrorEvent : Event {
constructor(DOMString type, optional ErrorEventInit eventInitDict = {}); constructor(DOMString type, optional ErrorEventInit eventInitDict = {});
@ -2048,6 +2014,10 @@ interface mixin NavigatorLanguage {
readonly attribute FrozenArray<DOMString> languages; readonly attribute FrozenArray<DOMString> languages;
}; };
interface mixin NavigatorOnLine {
readonly attribute boolean onLine;
};
interface mixin NavigatorContentUtils { interface mixin NavigatorContentUtils {
[SecureContext] undefined registerProtocolHandler(DOMString scheme, USVString url); [SecureContext] undefined registerProtocolHandler(DOMString scheme, USVString url);
[SecureContext] undefined unregisterProtocolHandler(DOMString scheme, USVString url); [SecureContext] undefined unregisterProtocolHandler(DOMString scheme, USVString url);

View file

@ -25,10 +25,10 @@ interface MediaSource : EventTarget {
attribute EventHandler onsourceended; attribute EventHandler onsourceended;
attribute EventHandler onsourceclose; attribute EventHandler onsourceclose;
SourceBuffer addSourceBuffer (DOMString type); SourceBuffer addSourceBuffer (DOMString type);
void removeSourceBuffer (SourceBuffer sourceBuffer); undefined removeSourceBuffer (SourceBuffer sourceBuffer);
void endOfStream (optional EndOfStreamError error); undefined endOfStream (optional EndOfStreamError error);
void setLiveSeekableRange (double start, double end); undefined setLiveSeekableRange (double start, double end);
void clearLiveSeekableRange (); undefined clearLiveSeekableRange ();
static boolean isTypeSupported (DOMString type); static boolean isTypeSupported (DOMString type);
}; };
@ -53,9 +53,9 @@ interface SourceBuffer : EventTarget {
attribute EventHandler onupdateend; attribute EventHandler onupdateend;
attribute EventHandler onerror; attribute EventHandler onerror;
attribute EventHandler onabort; attribute EventHandler onabort;
void appendBuffer (BufferSource data); undefined appendBuffer (BufferSource data);
void abort (); undefined abort ();
void remove (double start, unrestricted double end); undefined remove (double start, unrestricted double end);
}; };
[Exposed=Window] [Exposed=Window]

View file

@ -3,9 +3,9 @@
// (https://github.com/w3c/webref) // (https://github.com/w3c/webref)
// Source: MediaStream Recording (https://w3c.github.io/mediacapture-record/) // Source: MediaStream Recording (https://w3c.github.io/mediacapture-record/)
[Exposed=Window, [Exposed=Window]
Constructor(MediaStream stream, optional MediaRecorderOptions options = {})]
interface MediaRecorder : EventTarget { interface MediaRecorder : EventTarget {
constructor(MediaStream stream, optional MediaRecorderOptions options = {});
readonly attribute MediaStream stream; readonly attribute MediaStream stream;
readonly attribute DOMString mimeType; readonly attribute DOMString mimeType;
readonly attribute RecordingState state; readonly attribute RecordingState state;
@ -19,11 +19,11 @@ interface MediaRecorder : EventTarget {
readonly attribute unsigned long audioBitsPerSecond; readonly attribute unsigned long audioBitsPerSecond;
readonly attribute BitrateMode audioBitrateMode; readonly attribute BitrateMode audioBitrateMode;
void start(optional unsigned long timeslice); undefined start(optional unsigned long timeslice);
void stop(); undefined stop();
void pause(); undefined pause();
void resume(); undefined resume();
void requestData(); undefined requestData();
static boolean isTypeSupported(DOMString type); static boolean isTypeSupported(DOMString type);
}; };
@ -47,8 +47,9 @@ enum RecordingState {
"paused" "paused"
}; };
[Exposed=Window, Constructor(DOMString type, BlobEventInit eventInitDict)] [Exposed=Window]
interface BlobEvent : Event { interface BlobEvent : Event {
constructor(DOMString type, BlobEventInit eventInitDict);
[SameObject] readonly attribute Blob data; [SameObject] readonly attribute Blob data;
readonly attribute DOMHighResTimeStamp timecode; readonly attribute DOMHighResTimeStamp timecode;
}; };
@ -62,7 +63,8 @@ dictionary MediaRecorderErrorEventInit : EventInit {
required DOMException error; required DOMException error;
}; };
[Exposed=Window, Constructor(DOMString type, MediaRecorderErrorEventInit eventInitDict)] [Exposed=Window]
interface MediaRecorderErrorEvent : Event { interface MediaRecorderErrorEvent : Event {
constructor(DOMString type, MediaRecorderErrorEventInit eventInitDict);
[SameObject] readonly attribute DOMException error; [SameObject] readonly attribute DOMException error;
}; };

View file

@ -0,0 +1,30 @@
// GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into webref
// (https://github.com/w3c/webref)
// Source: Measure Memory API (https://wicg.github.io/performance-measure-memory/)
dictionary MemoryMeasurement {
unsigned long long bytes;
sequence<MemoryBreakdownEntry> breakdown;
};
dictionary MemoryBreakdownEntry {
unsigned long long bytes;
sequence<MemoryAttribution> attribution;
sequence<DOMString> userAgentSpecificTypes;
};
dictionary MemoryAttribution {
USVString url;
MemoryAttributionContainer container;
DOMString scope;
};
dictionary MemoryAttributionContainer {
DOMString id;
USVString src;
};
partial interface Performance {
[CrossOriginIsolated] Promise<MemoryMeasurement> measureMemory();
};

View file

@ -23,7 +23,7 @@ interface Serial : EventTarget {
[Exposed=(DedicatedWorker,Window), SecureContext] [Exposed=(DedicatedWorker,Window), SecureContext]
interface SerialPort { interface SerialPort {
Promise<void> open(optional SerialOptions options = {}); Promise<undefined> open(optional SerialOptions options = {});
readonly attribute ReadableStream in; readonly attribute ReadableStream in;
readonly attribute WritableStream out; readonly attribute WritableStream out;
SerialPortInfo getInfo(); SerialPortInfo getInfo();

View file

@ -613,6 +613,11 @@ interface AudioWorkletProcessor {
readonly attribute MessagePort port; readonly attribute MessagePort port;
}; };
callback AudioWorkletProcessCallback =
boolean (FrozenArray<FrozenArray<Float32Array>> inputs,
FrozenArray<FrozenArray<Float32Array>> outputs,
object parameters);
dictionary AudioParamDescriptor { dictionary AudioParamDescriptor {
required DOMString name; required DOMString name;
float defaultValue = 0; float defaultValue = 0;

View file

@ -119,7 +119,7 @@ interface RTCPeerConnection : EventTarget {
Promise<undefined> createOffer(RTCSessionDescriptionCallback successCallback, Promise<undefined> createOffer(RTCSessionDescriptionCallback successCallback,
RTCPeerConnectionErrorCallback failureCallback, RTCPeerConnectionErrorCallback failureCallback,
optional RTCOfferOptions options = {}); optional RTCOfferOptions options = {});
Promise<undefined> setLocalDescription(optional RTCLocalSessionDescriptionInit description = {}, Promise<undefined> setLocalDescription(RTCLocalSessionDescriptionInit description,
VoidFunction successCallback, VoidFunction successCallback,
RTCPeerConnectionErrorCallback failureCallback); RTCPeerConnectionErrorCallback failureCallback);
Promise<undefined> createAnswer(RTCSessionDescriptionCallback successCallback, Promise<undefined> createAnswer(RTCSessionDescriptionCallback successCallback,

View file

@ -0,0 +1,15 @@
// META: global=window,worker
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js
'use strict';
// https://wicg.github.io/performance-measure-memory/
idl_test(
['performance-measure-memory'],
['hr-time', 'dom'],
async idl_array => {
// Nothing to add.
}
);

View file

@ -214,23 +214,11 @@ var WebNFCTest = (() => {
return createNDEFError(null); return createNDEFError(null);
} }
async cancelWatch(id) { cancelWatch(id) {
let index = this.watchers_.findIndex(value => value.id === id); let index = this.watchers_.findIndex(value => value.id === id);
if (index === -1) { if (index !== -1) {
return createNDEFError(device.mojom.NDEFErrorType.NOT_FOUND);
}
this.watchers_.splice(index, 1); this.watchers_.splice(index, 1);
return createNDEFError(null);
} }
async cancelAllWatches() {
if (this.watchers_.length === 0) {
return createNDEFError(device.mojom.NDEFErrorType.NOT_FOUND);
}
this.watchers_.splice(0, this.watchers_.length);
return createNDEFError(null);
} }
getHWError() { getHWError() {

View file

@ -31,48 +31,55 @@ class ChromiumFormatter(base.BaseFormatter):
# the trie and the leaf contains the dict of per-test data. # the trie and the leaf contains the dict of per-test data.
self.tests = {} self.tests = {}
# Message dictionary, keyed by test name. Value is a list of strings: # Two dictionaries keyed by test name. Values are lists of strings:
# see _append_test_message for the format. # actual metadata content and other messages, respectively.
# See _append_test_message for examples.
self.actual_metadata = defaultdict(list)
self.messages = defaultdict(list) self.messages = defaultdict(list)
# List of tests that have failing subtests. # List of tests that have failing subtests.
self.tests_with_subtest_fails = set() self.tests_with_subtest_fails = set()
# Browser log for the current test under execution. # Browser log for the current test under execution.
self.test_log = [] # These logs are from ChromeDriver's stdout/err, so we cannot say for
# sure which test a message is from, but instead we correlate them based
# on timing.
self.browser_log = []
def _append_test_message(self, test, subtest, wpt_actual_status, message): def _append_test_message(self, test, subtest, wpt_actual_status, message):
""" r"""
Appends the message data for a test or subtest. Appends the message data for a test or subtest.
:param str test: the name of the test :param str test: the name of the test
:param str subtest: the name of the subtest with the message. Will be :param str subtest: the name of the subtest with the message. Will be
None if this is called for a test. None if this is called for a test.
:param str wpt_actual_status: the test status as reported by WPT :param str wpt_actual_status: the test status as reported by WPT
:param str message: the string to append to the message for this test :param str message: the string to append to the message for this test
Example: Example actual_metadata of a test with a subtest:
[test_or_subtest_name] "[test_name]\n expected: OK\n"
expected: FAIL " [subtest_name]\n expected: FAIL\n"
message: some test message eg assert failure
NOTE: throughout this function we output a key called "expected" but
fill it in with the actual status. This is by design. The goal of this
output is to look exactly like WPT's expectation metadata so that it
can be easily diff-ed.
Messages are appended verbatim to self.messages[test].
""" """
# NOTE: throughout this function we output a key called "expected" but
# fill it in with the actual status. This is by design. The goal of this
# output is to look exactly like WPT's expectation metadata so that it
# can be easily diff-ed.
if subtest: if subtest:
result = " [%s]\n expected: %s\n" % (subtest, wpt_actual_status) result = " [%s]\n expected: %s\n" % (subtest, wpt_actual_status)
self.actual_metadata[test].append(result)
if message: if message:
result += " message: %s\n" % message self.messages[test].append("%s: %s\n" % (subtest, message))
self.messages[test].append(result)
else: else:
# No subtest, so this is the top-level test. The result must be # No subtest, so this is the top-level test. The result must be
# prepended to the list of messages, so that the message for the # prepended to the list, so that it comes before any subtest.
# test comes before any subtest messages.
test_name_last_part = test.split("/")[-1] test_name_last_part = test.split("/")[-1]
result = "[%s]\n expected: %s\n" % (test_name_last_part, wpt_actual_status) result = "[%s]\n expected: %s\n" % (test_name_last_part, wpt_actual_status)
self.actual_metadata[test].insert(0, result)
if message: if message:
result += " message: %s\n" % message self.messages[test].insert(0, "Harness: %s\n" % message)
self.messages[test].insert(0, result)
def _append_artifact(self, cur_dict, artifact_name, artifact_value): def _append_artifact(self, cur_dict, artifact_name, artifact_value):
""" """
@ -86,13 +93,16 @@ class ChromiumFormatter(base.BaseFormatter):
cur_dict["artifacts"] = defaultdict(list) cur_dict["artifacts"] = defaultdict(list)
cur_dict["artifacts"][artifact_name].append(artifact_value) cur_dict["artifacts"][artifact_name].append(artifact_value)
def _store_test_result(self, name, actual, expected, messages, wpt_actual, def _store_test_result(self, name, actual, expected, actual_metadata,
subtest_failure, reftest_screenshots): messages, wpt_actual, subtest_failure,
reftest_screenshots=None):
""" """
Stores the result of a single test in |self.tests| Stores the result of a single test in |self.tests|
:param str name: name of the test. :param str name: name of the test.
:param str actual: actual status of the test. :param str actual: actual status of the test.
:param str expected: expected statuses of the test. :param str expected: expected statuses of the test.
:param list actual_metadata: a list of metadata items.
:param list messages: a list of test messages. :param list messages: a list of test messages.
:param str wpt_actual: actual status reported by wpt, may differ from |actual|. :param str wpt_actual: actual status reported by wpt, may differ from |actual|.
:param bool subtest_failure: whether this test failed because of subtests. :param bool subtest_failure: whether this test failed because of subtests.
@ -112,10 +122,12 @@ class ChromiumFormatter(base.BaseFormatter):
if wpt_actual != actual: if wpt_actual != actual:
self._append_artifact(cur_dict, "wpt_actual_status", wpt_actual) self._append_artifact(cur_dict, "wpt_actual_status", wpt_actual)
if wpt_actual == 'CRASH': if wpt_actual == 'CRASH':
for line in self.test_log: for line in self.browser_log:
self._append_artifact(cur_dict, "wpt_crash_log", line) self._append_artifact(cur_dict, "wpt_crash_log", line)
for metadata in actual_metadata:
self._append_artifact(cur_dict, "wpt_actual_metadata", metadata)
for message in messages: for message in messages:
self._append_artifact(cur_dict, "log", message) self._append_artifact(cur_dict, "wpt_log", message)
# Store screenshots (if any). # Store screenshots (if any).
for item in reftest_screenshots or []: for item in reftest_screenshots or []:
@ -230,19 +242,21 @@ class ChromiumFormatter(base.BaseFormatter):
self._store_test_result(test_name, self._store_test_result(test_name,
actual_status, actual_status,
expected_statuses, expected_statuses,
self.actual_metadata[test_name],
self.messages[test_name], self.messages[test_name],
wpt_actual_status, wpt_actual_status,
subtest_failure, subtest_failure,
data.get("extra", {}).get("reftest_screenshots")) data.get("extra", {}).get("reftest_screenshots"))
# Remove the test from messages dict to avoid accumulating too many. # Remove the test from dicts to avoid accumulating too many.
self.actual_metadata.pop(test_name)
self.messages.pop(test_name) self.messages.pop(test_name)
# Update the count of how many tests ran with each status. # Update the count of how many tests ran with each status.
self.num_failures_by_status[actual_status] += 1 self.num_failures_by_status[actual_status] += 1
# New test, new browser logs. # New test, new browser logs.
self.test_log = [] self.browser_log = []
def suite_end(self, data): def suite_end(self, data):
# Create the final result dictionary # Create the final result dictionary
@ -259,4 +273,4 @@ class ChromiumFormatter(base.BaseFormatter):
def process_output(self, data): def process_output(self, data):
if 'command' in data and 'chromedriver' in data['command']: if 'command' in data and 'chromedriver' in data['command']:
self.test_log.append(data['data']) self.browser_log.append(data['data'])

View file

@ -157,17 +157,24 @@ def test_subtest_messages(capfd):
output_json = json.load(output) output_json = json.load(output)
t1_artifacts = output_json["tests"]["t1"]["artifacts"] t1_artifacts = output_json["tests"]["t1"]["artifacts"]
assert t1_artifacts["log"] == [ assert t1_artifacts["wpt_actual_metadata"] == [
"[t1]\n expected: PASS\n", "[t1]\n expected: PASS\n",
" [t1_a]\n expected: FAIL\n message: t1_a_message\n", " [t1_a]\n expected: FAIL\n",
" [t1_b]\n expected: PASS\n message: t1_b_message\n", " [t1_b]\n expected: PASS\n",
]
assert t1_artifacts["wpt_log"] == [
"t1_a: t1_a_message\n",
"t1_b: t1_b_message\n",
] ]
assert t1_artifacts["wpt_subtest_failure"] == ["true"] assert t1_artifacts["wpt_subtest_failure"] == ["true"]
t2_artifacts = output_json["tests"]["t2"]["artifacts"] t2_artifacts = output_json["tests"]["t2"]["artifacts"]
assert t2_artifacts["log"] == [ assert t2_artifacts["wpt_actual_metadata"] == [
"[t2]\n expected: TIMEOUT\n message: t2_message\n", "[t2]\n expected: TIMEOUT\n",
" [t2_a]\n expected: PASS\n", " [t2_a]\n expected: PASS\n",
] ]
assert t2_artifacts["wpt_log"] == [
"Harness: t2_message\n"
]
assert "wpt_subtest_failure" not in t2_artifacts.keys() assert "wpt_subtest_failure" not in t2_artifacts.keys()
@ -210,11 +217,17 @@ def test_subtest_failure(capfd):
test_obj = output_json["tests"]["t1"] test_obj = output_json["tests"]["t1"]
t1_artifacts = test_obj["artifacts"] t1_artifacts = test_obj["artifacts"]
assert t1_artifacts["log"] == [ assert t1_artifacts["wpt_actual_metadata"] == [
"[t1]\n expected: PASS\n message: top_message\n", "[t1]\n expected: PASS\n",
" [t1_a]\n expected: FAIL\n message: t1_a_message\n", " [t1_a]\n expected: FAIL\n",
" [t1_b]\n expected: PASS\n message: t1_b_message\n", " [t1_b]\n expected: PASS\n",
" [t1_c]\n expected: TIMEOUT\n message: t1_c_message\n", " [t1_c]\n expected: TIMEOUT\n",
]
assert t1_artifacts["wpt_log"] == [
"Harness: top_message\n",
"t1_a: t1_a_message\n",
"t1_b: t1_b_message\n",
"t1_c: t1_c_message\n",
] ]
assert t1_artifacts["wpt_subtest_failure"] == ["true"] assert t1_artifacts["wpt_subtest_failure"] == ["true"]
# The status of the test in the output is a failure because subtests failed, # The status of the test in the output is a failure because subtests failed,
@ -266,13 +279,16 @@ def test_expected_subtest_failure(capfd):
output_json = json.load(output) output_json = json.load(output)
test_obj = output_json["tests"]["t1"] test_obj = output_json["tests"]["t1"]
t1_log = test_obj["artifacts"]["log"] assert test_obj["artifacts"]["wpt_actual_metadata"] == [
print("Lpz t1log=%s" % t1_log)
assert t1_log == [
"[t1]\n expected: OK\n", "[t1]\n expected: OK\n",
" [t1_a]\n expected: FAIL\n message: t1_a_message\n", " [t1_a]\n expected: FAIL\n",
" [t1_b]\n expected: PASS\n message: t1_b_message\n", " [t1_b]\n expected: PASS\n",
" [t1_c]\n expected: TIMEOUT\n message: t1_c_message\n", " [t1_c]\n expected: TIMEOUT\n",
]
assert test_obj["artifacts"]["wpt_log"] == [
"t1_a: t1_a_message\n",
"t1_b: t1_b_message\n",
"t1_c: t1_c_message\n",
] ]
# The status of the test in the output is a pass because the subtest # The status of the test in the output is a pass because the subtest
# failures were all expected. # failures were all expected.
@ -316,9 +332,12 @@ def test_unexpected_subtest_pass(capfd):
test_obj = output_json["tests"]["t1"] test_obj = output_json["tests"]["t1"]
t1_artifacts = test_obj["artifacts"] t1_artifacts = test_obj["artifacts"]
assert t1_artifacts["log"] == [ assert t1_artifacts["wpt_actual_metadata"] == [
"[t1]\n expected: PASS\n", "[t1]\n expected: PASS\n",
" [t1_a]\n expected: PASS\n message: t1_a_message\n", " [t1_a]\n expected: PASS\n",
]
assert t1_artifacts["wpt_log"] == [
"t1_a: t1_a_message\n",
] ]
assert t1_artifacts["wpt_subtest_failure"] == ["true"] assert t1_artifacts["wpt_subtest_failure"] == ["true"]
# Since the subtest status is unexpected, we fail the test. But we report # Since the subtest status is unexpected, we fail the test. But we report

View file

@ -72,7 +72,7 @@ nfc_test(async () => {
await ndef.scan(); await ndef.scan();
parent.postMessage("Failure", "*"); parent.postMessage("Failure", "*");
} catch (error) { } catch (error) {
if (error.name == "NotAllowedError") { if (error.name == "InvalidStateError") {
parent.postMessage("Success", "*"); parent.postMessage("Success", "*");
} else { } else {
parent.postMessage("Failure", "*"); parent.postMessage("Failure", "*");
@ -107,20 +107,6 @@ nfc_test(async (t, mockNFC) => {
await promise; await promise;
}, "Test that nfc watch success if NFC HW is enabled."); }, "Test that nfc watch success if NFC HW is enabled.");
nfc_test(async (t, mockNFC) => {
const ndef = new NDEFReader();
const controller = new AbortController();
const ndefWatcher = new EventWatcher(t, ndef, ["reading", "readingerror"]);
const promise = ndefWatcher.wait_for("reading").then(event => {
assert_true(event instanceof NDEFReadingEvent);
controller.abort();
});
await ndef.scan({signal : controller.signal});
mockNFC.setReadingMessage(createMessage([createTextRecord(test_text_data)]));
await promise;
}, "Test that NDEFReader.scan matches any ids if NDEFScanOptions.id is undefined.");
nfc_test(async (t, mockNFC) => { nfc_test(async (t, mockNFC) => {
const ndef = new NDEFReader(); const ndef = new NDEFReader();
const controller = new AbortController(); const controller = new AbortController();

View file

@ -236,7 +236,7 @@ nfc_test(async () => {
await ndef.write("Test"); await ndef.write("Test");
parent.postMessage("Failure", "*"); parent.postMessage("Failure", "*");
} catch (error) { } catch (error) {
if (error.name == "NotAllowedError") { if (error.name == "InvalidStateError") {
parent.postMessage("Success", "*"); parent.postMessage("Success", "*");
} else { } else {
parent.postMessage("Failure", "*"); parent.postMessage("Failure", "*");

View file

@ -0,0 +1,44 @@
<!doctype html>
<meta charset=utf-8>
<title>RTCConfiguration iceServers with OAuth credentials</title>
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
<script src='../webrtc/RTCConfiguration-helper.js'></script>
<script>
'use strict';
// These tests are based on
// https://w3c.github.io/webrtc-extensions/#rtcoauthcredential-dictionary
/*
4.3.2. To set a configuration
11.6. If scheme name is turn or turns, and server.credentialType is "oauth",
and server.credential is not an RTCOAuthCredential, then throw an
InvalidAccessError and abort these steps.
*/
config_test(makePc => {
assert_throws_dom('InvalidAccessError', () =>
makePc({ iceServers: [{
urls: 'turns:turn.example.org',
credentialType: 'oauth',
username: 'user',
credential: 'cred'
}] }));
}, 'with turns server, credentialType oauth, and string credential should throw InvalidAccessError');
config_test(makePc => {
const pc = makePc({ iceServers: [{
urls: 'turns:turn2.example.net',
username: '22BIjxU93h/IgwEb',
credential: {
macKey: 'WmtzanB3ZW9peFhtdm42NzUzNG0=',
accessToken: 'AAwg3kPHWPfvk9bDFL936wYvkoctMADzQ5VhNDgeMR3+ZlZ35byg972fW8QjpEl7bx91YLBPFsIhsxloWcXPhA=='
},
credentialType: 'oauth'
}]});
const { iceServers } = pc.getConfiguration();
const server = iceServers[0];
assert_equals(server.credentialType, 'oauth');
}, 'with turns server, credential type and credential from spec should not throw');
</script>

View file

@ -370,36 +370,4 @@
}] })); }] }));
}, 'with turns server, credentialType password, and object credential should throw InvalidAccessError'); }, 'with turns server, credentialType password, and object credential should throw InvalidAccessError');
/*
4.3.2. To set a configuration
11.6. If scheme name is turn or turns, and server.credentialType is "oauth",
and server.credential is not an RTCOAuthCredential, then throw an
InvalidAccessError and abort these steps.
*/
config_test(makePc => {
assert_throws_dom('InvalidAccessError', () =>
makePc({ iceServers: [{
urls: 'turns:turn.example.org',
credentialType: 'oauth',
username: 'user',
credential: 'cred'
}] }));
}, 'with turns server, credentialType oauth, and string credential should throw InvalidAccessError');
/*
Tested
4.3.2. To set a configuration
11.1-6.
Untestable
4.3.2. To set a configuration
11.7. Append server to validatedServers.
Coverage Report
Tested 9
Not Tested 0
Untestable 1
Total 10
*/
</script> </script>