mirror of
https://github.com/servo/servo.git
synced 2025-07-23 15:23:42 +01:00
Update web-platform-tests to revision cf8a15a334c6eb3b044b3db8a933436c2365819d
This commit is contained in:
parent
7d66871a9f
commit
f4e67a0197
76 changed files with 1744 additions and 114 deletions
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-floats-002.html]
|
||||||
|
[Hit test float]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-anonymous-block.html]
|
||||||
|
[Hit test beside line of text inside anonymous block]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
[flex-item-contains-strict.html]
|
||||||
|
[.inline-flex 5]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flex 6]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flex 1]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flex 2]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
[flex-minimum-size-002.html]
|
||||||
|
[.flexbox, .inline-flexbox 1]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 6]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 5]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 4]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[flex-outer-flexbox-column-recalculate-height-on-resize-001.html]
|
||||||
|
[.OuterFlexbox 1]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[flexbox-overflow-auto-001.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,37 @@
|
||||||
|
[flexbox-overflow-auto-002.html]
|
||||||
|
[.flexbox, .inline-flexbox 11]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 10]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 3]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 2]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 1]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 14]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 6]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 5]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 4]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 13]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 9]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 12]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
[no-transition-from-ua-to-blocking-stylesheet.html]
|
[no-transition-from-ua-to-blocking-stylesheet.html]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
|
@ -2,6 +2,3 @@
|
||||||
[listeners are called when <iframe> is resized]
|
[listeners are called when <iframe> is resized]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[listeners are called correct number of times]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,3 @@
|
||||||
[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
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[elementsFromPoint-invalid-cases.html]
|
||||||
|
[The root element is the last element returned for otherwise empty queries within the viewport]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -318,18 +318,15 @@
|
||||||
[<iframe>: separate response Content-Type: text/html */*]
|
[<iframe>: separate response Content-Type: text/html */*]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
[<iframe>: combined response Content-Type: */* text/html]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
[<iframe>: separate response Content-Type: text/plain */*]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html */*]
|
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -56,3 +56,6 @@
|
||||||
[separate text/javascript x/x]
|
[separate text/javascript x/x]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,6 @@
|
||||||
[X-Content-Type-Options%3A%20nosniff%0C]
|
[X-Content-Type-Options%3A%20nosniff%0C]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Content-Type-Options%3A%20nosniff]
|
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[traverse_the_history_3.html]
|
[traverse_the_history_2.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_3.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,8 @@
|
||||||
[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
|
||||||
|
|
||||||
|
|
|
@ -1,20 +1,16 @@
|
||||||
[supported-elements.html]
|
[supported-elements.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[Contenteditable element should support autofocus]
|
[Contenteditable element should support autofocus]
|
||||||
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: NOTRUN
|
expected: FAIL
|
||||||
|
|
||||||
[Element with tabindex should support autofocus]
|
[Element with tabindex should support autofocus]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[Area element should support autofocus]
|
[Area element should support autofocus]
|
||||||
expected: NOTRUN
|
expected: FAIL
|
||||||
|
|
||||||
[Host element with delegatesFocus should support autofocus]
|
[Host element with delegatesFocus should support autofocus]
|
||||||
expected: NOTRUN
|
expected: FAIL
|
||||||
|
|
||||||
[Non-HTMLElement should not support autofocus]
|
|
||||||
expected: NOTRUN
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[iframe_sandbox_popups_nonescaping-3.html]
|
[iframe_sandbox_popups_nonescaping-3.html]
|
||||||
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: FAIL
|
||||||
|
|
||||||
|
|
|
@ -26,3 +26,6 @@
|
||||||
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 42288 more errors.\n\tMax AbsError of 1.9999794363975525e+0 at index of 37272.\n\t[37272\]\t9.9997943639755249e-1\t-1.0000000000000000e+0\t1.9999794363975525e+0\t1.9999794363975525e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n]
|
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 42288 more errors.\n\tMax AbsError of 1.9999794363975525e+0 at index of 37272.\n\t[37272\]\t9.9997943639755249e-1\t-1.0000000000000000e+0\t1.9999794363975525e+0\t1.9999794363975525e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44035 more errors.\n\tMax AbsError of 1.9962286949157715e+0 at index of 40997.\n\t[40997\]\t9.9879217147827148e-1\t-9.9743652343750000e-1\t1.9962286949157715e+0\t2.0013591321441684e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 12348.\n\t[12348\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -47,3 +47,9 @@
|
||||||
[X Stitched sine-wave buffers at sample rate 44100 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.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t9.4118863344192505e-3\t5.6332010030746460e-1\t5.5390821397304535e-1\t9.8329211698769103e-1\t9.0957000000000003e-5\n\t[31081\]\t4.5570226059843051e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31081.\n]
|
[X Stitched sine-wave buffers at sample rate 44100 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.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t9.4118863344192505e-3\t5.6332010030746460e-1\t5.5390821397304535e-1\t9.8329211698769103e-1\t9.0957000000000003e-5\n\t[31081\]\t4.5570226059843051e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31081.\n]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[X Stitched sine-wave buffers at sample rate 44100 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.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t1.4359352462633979e-7\t5.6332010030746460e-1\t5.6331995671393997e-1\t9.9999974509426426e-1\t9.0957000000000003e-5\n\t[31081\]\t4.5774815635634474e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31081.\n]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[X SNR (45.01863990741345 dB) is not greater than or equal to 85.58. Got 45.01863990741345.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[audioworklet-audioparam-iterable.https.html]
|
||||||
|
expected: ERROR
|
|
@ -1,5 +0,0 @@
|
||||||
[018.html]
|
|
||||||
expected: TIMEOUT
|
|
||||||
[origin of the script that invoked the method, javascript:]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
|
@ -427,6 +427,17 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"text": {
|
||||||
|
"reftests": {
|
||||||
|
"text-display-contents-crash.html": [
|
||||||
|
"04b6a7e7cf8c6714f6c51c75ef6355102089428e",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -131493,6 +131504,19 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"columns-center-with-margins-001.html": [
|
||||||
|
"c0863127e96e366d2471c4f00bf40f8a03aced4d",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-flexbox/reference/columns-center-with-margins-001-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"columns-center-with-margins-and-wrap-001.html": [
|
"columns-center-with-margins-and-wrap-001.html": [
|
||||||
"7bdc28776b6c4d2671fa4c696920b56f3fa363f4",
|
"7bdc28776b6c4d2671fa4c696920b56f3fa363f4",
|
||||||
[
|
[
|
||||||
|
@ -132886,6 +132910,32 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"flex-minimum-height-flex-items-020.html": [
|
||||||
|
"dad3b6479685107439fb0bf37ebd21538a7abc6e",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/reference/ref-filled-green-100px-square-only.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"flex-minimum-height-flex-items-021.html": [
|
||||||
|
"ed8d1d425180615aa0f5193f891c1c313438f79c",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/reference/ref-filled-green-100px-square-only.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"flex-minimum-width-flex-items-001.xht": [
|
"flex-minimum-width-flex-items-001.xht": [
|
||||||
"cd18483ba414160c46e30bc282dec0c2fcd2f418",
|
"cd18483ba414160c46e30bc282dec0c2fcd2f418",
|
||||||
[
|
[
|
||||||
|
@ -133016,6 +133066,45 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"flex-minimum-width-flex-items-011.html": [
|
||||||
|
"0eb6c5fa49c4d5d4ac331a8ba6f194f53d717451",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/reference/ref-filled-green-100px-square-only.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"flex-minimum-width-flex-items-012.html": [
|
||||||
|
"2ce9129eb1100bcbb94b5849d734af0bdd3c8ee1",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/reference/ref-filled-green-100px-square-only.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"flex-minimum-width-flex-items-013.html": [
|
||||||
|
"6ee9ed10b5663b381f0238096117e8d70ca0347b",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/reference/ref-filled-green-100px-square.xht",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"flex-order.html": [
|
"flex-order.html": [
|
||||||
"be24b2817e232b7ad7fc936b7b22787591d3d9db",
|
"be24b2817e232b7ad7fc936b7b22787591d3d9db",
|
||||||
[
|
[
|
||||||
|
@ -133354,6 +133443,19 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"flexbox-overflow-auto-001.html": [
|
||||||
|
"ee5a1afffbe04a9adf779fd5e590ed76167a431e",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-flexbox/reference/flexbox-overflow-auto-001-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"flexbox_absolute-atomic.html": [
|
"flexbox_absolute-atomic.html": [
|
||||||
"dae6b3e43ea71f3795508dd0ca4b243d4510c383",
|
"dae6b3e43ea71f3795508dd0ca4b243d4510c383",
|
||||||
[
|
[
|
||||||
|
@ -263496,6 +263598,10 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
|
"README.md": [
|
||||||
|
"cacd959d02629b3f665ee51eb65b8b5a4115a49c",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"echoing-nester.html": [
|
"echoing-nester.html": [
|
||||||
"d4f5899da7894749a51039f9d5bf3b8bfd680570",
|
"d4f5899da7894749a51039f9d5bf3b8bfd680570",
|
||||||
[]
|
[]
|
||||||
|
@ -263504,6 +263610,14 @@
|
||||||
"476f32688f91cede949edf2a1e650ef573525bd7",
|
"476f32688f91cede949edf2a1e650ef573525bd7",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"otpcredential-helper.js": [
|
||||||
|
"d5a7eb8c4715f08031933391b953ac32b43443d1",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"otpcredential-iframe.html": [
|
||||||
|
"37fe6e1cd891b3f1c4500a0c09b0f6d2c603bccf",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"passwordcredential-get.html": [
|
"passwordcredential-get.html": [
|
||||||
"0ec584d73d1f6d8626efe4c7190e5160fe527286",
|
"0ec584d73d1f6d8626efe4c7190e5160fe527286",
|
||||||
[]
|
[]
|
||||||
|
@ -284851,6 +284965,10 @@
|
||||||
"d56fe356dcbb6ce87414a2075b5f47c515628016",
|
"d56fe356dcbb6ce87414a2075b5f47c515628016",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"columns-center-with-margins-001-ref.html": [
|
||||||
|
"4c8f69c8a738fd3736408be342d81aa318d33902",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"columns-center-with-margins-and-wrap-001-ref.html": [
|
"columns-center-with-margins-and-wrap-001-ref.html": [
|
||||||
"415a36f42dec838b3419b80d0d9b5fc2f536808e",
|
"415a36f42dec838b3419b80d0d9b5fc2f536808e",
|
||||||
[]
|
[]
|
||||||
|
@ -284927,6 +285045,10 @@
|
||||||
"413b5909fea7c8468db08d23eb7644a8d713a7bc",
|
"413b5909fea7c8468db08d23eb7644a8d713a7bc",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"flexbox-overflow-auto-001-ref.html": [
|
||||||
|
"ace792e456c12f40e52ae50d51d05fd6a449a628",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"flexbox_quirks_body-ref.html": [
|
"flexbox_quirks_body-ref.html": [
|
||||||
"164784fbd30859888b63069d9813eb5a104eb999",
|
"164784fbd30859888b63069d9813eb5a104eb999",
|
||||||
[]
|
[]
|
||||||
|
@ -327292,7 +327414,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"webxr.idl": [
|
"webxr.idl": [
|
||||||
"1b005c3cdb39667e55875d31a53f574ac8d388e3",
|
"5f5320c205598b2c8cec340326686f6589d14984",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"worklets.idl": [
|
"worklets.idl": [
|
||||||
|
@ -327477,7 +327599,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"lint.whitelist": [
|
"lint.whitelist": [
|
||||||
"65494c70cfbf446011b404b5b657564b2ec61e35",
|
"7c282eefeabda7c3ce73e40f794123710219cf36",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"loading": {
|
"loading": {
|
||||||
|
@ -332178,6 +332300,10 @@
|
||||||
"ce2b968391343339a9958100f564fa73d5c01509",
|
"ce2b968391343339a9958100f564fa73d5c01509",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"mock-sms-receiver.js": [
|
||||||
|
"c4aa9a86f2c8a15303f96cc9859b2ec146eb2f58",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"mojo_bindings.js": [
|
"mojo_bindings.js": [
|
||||||
"70f6cad5e5f06f4f64a0fd4cdcd693fcea12bb78",
|
"70f6cad5e5f06f4f64a0fd4cdcd693fcea12bb78",
|
||||||
[]
|
[]
|
||||||
|
@ -336830,7 +336956,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"safari-technology-preview.rb": [
|
"safari-technology-preview.rb": [
|
||||||
"1bf9d5df0b3307665bf36c158fb963d2656d202d",
|
"5f8d6806107d8abd7418ae022e59a1af9da1632f",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"system_info.yml": [
|
"system_info.yml": [
|
||||||
|
@ -344173,7 +344299,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"helpers.js": [
|
"helpers.js": [
|
||||||
"fbbfc8e00444dce1440fdbe8e28e11c5b064ce3d",
|
"3819d12769898a3e2462ab06a35e5046d25f14f3",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"worklet-recorder.js": [
|
"worklet-recorder.js": [
|
||||||
|
@ -377214,6 +377340,20 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"otpcredential-get-basics.https.html": [
|
||||||
|
"aca48227ce839afcc805c02b18e3d3dcde50f31e",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"otpcredential-iframe.https.html": [
|
||||||
|
"8af17b599612e3750f3094270be8e9cd9a109290",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"passwordcredential-framed-get.sub.https.html": [
|
"passwordcredential-framed-get.sub.https.html": [
|
||||||
"d86c6e09c70874f06714c9cde0b63a2cef959f69",
|
"d86c6e09c70874f06714c9cde0b63a2cef959f69",
|
||||||
[
|
[
|
||||||
|
@ -380916,6 +381056,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"flex-item-contains-strict.html": [
|
||||||
|
"25849cc64b2f10cf2d319e1a2f750f32d64359b5",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"flex-minimum-height-flex-items-009.html": [
|
"flex-minimum-height-flex-items-009.html": [
|
||||||
"718386af02069fa1a3fff0ee5aaa10415ef4b23a",
|
"718386af02069fa1a3fff0ee5aaa10415ef4b23a",
|
||||||
[
|
[
|
||||||
|
@ -380937,6 +381084,27 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"flex-minimum-size-002.html": [
|
||||||
|
"c2eea80ca5b79818f6b7a9a36ab1ff64826b5218",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"flex-outer-flexbox-column-recalculate-height-on-resize-001.html": [
|
||||||
|
"0b0b5b4d4e5a9e8011d7fdee87cce9caba5fa241",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"flexbox-overflow-auto-002.html": [
|
||||||
|
"d69b297ef7301cfb46ea725d99aaa0f9dac3e126",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"flexbox_first-letter.html": [
|
"flexbox_first-letter.html": [
|
||||||
"dbbb03d524e165de213fe66dbe6598ece5c94b07",
|
"dbbb03d524e165de213fe66dbe6598ece5c94b07",
|
||||||
[
|
[
|
||||||
|
@ -381527,6 +381695,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"justify-content_space-between-002.html": [
|
||||||
|
"fde1a7312408d02fe3843452585de2ee660ae6f7",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"order_value.html": [
|
"order_value.html": [
|
||||||
"ca9af99b939f77835933ccc76de5185b656f5977",
|
"ca9af99b939f77835933ccc76de5185b656f5977",
|
||||||
[
|
[
|
||||||
|
@ -381534,6 +381709,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"overflow-auto-002.html": [
|
||||||
|
"2bb04a2604076d0883c1322e60015316f6f34b10",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"parsing": {
|
"parsing": {
|
||||||
"flex-basis-computed.html": [
|
"flex-basis-computed.html": [
|
||||||
"549c9bf7053fac57c5dd11eedbf0fddebd324ea7",
|
"549c9bf7053fac57c5dd11eedbf0fddebd324ea7",
|
||||||
|
@ -462653,13 +462835,6 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"fcp-overflow.html": [
|
|
||||||
"d7cc34663b7f846055ff5a6ca1d07fc1b4677464",
|
|
||||||
[
|
|
||||||
null,
|
|
||||||
{}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"fcp-pseudo-element-display.html": [
|
"fcp-pseudo-element-display.html": [
|
||||||
"50fd626e899940ba2d6d19344df41111feafd6f8",
|
"50fd626e899940ba2d6d19344df41111feafd6f8",
|
||||||
[
|
[
|
||||||
|
@ -498403,6 +498578,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"audioworklet-audioparam-iterable.https.html": [
|
||||||
|
"9e93f48ab878c5f9208dae7a6d2278cd98ab4529",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"audioworklet-audioparam-size.https.html": [
|
"audioworklet-audioparam-size.https.html": [
|
||||||
"9578b268815a89d31457df8cdd7a088e9df13c7c",
|
"9578b268815a89d31457df8cdd7a088e9df13c7c",
|
||||||
[
|
[
|
||||||
|
@ -534522,6 +534704,13 @@
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
|
],
|
||||||
|
"replaced-fractional-height-from-aspect-ratio.html": [
|
||||||
|
"d97c3f133ebec02ce5569e95826ab3237b7559c7",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"css-text": {
|
"css-text": {
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-floats-002.html]
|
||||||
|
[Hit test float]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-anonymous-block.html]
|
||||||
|
[Hit test beside line of text inside anonymous block]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
[flex-item-contains-strict.html]
|
||||||
|
[.inline-flex 5]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flex 6]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flex 1]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flex 2]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
[flex-minimum-size-002.html]
|
||||||
|
[.flexbox, .inline-flexbox 1]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 6]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 5]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 4]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[flex-outer-flexbox-column-recalculate-height-on-resize-001.html]
|
||||||
|
[.OuterFlexbox 1]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[flexbox-overflow-auto-001.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,37 @@
|
||||||
|
[flexbox-overflow-auto-002.html]
|
||||||
|
[.flexbox, .inline-flexbox 11]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 10]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 3]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 2]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 1]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 14]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 6]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 5]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 4]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 13]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 9]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox, .inline-flexbox 12]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
[no-transition-from-ua-to-blocking-stylesheet.html]
|
[no-transition-from-ua-to-blocking-stylesheet.html]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
|
@ -2,6 +2,3 @@
|
||||||
[listeners are called when <iframe> is resized]
|
[listeners are called when <iframe> is resized]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[listeners are called correct number of times]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,3 @@
|
||||||
[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
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[elementsFromPoint-invalid-cases.html]
|
||||||
|
[The root element is the last element returned for otherwise empty queries within the viewport]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -318,18 +318,15 @@
|
||||||
[<iframe>: separate response Content-Type: text/html */*]
|
[<iframe>: separate response Content-Type: text/html */*]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
[<iframe>: combined response Content-Type: */* text/html]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
[<iframe>: separate response Content-Type: text/plain */*]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html */*]
|
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -56,3 +56,6 @@
|
||||||
[separate text/javascript x/x]
|
[separate text/javascript x/x]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,6 @@
|
||||||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Content-Type-Options%3A%20nosniff]
|
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[traverse_the_history_2.html]
|
||||||
|
[Multiple history traversals, last would be aborted]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[traverse_the_history_4.html]
|
||||||
|
[Multiple history traversals, last would be aborted]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
[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
|
||||||
|
|
||||||
|
|
|
@ -1,20 +1,16 @@
|
||||||
[supported-elements.html]
|
[supported-elements.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[Contenteditable element should support autofocus]
|
[Contenteditable element should support autofocus]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Element with tabindex should support autofocus]
|
[Element with tabindex should support autofocus]
|
||||||
expected: TIMEOUT
|
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: NOTRUN
|
expected: FAIL
|
||||||
|
|
||||||
[Area element should support autofocus]
|
[Area element should support autofocus]
|
||||||
expected: NOTRUN
|
expected: FAIL
|
||||||
|
|
||||||
[Host element with delegatesFocus should support autofocus]
|
[Host element with delegatesFocus should support autofocus]
|
||||||
expected: NOTRUN
|
expected: FAIL
|
||||||
|
|
||||||
[Non-HTMLElement should not support autofocus]
|
|
||||||
expected: NOTRUN
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
[iframe_sandbox_popups_nonescaping-3.html]
|
[iframe_sandbox_popups_nonescaping-3.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: NOTRUN
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -95,3 +95,6 @@
|
||||||
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 42288 more errors.\n\tMax AbsError of 1.9999794363975525e+0 at index of 37272.\n\t[37272\]\t9.9997943639755249e-1\t-1.0000000000000000e+0\t1.9999794363975525e+0\t1.9999794363975525e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n]
|
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 42288 more errors.\n\tMax AbsError of 1.9999794363975525e+0 at index of 37272.\n\t[37272\]\t9.9997943639755249e-1\t-1.0000000000000000e+0\t1.9999794363975525e+0\t1.9999794363975525e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44035 more errors.\n\tMax AbsError of 1.9962286949157715e+0 at index of 40997.\n\t[40997\]\t9.9879217147827148e-1\t-9.9743652343750000e-1\t1.9962286949157715e+0\t2.0013591321441684e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 12348.\n\t[12348\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -278,3 +278,9 @@
|
||||||
[X Stitched sine-wave buffers at sample rate 44100 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.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t9.4118863344192505e-3\t5.6332010030746460e-1\t5.5390821397304535e-1\t9.8329211698769103e-1\t9.0957000000000003e-5\n\t[31081\]\t4.5570226059843051e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31081.\n]
|
[X Stitched sine-wave buffers at sample rate 44100 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.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t9.4118863344192505e-3\t5.6332010030746460e-1\t5.5390821397304535e-1\t9.8329211698769103e-1\t9.0957000000000003e-5\n\t[31081\]\t4.5570226059843051e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31081.\n]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[X Stitched sine-wave buffers at sample rate 44100 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.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t1.4359352462633979e-7\t5.6332010030746460e-1\t5.6331995671393997e-1\t9.9999974509426426e-1\t9.0957000000000003e-5\n\t[31081\]\t4.5774815635634474e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31081.\n]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[X SNR (45.01863990741345 dB) is not greater than or equal to 85.58. Got 45.01863990741345.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[audioworklet-audioparam-iterable.https.html]
|
||||||
|
expected: ERROR
|
|
@ -1,5 +0,0 @@
|
||||||
[018.html]
|
|
||||||
expected: TIMEOUT
|
|
||||||
[origin of the script that invoked the method, javascript:]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<link rel="help" href="https://github.com/WICG/WebOTP">
|
||||||
|
<title>Tests OTPCredential</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="./support/otpcredential-helper.js"></script>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
await expect(receive).andReturn(async () => {
|
||||||
|
return {status: Status.kSuccess, otp: "ABC"};
|
||||||
|
});
|
||||||
|
|
||||||
|
let cred = await navigator.credentials.get({otp: {transport: ["sms"]}});
|
||||||
|
|
||||||
|
assert_equals(cred.code, "ABC");
|
||||||
|
}, 'Basic usage');
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
await expect(receive).andReturn(async () => {
|
||||||
|
return {status: Status.kSuccess, otp: "ABC"};
|
||||||
|
});
|
||||||
|
await expect(receive).andReturn(async () => {
|
||||||
|
return {status: Status.kSuccess, otp: "ABC2"};
|
||||||
|
});
|
||||||
|
|
||||||
|
let sms1 = navigator.credentials.get({otp: {transport: ["sms"]}});
|
||||||
|
let sms2 = navigator.credentials.get({otp: {transport: ["sms"]}});
|
||||||
|
|
||||||
|
let cred2= await sms2;
|
||||||
|
let cred1 = await sms1;
|
||||||
|
|
||||||
|
assert_equals(cred1.code, "ABC");
|
||||||
|
assert_equals(cred2.code, "ABC2");
|
||||||
|
}, 'Handle multiple requests in different order.');
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
await expect(receive).andReturn(async () => {
|
||||||
|
return {status: Status.kCancelled};
|
||||||
|
});
|
||||||
|
await expect(receive).andReturn(async () => {
|
||||||
|
return {status: Status.kSuccess, otp: "success"};
|
||||||
|
});
|
||||||
|
|
||||||
|
let cancelled_sms = navigator.credentials.get({otp: {transport: ["sms"]}});
|
||||||
|
let successful_sms = navigator.credentials.get({otp: {transport: ["sms"]}});
|
||||||
|
|
||||||
|
let successful_cred = await successful_sms;
|
||||||
|
assert_equals(successful_cred.code, "success");
|
||||||
|
|
||||||
|
try {
|
||||||
|
await cancelled_sms;
|
||||||
|
assert_unreached('Expected AbortError to be thrown.');
|
||||||
|
} catch (error) {
|
||||||
|
assert_equals(error.name, "AbortError");
|
||||||
|
}
|
||||||
|
}, 'Handle multiple requests with success and error.');
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
await expect(receive).andReturn(async () => {
|
||||||
|
return {status: Status.kCancelled};
|
||||||
|
});
|
||||||
|
|
||||||
|
await promise_rejects_dom(t, 'AbortError', navigator.credentials.get(
|
||||||
|
{otp: {transport: ["sms"]}}));
|
||||||
|
}, 'Deal with cancelled requests');
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
const controller = new AbortController();
|
||||||
|
const signal = controller.signal;
|
||||||
|
|
||||||
|
controller.abort();
|
||||||
|
await promise_rejects_dom(t, 'AbortError', navigator.credentials.get(
|
||||||
|
{otp: {transport: ["sms"]}, signal: signal}));
|
||||||
|
}, 'Should abort request');
|
||||||
|
|
||||||
|
</script>
|
|
@ -0,0 +1,41 @@
|
||||||
|
<!doctype html>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="/common/get-host-info.sub.js"></script>
|
||||||
|
<div id=log>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const host = get_host_info();
|
||||||
|
const remoteBaseURL =
|
||||||
|
host.HTTPS_REMOTE_ORIGIN +
|
||||||
|
window.location.pathname.replace(/\/[^\/]*$/, '/');
|
||||||
|
const localBaseURL =
|
||||||
|
host.HTTPS_ORIGIN +
|
||||||
|
window.location.pathname.replace(/\/[^\/]*$/, '/');
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
const messageWatcher = new EventWatcher(t, window, "message");
|
||||||
|
var iframe = document.createElement("iframe");
|
||||||
|
iframe.src = localBaseURL + "support/otpcredential-iframe.html";
|
||||||
|
|
||||||
|
document.body.appendChild(iframe);
|
||||||
|
|
||||||
|
const message = await messageWatcher.wait_for("message");
|
||||||
|
assert_equals(message.data.result, "Pass");
|
||||||
|
assert_equals(message.data.code, "ABC123");
|
||||||
|
|
||||||
|
}, "Test OTPCredential enabled in same origin iframes");
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
const messageWatcher = new EventWatcher(t, window, "message");
|
||||||
|
var iframe = document.createElement("iframe");
|
||||||
|
iframe.src = remoteBaseURL + "support/otpcredential-iframe.html"
|
||||||
|
document.body.appendChild(iframe);
|
||||||
|
|
||||||
|
const message = await messageWatcher.wait_for("message");
|
||||||
|
assert_equals(message.data.result, "Fail");
|
||||||
|
assert_equals(message.data.errorType, "NotAllowedError");
|
||||||
|
|
||||||
|
}, "Test OTPCredential disabled in cross origin iframes");
|
||||||
|
</script>
|
|
@ -0,0 +1,30 @@
|
||||||
|
# CredentialManagement Testing
|
||||||
|
|
||||||
|
## OTPCredential Testing
|
||||||
|
|
||||||
|
In this test suite `otpcredential-helper.js` is a testing framework that enables
|
||||||
|
engines to test OTPCredential by intercepting the connection between the browser
|
||||||
|
and the underlying operating system and mock its behavior.
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
|
||||||
|
1. Include `<script src="./support/otpcredential-helper.js"></script>` in your
|
||||||
|
test
|
||||||
|
2. Set expectations
|
||||||
|
```
|
||||||
|
await expect(receive).andReturn(() => {
|
||||||
|
// mock behavior
|
||||||
|
})
|
||||||
|
```
|
||||||
|
3. Call `navigator.credentials.get({otp: {transport: ["sms"]}})`
|
||||||
|
4. Verify results
|
||||||
|
|
||||||
|
The mocking API is browser agnostic and is designed such that other engines
|
||||||
|
could implement it too.
|
||||||
|
|
||||||
|
Here are the symbols that are exposed to tests that need to be implemented
|
||||||
|
per engine:
|
||||||
|
|
||||||
|
- function receive(): the main/only function that can be mocked
|
||||||
|
- function expect(): the main/only function that enables us to mock it
|
||||||
|
- enum State {kSuccess, kTimeout}: allows you to mock success/failures
|
|
@ -0,0 +1,65 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// These tests rely on the User Agent providing an implementation of
|
||||||
|
// the sms retriever.
|
||||||
|
//
|
||||||
|
// In Chromium-based browsers this implementation is provided by a polyfill
|
||||||
|
// in order to reduce the amount of test-only code shipped to users. To enable
|
||||||
|
// these tests the browser must be run with these options:
|
||||||
|
// // --enable-blink-features=MojoJS,MojoJSTest
|
||||||
|
|
||||||
|
async function loadChromiumResources() {
|
||||||
|
if (!window.MojoInterfaceInterceptor) {
|
||||||
|
// Do nothing on non-Chromium-based browsers or when the Mojo bindings are
|
||||||
|
// not present in the global namespace.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const resources = [
|
||||||
|
'/gen/layout_test_data/mojo/public/js/mojo_bindings_lite.js',
|
||||||
|
'/gen/mojo/public/mojom/base/time.mojom-lite.js',
|
||||||
|
'/gen/third_party/blink/public/mojom/sms/sms_receiver.mojom-lite.js',
|
||||||
|
'/resources/chromium/mock-sms-receiver.js',
|
||||||
|
];
|
||||||
|
|
||||||
|
await Promise.all(resources.map(path => {
|
||||||
|
const script = document.createElement('script');
|
||||||
|
script.src = path;
|
||||||
|
script.async = false;
|
||||||
|
const promise = new Promise((resolve, reject) => {
|
||||||
|
script.onload = resolve;
|
||||||
|
script.onerror = reject;
|
||||||
|
});
|
||||||
|
document.head.appendChild(script);
|
||||||
|
return promise;
|
||||||
|
}));
|
||||||
|
|
||||||
|
Status.kSuccess = blink.mojom.SmsStatus.kSuccess;
|
||||||
|
Status.kTimeout = blink.mojom.SmsStatus.kTimeout;
|
||||||
|
Status.kCancelled = blink.mojom.SmsStatus.kCancelled;
|
||||||
|
};
|
||||||
|
|
||||||
|
const Status = {};
|
||||||
|
|
||||||
|
async function create_sms_provider() {
|
||||||
|
if (typeof SmsProvider === 'undefined') {
|
||||||
|
await loadChromiumResources();
|
||||||
|
}
|
||||||
|
if (typeof SmsProvider == 'undefined') {
|
||||||
|
throw new Error('Mojo testing interface is not available.');
|
||||||
|
}
|
||||||
|
return new SmsProvider();
|
||||||
|
}
|
||||||
|
|
||||||
|
function receive() {
|
||||||
|
throw new Error("expected to be overriden by tests");
|
||||||
|
}
|
||||||
|
|
||||||
|
function expect(call) {
|
||||||
|
return {
|
||||||
|
async andReturn(callback) {
|
||||||
|
const mock = await create_sms_provider();
|
||||||
|
mock.pushReturnValuesForTesting(call.name, callback);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
<!doctype html>
|
||||||
|
<script src="./otpcredential-helper.js"></script>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// Loading otpcredential-iframe.html in the test will make an OTPCredentials
|
||||||
|
// call on load, and trigger a postMessage upon completion.
|
||||||
|
//
|
||||||
|
// message {
|
||||||
|
// string result: "Pass" | "Fail"
|
||||||
|
// string code: credentials.code
|
||||||
|
// string errorType: error.name
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Intercept successful calls and return mocked value.
|
||||||
|
(async function() {
|
||||||
|
await expect(receive).andReturn(() => {
|
||||||
|
return Promise.resolve({
|
||||||
|
status: Status.kSuccess,
|
||||||
|
otp: "ABC123",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}());
|
||||||
|
|
||||||
|
window.onload = async () => {
|
||||||
|
try {
|
||||||
|
const credentials =
|
||||||
|
await navigator.credentials.get({otp: {transport: ["sms"]}});
|
||||||
|
window.parent.postMessage({result: "Pass", code: credentials.code}, '*');
|
||||||
|
} catch (error) {
|
||||||
|
window.parent.postMessage({result: "Fail", errorType: error.name}, '*');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
|
@ -0,0 +1,42 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>CSS Flexbox: Change to auto-margin items in column flexbox</title>
|
||||||
|
<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#valdef-flex-direction-column">
|
||||||
|
<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#propdef-align-self">
|
||||||
|
<link rel="match" href="reference/columns-center-with-margins-001-ref.html">
|
||||||
|
<meta name="assert" content="This test ensures that auto margins for column flows are correctly calculated"/>
|
||||||
|
<link href="support/flexbox.css" rel="stylesheet">
|
||||||
|
<style>
|
||||||
|
.flexbox {
|
||||||
|
border: 1px solid black;
|
||||||
|
width: 400px;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
.item1 {
|
||||||
|
margin: 0 auto;
|
||||||
|
background: lightblue;
|
||||||
|
}
|
||||||
|
.item1v {
|
||||||
|
margin: auto 0;
|
||||||
|
background: lightblue;
|
||||||
|
}
|
||||||
|
.item2 {
|
||||||
|
background: lime;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>The test passes if the flex items are properly centered in each column</p>
|
||||||
|
<div class="flexbox column">
|
||||||
|
<div class="item1">centeredWithMargins</div>
|
||||||
|
<div class="item2 align-self-center">centeredWithAlignSelf</div>
|
||||||
|
</div>
|
||||||
|
<div style="writing-mode: vertical-lr;">
|
||||||
|
<div class="flexbox column">
|
||||||
|
<div class="item1v">centeredWithMargins</div>
|
||||||
|
<div class="item2 align-self-center">centeredWithAlignSelf</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,56 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>CSS Flexbox: 'contain' property strict value</title>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-contain/#contain-property">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-containers">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-direction-property">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#align-items-property">
|
||||||
|
<meta name="assert" content="This test ensures that the strict value of the 'contain'
|
||||||
|
property in combination with mixing of 'display' inline-flex value, 'align-items' flex-start
|
||||||
|
value, column direction works properly.">
|
||||||
|
<style>
|
||||||
|
.inline-flex {
|
||||||
|
display: inline-flex;
|
||||||
|
outline: solid;
|
||||||
|
background: red;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="/resources/check-layout-th.js"></script>
|
||||||
|
|
||||||
|
<body onload="checkLayout('.inline-flex')">
|
||||||
|
<p>Stretched:</p>
|
||||||
|
<div class="inline-flex" style="display: inline-flex; flex-direction: column;" data-expected-width="0" data-expected-height="0">
|
||||||
|
<div style="contain: strict;" data-expected-width="0" data-expected-height="0">Column</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flex" data-expected-width="0" data-expected-height="0">
|
||||||
|
<div style="contain: strict;" data-expected-width="0" data-expected-height="0">Row</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flex" style="display: inline-flex; flex-direction: column;" data-expected-width="30" data-expected-height="30">
|
||||||
|
<div style="contain: strict; width: 30px; height: 30px;" data-expected-width="30" data-expected-height="30">Column</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flex" style="display: inline-flex;" data-expected-width="30" data-expected-height="30">
|
||||||
|
<div style="contain: strict; width: 30px; height: 30px;" data-expected-width="30" data-expected-height="30">Row</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<p>Flex-start:</p>
|
||||||
|
<div class="inline-flex" style="flex-direction: column; align-items: flex-start;" data-expected-width="0" data-expected-height="0">
|
||||||
|
<div style="contain: strict;" data-expected-width="0" data-expected-height="0">Column</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flex" style="align-items: flex-start;" data-expected-width="0" data-expected-height="0">
|
||||||
|
<div style="contain: strict;" data-expected-width="0" data-expected-height="0">Row</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flex" style="flex-direction: column; align-items: flex-start;" data-expected-width="30" data-expected-height="30">
|
||||||
|
<div style="contain: strict; width: 30px; height: 30px;" data-expected-width="30" data-expected-height="30">Column</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flex" style="align-items: flex-start;" data-expected-width="30" data-expected-height="30">
|
||||||
|
<div style="contain: strict; width: 30px; height: 30px;" data-expected-width="30" data-expected-height="30">Row</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,13 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>Flex transferred minimum height</title>
|
||||||
|
<link rel="author" title="dgrogan@chromium.org" href="mailto:dgrogan@chromium.org" />
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#transferred-size-suggestion" />
|
||||||
|
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html" />
|
||||||
|
<meta name="assert" content="min-height: auto honors transferred size suggestion">
|
||||||
|
|
||||||
|
<p>Test passes if there is a filled green square.</p>
|
||||||
|
|
||||||
|
<div style="width:100px; height: 50px; background: green;"></div>
|
||||||
|
<div style="display: flex; flex-direction: column; height: 0px">
|
||||||
|
<img src="support/300x150-green.png" style="width: 100px">
|
||||||
|
</div>
|
|
@ -0,0 +1,13 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>Flex transferred minimum height</title>
|
||||||
|
<link rel="author" title="dgrogan@chromium.org" href="mailto:dgrogan@chromium.org" />
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#transferred-size-suggestion" />
|
||||||
|
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html" />
|
||||||
|
<meta name="assert" content="min-height: auto honors transferred size suggestion subject to cross axis min/max sizes">
|
||||||
|
|
||||||
|
<p>Test passes if there is a filled green square.</p>
|
||||||
|
|
||||||
|
<div style="width:100px; height: 50px; background: green;"></div>
|
||||||
|
<div style="display: flex; flex-direction: column; height: 0px">
|
||||||
|
<img src="support/300x150-green.png" style="width: 0px; min-width: 100px;">
|
||||||
|
</div>
|
|
@ -0,0 +1,80 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>CSS Flexbox: flexbox with min-size: auto</title>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-containers">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-direction-property">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#min-size-auto">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-basis-property">
|
||||||
|
<link rel="bookmark" href="https://crbug.com/426898">
|
||||||
|
<link href="support/flexbox.css" rel="stylesheet">
|
||||||
|
<meta name="assert" content="Flexbox with min-size: auto is handled correctly.">
|
||||||
|
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="/resources/check-layout-th.js"></script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.flexbox {
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background-color: grey;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
background-color: red;
|
||||||
|
margin: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.child {
|
||||||
|
height: 100px;
|
||||||
|
width: 100px;
|
||||||
|
background-color: green;
|
||||||
|
}
|
||||||
|
|
||||||
|
.width-20 {
|
||||||
|
width: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flex-basis-20 {
|
||||||
|
flex-basis: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<body onload="checkLayout('.flexbox, .inline-flexbox');">
|
||||||
|
<div id=log></div>
|
||||||
|
|
||||||
|
<div class="flexbox" data-expected-width="10">
|
||||||
|
<div class="item" data-expected-width="100">
|
||||||
|
<div class="child" data-expected-width="100"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox column" data-expected-height="10">
|
||||||
|
<div class="item" data-expected-height="100">
|
||||||
|
<div class="child" data-expected-height="100"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column" data-expected-height="110">
|
||||||
|
<div class="item flex-basis-20" data-expected-height="100">
|
||||||
|
<div class="child" data-expected-height="100"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox" data-expected-width="10">
|
||||||
|
<div class="item width-20" data-expected-width="20">
|
||||||
|
<div class="child" data-expected-width="100"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox" data-expected-width="10">
|
||||||
|
<div class="item flex-basis-20" data-expected-width="100">
|
||||||
|
<div class="child" data-expected-width="100"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox" data-expected-width="110">
|
||||||
|
<div class="item flex-basis-20" data-expected-width="100">
|
||||||
|
<div class="child" data-expected-width="100"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,13 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>Flex transferred minimum width</title>
|
||||||
|
<link rel="author" title="dgrogan@chromium.org" href="mailto:dgrogan@chromium.org" />
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#transferred-size-suggestion" />
|
||||||
|
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html" />
|
||||||
|
<meta name="assert" content="min-width: auto honors transferred size suggestion">
|
||||||
|
|
||||||
|
<p>Test passes if there is a filled green square.</p>
|
||||||
|
|
||||||
|
<div style="width:100px; height: 50px; background: green;"></div>
|
||||||
|
<div style="display: flex; width: 0px"> <!-- width:0 makes items shrink to min-width -->
|
||||||
|
<img src="support/300x150-green.png" style="height: 50px">
|
||||||
|
</div>
|
|
@ -0,0 +1,13 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>Flex transferred minimum width</title>
|
||||||
|
<link rel="author" title="dgrogan@chromium.org" href="mailto:dgrogan@chromium.org" />
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#transferred-size-suggestion" />
|
||||||
|
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html" />
|
||||||
|
<meta name="assert" content="min-width: auto honors transferred size suggestion subject to cross axis min/max sizes">
|
||||||
|
|
||||||
|
<p>Test passes if there is a filled green square.</p>
|
||||||
|
|
||||||
|
<div style="width:100px; height: 50px; background: green;"></div>
|
||||||
|
<div style="display: flex; width: 0px"> <!-- width:0 makes items shrink to min-width -->
|
||||||
|
<img src="support/300x150-green.png" style="height: 2000px; max-height: 50px">
|
||||||
|
</div>
|
|
@ -0,0 +1,39 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>Flex transferred minimum width</title>
|
||||||
|
<link rel="author" title="dgrogan@chromium.org" href="mailto:dgrogan@chromium.org" />
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#min-size-auto" />
|
||||||
|
<link rel="match" href="../reference/ref-filled-green-100px-square.xht" />
|
||||||
|
<meta name="assert" content="min-width: auto ignores transferred size suggestion when item has a definite main size">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
#reference-overlapped-red {
|
||||||
|
position: absolute;
|
||||||
|
background-color: red;
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
z-index: -1;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||||
|
|
||||||
|
<div id="reference-overlapped-red"></div>
|
||||||
|
<div style="width:100px; height: 75px; background: green;"></div>
|
||||||
|
<div style="display: flex; width: 0px">
|
||||||
|
<!--
|
||||||
|
content size suggestion is 300px.
|
||||||
|
specified size suggestion is 100px.
|
||||||
|
transferred size suggestion is 50px, but that is ignored because there is a
|
||||||
|
specified size. The ignoring is from the spec text that says,
|
||||||
|
(capitalization added):
|
||||||
|
|
||||||
|
In general, the content-based minimum size of a flex item is the smaller of
|
||||||
|
its content size suggestion and its specified size suggestion. However, if
|
||||||
|
the box has an aspect ratio AND NO specified size, its content-based
|
||||||
|
minimum size is the smaller of its content size suggestion and its
|
||||||
|
transferred size suggestion.
|
||||||
|
|
||||||
|
So here the content-based minimum size is min(300, 100) = 100.
|
||||||
|
-->
|
||||||
|
<img src="support/300x150-green.png" style="height: 25px; width: 100px;">
|
||||||
|
</div>
|
|
@ -0,0 +1,74 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<title>CSS Flexbox: height resizing with flex-direction: column</title>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-direction-property">
|
||||||
|
<link rel="help" href="https://crbug.com/527039">
|
||||||
|
<meta name="assert" content="This test checks that resizing the height of a layout with two nested flexboxes using 'flex-direction: column' correctly recalculates the outer box's height." />
|
||||||
|
|
||||||
|
<style>
|
||||||
|
body,
|
||||||
|
html {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.OuterFlexbox {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.InnerFlexbox {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
max-height: 100%;
|
||||||
|
outline: 1px blue solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.InnerFlexbox-body {
|
||||||
|
flex: 1 1 auto;
|
||||||
|
overflow-y: hidden;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="/resources/check-layout-th.js"></script>
|
||||||
|
|
||||||
|
<body onload="update()">
|
||||||
|
|
||||||
|
<div class="OuterFlexbox" data-expected-height="250">
|
||||||
|
<div class="InnerFlexbox" data-expected-height="250">
|
||||||
|
<div class="InnerFlexbox-body" data-expected-height="250">
|
||||||
|
<ul>
|
||||||
|
<li>Suspendisse eu nunc lectus. Curabitur.</li>
|
||||||
|
<li>Suspendisse eu nunc lectus. Curabitur.</li>
|
||||||
|
<li>Suspendisse eu nunc lectus. Curabitur.</li>
|
||||||
|
<li>Suspendisse eu nunc lectus. Curabitur.</li>
|
||||||
|
<li>Suspendisse eu nunc lectus. Curabitur.</li>
|
||||||
|
<li>Suspendisse eu nunc lectus. Curabitur.</li>
|
||||||
|
<li>Suspendisse eu nunc lectus. Curabitur.</li>
|
||||||
|
<li>Suspendisse eu nunc lectus. Curabitur.</li>
|
||||||
|
<li>Suspendisse eu nunc lectus. Curabitur.</li>
|
||||||
|
<li>Suspendisse eu nunc lectus. Curabitur.</li>
|
||||||
|
<li>Suspendisse eu nunc lectus. Curabitur.</li>
|
||||||
|
<li>Suspendisse eu nunc lectus. Curabitur.</li>
|
||||||
|
<li>Suspendisse eu nunc lectus. Curabitur.</li>
|
||||||
|
<li>Suspendisse eu nunc lectus. Curabitur.</li>
|
||||||
|
<li>Suspendisse eu nunc lectus. Curabitur.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function update() {
|
||||||
|
document.body.offsetHeight;
|
||||||
|
document.body.style.height = '50px';
|
||||||
|
document.body.offsetHeight;
|
||||||
|
document.body.style.height = '250px';
|
||||||
|
document.body.offsetHeight;
|
||||||
|
checkLayout('.OuterFlexbox');
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,93 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<title>CSS Flexbox: overflow:auto support.</title>
|
||||||
|
<link rel="help" href="https://www.w3.org/TR/css-overflow-3/#propdef-overflow">
|
||||||
|
<link rel="help" href="https://www.w3.org/TR/css-overflow-4/#classic-scrollbars">
|
||||||
|
<link rel="match" href="reference/flexbox-overflow-auto-001-ref.html">
|
||||||
|
<meta name="assert" content="This test ensures that flexbox with 'overflow: auto' is supported, including in combination with different writing-mode and flex-direction values."/>
|
||||||
|
<style>
|
||||||
|
.test-row {
|
||||||
|
display: flex;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
.test-row > div {
|
||||||
|
flex: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
margin-right: 5px;
|
||||||
|
border: 5px solid lightgreen;
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.horizontal-tb {
|
||||||
|
writing-mode: horizontal-tb;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vertical-rl {
|
||||||
|
writing-mode: vertical-rl;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vertical-lr {
|
||||||
|
writing-mode: vertical-lr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row-reverse {
|
||||||
|
flex-direction: row-reverse;
|
||||||
|
}
|
||||||
|
|
||||||
|
.column {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.column-reverse {
|
||||||
|
flex-direction: column-reverse;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flexbox {
|
||||||
|
border: 0 solid pink;
|
||||||
|
display: flex;
|
||||||
|
height: 100px;
|
||||||
|
width: 100px;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flexbox > div {
|
||||||
|
width: 200px;
|
||||||
|
height: 200px;
|
||||||
|
background: radial-gradient(at right 60%, red, yellow, green);
|
||||||
|
flex: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<body>
|
||||||
|
<p>Scrollbars should work in all the flexboxes.</p>
|
||||||
|
</body>
|
||||||
|
<script>
|
||||||
|
var writingModes = ['horizontal-tb', 'vertical-rl', 'vertical-lr'];
|
||||||
|
var flexDirections = ['row', 'column', 'row-reverse', 'column-reverse'];
|
||||||
|
var testContents = '';
|
||||||
|
writingModes.forEach(function(writingMode) {
|
||||||
|
testContents += "<div class='test-row'>";
|
||||||
|
flexDirections.forEach(function(flexDirection) {
|
||||||
|
var containerClass = 'container ' + writingMode;
|
||||||
|
var flexboxClass = 'flexbox ' + flexDirection;
|
||||||
|
testContents +=
|
||||||
|
"<div class='" + containerClass + "'>" +
|
||||||
|
"<div class='" + flexboxClass + "'>" +
|
||||||
|
"<div></div>" +
|
||||||
|
"</div>" +
|
||||||
|
"</div>";
|
||||||
|
});
|
||||||
|
testContents += "</div>";
|
||||||
|
});
|
||||||
|
|
||||||
|
document.body.innerHTML += testContents;
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,101 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<title>CSS Flexbox: Height with overflow: auto.</title>
|
||||||
|
<link href="support/flexbox.css" rel="stylesheet">
|
||||||
|
<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#flex-direction-property">
|
||||||
|
<link rel="help" href="https://www.w3.org/TR/css-overflow-4/#classic-scrollbars">
|
||||||
|
<meta name="assert" content="This test ensures that flexbox with 'flex-direction: row|row-reverse' and a flex item child with 'overflow: auto' has the proper height."/>
|
||||||
|
<style>
|
||||||
|
.flexbox {
|
||||||
|
border: 5px solid green;
|
||||||
|
position: relative;
|
||||||
|
width: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-flexbox {
|
||||||
|
border: 5px solid green;
|
||||||
|
position: relative;
|
||||||
|
height: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.overflow {
|
||||||
|
border: 1px solid red;
|
||||||
|
overflow: auto;
|
||||||
|
min-width: 0;
|
||||||
|
min-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vertical {
|
||||||
|
writing-mode: vertical-rl;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="/resources/check-layout-th.js"></script>
|
||||||
|
<body onload="checkLayout('.flexbox, .inline-flexbox')">
|
||||||
|
<div id=log></div>
|
||||||
|
<div class="flexbox" data-expected-height="47">
|
||||||
|
<div class="overflow"><div style="width: 100px; height: 20px"></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox row-reverse" data-expected-height="47">
|
||||||
|
<div class="overflow"><div style="width: 100px; height: 20px"></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox vertical" data-expected-height="47">
|
||||||
|
<div class="overflow"><div style="width: 100px; height: 20px"></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox row-reverse vertical" data-expected-height="47">
|
||||||
|
<div class="overflow"><div style="width: 100px; height: 20px"></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox" data-expected-height="47">
|
||||||
|
<div class="overflow align-self-baseline"><div style="width: 100px; height: 20px"></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox row-reverse" data-expected-height="47">
|
||||||
|
<div class="overflow align-self-baseline"><div style="width: 100px; height: 20px"></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox vertical" data-expected-height="32">
|
||||||
|
<div class="overflow align-self-baseline"><div style="width: 100px; height: 20px"></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox row-reverse vertical" data-expected-height="32">
|
||||||
|
<div class="overflow align-self-baseline"><div style="width: 100px; height: 20px"></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column" data-expected-width="47">
|
||||||
|
<div class="overflow"><div style="width: 20px; height: 100px"></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column-reverse" data-expected-width="47">
|
||||||
|
<div class="overflow"><div style="width: 20px; height: 100px"></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column vertical" data-expected-width="47">
|
||||||
|
<div class="overflow"><div style="width: 20px; height: 100px"></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column-reverse vertical" data-expected-width="47">
|
||||||
|
<div class="overflow"><div style="width: 20px; height: 100px"></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column" data-expected-width="47">
|
||||||
|
<div class="overflow align-self-baseline"><div style="width: 20px; height: 100px"></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column-reverse" data-expected-width="47">
|
||||||
|
<div class="overflow align-self-baseline"><div style="width: 20px; height: 100px"></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column vertical" data-expected-width="32">
|
||||||
|
<div class="overflow align-self-baseline"><div style="width: 20px; height: 100px"></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column-reverse vertical" data-expected-width="32">
|
||||||
|
<div class="overflow align-self-baseline"><div style="width: 20px; height: 100px"></div></div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,22 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>CSS Flexbox: justify-content: space-between on the last item of a column</title>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-containers">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#justify-content-property">
|
||||||
|
<link rel="bookmark" href="https://crbug.com/690024">
|
||||||
|
<meta name="assert" content="This test checks when processing the last item on a column we should not add justify-content space to the row height.">
|
||||||
|
<style>
|
||||||
|
.flexbox {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-between;
|
||||||
|
min-height: 500px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="/resources/check-layout-th.js"></script>
|
||||||
|
<body onload="checkLayout('.flexbox')">
|
||||||
|
<div class="flexbox" data-expected-height="500">
|
||||||
|
<div>First item</div>
|
||||||
|
<div>Second item</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,66 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<title>CSS Flexbox: correct width for non-overflowing content with flex-direction: column</title>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-direction-property">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-overflow-3/#overflow-properties">
|
||||||
|
<link rel="help" href="https://crbug.com/580586">
|
||||||
|
<meta name="assert" content="This test checks that no unnecessary extra horizontal space is considered for vertical scrollbars for non-overflowing content using flex-direction: column." />
|
||||||
|
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
height: 200vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
section {
|
||||||
|
height: 400px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.side-menu {
|
||||||
|
border: 1px solid black;
|
||||||
|
width: 200px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-body {
|
||||||
|
height: 1000px;
|
||||||
|
flex: 1 1 0%;
|
||||||
|
display: flex;
|
||||||
|
min-height: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
overflow: auto;
|
||||||
|
flex: 1 1 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
height: 20px;
|
||||||
|
background-color: red;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="/resources/check-layout-th.js"></script>
|
||||||
|
<body onload="checkLayout('section')">
|
||||||
|
|
||||||
|
<div id=log></div>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<div class="box-body">
|
||||||
|
<div class="side-menu">
|
||||||
|
<ul class="list">
|
||||||
|
<li data-expected-width="200">
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div style="height: 1000px;"></div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,32 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link href="../support/flexbox.css" rel="stylesheet">
|
||||||
|
<style>
|
||||||
|
.flexbox {
|
||||||
|
border: 1px solid black;
|
||||||
|
width: 400px;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
.item1 {
|
||||||
|
background: lightblue;
|
||||||
|
}
|
||||||
|
.item2 {
|
||||||
|
background: lime;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>The test passes if the flex items are properly centered in each column</p>
|
||||||
|
<div class="flexbox column">
|
||||||
|
<div class="item1 align-self-center">centeredWithMargins</div>
|
||||||
|
<div class="item2 align-self-center">centeredWithAlignSelf</div>
|
||||||
|
</div>
|
||||||
|
<div style="writing-mode: vertical-lr;">
|
||||||
|
<div class="flexbox column">
|
||||||
|
<div class="item1 align-self-center">centeredWithMargins</div>
|
||||||
|
<div class="item2 align-self-center">centeredWithAlignSelf</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,70 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
.test-row {
|
||||||
|
display: flex;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
.test-row > div {
|
||||||
|
flex: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
margin-right: 5px;
|
||||||
|
border: 5px solid lightgreen;
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flexbox {
|
||||||
|
display: block;
|
||||||
|
height: 100px;
|
||||||
|
width: 100px;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flexbox > div {
|
||||||
|
width: 200px;
|
||||||
|
height: 200px;
|
||||||
|
background: radial-gradient(at right 60%, red, yellow, green);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>Scrollbars should work in all the flexboxes.</p>
|
||||||
|
</body>
|
||||||
|
<script>
|
||||||
|
var results = [
|
||||||
|
'left top', 'left top', 'right top', 'left bottom',
|
||||||
|
'right top', 'right top', 'right bottom', 'left top',
|
||||||
|
'left top', 'left top', 'left bottom', 'right top'];
|
||||||
|
|
||||||
|
var testContents = '';
|
||||||
|
for (var i = 0; i < results.length; ++i) {
|
||||||
|
if (!(i % 4))
|
||||||
|
testContents += "<div class='test-row'>";
|
||||||
|
|
||||||
|
var containerClass = 'container ' + results[i];
|
||||||
|
testContents +=
|
||||||
|
"<div class='" + containerClass + "'>" +
|
||||||
|
"<div class='flexbox'>" +
|
||||||
|
"<div></div>" +
|
||||||
|
"</div>" +
|
||||||
|
"</div>";
|
||||||
|
if (i % 4 == 3)
|
||||||
|
testContents += "</div>";
|
||||||
|
}
|
||||||
|
|
||||||
|
document.body.innerHTML += testContents;
|
||||||
|
|
||||||
|
Array.prototype.forEach.call(document.querySelectorAll(".right"), function(element) {
|
||||||
|
element.firstChild.scrollLeft = 1000;
|
||||||
|
});
|
||||||
|
|
||||||
|
Array.prototype.forEach.call(document.querySelectorAll(".bottom"), function(element) {
|
||||||
|
element.firstChild.scrollTop = 1000;
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,18 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1052370" >
|
||||||
|
<meta name="assert" content="When determining the size of a replaced element, if it has an aspect ratio of 1/1 then the final height should be exactly equal to its width." />
|
||||||
|
<script src="../../resources/check-layout.js"></script>
|
||||||
|
<style>
|
||||||
|
canvas {
|
||||||
|
float: left;
|
||||||
|
background: green;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div style="position: relative; width: 254px; zoom: 0.8;">
|
||||||
|
<canvas style="width: 30%;" width="1" height="1"></canvas>
|
||||||
|
<canvas style="width: 30%;" width="708" height="708"></canvas>
|
||||||
|
<canvas id="target" style="width: 60%;" width="2" height="1" data-offset-x="0"></canvas>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
checkLayout('#target');
|
||||||
|
</script>
|
|
@ -258,7 +258,7 @@ interface XRReferenceSpaceEvent : Event {
|
||||||
|
|
||||||
dictionary XRReferenceSpaceEventInit : EventInit {
|
dictionary XRReferenceSpaceEventInit : EventInit {
|
||||||
required XRReferenceSpace referenceSpace;
|
required XRReferenceSpace referenceSpace;
|
||||||
XRRigidTransform transform;
|
XRRigidTransform? transform = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
dictionary XRPermissionDescriptor: PermissionDescriptor {
|
dictionary XRPermissionDescriptor: PermissionDescriptor {
|
||||||
|
|
|
@ -322,6 +322,7 @@ SET TIMEOUT: acid/acid3/test.html
|
||||||
*: css/tools/w3ctestlib/*
|
*: css/tools/w3ctestlib/*
|
||||||
*: resources/webidl2/*
|
*: resources/webidl2/*
|
||||||
*: tools/*
|
*: tools/*
|
||||||
|
*: */third_party/*
|
||||||
|
|
||||||
# Build system virtualenv
|
# Build system virtualenv
|
||||||
*: css/tools/_virtualenv/*
|
*: css/tools/_virtualenv/*
|
||||||
|
@ -689,7 +690,7 @@ WEB-PLATFORM.TEST:web-bundle/resources/wbn/*.wbn
|
||||||
# https://github.com/web-platform-tests/wpt/issues/16455
|
# https://github.com/web-platform-tests/wpt/issues/16455
|
||||||
# Please consult with ecosystem-infra@chromium.org before adding more.
|
# Please consult with ecosystem-infra@chromium.org before adding more.
|
||||||
MISSING DEPENDENCY: idle-detection/interceptor.https.html
|
MISSING DEPENDENCY: idle-detection/interceptor.https.html
|
||||||
MISSING DEPENDENCY: sms/resources/helper.js
|
MISSING DEPENDENCY: credential-management/support/otpcredential-helper.js
|
||||||
MISSING DEPENDENCY: web-nfc/resources/nfc-helpers.js
|
MISSING DEPENDENCY: web-nfc/resources/nfc-helpers.js
|
||||||
MISSING DEPENDENCY: shape-detection/resources/shapedetection-helpers.js
|
MISSING DEPENDENCY: shape-detection/resources/shapedetection-helpers.js
|
||||||
MISSING DEPENDENCY: webxr/resources/webxr_util.js
|
MISSING DEPENDENCY: webxr/resources/webxr_util.js
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<head>
|
|
||||||
<title>Performance Paint Timing Test: FCP with element clipped with overflow</title>
|
|
||||||
<style>
|
|
||||||
#main {
|
|
||||||
width: 100px;
|
|
||||||
height: 100px;
|
|
||||||
overflow: hidden;
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* contentful class is defined in test_fcp script. */
|
|
||||||
#main.contentful {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
#text {
|
|
||||||
top: 10000px;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<script src="/resources/testharness.js"></script>
|
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
|
||||||
<script src="../resources/utils.js"></script>
|
|
||||||
<div id="main">
|
|
||||||
<div id="text">HELLO</div>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
test_fcp("First contentful paint fires even when element is hidden due to overflow.")
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const SmsProvider = (() => {
|
||||||
|
|
||||||
|
class MockSmsReceiver {
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.mojoReceiver_ = new blink.mojom.SmsReceiverReceiver(this);
|
||||||
|
|
||||||
|
this.interceptor_ =
|
||||||
|
new MojoInterfaceInterceptor(blink.mojom.SmsReceiver.$interfaceName);
|
||||||
|
|
||||||
|
this.interceptor_.oninterfacerequest = (e) => {
|
||||||
|
this.mojoReceiver_.$.bindHandle(e.handle);
|
||||||
|
}
|
||||||
|
this.interceptor_.start();
|
||||||
|
|
||||||
|
this.returnValues_ = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
async receive() {
|
||||||
|
let call = this.returnValues_.receive ?
|
||||||
|
this.returnValues_.receive.shift() : null;
|
||||||
|
if (!call)
|
||||||
|
return;
|
||||||
|
return call();
|
||||||
|
}
|
||||||
|
|
||||||
|
async abort() {};
|
||||||
|
|
||||||
|
pushReturnValuesForTesting(callName, value) {
|
||||||
|
this.returnValues_[callName] = this.returnValues_[callName] || [];
|
||||||
|
this.returnValues_[callName].push(value);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const mockSmsReceiver = new MockSmsReceiver();
|
||||||
|
|
||||||
|
class SmsProviderChromium {
|
||||||
|
constructor() {
|
||||||
|
Object.freeze(this); // Make it immutable.
|
||||||
|
}
|
||||||
|
|
||||||
|
pushReturnValuesForTesting(callName, callback) {
|
||||||
|
mockSmsReceiver.pushReturnValuesForTesting(callName, callback);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return SmsProviderChromium;
|
||||||
|
})();
|
|
@ -0,0 +1,25 @@
|
||||||
|
<!doctype html>
|
||||||
|
<title>Crash with dynamic creation of absolutely positioned element under display: contents in svg:text.</title>
|
||||||
|
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1611848">
|
||||||
|
<style>
|
||||||
|
* {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
function start () {
|
||||||
|
const text = document.getElementById('text')
|
||||||
|
|
||||||
|
const div = document.createElementNS('http://www.w3.org/1999/xhtml', 'div')
|
||||||
|
div.style.display = "contents";
|
||||||
|
|
||||||
|
const another = document.createElementNS('http://www.w3.org/2000/svg', 'whatevs')
|
||||||
|
text.appendChild(div);
|
||||||
|
document.documentElement.getBoundingClientRect();
|
||||||
|
div.appendChild(another);
|
||||||
|
}
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', start)
|
||||||
|
</script>
|
||||||
|
<svg>
|
||||||
|
<text id='text'>
|
|
@ -1,10 +1,10 @@
|
||||||
cask 'safari-technology-preview' do
|
cask 'safari-technology-preview' do
|
||||||
if MacOS.version <= :mojave
|
if MacOS.version <= :mojave
|
||||||
version '102,061-84687-20200304-286a8fe8-5a00-41ba-9dba-2c42e047ffb1'
|
version '103,061-90754-20200325-37467264-9c34-454c-be4a-1cb87e93c62c'
|
||||||
sha256 '2e048fec4a470f5b5d9cffc359ba967bee02cf3cf121e5ea16812077adc5ba60'
|
sha256 'f2175a2ca69152b6c1067d47b56d464b0ba0c71323a76137b488a8088a25f44c'
|
||||||
else
|
else
|
||||||
version '102,061-84666-20200304-c2d165f2-2aec-41b2-86ef-0a9407608e2c'
|
version '103,061-90752-20200325-cc5192c4-619a-45b4-83b5-70a1bed8c912'
|
||||||
sha256 'ef9e9ea8990bb63936216fcdf93720b854366d158cad3daf5b812f841f7b5d99'
|
sha256 '846f2c9e7ebcc293f01ea36c8e1184e2d1bfb985eb3a590fc7c730c40e10a4b6'
|
||||||
end
|
end
|
||||||
|
|
||||||
url "https://secure-appldnld.apple.com/STP/#{version.after_comma}/SafariTechnologyPreview.dmg"
|
url "https://secure-appldnld.apple.com/STP/#{version.after_comma}/SafariTechnologyPreview.dmg"
|
||||||
|
|
|
@ -216,3 +216,35 @@ function runTest(name)
|
||||||
|
|
||||||
runTestFunction();
|
runTestFunction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Simpler than audit.js, but still logs the message. Requires
|
||||||
|
// `setup("explicit_done": true)` if testing code that runs after the "load"
|
||||||
|
// event.
|
||||||
|
function equals(a, b, msg) {
|
||||||
|
test(function() {
|
||||||
|
assert_equals(a, b);
|
||||||
|
}, msg);
|
||||||
|
}
|
||||||
|
function is_true(a, msg) {
|
||||||
|
test(function() {
|
||||||
|
assert_true(a);
|
||||||
|
}, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
// This allows writing AudioWorkletProcessor code in the same file as the rest
|
||||||
|
// of the test, for quick one off AudioWorkletProcessor testing.
|
||||||
|
function URLFromScriptsElements(ids)
|
||||||
|
{
|
||||||
|
var scriptTexts = [];
|
||||||
|
for (let id of ids) {
|
||||||
|
|
||||||
|
const e = document.querySelector("script#"+id)
|
||||||
|
if (!e) {
|
||||||
|
throw id+" is not the id of a <script> tag";
|
||||||
|
}
|
||||||
|
scriptTexts.push(e.innerText);
|
||||||
|
}
|
||||||
|
const blob = new Blob(scriptTexts, {type: "application/javascript"});
|
||||||
|
|
||||||
|
return URL.createObjectURL(blob);
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,205 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>
|
||||||
|
Test get parameterDescriptor as various iterables
|
||||||
|
</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="/webaudio/js/helpers.js"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<script id="params">
|
||||||
|
// A series of AudioParamDescriptors, copied one by one into various iterable
|
||||||
|
// data structures. This is used by both the processor side and the main
|
||||||
|
// thread side, so is in a different script tag.
|
||||||
|
const PARAMS = [
|
||||||
|
{
|
||||||
|
name: "a control-rate parameter",
|
||||||
|
defaultValue: 0.5,
|
||||||
|
minValue: 0,
|
||||||
|
maxValue: 1,
|
||||||
|
automationRate: "a-rate",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "你好",
|
||||||
|
defaultValue: 2.5,
|
||||||
|
minValue: 0,
|
||||||
|
maxValue: 7,
|
||||||
|
automationRate: "a-rate",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "🎶",
|
||||||
|
defaultValue: 8.5,
|
||||||
|
minValue: 0,
|
||||||
|
maxValue: 11115,
|
||||||
|
automationRate: "k-rate",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
</script>
|
||||||
|
<script id="processors" type="worklet">
|
||||||
|
registerProcessor("set",
|
||||||
|
class SetParamProcessor extends AudioWorkletProcessor {
|
||||||
|
static get parameterDescriptors() {
|
||||||
|
var s = new Set();
|
||||||
|
s.add(PARAMS[0]);
|
||||||
|
s.add(PARAMS[1]);
|
||||||
|
s.add(PARAMS[2]);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
constructor() { super(); }
|
||||||
|
process() {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
registerProcessor("array",
|
||||||
|
class ArrayParamProcessor extends AudioWorkletProcessor {
|
||||||
|
static get parameterDescriptors() {
|
||||||
|
return PARAMS;
|
||||||
|
}
|
||||||
|
constructor() { super(); }
|
||||||
|
process() { }
|
||||||
|
});
|
||||||
|
|
||||||
|
function* gen() {
|
||||||
|
yield PARAMS[0];
|
||||||
|
yield PARAMS[1];
|
||||||
|
yield PARAMS[2];
|
||||||
|
}
|
||||||
|
registerProcessor("generator",
|
||||||
|
class GeneratorParamProcessor extends AudioWorkletProcessor {
|
||||||
|
static get parameterDescriptors() {
|
||||||
|
return gen();
|
||||||
|
}
|
||||||
|
constructor() { super(); }
|
||||||
|
process() { }
|
||||||
|
});
|
||||||
|
// Test a processor that has a get parameterDescriptors, but it returns
|
||||||
|
// something that is not iterable.
|
||||||
|
try {
|
||||||
|
registerProcessor("invalid",
|
||||||
|
class InvalidParamProcessor extends AudioWorkletProcessor {
|
||||||
|
static get parameterDescriptors() {
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
constructor() { super(); }
|
||||||
|
process() { }
|
||||||
|
});
|
||||||
|
throw "This should not have been reached.";
|
||||||
|
} catch (e) {
|
||||||
|
// unclear how to signal success here, but we can signal failure in the
|
||||||
|
// developer console
|
||||||
|
if (e.name != "TypeError") {
|
||||||
|
throw "This should be TypeError";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Test a processor that has a get parameterDescriptors, with a duplicate
|
||||||
|
// param name something that is not iterable.
|
||||||
|
try {
|
||||||
|
registerProcessor("duplicate-param-name",
|
||||||
|
class DuplicateParamProcessor extends AudioWorkletProcessor {
|
||||||
|
static get parameterDescriptors() {
|
||||||
|
var p = {
|
||||||
|
name: "a",
|
||||||
|
defaultValue: 1,
|
||||||
|
minValue: 0,
|
||||||
|
maxValue: 1,
|
||||||
|
automationRate: "k-rate",
|
||||||
|
};
|
||||||
|
return [p,p];
|
||||||
|
}
|
||||||
|
constructor() { super(); }
|
||||||
|
process() { }
|
||||||
|
});
|
||||||
|
throw "This should not have been reached.";
|
||||||
|
} catch (e) {
|
||||||
|
// unclear how to signal success here, but we can signal failure in the
|
||||||
|
// developer console
|
||||||
|
if (e.name != "NotSupportedError") {
|
||||||
|
throw "This should be NotSupportedError";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Test a processor that has a no get parameterDescriptors.
|
||||||
|
try {
|
||||||
|
registerProcessor("no-params",
|
||||||
|
class NoParamProcessor extends AudioWorkletProcessor {
|
||||||
|
constructor() { super(); }
|
||||||
|
process() { }
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
throw "Construction should have worked.";
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
setup({ explicit_done: true });
|
||||||
|
// Mangle the PARAMS object into a map that has the same shape as what an
|
||||||
|
// AudioWorkletNode.parameter property would
|
||||||
|
var PARAMS_MAP = new Map();
|
||||||
|
for (var param of PARAMS) {
|
||||||
|
var o = param;
|
||||||
|
var name = o.name;
|
||||||
|
delete o.name;
|
||||||
|
PARAMS_MAP.set(name, o);
|
||||||
|
}
|
||||||
|
|
||||||
|
// This compares `lhs` and `rhs`, that are two maplike with the same shape
|
||||||
|
// as PARAMS_MAP.
|
||||||
|
function compare(testname, lhs, rhs) {
|
||||||
|
equals(lhs.size, rhs.size, "Map match in size for " + testname);
|
||||||
|
var i = 0;
|
||||||
|
for (var [k, v] of lhs) {
|
||||||
|
is_true(rhs.has(k), testname + ": " + k + " exists in both maps");
|
||||||
|
var vrhs = rhs.get(k);
|
||||||
|
["defaultValue", "minValue", "maxValue", "automationRate"].forEach(
|
||||||
|
paramKey => {
|
||||||
|
equals(
|
||||||
|
v[paramKey],
|
||||||
|
vrhs[paramKey],
|
||||||
|
`Values for ${k}.${paramKey} match for ${testname}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var ac = new AudioContext();
|
||||||
|
var url = URLFromScriptsElements(["params", "processors"]);
|
||||||
|
ac.audioWorklet
|
||||||
|
.addModule(url)
|
||||||
|
.then(() => {
|
||||||
|
["set", "array", "generator"].forEach(iterable => {
|
||||||
|
test(() => {
|
||||||
|
var node = new AudioWorkletNode(ac, iterable);
|
||||||
|
compare(iterable, node.parameters, PARAMS_MAP);
|
||||||
|
}, `Creating an AudioWorkletNode with a ${iterable} for
|
||||||
|
parameter descriptor worked`);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.then(function() {
|
||||||
|
test(function() {
|
||||||
|
assert_throws_dom("InvalidStateError", function() {
|
||||||
|
new AudioWorkletNode(ac, "invalid");
|
||||||
|
});
|
||||||
|
}, `Attempting to create an AudioWorkletNode with an non
|
||||||
|
iterable for parameter descriptor should not work`);
|
||||||
|
})
|
||||||
|
.then(function() {
|
||||||
|
test(() => {
|
||||||
|
new AudioWorkletNode(ac, "no-params");
|
||||||
|
}, `Attempting to create an AudioWorkletNode from a processor
|
||||||
|
that does not have a parameterDescriptors getter should work`);
|
||||||
|
})
|
||||||
|
.then(function() {
|
||||||
|
test(function() {
|
||||||
|
assert_throws_dom("InvalidStateError", function() {
|
||||||
|
new AudioWorkletNode(ac, "duplicate-param-name");
|
||||||
|
});
|
||||||
|
}, `Attempting to create an AudioWorkletNode with two parameter
|
||||||
|
descriptor with the same name should not work`);
|
||||||
|
}).then(function() {
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Add table
Add a link
Reference in a new issue