mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Auto merge of #27847 - servo-wpt-sync:wpt_update_26-11-2020, r=servo-wpt-sync
Sync WPT with upstream (26-11-2020) Automated downstream sync of changes from upstream as of 26-11-2020. [no-wpt-sync] r? @servo-wpt-sync
This commit is contained in:
commit
ddfdbe1c2f
70 changed files with 884 additions and 5144 deletions
|
@ -1,4 +0,0 @@
|
||||||
[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-004.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 @@
|
||||||
|
[two-element-custom-property-animation.https.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,4 @@
|
||||||
|
[CaretPosition-001.html]
|
||||||
|
[Element at (400, 100)]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[matchMedia-display-none-iframe.html]
|
||||||
|
expected: ERROR
|
|
@ -309,18 +309,24 @@
|
||||||
[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 */*;charset=gbk]
|
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html */*]
|
[<iframe>: combined response Content-Type: text/html */*]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
[<iframe>: separate response Content-Type: text/html */*]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/plain */*]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -11,3 +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
|
||||||
|
|
||||||
|
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[traverse_the_history_2.html]
|
[traverse_the_history_4.html]
|
||||||
[Multiple history traversals, last would be aborted]
|
[Multiple history traversals, last would be aborted]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[traverse_the_history_2.html]
|
[traverse_the_history_5.html]
|
||||||
[Multiple history traversals, last would be aborted]
|
[Multiple history traversals, last would be aborted]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||||
expected: TIMEOUT
|
expected: NOTRUN
|
||||||
|
|
||||||
[Element with tabindex should support autofocus]
|
[Element with tabindex should support autofocus]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
@ -13,5 +13,5 @@
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
[Host element with delegatesFocus should support autofocus]
|
[Host element with delegatesFocus should support autofocus]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_escaping-3.html]
|
[iframe_sandbox_popups_escaping-3.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_nonescaping-1.html]
|
[iframe_sandbox_popups_nonescaping-1.html]
|
||||||
expected: CRASH
|
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: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_nonescaping-2.html]
|
[iframe_sandbox_popups_nonescaping-2.html]
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[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: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[form-double-submit-2.html]
|
|
||||||
[preventDefault should allow onclick submit() to succeed]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[activation-behavior.window.html]
|
|
||||||
[<a> that is not connected should be followed]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[ignore-opens-during-unload.window.html]
|
[ignore-opens-during-unload.window.html]
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[document.open should bail out when ignore-opens-during-unload is greater than 0 during visibilitychange event (open(parent) while unloading parent and child)]
|
[document.open should bail out when ignore-opens-during-unload is greater than 0 during visibilitychange event (open(parent) while unloading parent and child)]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -323,3 +323,9 @@
|
||||||
[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-6.7884163052642179e-30\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-6.7884163052642179e-30\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-5.5004304647445679e-1\t9.3139332532882690e-1\t1.4814363718032837e+0\t1.5905593603865102e+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 1.4814363718032837e+0 at index of 28696.\n\tMax RelError of 1.5905593603865102e+0 at index of 28696.\n]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[X SNR (39.92911912193123 dB) is not greater than or equal to 65.737. Got 39.92911912193123.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[audiocontext-not-fully-active.html]
|
[audiocontext-not-fully-active.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[frame in navigated remote-site frame]
|
[frame in navigated remote-site frame]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
[018.html]
|
|
||||||
expected: TIMEOUT
|
|
||||||
[origin of the script that invoked the method, javascript:]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[003.html]
|
[003.html]
|
||||||
expected: ERROR
|
|
||||||
[shared]
|
[shared]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -14061,13 +14061,6 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"selectors": {
|
"selectors": {
|
||||||
"focus-visible-001-manual.html": [
|
|
||||||
"3475ba6cac8af1fcb2095aeaae13a0db76ccc7b2",
|
|
||||||
[
|
|
||||||
null,
|
|
||||||
{}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"focus-visible-002-manual.html": [
|
"focus-visible-002-manual.html": [
|
||||||
"f86082df8b8988e94cc2fb5ca8705b59251d2908",
|
"f86082df8b8988e94cc2fb5ca8705b59251d2908",
|
||||||
[
|
[
|
||||||
|
@ -14103,13 +14096,6 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"focus-visible-012-manual.html": [
|
|
||||||
"c659a728986fd01f47e252b2fe06cce8c91175ac",
|
|
||||||
[
|
|
||||||
null,
|
|
||||||
{}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"hover-001-manual.html": [
|
"hover-001-manual.html": [
|
||||||
"87d7af91b6994371b72ff33923ea1cacc65c8b5b",
|
"87d7af91b6994371b72ff33923ea1cacc65c8b5b",
|
||||||
[
|
[
|
||||||
|
@ -166528,6 +166514,19 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"two-element-custom-property-animation.https.html": [
|
||||||
|
"044650dcaffbca576977a6b2ce4ec61fb00cf70c",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-paint-api/two-element-custom-property-animation-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"valid-image-after-load.https.html": [
|
"valid-image-after-load.https.html": [
|
||||||
"c1bf8e85548656b60145c4d54437b10a2f07880e",
|
"c1bf8e85548656b60145c4d54437b10a2f07880e",
|
||||||
[
|
[
|
||||||
|
@ -256567,7 +256566,7 @@
|
||||||
"file": {
|
"file": {
|
||||||
"resources": {
|
"resources": {
|
||||||
"echo-content-escaped.py": [
|
"echo-content-escaped.py": [
|
||||||
"de6b2558ece6e4d3882b460a06ded24b482df204",
|
"2cbaf45c20efdfcba17a27d3aecb3e5c9bee4bfb",
|
||||||
[]
|
[]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -315099,6 +315098,10 @@
|
||||||
"1acef69f9413c154b2f527d3792f24bbbdb38643",
|
"1acef69f9413c154b2f527d3792f24bbbdb38643",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"two-element-custom-property-animation-ref.html": [
|
||||||
|
"6c6d94575eceb892278d355278a0c1463c726168",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"valid-image-after-load-ref.html": [
|
"valid-image-after-load-ref.html": [
|
||||||
"b6a6dec6c6087633b6e3efd8e7e9dcf49a3fea8b",
|
"b6a6dec6c6087633b6e3efd8e7e9dcf49a3fea8b",
|
||||||
[]
|
[]
|
||||||
|
@ -339434,16 +339437,12 @@
|
||||||
"f69fa4ff17d9ffe18559c34546139872c6a8e2e2",
|
"f69fa4ff17d9ffe18559c34546139872c6a8e2e2",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"current-work-canvas.xhtml": [
|
|
||||||
"2bb889ab275fcdc7983752fa79e8dc990b38c5d2",
|
|
||||||
[]
|
|
||||||
],
|
|
||||||
"gentest.py": [
|
"gentest.py": [
|
||||||
"5c223e41fba054c82292f9b459b6665473fb7d82",
|
"5c223e41fba054c82292f9b459b6665473fb7d82",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"gentestutils.py": [
|
"gentestutils.py": [
|
||||||
"d677f4d33bcc66bec9e271afccca5e36df9ab0e8",
|
"b6861db5f9ef72bf5ed02087411e2c3694865d75",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"name2dir-offscreen.yaml": [
|
"name2dir-offscreen.yaml": [
|
||||||
|
@ -339455,11 +339454,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"spec.yaml": [
|
"spec.yaml": [
|
||||||
"d4b1840a69f7f3406f77735350aabcd97fa836d3",
|
"34f013fcd713affb8e0cc7e8324de55535f6396d",
|
||||||
[]
|
|
||||||
],
|
|
||||||
"specextract.py": [
|
|
||||||
"c3b4a071eed39912e0fce6f9e150cf3641ed04c0",
|
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"templates-offscreen.yaml": [
|
"templates-offscreen.yaml": [
|
||||||
|
@ -349614,6 +349609,10 @@
|
||||||
"4df08aa7e31b9c866a5a4408d29819ec80e0b610",
|
"4df08aa7e31b9c866a5a4408d29819ec80e0b610",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"mouseClickCount.html.ini": [
|
||||||
|
"15eda88934d8dc1e8d2071d33893c4e25abeda7a",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"multiTouchPoints.html.ini": [
|
"multiTouchPoints.html.ini": [
|
||||||
"ac5763d15cab5c0e7b11732b45d5b60e97a68043",
|
"ac5763d15cab5c0e7b11732b45d5b60e97a68043",
|
||||||
[]
|
[]
|
||||||
|
@ -369420,7 +369419,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"percent-encoding.py": [
|
"percent-encoding.py": [
|
||||||
"f7228871205a20643787bd41df943154c3bd2e25",
|
"e8fbb7d3b3d26518486ca605a7cc533acaa76bb8",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"setters_tests.json": [
|
"setters_tests.json": [
|
||||||
|
@ -425224,6 +425223,15 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"focus-visible-001.html": [
|
||||||
|
"2afcea22d1d332a71191ec8b22b194f04577709e",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"testdriver": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
"focus-visible-005.html": [
|
"focus-visible-005.html": [
|
||||||
"b5d58435db1c6d37881bbcd4c856e8abab03aada",
|
"b5d58435db1c6d37881bbcd4c856e8abab03aada",
|
||||||
[
|
[
|
||||||
|
@ -425265,6 +425273,15 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"focus-visible-012.html": [
|
||||||
|
"a81eef3fb11f446e2d5344d9e50509d1707d1fc2",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"testdriver": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
"focus-within-009.html": [
|
"focus-within-009.html": [
|
||||||
"c8d47d2df0aa350aaedbc77f9d70db5a5aa893e8",
|
"c8d47d2df0aa350aaedbc77f9d70db5a5aa893e8",
|
||||||
[
|
[
|
||||||
|
@ -494592,6 +494609,15 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"mouseClickCount.html": [
|
||||||
|
"4f02088c5a7c4f17945b0e1028ace6186e8ee0c9",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"testdriver": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
"multiDevice.html": [
|
"multiDevice.html": [
|
||||||
"6bc0fa218d8953093e583622264bdf02b73c78bb",
|
"6bc0fa218d8953093e583622264bdf02b73c78bb",
|
||||||
[
|
[
|
||||||
|
@ -496441,6 +496467,27 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"content-visibility-auto-offscreen.html": [
|
||||||
|
"8356a340dfb0b515b84ee8c8f14827d362305e30",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"content-visibility-auto-onscreen.html": [
|
||||||
|
"4d9d06aa537ecbc4a0fa3fa465197b220a533c23",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"content-visibility-hidden.html": [
|
||||||
|
"939b1a212233a5be7b0b9611fe07cf062a11ffe0",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"fixed-position-move.html": [
|
"fixed-position-move.html": [
|
||||||
"877c2ba4b34615c41a5b21dbf114df69eef04352",
|
"877c2ba4b34615c41a5b21dbf114df69eef04352",
|
||||||
[
|
[
|
||||||
|
@ -499601,15 +499648,15 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"constructor.tentative.https.html": [
|
"constructor.tentative.http.html": [
|
||||||
"9fdf78ddb3dea4de72e48d1ae5288c0a9f161d68",
|
"8368c79a3b1dea2df26bbc804208002ec97fbf09",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"constructortentative..http.html": [
|
"constructor.tentative.https.html": [
|
||||||
"8368c79a3b1dea2df26bbc804208002ec97fbf09",
|
"9fdf78ddb3dea4de72e48d1ae5288c0a9f161d68",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -547016,6 +547063,13 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"protocol": {
|
"protocol": {
|
||||||
|
"RTCPeerConnection-payloadTypes.html": [
|
||||||
|
"eacbf38a0f6128efdcd597f995bf872f559a882c",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"bundle.https.html": [
|
"bundle.https.html": [
|
||||||
"61d1ff8ac108297dafe333694ddd1194ff53fe26",
|
"61d1ff8ac108297dafe333694ddd1194ff53fe26",
|
||||||
[
|
[
|
||||||
|
@ -547099,6 +547153,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"rtp-payloadtypes.html": [
|
||||||
|
"6806e75ed514c04968d03b6d8413daa38b83d053",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"sctp-format.html": [
|
"sctp-format.html": [
|
||||||
"207e51d4c3aaaaa8bc749fb06760cd7da26fd0d5",
|
"207e51d4c3aaaaa8bc749fb06760cd7da26fd0d5",
|
||||||
[
|
[
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[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-004.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 @@
|
||||||
|
[two-element-custom-property-animation.https.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,4 @@
|
||||||
|
[CaretPosition-001.html]
|
||||||
|
[Element at (400, 100)]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[matchMedia-display-none-iframe.html]
|
||||||
|
expected: ERROR
|
|
@ -309,18 +309,24 @@
|
||||||
[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 */*;charset=gbk]
|
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html */*]
|
[<iframe>: combined response Content-Type: text/html */*]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
[<iframe>: separate response Content-Type: text/html */*]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/plain */*]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -11,3 +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
|
||||||
|
|
||||||
|
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[traverse_the_history_4.html]
|
||||||
|
[Multiple history traversals, last would be aborted]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[traverse_the_history_5.html]
|
||||||
|
[Multiple history traversals, last would be aborted]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,8 +1,4 @@
|
||||||
[skip-document-with-fragment.html]
|
[skip-document-with-fragment.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[Autofocus elements in iframed documents with URL fragments should be skipped.]
|
[Autofocus elements in iframed documents with URL fragments should be skipped.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -7,11 +7,11 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||||
expected: TIMEOUT
|
expected: NOTRUN
|
||||||
|
|
||||||
[Area element should support autofocus]
|
[Area element should support autofocus]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
[Host element with delegatesFocus should support autofocus]
|
[Host element with delegatesFocus should support autofocus]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
[iframe_sandbox_popups_escaping-1.html]
|
[iframe_sandbox_popups_escaping-1.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
|
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: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[iframe_sandbox_popups_escaping-2.html]
|
[iframe_sandbox_popups_escaping-2.html]
|
||||||
|
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: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
[iframe_sandbox_popups_escaping-3.html]
|
[iframe_sandbox_popups_escaping-3.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
|
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: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -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,5 +1,6 @@
|
||||||
[iframe_sandbox_popups_nonescaping-2.html]
|
[iframe_sandbox_popups_nonescaping-2.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
|
expected: CRASH
|
||||||
[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: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[form-double-submit-2.html]
|
|
||||||
[preventDefault should allow onclick submit() to succeed]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[activation-behavior.window.html]
|
|
||||||
[<a> that is not connected should be followed]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[ignore-opens-during-unload.window.html]
|
[ignore-opens-during-unload.window.html]
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[ignore-opens-during-unload]
|
[ignore-opens-during-unload]
|
||||||
expected: FAIL
|
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
|
||||||
|
|
||||||
|
|
|
@ -551,3 +551,9 @@
|
||||||
[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-6.7884163052642179e-30\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-6.7884163052642179e-30\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-5.5004304647445679e-1\t9.3139332532882690e-1\t1.4814363718032837e+0\t1.5905593603865102e+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 1.4814363718032837e+0 at index of 28696.\n\tMax RelError of 1.5905593603865102e+0 at index of 28696.\n]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[X SNR (39.92911912193123 dB) is not greater than or equal to 65.737. Got 39.92911912193123.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[audiocontext-not-fully-active.html]
|
[audiocontext-not-fully-active.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[frame in navigated remote-site frame]
|
[frame in navigated remote-site frame]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
[018.html]
|
|
||||||
expected: TIMEOUT
|
|
||||||
[origin of the script that invoked the method, javascript:]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
[003.html]
|
[003.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: ERROR
|
|
||||||
[shared]
|
[shared]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -5,11 +5,13 @@ from wptserve.utils import isomorphic_encode
|
||||||
# As a convenience, CRLF newlines are left as is.
|
# As a convenience, CRLF newlines are left as is.
|
||||||
|
|
||||||
def escape_byte(byte):
|
def escape_byte(byte):
|
||||||
# Iterating over a 'bytes' type gives ints, so convert to bytes.
|
# Iterating over a binary string gives different types in Py2 & Py3.
|
||||||
byte = bytes([byte])
|
# Py3: bytes -> int
|
||||||
if b"\0" <= byte <= b"\x1F" or byte >= b"\x7F":
|
# Py2: str -> str (of length 1), so we convert it to int
|
||||||
return b"\\x%02x" % ord(byte)
|
code = byte if type(byte) is int else ord(byte)
|
||||||
if byte == b"\\":
|
if 0 <= code <= 0x1F or code >= 0x7F:
|
||||||
|
return b"\\x%02x" % code
|
||||||
|
if code == ord(b"\\"):
|
||||||
return b"\\\\"
|
return b"\\\\"
|
||||||
return byte
|
return byte
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<canvas id ="canvas" width="200" height="400"></canvas>
|
||||||
|
<script>
|
||||||
|
var canvas = document.getElementById('canvas');
|
||||||
|
var context = canvas.getContext("2d");
|
||||||
|
context.fillStyle = 'green';
|
||||||
|
context.fillRect(0, 0, 100, 100);
|
||||||
|
context.fillStyle = 'rgb(128, 128, 0)';
|
||||||
|
context.fillRect(0, 200, 200, 200);
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,87 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html class="reftest-wait">
|
||||||
|
<link rel="help" href="https://drafts.css-houdini.org/css-paint-api/">
|
||||||
|
<link rel="match" href="two-element-custom-property-animation-ref.html">
|
||||||
|
<style>
|
||||||
|
#footainer {
|
||||||
|
width: 200px;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
.fooanimate {
|
||||||
|
background-image: paint(foo);
|
||||||
|
animation: expand 5s;
|
||||||
|
}
|
||||||
|
#bartainer {
|
||||||
|
width: 200px;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
.baranimate {
|
||||||
|
background-image: paint(bar);
|
||||||
|
animation: colorChange 5s;
|
||||||
|
}
|
||||||
|
@keyframes expand {
|
||||||
|
0% { --foo: 0; }
|
||||||
|
0.01% { --foo: 100; }
|
||||||
|
99% { --foo: 100; }
|
||||||
|
100% { --foo: 200; }
|
||||||
|
}
|
||||||
|
@keyframes colorChange {
|
||||||
|
0% { --bar: rgb(255, 0, 0); }
|
||||||
|
0.01% { --bar: rgb(128, 128, 0); }
|
||||||
|
99% { --bar: rgb(128, 128, 0); }
|
||||||
|
100% { --bar: rgb(0, 255, 0); }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script src="/common/reftest-wait.js"></script>
|
||||||
|
<script src="/common/worklet-reftest.js"></script>
|
||||||
|
<body>
|
||||||
|
<div id="footainer"></div>
|
||||||
|
<div id="bartainer"></div>
|
||||||
|
|
||||||
|
<script id="code" type="text/worklet">
|
||||||
|
registerPaint('foo', class {
|
||||||
|
static get inputProperties() { return ['--foo']; }
|
||||||
|
paint(ctx, geom, properties) {
|
||||||
|
let fooValue = parseFloat(properties.get('--foo').toString());
|
||||||
|
ctx.fillStyle = 'green';
|
||||||
|
ctx.fillRect(0, 0, fooValue, fooValue);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
registerPaint('bar', class {
|
||||||
|
static get inputProperties() { return ['--bar']; }
|
||||||
|
paint(ctx, geom, properties) {
|
||||||
|
ctx.fillStyle = properties.get('--bar').toString();
|
||||||
|
ctx.fillRect(0, 0, 200, 200);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
CSS.registerProperty({
|
||||||
|
name: '--foo',
|
||||||
|
syntax: '<number>',
|
||||||
|
initialValue: '0',
|
||||||
|
inherits: false
|
||||||
|
});
|
||||||
|
CSS.registerProperty({
|
||||||
|
name: '--bar',
|
||||||
|
syntax: '<color>',
|
||||||
|
initialValue: 'rgb(0, 0, 0)',
|
||||||
|
inherits: false
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var code = document.getElementById('code').textContent;
|
||||||
|
var blob = new Blob([code], {type: 'text/javascript'});
|
||||||
|
CSS.paintWorklet.addModule(URL.createObjectURL(blob)).then(function() {
|
||||||
|
document.getElementById('footainer').classList.add('fooanimate');
|
||||||
|
document.getElementById('bartainer').classList.add('baranimate');
|
||||||
|
requestAnimationFrame(function() {
|
||||||
|
takeScreenshot();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -7,6 +7,9 @@
|
||||||
<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo" />
|
<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo" />
|
||||||
<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-actions.js"></script>
|
||||||
|
<script src="/resources/testdriver-vendor.js"></script>
|
||||||
<style>
|
<style>
|
||||||
:focus-visible {
|
:focus-visible {
|
||||||
outline: darkgreen dotted 1px; /* fallback for Edge */
|
outline: darkgreen dotted 1px; /* fallback for Edge */
|
||||||
|
@ -34,6 +37,9 @@
|
||||||
assert_equals(getComputedStyle(el).outlineColor, "rgb(0, 100, 0)");
|
assert_equals(getComputedStyle(el).outlineColor, "rgb(0, 100, 0)");
|
||||||
t.done();
|
t.done();
|
||||||
}));
|
}));
|
||||||
|
const tab_key = '\ue004';
|
||||||
|
test_driver.send_keys(el, tab_key)
|
||||||
|
.catch(e => t.step_func(() => assert_unreached("Actions sequence failed " + e)));
|
||||||
}, "Keyboard focus should match :focus-visible");
|
}, "Keyboard focus should match :focus-visible");
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
|
@ -7,6 +7,9 @@
|
||||||
<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo" />
|
<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo" />
|
||||||
<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-actions.js"></script>
|
||||||
|
<script src="/resources/testdriver-vendor.js"></script>
|
||||||
<style>
|
<style>
|
||||||
:focus-visible {
|
:focus-visible {
|
||||||
outline: 0;
|
outline: 0;
|
||||||
|
@ -48,9 +51,14 @@
|
||||||
t.done();
|
t.done();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
window.setTimeout(t.step_func_done(()=> {
|
t.step_timeout(() => {
|
||||||
assert_true(false, "timeout");
|
assert_true(false, "timeout");
|
||||||
}), 1000);
|
}, 1000);
|
||||||
|
|
||||||
|
const ctrl_key = '\uE009';
|
||||||
|
test_driver.click(el).then(() => {
|
||||||
|
return test_driver.send_keys(el, ctrl_key);
|
||||||
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
File diff suppressed because it is too large
Load diff
|
@ -407,62 +407,3 @@ def genTestUtils(TESTOUTPUTDIR, IMAGEOUTPUTDIR, TEMPLATEFILE, NAME2DIRFILE, ISOF
|
||||||
f.write(templates['w3cworker'] % template_params)
|
f.write(templates['w3cworker'] % template_params)
|
||||||
|
|
||||||
print()
|
print()
|
||||||
|
|
||||||
|
|
||||||
def getNodeText(node):
|
|
||||||
t, offsets = '', []
|
|
||||||
|
|
||||||
# Skip over any previous annotations we added
|
|
||||||
if node.nodeType == node.ELEMENT_NODE and 'testrefs' in node.getAttribute('class').split(' '):
|
|
||||||
return t, offsets
|
|
||||||
|
|
||||||
if node.nodeType == node.TEXT_NODE:
|
|
||||||
val = node.nodeValue
|
|
||||||
val = val.replace(unichr(0xa0), ' ') # replace s
|
|
||||||
t += val
|
|
||||||
offsets += [ (node, len(node.nodeValue)) ]
|
|
||||||
for n in node.childNodes:
|
|
||||||
child_t, child_offsets = getNodeText(n)
|
|
||||||
t += child_t
|
|
||||||
offsets += child_offsets
|
|
||||||
return t, offsets
|
|
||||||
|
|
||||||
def htmlSerializer(element):
|
|
||||||
element.normalize()
|
|
||||||
rv = []
|
|
||||||
specialtext = ['style', 'script', 'xmp', 'iframe', 'noembed', 'noframes', 'noscript']
|
|
||||||
empty = ['area', 'base', 'basefont', 'bgsound', 'br', 'col', 'embed', 'frame',
|
|
||||||
'hr', 'img', 'input', 'link', 'meta', 'param', 'spacer', 'wbr']
|
|
||||||
|
|
||||||
def serializeElement(element):
|
|
||||||
if element.nodeType == Node.DOCUMENT_TYPE_NODE:
|
|
||||||
rv.append("<!DOCTYPE %s>" % element.name)
|
|
||||||
elif element.nodeType == Node.DOCUMENT_NODE:
|
|
||||||
for child in element.childNodes:
|
|
||||||
serializeElement(child)
|
|
||||||
elif element.nodeType == Node.COMMENT_NODE:
|
|
||||||
rv.append("<!--%s-->" % element.nodeValue)
|
|
||||||
elif element.nodeType == Node.TEXT_NODE:
|
|
||||||
unescaped = False
|
|
||||||
n = element.parentNode
|
|
||||||
while n is not None:
|
|
||||||
if n.nodeName in specialtext:
|
|
||||||
unescaped = True
|
|
||||||
break
|
|
||||||
n = n.parentNode
|
|
||||||
if unescaped:
|
|
||||||
rv.append(element.nodeValue)
|
|
||||||
else:
|
|
||||||
rv.append(escapeHTML(element.nodeValue))
|
|
||||||
else:
|
|
||||||
rv.append("<%s" % element.nodeName)
|
|
||||||
if element.hasAttributes():
|
|
||||||
for name, value in element.attributes.items():
|
|
||||||
rv.append(' %s="%s"' % (name, escapeHTML(value)))
|
|
||||||
rv.append(">")
|
|
||||||
if element.nodeName not in empty:
|
|
||||||
for child in element.childNodes:
|
|
||||||
serializeElement(child)
|
|
||||||
rv.append("</%s>" % element.nodeName)
|
|
||||||
serializeElement(element)
|
|
||||||
return '<!DOCTYPE html>\n' + ''.join(rv)
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,68 +0,0 @@
|
||||||
import html5lib
|
|
||||||
import html5lib.treebuilders.dom
|
|
||||||
import re
|
|
||||||
|
|
||||||
# Expected use:
|
|
||||||
# curl --compressed https://html.spec.whatwg.org/multipage/canvas.html >current-work
|
|
||||||
# python specextract.py
|
|
||||||
#
|
|
||||||
# Generates current-work-canvas.xhtml, for use by gentest.py to create the annotated spec document
|
|
||||||
|
|
||||||
def extract():
|
|
||||||
parser = html5lib.html5parser.HTMLParser(tree=html5lib.getTreeBuilder("dom"))
|
|
||||||
doc = parser.parse(open('current-work', "r"), transport_encoding='utf-8')
|
|
||||||
|
|
||||||
head = doc.getElementsByTagName('head')[0]
|
|
||||||
for n in head.childNodes:
|
|
||||||
if n.tagName == 'script':
|
|
||||||
head.removeChild(n)
|
|
||||||
|
|
||||||
header = doc.getElementsByTagName('header')[0]
|
|
||||||
#thecanvas = doc.getElementById('the-canvas') # doesn't work (?!)
|
|
||||||
thecanvas = [ n for n in doc.getElementsByTagName('h4') if n.getAttribute('id') == 'the-canvas-element' ][0]
|
|
||||||
|
|
||||||
# Add copyright from https://html.spec.whatwg.org/multipage/acknowledgements.html#acknowledgments
|
|
||||||
copy = doc.createElement('p')
|
|
||||||
copy.setAttribute('class', 'copyright')
|
|
||||||
copy.appendChild(doc.createTextNode(u'Parts of this specification are \xA9 Copyright 2004-2014 Apple Inc., Mozilla Foundation, and Opera Software ASA. You are granted a license to use, reproduce and create derivative works of this document.'))
|
|
||||||
header.appendChild(copy)
|
|
||||||
|
|
||||||
keep = [header, thecanvas]
|
|
||||||
node = thecanvas.nextSibling
|
|
||||||
while node.nodeName != 'nav':
|
|
||||||
keep.append(node)
|
|
||||||
node = node.nextSibling
|
|
||||||
p = thecanvas.parentNode
|
|
||||||
for n in p.childNodes[:]:
|
|
||||||
if n not in keep:
|
|
||||||
p.removeChild(n)
|
|
||||||
|
|
||||||
for n in header.childNodes[3:-4]:
|
|
||||||
header.removeChild(n)
|
|
||||||
|
|
||||||
def make_absolute(url):
|
|
||||||
match = re.match(r'(\w+:|#)', url)
|
|
||||||
if match:
|
|
||||||
return url
|
|
||||||
elif url[0] == '/':
|
|
||||||
return 'https://html.spec.whatwg.org' + url
|
|
||||||
else:
|
|
||||||
return 'https://html.spec.whatwg.org/multipage/' + url
|
|
||||||
|
|
||||||
# Fix relative URLs
|
|
||||||
for e in doc.getElementsByTagName('script'):
|
|
||||||
e.setAttribute('src', make_absolute(e.getAttribute('src')))
|
|
||||||
for e in doc.getElementsByTagName('iframe'):
|
|
||||||
e.setAttribute('src', make_absolute(e.getAttribute('src')))
|
|
||||||
for e in doc.getElementsByTagName('img'):
|
|
||||||
e.setAttribute('src', make_absolute(e.getAttribute('src')))
|
|
||||||
for e in doc.getElementsByTagName('a'):
|
|
||||||
e.setAttribute('href', make_absolute(e.getAttribute('href')))
|
|
||||||
|
|
||||||
# Convert to XHTML, because it's quicker to re-parse than HTML5
|
|
||||||
doc.documentElement.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml')
|
|
||||||
doc.removeChild(doc.firstChild) # remove the DOCTYPE
|
|
||||||
|
|
||||||
open('current-work-canvas.xhtml', 'w').write(doc.toxml(encoding = 'UTF-8'))
|
|
||||||
|
|
||||||
extract()
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[mouseClickCount.html]
|
||||||
|
[TestDriver actions: test the mouse click counts at different cases]
|
||||||
|
expected:
|
||||||
|
if product == "firefox" or product == "safari": FAIL
|
|
@ -0,0 +1,54 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>TestDriver actions: test the mouse click counts at different cases</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="/resources/testdriver.js"></script>
|
||||||
|
<script src="/resources/testdriver-actions.js"></script>
|
||||||
|
<script src="/resources/testdriver-vendor.js"></script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
div#test {
|
||||||
|
position: fixed;
|
||||||
|
touch-action: none;
|
||||||
|
top: 5px;
|
||||||
|
left: 5px;
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
background-color: blue;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div id="test">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
let clickCountList = [];
|
||||||
|
|
||||||
|
async_test(t => {
|
||||||
|
let test = document.getElementById("test");
|
||||||
|
test.addEventListener("click", e => {
|
||||||
|
clickCountList.push(e.detail);
|
||||||
|
});
|
||||||
|
|
||||||
|
let div = document.getElementById("test");
|
||||||
|
var actions = new test_driver.Actions();
|
||||||
|
actions.pointerMove(0, 0, {origin: test})
|
||||||
|
.pointerDown()
|
||||||
|
.pointerUp()
|
||||||
|
.pointerDown()
|
||||||
|
.pointerUp()
|
||||||
|
.pointerMove(15, 15, {origin: test})
|
||||||
|
.pointerDown()
|
||||||
|
.pointerUp()
|
||||||
|
.pointerDown()
|
||||||
|
.pointerUp()
|
||||||
|
.pointerDown()
|
||||||
|
.pointerUp()
|
||||||
|
.send()
|
||||||
|
.then(t.step_func_done(() => {
|
||||||
|
let expectedClickCountList = [1, 2, 1, 2, 3];
|
||||||
|
assert_array_equals(clickCountList, expectedClickCountList);
|
||||||
|
})).catch(e => t.step_func(() => assert_unreached("Actions sequence failed " + e)));
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -0,0 +1,30 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>Layout Instability: off-screen content-visibility:auto content</title>
|
||||||
|
<link rel="help" href="https://wicg.github.io/layout-instability/" />
|
||||||
|
<style>
|
||||||
|
#target {
|
||||||
|
content-visibility: auto;
|
||||||
|
contain-intrinsic-size: 1px;
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div id=target style="position: relative; top: 100000px">
|
||||||
|
<div style="width: 100px; height: 100px"></div>
|
||||||
|
</div>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="resources/util.js"></script>
|
||||||
|
<script>
|
||||||
|
promise_test(async () => {
|
||||||
|
const watcher = new ScoreWatcher;
|
||||||
|
|
||||||
|
// Wait for the initial render to complete.
|
||||||
|
await waitForAnimationFrames(2);
|
||||||
|
|
||||||
|
window.scrollTo(0, 100000);
|
||||||
|
await waitForAnimationFrames(2);
|
||||||
|
|
||||||
|
assert_equals(watcher.score, 0);
|
||||||
|
}, 'off-screen content-visibility:auto');
|
||||||
|
|
||||||
|
</script>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>Layout Instability: on-screen content-visibility:auto content</title>
|
||||||
|
<link rel="help" href="https://wicg.github.io/layout-instability/" />
|
||||||
|
<style>
|
||||||
|
#target {
|
||||||
|
content-visibility: auto;
|
||||||
|
contain-intrinsic-size: 1px;
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div id=target>
|
||||||
|
<div style="width: 100px; height: 100px"></div>
|
||||||
|
</div>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="resources/util.js"></script>
|
||||||
|
<script>
|
||||||
|
promise_test(async () => {
|
||||||
|
const watcher = new ScoreWatcher;
|
||||||
|
|
||||||
|
// Wait for the initial render to complete.
|
||||||
|
await waitForAnimationFrames(2);
|
||||||
|
assert_equals(watcher.score, 0);
|
||||||
|
}, 'on-screen content-visibility:auto');
|
||||||
|
|
||||||
|
</script>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>Layout Instability: content-visibility:hidden content</title>
|
||||||
|
<link rel="help" href="https://wicg.github.io/layout-instability/" />
|
||||||
|
<style>
|
||||||
|
#target {
|
||||||
|
content-visibility: hidden;
|
||||||
|
contain-intrinsic-size: 1px;
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div id=target>
|
||||||
|
<div style="width: 100px; height: 100px"></div>
|
||||||
|
</div>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="resources/util.js"></script>
|
||||||
|
<script>
|
||||||
|
promise_test(async () => {
|
||||||
|
const watcher = new ScoreWatcher;
|
||||||
|
|
||||||
|
// Wait for the initial render to complete.
|
||||||
|
await waitForAnimationFrames(2);
|
||||||
|
assert_equals(watcher.score, 0);
|
||||||
|
}, 'on-screen content-visibility:auto');
|
||||||
|
|
||||||
|
</script>
|
|
@ -7,15 +7,15 @@ from wptserve.utils import isomorphic_decode
|
||||||
def numeric_references(input):
|
def numeric_references(input):
|
||||||
output = b""
|
output = b""
|
||||||
for cp in input:
|
for cp in input:
|
||||||
output += b"&#x" + format(ord(cp), b"X") + b";"
|
output += b"&#x" + format(ord(cp), u"X").encode(u"utf-8") + b";"
|
||||||
return output
|
return output
|
||||||
|
|
||||||
def main(request, response):
|
def main(request, response):
|
||||||
# Undo the "magic" space with + replacement as otherwise base64 decoding will fail.
|
# Undo the "magic" space with + replacement as otherwise base64 decoding will fail.
|
||||||
value = request.GET.first(b"value").replace(" ", "+")
|
value = request.GET.first(b"value").replace(b" ", b"+")
|
||||||
encoding = request.GET.first(b"encoding")
|
encoding = request.GET.first(b"encoding")
|
||||||
|
|
||||||
output_value = numeric_references(base64.b64decode(value).decode(b"utf-8"))
|
output_value = numeric_references(base64.b64decode(value).decode(u"utf-8"))
|
||||||
return (
|
return (
|
||||||
[(b"Content-Type", b"text/html;charset=" + encoding)],
|
[(b"Content-Type", b"text/html;charset=" + encoding)],
|
||||||
b"""<!doctype html>
|
b"""<!doctype html>
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>RTCPeerConnection RTP payload types</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<script>
|
||||||
|
|
||||||
|
// Test that when creating an offer we do not run out of valid payload types.
|
||||||
|
promise_test(async t => {
|
||||||
|
const pc1 = new RTCPeerConnection();
|
||||||
|
t.add_cleanup(() => pc1.close());
|
||||||
|
|
||||||
|
const offer = await pc1.createOffer({offerToReceiveAudio: true, offerToReceiveVideo: true});
|
||||||
|
|
||||||
|
// Extract all payload types from the m= lines.
|
||||||
|
const payloadTypes = offer.sdp.split('\n')
|
||||||
|
.map(line => line.trim())
|
||||||
|
.filter(line => line.startsWith('m='))
|
||||||
|
.map(line => line.split(' ').slice(3).join(' '))
|
||||||
|
.join(' ')
|
||||||
|
.split(' ')
|
||||||
|
.map(payloadType => parseInt(payloadType, 10));
|
||||||
|
|
||||||
|
// The list of allowed payload types is taken from here
|
||||||
|
// https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-1.
|
||||||
|
const forbiddenPayloadTypes = payloadTypes
|
||||||
|
.filter(payloadType => {
|
||||||
|
if (payloadType >= 96 && payloadType <= 127) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (payloadType >= 72 && payloadType < 96) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (payloadType >= 35 && payloadType < 72) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// TODO: Check against static payload type list.
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
assert_equals(forbiddenPayloadTypes.length, 0)
|
||||||
|
}, 'createOffer with the maximum set of codecs does not generate invalid payload types');
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,58 @@
|
||||||
|
<!doctype html>
|
||||||
|
<meta charset=utf-8>
|
||||||
|
<title>payload type handling (assuming rtcp-mux)</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="../RTCPeerConnection-helper.js"></script>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
// Tests behaviour from https://tools.ietf.org/html/rfc5761#section-4
|
||||||
|
|
||||||
|
function createOfferSdp(opusPayloadType) {
|
||||||
|
return `v=0
|
||||||
|
o=- 0 3 IN IP4 127.0.0.1
|
||||||
|
s=-
|
||||||
|
t=0 0
|
||||||
|
a=fingerprint:sha-256 A7:24:72:CA:6E:02:55:39:BA:66:DF:6E:CC:4C:D8:B0:1A:BF:1A:56:65:7D:F4:03:AD:7E:77:43:2A:29:EC:93
|
||||||
|
a=ice-ufrag:6HHHdzzeIhkE0CKj
|
||||||
|
a=ice-pwd:XYDGVpfvklQIEnZ6YnyLsAew
|
||||||
|
m=audio 9 RTP/SAVPF ${opusPayloadType}
|
||||||
|
c=IN IP4 0.0.0.0
|
||||||
|
a=rtcp-mux
|
||||||
|
a=sendonly
|
||||||
|
a=mid:audio
|
||||||
|
a=rtpmap:${opusPayloadType} opus/48000/2
|
||||||
|
a=setup:actpass
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
for (let payloadType = 96; payloadType <= 127; payloadType++) {
|
||||||
|
const pc = new RTCPeerConnection();
|
||||||
|
await pc.setRemoteDescription({type: 'offer', sdp: createOfferSdp(payloadType)});
|
||||||
|
const answer = await pc.createAnswer();
|
||||||
|
assert_true(answer.sdp.includes(`a=rtpmap:${payloadType} opus/48000/2`));
|
||||||
|
pc.close();
|
||||||
|
}
|
||||||
|
}, 'setRemoteDescription with a codec in the range 96-127 works');
|
||||||
|
|
||||||
|
// This is written as a separate test since it currently fails in Chrome.
|
||||||
|
promise_test(async t => {
|
||||||
|
for (let payloadType = 35; payloadType <= 63; payloadType++) {
|
||||||
|
const pc = new RTCPeerConnection();
|
||||||
|
await pc.setRemoteDescription({type: 'offer', sdp: createOfferSdp(payloadType)});
|
||||||
|
const answer = await pc.createAnswer();
|
||||||
|
assert_true(answer.sdp.includes(`a=rtpmap:${payloadType} opus/48000/2`));
|
||||||
|
pc.close();
|
||||||
|
}
|
||||||
|
}, 'setRemoteDescription with a codec in the range 35-63 works');
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
for (let payloadType = 64; payloadType <= 95; payloadType++) {
|
||||||
|
const pc = new RTCPeerConnection();
|
||||||
|
await promise_rejects_dom(t, 'InvalidAccessError',
|
||||||
|
pc.setRemoteDescription({type: 'offer', sdp: createOfferSdp(64)}));
|
||||||
|
pc.close();
|
||||||
|
}
|
||||||
|
}, 'setRemoteDescription with a codec in the range 64-95 throws an InvalidAccessError');
|
||||||
|
</script>
|
Loading…
Add table
Add a link
Reference in a new issue