mirror of
https://github.com/servo/servo.git
synced 2025-06-27 10:33:39 +01:00
Update web-platform-tests to revision 66e7f134c43e83a70edf4028ec4738ddfea28e15
This commit is contained in:
parent
145c3a5502
commit
d23cb97662
97 changed files with 2817 additions and 110 deletions
|
@ -1,4 +1,4 @@
|
||||||
[hit-test-floats-003.html]
|
[hit-test-floats-004.html]
|
||||||
[Miss float below something else]
|
[Miss float below something else]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
[columns-height-set-via-top-bottom.html]
|
||||||
|
[.flexbox 1]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 2]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[content-height-with-scrollbars.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,49 @@
|
||||||
|
[flex-factor-less-than-one.html]
|
||||||
|
[.flexbox 4]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 5]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 7]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 3]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 8]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 9]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 16]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 17]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 14]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 12]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 13]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 18]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 19]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 22]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 21]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 20]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[floated-flexitem.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,43 @@
|
||||||
|
[inline-flexbox-wrap-vertically-width-calculation.html]
|
||||||
|
[.inline-flexbox 13]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 12]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 11]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 10]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 16]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 15]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 14]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 3]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 2]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 7]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 6]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 5]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 4]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 8]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[font-face-range-order.html]
|
||||||
|
[CSS Fonts Module Level 3: Order of values in @font-face range descriptors]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[range-descriptor-reversed.html]
|
||||||
|
expected: TIMEOUT
|
|
@ -2,6 +2,3 @@
|
||||||
[Hit test intersecting scaled box]
|
[Hit test intersecting scaled box]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Hit test within unscaled box]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -17,3 +17,6 @@
|
||||||
[test the top of layer]
|
[test the top of layer]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[test some point of the element: top left corner]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -318,12 +318,6 @@
|
||||||
[<iframe>: separate response Content-Type: text/html */*]
|
[<iframe>: separate response Content-Type: text/html */*]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html */*]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -333,6 +327,12 @@
|
||||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
[<iframe>: separate response Content-Type: text/plain */*]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -56,6 +56,6 @@
|
||||||
[separate text/javascript;charset=windows-1252 text/javascript]
|
[separate text/javascript;charset=windows-1252 text/javascript]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[separate text/javascript ]
|
[separate text/javascript x/x]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,6 @@
|
||||||
[X-Content-Type-Options%3A%20nosniff%0C]
|
[X-Content-Type-Options%3A%20nosniff%0C]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff]
|
[Content-Type-Options%3A%20nosniff]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[traverse_the_history_3.html]
|
|
||||||
[Multiple history traversals, last would be aborted]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
[location-protocol-setter-non-broken.html]
|
||||||
|
[Set HTTP URL frame location.protocol to data]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Set HTTP URL frame location.protocol to x]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Set HTTP URL frame location.protocol to http+x]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Set HTTP URL frame location.protocol to ftp]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Set data URL frame location.protocol to data]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Set data URL frame location.protocol to file]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,16 +1,20 @@
|
||||||
[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: FAIL
|
expected: NOTRUN
|
||||||
|
|
||||||
[Element with tabindex should support autofocus]
|
[Element with tabindex should support autofocus]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
[Area element should support autofocus]
|
[Area element should support autofocus]
|
||||||
expected: FAIL
|
expected: NOTRUN
|
||||||
|
|
||||||
[Host element with delegatesFocus should support autofocus]
|
[Host element with delegatesFocus should support autofocus]
|
||||||
expected: FAIL
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[Non-HTMLElement should not support autofocus]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[iframe_sandbox_popups_escaping-3.html]
|
||||||
|
expected: CRASH
|
|
@ -1,4 +1,5 @@
|
||||||
[iframe_sandbox_popups_nonescaping-3.html]
|
[iframe_sandbox_popups_nonescaping-3.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: FAIL
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[reparent-form-during-planned-navigation-task.html]
|
||||||
|
[reparent-form-during-planned-navigation-task]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[077.html]
|
||||||
|
[ adding several types of scripts through the DOM and removing some of them confuses scheduler ]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -20,3 +20,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 44074 more errors.\n\tMax AbsError of 1.9999794363975525e+0 at index of 19632.\n\t[19632\]\t9.9997943639755249e-1\t-1.0000000000000000e+0\t1.9999794363975525e+0\t1.9999794363975525e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 3528.\n\t[3528\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-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 44074 more errors.\n\tMax AbsError of 1.9999794363975525e+0 at index of 19632.\n\t[19632\]\t9.9997943639755249e-1\t-1.0000000000000000e+0\t1.9999794363975525e+0\t1.9999794363975525e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 3528.\n\t[3528\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-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 40518 more errors.\n\tMax AbsError of 1.9901288747787476e+0 at index of 14838.\n\t[14838\]\t9.9751412868499756e-1\t-9.9261474609375000e-1\t1.9901288747787476e+0\t2.0049358349858575e+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
|
||||||
|
|
||||||
|
|
|
@ -35,3 +35,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\]\t-1.9088364451950678e+29\t5.6332010030746460e-1\t1.9088364451950678e+29\t3.3885466613976843e+29\t9.0957000000000003e-5\n\t[31081\]\t4.5805644201849620e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 1.9088364451950678e+29 at index of 31080.\n\tMax RelError of 3.3885466613976843e+29 at index of 31080.\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\]\t-1.9088364451950678e+29\t5.6332010030746460e-1\t1.9088364451950678e+29\t3.3885466613976843e+29\t9.0957000000000003e-5\n\t[31081\]\t4.5805644201849620e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 1.9088364451950678e+29 at index of 31080.\n\tMax RelError of 3.3885466613976843e+29 at index of 31080.\n]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[X SNR (45.018639907416656 dB) is not greater than or equal to 85.58. Got 45.018639907416656.]
|
||||||
|
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.4359397937369067e-7\t5.6332010030746460e-1\t5.6331995671348523e-1\t9.9999974509345702e-1\t9.0957000000000003e-5\n\t[31081\]\t4.5788828620277723e-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
|
||||||
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
[017.html]
|
|
||||||
expected: TIMEOUT
|
|
||||||
[origin of the script that invoked the method, about:blank]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
[017.html]
|
|
||||||
expected: TIMEOUT
|
|
||||||
[origin of the script that invoked the method, about:blank]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
|
@ -131441,6 +131441,19 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"auto-height-column-with-border-and-padding.html": [
|
||||||
|
"2151c21f61e915883a11bb78d7f785bdc5f5606c",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-flexbox/reference/auto-height-column-with-border-and-padding-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"auto-height-with-flex.html": [
|
"auto-height-with-flex.html": [
|
||||||
"9151f8cd0979d287dec542e4034bbf3bacc0a8d3",
|
"9151f8cd0979d287dec542e4034bbf3bacc0a8d3",
|
||||||
[
|
[
|
||||||
|
@ -131480,6 +131493,19 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"content-height-with-scrollbars.html": [
|
||||||
|
"5a63322da7dbeb007aaace719cdc652e30338b9c",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-flexbox/reference/content-height-with-scrollbars-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css-box-justify-content.html": [
|
"css-box-justify-content.html": [
|
||||||
"d5c7244f08dcad0b0955290804ec5959754a963d",
|
"d5c7244f08dcad0b0955290804ec5959754a963d",
|
||||||
[
|
[
|
||||||
|
@ -135941,6 +135967,19 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"floated-flexitem.html": [
|
||||||
|
"e2050034f48cb51eb7eeb75acb97ed72d5755a2f",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-flexbox/reference/floated-flexitem-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"gap-001-lr.html": [
|
"gap-001-lr.html": [
|
||||||
"99333ef381664fe2be631e4853c97fc1a98138cc",
|
"99333ef381664fe2be631e4853c97fc1a98138cc",
|
||||||
[
|
[
|
||||||
|
@ -138690,6 +138729,23 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"range-descriptor-reversed.html": [
|
||||||
|
"71b424d5fe7f09a4bd5872656ac77fa67713d071",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-fonts/matching/range-descriptor-reversed-ref.html",
|
||||||
|
"=="
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/css/css-fonts/matching/stretch-distance-over-weight-distance-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"stretch-distance-over-weight-distance.html": [
|
"stretch-distance-over-weight-distance.html": [
|
||||||
"e899c8b4d0df867e56a7409adda4dbfafd69260d",
|
"e899c8b4d0df867e56a7409adda4dbfafd69260d",
|
||||||
[
|
[
|
||||||
|
@ -153369,6 +153425,84 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"text-overflow-scroll-001.html": [
|
||||||
|
"91c04fda479cccd5deb367bd813403b7c6c107ac",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-overflow/reference/text-overflow-scroll-001-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"text-overflow-scroll-rtl-001.html": [
|
||||||
|
"81f88085c908c1d99e7f1d712be9381cec2e9cce",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-overflow/reference/text-overflow-scroll-rtl-001-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"text-overflow-scroll-vertical-lr-001.html": [
|
||||||
|
"f555e8644fdde6b3c274d6403067d139ea7d47ba",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-overflow/reference/text-overflow-scroll-vertical-lr-001-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"text-overflow-scroll-vertical-lr-rtl-001.html": [
|
||||||
|
"0d3e537fb24c4701e8d48bbfdc36c58aa914abd3",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-overflow/reference/text-overflow-scroll-vertical-lr-rtl-001-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"text-overflow-scroll-vertical-rl-001.html": [
|
||||||
|
"3c846e4f82cfb75902ee2e825916b949f5102431",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-overflow/reference/text-overflow-scroll-vertical-lr-001-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"text-overflow-scroll-vertical-rl-rtl-001.html": [
|
||||||
|
"c21031d49c6342ed6d419e3a3e1c021f3f28a906",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-overflow/reference/text-overflow-scroll-vertical-lr-rtl-001-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"webkit-line-clamp": {
|
"webkit-line-clamp": {
|
||||||
"webkit-line-clamp-with-line-height.tentative.html": [
|
"webkit-line-clamp-with-line-height.tentative.html": [
|
||||||
"94a62a5b3fa1291683e4a653d0dd5cf71eea0aca",
|
"94a62a5b3fa1291683e4a653d0dd5cf71eea0aca",
|
||||||
|
@ -227903,7 +228037,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"image-loading-subpixel-clip.html": [
|
"image-loading-subpixel-clip.html": [
|
||||||
"de62d7d73599c144228b82139654660d2e8b1bfc",
|
"594d9bebe4330f871f535f6bd309fa9d84388095",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
[
|
[
|
||||||
|
@ -284657,10 +284791,18 @@
|
||||||
"fc8fe9f991d1df8b41a9ab6932f5eefa6553282d",
|
"fc8fe9f991d1df8b41a9ab6932f5eefa6553282d",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"auto-height-column-with-border-and-padding-ref.html": [
|
||||||
|
"a5ed1085464e32169735a3dbcbf56eab176e5667",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"auto-height-with-flex-ref.html": [
|
"auto-height-with-flex-ref.html": [
|
||||||
"d56fe356dcbb6ce87414a2075b5f47c515628016",
|
"d56fe356dcbb6ce87414a2075b5f47c515628016",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"content-height-with-scrollbars-ref.html": [
|
||||||
|
"8a1484f6934dc3e30aae299380c82308cd1fec42",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"css-box-justify-content-ref.html": [
|
"css-box-justify-content-ref.html": [
|
||||||
"e8377473fdef6f93bdf0e1e0e78fd33f01c93e82",
|
"e8377473fdef6f93bdf0e1e0e78fd33f01c93e82",
|
||||||
[]
|
[]
|
||||||
|
@ -284733,6 +284875,10 @@
|
||||||
"0a8869a1452962b4895e60d8cebe987b55499666",
|
"0a8869a1452962b4895e60d8cebe987b55499666",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"floated-flexitem-ref.html": [
|
||||||
|
"ae0cd2e9608cfee74f8e269e588642229f5f8bf6",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"item-with-max-height-and-scrollbar-ref.html": [
|
"item-with-max-height-and-scrollbar-ref.html": [
|
||||||
"b0b2469c2c3deb13038c6e74114d493c50843b17",
|
"b0b2469c2c3deb13038c6e74114d493c50843b17",
|
||||||
[]
|
[]
|
||||||
|
@ -285535,6 +285681,10 @@
|
||||||
"ebbef02f628baa63b2cb565f0f2850899d54ae65",
|
"ebbef02f628baa63b2cb565f0f2850899d54ae65",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"range-descriptor-reversed-ref.html": [
|
||||||
|
"e59dc50dc757ddc746e73615953372c4a3e92d3c",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"resources": {
|
"resources": {
|
||||||
"variabletest_matching.ttf": [
|
"variabletest_matching.ttf": [
|
||||||
"89ed12a2c03531a1e8f764e3a2365824a8f40a12",
|
"89ed12a2c03531a1e8f764e3a2365824a8f40a12",
|
||||||
|
@ -294685,6 +294835,22 @@
|
||||||
"1c9e660331992b7377f52b86c9dc87b8b0980ae9",
|
"1c9e660331992b7377f52b86c9dc87b8b0980ae9",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"text-overflow-scroll-001-ref.html": [
|
||||||
|
"18836f32040913e370410cd4f6cf6e96d0befdee",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"text-overflow-scroll-rtl-001-ref.html": [
|
||||||
|
"4be95f4fb9e5ebd7f10f3d67fefcd160e936d4c4",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"text-overflow-scroll-vertical-lr-001-ref.html": [
|
||||||
|
"8b671171e612401df3476812ce6b95fe92c75658",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"text-overflow-scroll-vertical-lr-rtl-001-ref.html": [
|
||||||
|
"fff3dec59cb494d98ee87660ded2b9ee05a5e198",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"webkit-line-clamp-001-ref.html": [
|
"webkit-line-clamp-001-ref.html": [
|
||||||
"ef28e01dac0223c9a2768d3fd1415fb9ef2f1c6b",
|
"ef28e01dac0223c9a2768d3fd1415fb9ef2f1c6b",
|
||||||
[]
|
[]
|
||||||
|
@ -298125,7 +298291,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"line-breaking-atomic-005-ref.html": [
|
"line-breaking-atomic-005-ref.html": [
|
||||||
"e22d482299b55cc1f5c833eb75b2b635c17c91ab",
|
"bd88329ad0eac9866ea4b195ebad6327ec83007c",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"line-breaking-atomic-007-ref.html": [
|
"line-breaking-atomic-007-ref.html": [
|
||||||
|
@ -311145,7 +311311,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"css-metadata.md": [
|
"css-metadata.md": [
|
||||||
"e77681be4fac8c4ef7d9e8b634cf8caad514d144",
|
"9d8ebeddff2839265d38020fae519bd678d7b473",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"css-user-styles.md": [
|
"css-user-styles.md": [
|
||||||
|
@ -323363,7 +323529,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"image-loading-subpixel-clip-ref.html": [
|
"image-loading-subpixel-clip-ref.html": [
|
||||||
"4b3c2d708a88a5451e3eef922dac44e1eae5b433",
|
"f841dba31bd255b17afa8a1c7129b6998294c154",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"image.png": [
|
"image.png": [
|
||||||
|
@ -326978,7 +327144,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"wake-lock.idl": [
|
"wake-lock.idl": [
|
||||||
"85d1863fa6f6d1422e00b430ed2b04e3619a19ec",
|
"429b80e0668aa2607ef59e32b2c3c674974bd0c5",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"wasm-js-api.idl": [
|
"wasm-js-api.idl": [
|
||||||
|
@ -327038,7 +327204,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"webrtc-stats.idl": [
|
"webrtc-stats.idl": [
|
||||||
"514d09f15a60446ad7a6ba78bd1288a047085af1",
|
"aaadda29b8a5318ae7bafb10947b2c9b8a108620",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"webrtc-svc.idl": [
|
"webrtc-svc.idl": [
|
||||||
|
@ -328862,6 +329028,16 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"native-io": {
|
||||||
|
"META.yml": [
|
||||||
|
"22a45c20c9b847433b0f7d9b793d8c1a96f17336",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"README.md": [
|
||||||
|
"eb1a8d268cebf1f308925cbc1fe30a2478b9fa2c",
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
"navigation-timing": {
|
"navigation-timing": {
|
||||||
"META.yml": [
|
"META.yml": [
|
||||||
"bfb0e0f1f67a9c6aa2e7e921b09e85f8d970b290",
|
"bfb0e0f1f67a9c6aa2e7e921b09e85f8d970b290",
|
||||||
|
@ -380610,6 +380786,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"change-column-flex-width.html": [
|
||||||
|
"322af4f9b93aa86b6051b3ff54a673fe85856c6b",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"column-flex-child-with-overflow-scroll.html": [
|
"column-flex-child-with-overflow-scroll.html": [
|
||||||
"4c84a258658d8a0576a03e0e430677945e6eb005",
|
"4c84a258658d8a0576a03e0e430677945e6eb005",
|
||||||
[
|
[
|
||||||
|
@ -380617,6 +380800,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"columns-height-set-via-top-bottom.html": [
|
||||||
|
"80cdcc6974df9bb0b79bc91c2d4dc0aad881cf4d",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"display_flex_exist.html": [
|
"display_flex_exist.html": [
|
||||||
"97090fbbeaff4394c015c471a213face27a43823",
|
"97090fbbeaff4394c015c471a213face27a43823",
|
||||||
[
|
[
|
||||||
|
@ -380638,6 +380828,20 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"flex-column-relayout-assert.html": [
|
||||||
|
"b116987ad3ae6b130dd708fef2df83b17a5e117f",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"flex-factor-less-than-one.html": [
|
||||||
|
"320ddefc2f458d89677f1ccfb514a7344b5069d6",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"flex-minimum-height-flex-items-009.html": [
|
"flex-minimum-height-flex-items-009.html": [
|
||||||
"718386af02069fa1a3fff0ee5aaa10415ef4b23a",
|
"718386af02069fa1a3fff0ee5aaa10415ef4b23a",
|
||||||
[
|
[
|
||||||
|
@ -381221,6 +381425,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"inline-flexbox-wrap-vertically-width-calculation.html": [
|
||||||
|
"e9010cf96cff8d131e0319168d7570285331dd2a",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"order_value.html": [
|
"order_value.html": [
|
||||||
"ca9af99b939f77835933ccc76de5185b656f5977",
|
"ca9af99b939f77835933ccc76de5185b656f5977",
|
||||||
[
|
[
|
||||||
|
@ -381574,6 +381785,13 @@
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"font-face-range-order.html": [
|
||||||
|
"ed0508a18ff7c4d2e447f6227146f294950fe1e1",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"font-feature-settings-serialization-001.html": [
|
"font-feature-settings-serialization-001.html": [
|
||||||
"031dd7d33008ebd5475edba35fe20a89d4445c66",
|
"031dd7d33008ebd5475edba35fe20a89d4445c66",
|
||||||
[
|
[
|
||||||
|
@ -382098,7 +382316,7 @@
|
||||||
],
|
],
|
||||||
"variations": {
|
"variations": {
|
||||||
"at-font-face-descriptors.html": [
|
"at-font-face-descriptors.html": [
|
||||||
"cd1c22b01ce0a6b84af2cf501e3446287faa97a6",
|
"7083639ddf6066794e7b27c8f5a71a9eb20c1dc1",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -434427,6 +434645,13 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"reparent-form-during-planned-navigation-task.html": [
|
||||||
|
"6b50bf599b888b1c3273a4e311ba6af69d67e86b",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"submission-checks.window.js": [
|
"submission-checks.window.js": [
|
||||||
"e242ce830a618cb1bff17c80a6c6559250c1a16d",
|
"e242ce830a618cb1bff17c80a6c6559250c1a16d",
|
||||||
[
|
[
|
||||||
|
@ -449498,6 +449723,395 @@
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"native-io": {
|
||||||
|
"close_async.tentative.https.any.js": [
|
||||||
|
"a2337e50dbcac793678981ebd47c504f0d4b0d18",
|
||||||
|
[
|
||||||
|
"native-io/close_async.tentative.https.any.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: close()."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"native-io/close_async.tentative.https.any.serviceworker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: close()."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"native-io/close_async.tentative.https.any.sharedworker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: close()."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"native-io/close_async.tentative.https.any.worker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: close()."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"close_sync.tentative.https.any.js": [
|
||||||
|
"001fa57a2c0299e3dabeaa938d7474198acb6e3d",
|
||||||
|
[
|
||||||
|
"native-io/close_sync.tentative.https.any.worker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"Synchronous NativeIO API: close()."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"!default,dedicatedworker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"concurrent_io_async.tentative.https.any.js": [
|
||||||
|
"22eea20c3121dce3a7a730d262d94d7a1ddf7848",
|
||||||
|
[
|
||||||
|
"native-io/concurrent_io_async.tentative.https.any.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: close()."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"native-io/concurrent_io_async.tentative.https.any.serviceworker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: close()."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"native-io/concurrent_io_async.tentative.https.any.sharedworker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: close()."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"native-io/concurrent_io_async.tentative.https.any.worker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: close()."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"delete_async_basic.tentative.https.any.js": [
|
||||||
|
"1229ecf0f3db12bd32e50b8490eaeabd7069f1e6",
|
||||||
|
[
|
||||||
|
"native-io/delete_async_basic.tentative.https.any.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: File deletion is reflected in listing."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"native-io/delete_async_basic.tentative.https.any.serviceworker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: File deletion is reflected in listing."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"native-io/delete_async_basic.tentative.https.any.sharedworker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: File deletion is reflected in listing."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"native-io/delete_async_basic.tentative.https.any.worker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: File deletion is reflected in listing."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"delete_sync_basic.tentative.https.any.js": [
|
||||||
|
"c9c600d6b167792096cb816b640d398117ceec90",
|
||||||
|
[
|
||||||
|
"native-io/delete_sync_basic.tentative.https.any.worker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"Synchronous NativeIO API: File deletion is reflected in listing."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"!default,dedicatedworker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"open_getAll_async_basic.tentative.https.any.js": [
|
||||||
|
"0487ef5e2f2f2908b82d78994ba2675cf9e1c2df",
|
||||||
|
[
|
||||||
|
"native-io/open_getAll_async_basic.tentative.https.any.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: File creation is reflected in listing."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"native-io/open_getAll_async_basic.tentative.https.any.serviceworker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: File creation is reflected in listing."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"native-io/open_getAll_async_basic.tentative.https.any.sharedworker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: File creation is reflected in listing."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"native-io/open_getAll_async_basic.tentative.https.any.worker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: File creation is reflected in listing."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"open_getAll_sync_basic.tentative.https.any.js": [
|
||||||
|
"64fa90182a6191d1a9fb6f46906a371c351161bb",
|
||||||
|
[
|
||||||
|
"native-io/open_getAll_sync_basic.tentative.https.any.worker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"Synchronous NativeIO API: File creation is reflected in listing."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"!default,dedicatedworker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"read_write_async_basic.tentative.https.any.js": [
|
||||||
|
"cf2a3f56bc5db287b43c4b8c1ad81b6ed4ba8720",
|
||||||
|
[
|
||||||
|
"native-io/read_write_async_basic.tentative.https.any.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: Written bytes are read back."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"native-io/read_write_async_basic.tentative.https.any.serviceworker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: Written bytes are read back."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"native-io/read_write_async_basic.tentative.https.any.sharedworker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: Written bytes are read back."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"native-io/read_write_async_basic.tentative.https.any.worker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"NativeIO API: Written bytes are read back."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"read_write_sync_basic.tentative.https.any.js": [
|
||||||
|
"f6265aa83f5792f95455e3a5e298f7fb00c72226",
|
||||||
|
[
|
||||||
|
"native-io/read_write_sync_basic.tentative.https.any.worker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"Synchronous NativeIO API: Written bytes are read back."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"!default,dedicatedworker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
"navigation-timing": {
|
"navigation-timing": {
|
||||||
"buffered-flag.window.js": [
|
"buffered-flag.window.js": [
|
||||||
"c6b1e0bc8558a2908d6471fff0e7f5351d4a0022",
|
"c6b1e0bc8558a2908d6471fff0e7f5351d4a0022",
|
||||||
|
@ -463611,6 +464225,15 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"pointerevent_lostpointercapture_for_disconnected_node_in_shadow_dom.html": [
|
||||||
|
"f92daeb02e7c39fdedb60c58cd3eeb9085b7703a",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"testdriver": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
"pointerevent_lostpointercapture_is_first.html": [
|
"pointerevent_lostpointercapture_is_first.html": [
|
||||||
"6ce0f3e59a04db4ecf23d9fd60b57164ceb67f85",
|
"6ce0f3e59a04db4ecf23d9fd60b57164ceb67f85",
|
||||||
[
|
[
|
||||||
|
@ -463645,6 +464268,24 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"pointerevent_pointercapture-in-custom-element.html": [
|
||||||
|
"e8f143b309f2dbdda19c90e1aef1865ecf889f47",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"testdriver": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"pointerevent_pointercapture-in-shadow-dom.html": [
|
||||||
|
"8279665f97b0ee522b9bd5710d5ec5ad677df85a",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"testdriver": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
"pointerevent_pointercapture-not-lost-in-chorded-buttons.html": [
|
"pointerevent_pointercapture-not-lost-in-chorded-buttons.html": [
|
||||||
"02a6af0a4b89abf1c0c51844ace15b54e91966e9",
|
"02a6af0a4b89abf1c0c51844ace15b54e91966e9",
|
||||||
[
|
[
|
||||||
|
@ -488654,6 +489295,15 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"scripted": {
|
||||||
|
"textpath-textlength-text-anchor-001.tentative.svg": [
|
||||||
|
"6c4f50fe871b0126548557976e8391c1d973b5fe",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"types": {
|
"types": {
|
||||||
|
@ -489604,7 +490254,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"click_events_on_input.html": [
|
"click_events_on_input.html": [
|
||||||
"731d13934f0d38505ae19334f0fa39a130021562",
|
"2f380eb4514bc79df891b409c9007271c7f66923",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[hit-test-floats-003.html]
|
[hit-test-floats-004.html]
|
||||||
[Miss float below something else]
|
[Miss float below something else]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
[columns-height-set-via-top-bottom.html]
|
||||||
|
[.flexbox 1]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 2]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[content-height-with-scrollbars.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,49 @@
|
||||||
|
[flex-factor-less-than-one.html]
|
||||||
|
[.flexbox 4]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 5]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 7]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 3]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 8]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 9]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 16]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 17]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 14]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 12]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 13]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 18]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 19]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 22]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 21]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.flexbox 20]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[floated-flexitem.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,43 @@
|
||||||
|
[inline-flexbox-wrap-vertically-width-calculation.html]
|
||||||
|
[.inline-flexbox 13]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 12]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 11]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 10]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 16]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 15]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 14]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 3]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 2]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 7]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 6]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 5]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 4]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[.inline-flexbox 8]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[font-face-range-order.html]
|
||||||
|
[CSS Fonts Module Level 3: Order of values in @font-face range descriptors]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[range-descriptor-reversed.html]
|
||||||
|
expected: TIMEOUT
|
|
@ -2,6 +2,3 @@
|
||||||
[Hit test intersecting scaled box]
|
[Hit test intersecting scaled box]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Hit test within unscaled box]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -21,3 +21,6 @@
|
||||||
[test the top of layer]
|
[test the top of layer]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[test some point of the element: top left corner]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -318,12 +318,6 @@
|
||||||
[<iframe>: separate response Content-Type: text/html */*]
|
[<iframe>: separate response Content-Type: text/html */*]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html */*]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -333,6 +327,12 @@
|
||||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
[<iframe>: separate response Content-Type: text/plain */*]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -56,6 +56,6 @@
|
||||||
[separate text/javascript;charset=windows-1252 text/javascript]
|
[separate text/javascript;charset=windows-1252 text/javascript]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[separate text/javascript ]
|
[separate text/javascript x/x]
|
||||||
expected: FAIL
|
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
|
||||||
|
|
||||||
[X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff]
|
[Content-Type-Options%3A%20nosniff]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[traverse_the_history_3.html]
|
|
||||||
[Multiple history traversals, last would be aborted]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -18,3 +18,9 @@
|
||||||
[Set HTTP URL frame location.protocol to ftp]
|
[Set HTTP URL frame location.protocol to ftp]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Set data URL frame location.protocol to data]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Set data URL frame location.protocol to file]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,20 @@
|
||||||
[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: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||||
expected: FAIL
|
expected: NOTRUN
|
||||||
|
|
||||||
[Area element should support autofocus]
|
[Area element should support autofocus]
|
||||||
expected: FAIL
|
expected: NOTRUN
|
||||||
|
|
||||||
[Host element with delegatesFocus should support autofocus]
|
[Host element with delegatesFocus should support autofocus]
|
||||||
expected: FAIL
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[Non-HTMLElement should not support autofocus]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[iframe_sandbox_popups_escaping-3.html]
|
[iframe_sandbox_popups_escaping-3.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
[iframe_sandbox_popups_nonescaping-3.html]
|
[iframe_sandbox_popups_nonescaping-3.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: FAIL
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[reparent-form-during-planned-navigation-task.html]
|
||||||
|
[reparent-form-during-planned-navigation-task]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[077.html]
|
||||||
|
[ adding several types of scripts through the DOM and removing some of them confuses scheduler ]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -89,3 +89,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 44074 more errors.\n\tMax AbsError of 1.9999794363975525e+0 at index of 19632.\n\t[19632\]\t9.9997943639755249e-1\t-1.0000000000000000e+0\t1.9999794363975525e+0\t1.9999794363975525e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 3528.\n\t[3528\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-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 44074 more errors.\n\tMax AbsError of 1.9999794363975525e+0 at index of 19632.\n\t[19632\]\t9.9997943639755249e-1\t-1.0000000000000000e+0\t1.9999794363975525e+0\t1.9999794363975525e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 3528.\n\t[3528\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-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 40518 more errors.\n\tMax AbsError of 1.9901288747787476e+0 at index of 14838.\n\t[14838\]\t9.9751412868499756e-1\t-9.9261474609375000e-1\t1.9901288747787476e+0\t2.0049358349858575e+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
|
||||||
|
|
||||||
|
|
|
@ -266,3 +266,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\]\t-1.9088364451950678e+29\t5.6332010030746460e-1\t1.9088364451950678e+29\t3.3885466613976843e+29\t9.0957000000000003e-5\n\t[31081\]\t4.5805644201849620e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 1.9088364451950678e+29 at index of 31080.\n\tMax RelError of 3.3885466613976843e+29 at index of 31080.\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\]\t-1.9088364451950678e+29\t5.6332010030746460e-1\t1.9088364451950678e+29\t3.3885466613976843e+29\t9.0957000000000003e-5\n\t[31081\]\t4.5805644201849620e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 1.9088364451950678e+29 at index of 31080.\n\tMax RelError of 3.3885466613976843e+29 at index of 31080.\n]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[X SNR (45.018639907416656 dB) is not greater than or equal to 85.58. Got 45.018639907416656.]
|
||||||
|
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.4359397937369067e-7\t5.6332010030746460e-1\t5.6331995671348523e-1\t9.9999974509345702e-1\t9.0957000000000003e-5\n\t[31081\]\t4.5788828620277723e-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
|
||||||
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
[017.html]
|
|
||||||
expected: TIMEOUT
|
|
||||||
[origin of the script that invoked the method, about:blank]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
[017.html]
|
|
||||||
expected: TIMEOUT
|
|
||||||
[origin of the script that invoked the method, about:blank]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>CSS Flexbox: auto-height with border and padding</title>
|
||||||
|
<link href="support/flexbox.css" rel="stylesheet">
|
||||||
|
<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/#valdef-flex-direction-column-reverse">
|
||||||
|
<link rel="match" href="reference/auto-height-column-with-border-and-padding-ref.html">
|
||||||
|
Tests that auto-height column flexboxes with border and padding correctly size their height to their content.
|
||||||
|
<div class="flexbox column" style="border: 5px solid salmon; padding: 5px; overflow: scroll">
|
||||||
|
<div class="flex-one-one-auto" style="min-height: 0">
|
||||||
|
<div style="height: 50px; background-color: pink">
|
||||||
|
<div>
|
||||||
|
</div>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>CSS Flexbox: flex items inside flex-direction:column</title>
|
||||||
|
<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#flex-direction-property">
|
||||||
|
<meta name="assert" content="This test ensures that when main axis is logical y, layout flex items before getting intrinsic size."/>
|
||||||
|
<link href="support/flexbox.css" rel="stylesheet">
|
||||||
|
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="/resources/check-layout-th.js"></script>
|
||||||
|
<p>There should be a green square below. No red.</p>
|
||||||
|
<!-- #container is just here to make sure the test fails more reliably visually if the bug is present. -->
|
||||||
|
<div id="container" style="width:500px;">
|
||||||
|
<div id="flex" style="display:flex; flex-direction:column; width:70px;" data-expected-height="100">
|
||||||
|
<div style="background:red;" data-expected-height="100">
|
||||||
|
<div style="float:left; width:50px; height:100px; background:green;"></div>
|
||||||
|
<div style="float:left; width:50px; height:100px; background:green;"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
document.body.offsetTop;
|
||||||
|
var flex = document.getElementById("flex");
|
||||||
|
flex.style.width = "100px";
|
||||||
|
checkLayout("#container");
|
||||||
|
</script>
|
|
@ -0,0 +1,51 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<title>Proper size of flex item in a column flexbox with height set via top/bottom.</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-flexbox-1/#propdef-flex-flow">
|
||||||
|
<meta name="assert" content="This test ensures that when a 'display: flex' element with 'flex-flow: column' is itself sized by fitting to another container via setting position absolute + top, bottom, right, left all to 0, its flex items do not have natural size."/>
|
||||||
|
<style>
|
||||||
|
.container {
|
||||||
|
position: relative;
|
||||||
|
height: 100px;
|
||||||
|
width: 100px;
|
||||||
|
border: 2px solid orange;
|
||||||
|
}
|
||||||
|
.flexbox {
|
||||||
|
flex-direction: column;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
.flexbox > :nth-child(1) {
|
||||||
|
background-color: lightblue;
|
||||||
|
}
|
||||||
|
.flexbox > :nth-child(2) {
|
||||||
|
background-color: lightgreen;
|
||||||
|
}
|
||||||
|
</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 id=log></div>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<div data-expected-height=100 class="flexbox column">
|
||||||
|
<div data-expected-height=30 data-expected-width=80 style="height: 30px"></div>
|
||||||
|
<div data-expected-height=50 data-expected-width=80 style="flex: 1;"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<div class="flexbox column wrap">
|
||||||
|
<div data-expected-height=50 data-expected-width=40 style="height: 50px"></div>
|
||||||
|
<div data-expected-height=80 data-expected-width=40 style="flex: 1 50px;"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,47 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<title>Ensure flexbox content-size excludes scrollbar.</title>
|
||||||
|
<link href="support/flexbox.css" rel="stylesheet">
|
||||||
|
<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/">
|
||||||
|
<link rel="help" href="https://www.w3.org/TR/css-overflow-4/#classic-scrollbars">
|
||||||
|
<link rel="match" href="reference/content-height-with-scrollbars-ref.html">
|
||||||
|
<meta name="assert" content="This test ensures that content-size of a flexbox with scrollbars looks correct."/>
|
||||||
|
<style>
|
||||||
|
.flexbox {
|
||||||
|
height: 100px;
|
||||||
|
overflow: scroll;
|
||||||
|
}
|
||||||
|
.flexbox > div {
|
||||||
|
flex: none;
|
||||||
|
}
|
||||||
|
.flexbox > :nth-child(1) {
|
||||||
|
background-color: lightgreen;
|
||||||
|
}
|
||||||
|
.flexbox > :nth-child(2) {
|
||||||
|
background-color: lightblue;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<body>
|
||||||
|
<p>This tests that when setting the height of a flex item to a percentage
|
||||||
|
height, we use the content height with scrollbars. The content should not be
|
||||||
|
scrollable in any of the test cases below.</p>
|
||||||
|
|
||||||
|
<div class="flexbox column">
|
||||||
|
<div style="height: 100%"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox column">
|
||||||
|
<div style="height: 100%; box-sizing: border-box; border: 5px solid green"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox column wrap">
|
||||||
|
<div style="height: 50px; width: 50%;"></div>
|
||||||
|
<div style="height: 50px; width: 50%; background-color: lightblue"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox column wrap align-content-flex-start" style="height: auto; max-height: 100px; padding: 10px;">
|
||||||
|
<div style="height: 50px; width: 300px;"></div>
|
||||||
|
<div style="height: 50px; width: 300px; background-color: lightblue"></div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,27 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>CSS Flexbox: Column height with padding</title>
|
||||||
|
<link href="support/flexbox.css" rel="stylesheet">
|
||||||
|
<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/#item-margins">
|
||||||
|
<meta name="assert" content="This test checks that height of flex container works with padding">
|
||||||
|
<style>
|
||||||
|
.flexbox {
|
||||||
|
background-color: green;
|
||||||
|
}
|
||||||
|
</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 id=log></div>
|
||||||
|
|
||||||
|
<p>You should see a green rectangle, 40px high.</p>
|
||||||
|
|
||||||
|
<div class="flexbox column" data-expected-height="40">
|
||||||
|
<div id="child" data-expected-height="40"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
document.getElementById('child').offsetHeight;
|
||||||
|
document.getElementById('child').style.padding = "20px";
|
||||||
|
</script>
|
|
@ -0,0 +1,180 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>CSS Flexbox: flex factors less than one</title>
|
||||||
|
<link href="support/flexbox.css" rel="stylesheet">
|
||||||
|
<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#propdef-flex-grow">
|
||||||
|
<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#propdef-flex-shrink">
|
||||||
|
<meta name="assert" content="flex-grow and flex-shrink factors less than 1 work">
|
||||||
|
<style>
|
||||||
|
|
||||||
|
html, body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
height: 100px;
|
||||||
|
width: 100px;
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.child-flex-grow-0-75 {
|
||||||
|
background-color: lime;
|
||||||
|
flex-grow: 0.75;
|
||||||
|
}
|
||||||
|
|
||||||
|
.child-flex-grow-0-5 {
|
||||||
|
background-color: green;
|
||||||
|
flex-grow: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.child-flex-grow-0-25 {
|
||||||
|
background-color: red;
|
||||||
|
flex-grow: 0.25;
|
||||||
|
}
|
||||||
|
|
||||||
|
.child-flex-shrink-0-5 {
|
||||||
|
background-color: green;
|
||||||
|
flex-shrink: 0.5;
|
||||||
|
width: 200px;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.child-flex-shrink-0-25 {
|
||||||
|
background-color: red;
|
||||||
|
flex-shrink: 0.25;
|
||||||
|
width: 200px;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.basis-0 {
|
||||||
|
flex-basis: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.basis {
|
||||||
|
flex-basis: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.basis-big {
|
||||||
|
flex-basis: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.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');">
|
||||||
|
<div id=log></div>
|
||||||
|
|
||||||
|
<div class="flexbox container">
|
||||||
|
<div class="child-flex-grow-0-5" data-expected-width="50"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox container">
|
||||||
|
<div class="child-flex-grow-0-5" data-expected-width="50"></div>
|
||||||
|
<div class="child-flex-grow-0-25" data-expected-width="25"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox container column">
|
||||||
|
<div class="child-flex-grow-0-5" data-expected-height="50"></div>
|
||||||
|
<div class="child-flex-grow-0-25" data-expected-height="25"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox container column vertical">
|
||||||
|
<div class="child-flex-grow-0-5 " data-expected-width="50"></div>
|
||||||
|
<div class="child-flex-grow-0-25 " data-expected-width="25"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox container vertical">
|
||||||
|
<div class="child-flex-grow-0-5 " data-expected-height="50"></div>
|
||||||
|
<div class="child-flex-grow-0-25 " data-expected-height="25"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox container">
|
||||||
|
<div class="child-flex-grow-0-5 basis" data-expected-width="50"></div>
|
||||||
|
<div class="child-flex-grow-0-25 basis" data-expected-width="40"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox container column">
|
||||||
|
<div class="child-flex-grow-0-5 basis" data-expected-height="50"></div>
|
||||||
|
<div class="child-flex-grow-0-25 basis" data-expected-height="40"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox container vertical">
|
||||||
|
<div class="child-flex-grow-0-5 basis" data-expected-height="50"></div>
|
||||||
|
<div class="child-flex-grow-0-25 basis" data-expected-height="40"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox container column vertical">
|
||||||
|
<div class="child-flex-grow-0-5 basis" data-expected-width="50"></div>
|
||||||
|
<div class="child-flex-grow-0-25 basis" data-expected-width="40"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- And now, the shrink cases -->
|
||||||
|
<div class="flexbox container">
|
||||||
|
<div class="child-flex-shrink-0-5" data-expected-width="150"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox container">
|
||||||
|
<div class="child-flex-shrink-0-5" data-expected-width="50"></div>
|
||||||
|
<div class="child-flex-shrink-0-25" data-expected-width="125"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox container column">
|
||||||
|
<div class="child-flex-shrink-0-5" data-expected-height="50"></div>
|
||||||
|
<div class="child-flex-shrink-0-25" data-expected-height="125"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox container column vertical">
|
||||||
|
<div class="child-flex-shrink-0-5 " data-expected-width="50"></div>
|
||||||
|
<div class="child-flex-shrink-0-25 " data-expected-width="125"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox container vertical">
|
||||||
|
<div class="child-flex-shrink-0-5 " data-expected-height="50"></div>
|
||||||
|
<div class="child-flex-shrink-0-25 " data-expected-height="125"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox container">
|
||||||
|
<div class="child-flex-shrink-0-5 basis-big" data-expected-width="50"></div>
|
||||||
|
<div class="child-flex-shrink-0-25 basis-big" data-expected-width="75"></div>
|
||||||
|
</div>
|
||||||
|
<div class="flexbox container column">
|
||||||
|
<div class="child-flex-shrink-0-5 basis-big" data-expected-height="50"></div>
|
||||||
|
<div class="child-flex-shrink-0-25 basis-big" data-expected-height="75"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox container vertical">
|
||||||
|
<div class="child-flex-shrink-0-5 basis-big" data-expected-height="50"></div>
|
||||||
|
<div class="child-flex-shrink-0-25 basis-big" data-expected-height="75"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox container column vertical">
|
||||||
|
<div class="child-flex-shrink-0-5 basis-big" data-expected-width="50"></div>
|
||||||
|
<div class="child-flex-shrink-0-25 basis-big" data-expected-width="75"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Interaction of min-width: auto with fractional flex basis -->
|
||||||
|
<div class="flexbox container" style="background-color: red;">
|
||||||
|
<div class="child-flex-grow-0-25 basis-0" style="background-color: green;" data-expected-width="10"></div>
|
||||||
|
<div class="child-flex-grow-0-75 basis-0" data-expected-width="90">
|
||||||
|
<div style="width: 90px;"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- centering should still center; same for other justify-content values -->
|
||||||
|
<div class="flexbox container justify-content-center">
|
||||||
|
<div class="child-flex-grow-0-5" data-expected-width="50" data-offset-x="26"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox container justify-content-space-around">
|
||||||
|
<div class="child-flex-grow-0-5" data-expected-width="50" data-offset-x="26"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexbox container justify-content-flex-end">
|
||||||
|
<div class="child-flex-grow-0-5" data-expected-width="50" data-offset-x="51"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
|
@ -0,0 +1,41 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<title>CSS Flexbox: Ensure flex item proper formatting context.</title>
|
||||||
|
<link rel="match" href="reference/floated-flexitem-ref.html">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-items">
|
||||||
|
<meta name="assert" content="This test checks that the flex items of a flex container participate in their container’s flex formatting context, not in a block formatting context.">
|
||||||
|
<style>
|
||||||
|
#flexbox {
|
||||||
|
background-color: lightgrey;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
#flexbox > * {
|
||||||
|
border: 1px solid green;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
This example is from the spec. There should be four flex items. Anonymous item 3 shouldn't have
|
||||||
|
a green border because the anonymous block is the flex item.
|
||||||
|
</p>
|
||||||
|
<div id="flexbox" style="display: flex">
|
||||||
|
|
||||||
|
<!-- flex item: block child -->
|
||||||
|
<div id="item1">block</div>
|
||||||
|
|
||||||
|
<!-- flex item: floated element; floating is ignored -->
|
||||||
|
<div id="item2" style="float: left;">float</div>
|
||||||
|
|
||||||
|
<!-- flex item: anonymous block box around inline content -->
|
||||||
|
anonymous item 3
|
||||||
|
|
||||||
|
<!-- flex item: inline child -->
|
||||||
|
<span>
|
||||||
|
item 4
|
||||||
|
<!-- flex items do not split around blocks -->
|
||||||
|
<div id=not-an-item>item 4</div>
|
||||||
|
item 4
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,151 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<title>CSS Flexbox: Inline flexbox width calculation with flex-direction: column and flex-wrap</title>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-direction-property">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-wrap-property">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#Computing_widths_and_margins">
|
||||||
|
<link href="support/flexbox.css" rel="stylesheet">
|
||||||
|
<meta name="assert" content="This test checks that width is correctly computed for flexbox with flex-direction: column and flex-wrap.">
|
||||||
|
<style>
|
||||||
|
.inline-flexbox {
|
||||||
|
background-color: #aaa;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.writing-mode-vertical {
|
||||||
|
writing-mode: vertical-rl;
|
||||||
|
}
|
||||||
|
.inline-flexbox > * {
|
||||||
|
flex: none;
|
||||||
|
}
|
||||||
|
.inline-flexbox :nth-child(1) {
|
||||||
|
background-color: lightblue;
|
||||||
|
}
|
||||||
|
.inline-flexbox :nth-child(2) {
|
||||||
|
background-color: lightgreen;
|
||||||
|
}
|
||||||
|
.inline-flexbox :nth-child(3) {
|
||||||
|
background-color: pink;
|
||||||
|
}
|
||||||
|
.inline-flexbox :nth-child(4) {
|
||||||
|
background-color: yellow;
|
||||||
|
}
|
||||||
|
</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-flexbox');">
|
||||||
|
<div id=log></div>
|
||||||
|
<div class="inline-flexbox column align-content-flex-start wrap" data-expected-width="110" data-expected-height="60">
|
||||||
|
<div style="width: 100px; height: 20px" data-offset-x="0" data-offset-y="0"></div>
|
||||||
|
<div style="width: 50px; height: 10px" data-offset-x="0" data-offset-y="20"></div>
|
||||||
|
<div style="width: 70px; height: 10px" data-offset-x="0" data-offset-y="30"></div>
|
||||||
|
<div style="width: 110px; height: 20px" data-offset-x="0" data-offset-y="40"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column align-content-flex-start wrap" style="height: 35px" data-expected-width="80" data-expected-height="35">
|
||||||
|
<div style="width: 10px; height: 20px" data-offset-x="0" data-offset-y="0"></div>
|
||||||
|
<div style="width: 50px; height: 10px" data-offset-x="0" data-offset-y="20"></div>
|
||||||
|
<div style="width: 80px; height: 10px" data-offset-x="50" data-offset-y="0"></div>
|
||||||
|
<div style="width: 40px; height: 20px" data-offset-x="50" data-offset-y="10"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column align-content-flex-start wrap writing-mode-vertical" data-expected-width="280" data-expected-height="70">
|
||||||
|
<div style="width: 50px; height: 20px" data-offset-x="230" data-offset-y="0"></div>
|
||||||
|
<div style="width: 100px; height: 70px" data-offset-x="130" data-offset-y="0"></div>
|
||||||
|
<div style="width: 30px; height: 50px" data-offset-x="100" data-offset-y="0"></div>
|
||||||
|
<div style="width: 100px; height: 30px" data-offset-x="0" data-offset-y="0"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column align-content-flex-start wrap writing-mode-vertical" style="width: 200px" data-expected-width="200" data-expected-height="70">
|
||||||
|
<div style="width: 50px; height: 20px" data-offset-x="150" data-offset-y="0"></div>
|
||||||
|
<div style="width: 100px; height: 70px" data-offset-x="50" data-offset-y="0"></div>
|
||||||
|
<div style="width: 30px; height: 50px" data-offset-x="20" data-offset-y="0"></div>
|
||||||
|
<div style="width: 100px; height: 30px" data-offset-x="100" data-offset-y="70"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column align-content-flex-start wrap-reverse" data-expected-width="110" data-expected-height="60">
|
||||||
|
<div style="width: 100px; height: 20px" data-offset-x="10" data-offset-y="0"></div>
|
||||||
|
<div style="width: 50px; height: 10px" data-offset-x="60" data-offset-y="20"></div>
|
||||||
|
<div style="width: 70px; height: 10px" data-offset-x="40" data-offset-y="30"></div>
|
||||||
|
<div style="width: 110px; height: 20px" data-offset-x="0" data-offset-y="40"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column align-content-flex-start wrap-reverse" style="height: 35px" data-expected-width="80" data-expected-height="35">
|
||||||
|
<div style="width: 10px; height: 20px" data-offset-x="70" data-offset-y="0"></div>
|
||||||
|
<div style="width: 50px; height: 10px" data-offset-x="30" data-offset-y="20"></div>
|
||||||
|
<div style="width: 80px; height: 10px" data-offset-x="-50" data-offset-y="0"></div>
|
||||||
|
<div style="width: 40px; height: 20px" data-offset-x="-10" data-offset-y="10"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column align-content-flex-start wrap-reverse writing-mode-vertical" data-expected-width="280" data-expected-height="70">
|
||||||
|
<div style="width: 50px; height: 20px" data-offset-x="230" data-offset-y="50"></div>
|
||||||
|
<div style="width: 100px; height: 50px" data-offset-x="130" data-offset-y="20"></div>
|
||||||
|
<div style="width: 30px; height: 30px" data-offset-x="100" data-offset-y="40"></div>
|
||||||
|
<div style="width: 100px; height: 70px" data-offset-x="0" data-offset-y="0"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column align-content-flex-start wrap-reverse writing-mode-vertical" style="width: 200px" data-expected-width="200" data-expected-height="70">
|
||||||
|
<div style="width: 50px; height: 20px" data-offset-x="150" data-offset-y="50"></div>
|
||||||
|
<div style="width: 100px; height: 50px" data-offset-x="50" data-offset-y="20"></div>
|
||||||
|
<div style="width: 30px; height: 70px" data-offset-x="20" data-offset-y="0"></div>
|
||||||
|
<div style="width: 100px; height: 30px" data-offset-x="100" data-offset-y="-30"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column-reverse align-content-flex-start wrap" data-expected-width="110" data-expected-height="60">
|
||||||
|
<div style="width: 100px; height: 20px" data-offset-x="0" data-offset-y="40"></div>
|
||||||
|
<div style="width: 50px; height: 10px" data-offset-x="0" data-offset-y="30"></div>
|
||||||
|
<div style="width: 70px; height: 10px" data-offset-x="0" data-offset-y="20"></div>
|
||||||
|
<div style="width: 110px; height: 20px" data-offset-x="0" data-offset-y="0"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column-reverse align-content-flex-start wrap" style="height: 35px" data-expected-width="80" data-expected-height="35">
|
||||||
|
<div style="width: 10px; height: 20px" data-offset-x="0" data-offset-y="15"></div>
|
||||||
|
<div style="width: 50px; height: 10px" data-offset-x="0" data-offset-y="5"></div>
|
||||||
|
<div style="width: 80px; height: 10px" data-offset-x="50" data-offset-y="25"></div>
|
||||||
|
<div style="width: 40px; height: 20px" data-offset-x="50" data-offset-y="5"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column-reverse align-content-flex-start wrap writing-mode-vertical" data-expected-width="280" data-expected-height="70">
|
||||||
|
<div style="width: 50px; height: 20px" data-offset-x="0" data-offset-y="0"></div>
|
||||||
|
<div style="width: 100px; height: 50px" data-offset-x="50" data-offset-y="0"></div>
|
||||||
|
<div style="width: 30px; height: 70px" data-offset-x="150" data-offset-y="0"></div>
|
||||||
|
<div style="width: 100px; height: 30px" data-offset-x="180" data-offset-y="0"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column-reverse align-content-flex-start wrap writing-mode-vertical" style="width: 200px" data-expected-width="200" data-expected-height="70">
|
||||||
|
<div style="width: 50px; height: 20px" data-offset-x="0" data-offset-y="0"></div>
|
||||||
|
<div style="width: 100px; height: 70px" data-offset-x="50" data-offset-y="0"></div>
|
||||||
|
<div style="width: 30px; height: 50px" data-offset-x="150" data-offset-y="0"></div>
|
||||||
|
<div style="width: 100px; height: 30px" data-offset-x="0" data-offset-y="70"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column-reverse align-content-flex-start wrap-reverse" data-expected-width="110" data-expected-height="60">
|
||||||
|
<div style="width: 100px; height: 20px" data-offset-x="10" data-offset-y="40"></div>
|
||||||
|
<div style="width: 50px; height: 10px" data-offset-x="60" data-offset-y="30"></div>
|
||||||
|
<div style="width: 70px; height: 10px" data-offset-x="40" data-offset-y="20"></div>
|
||||||
|
<div style="width: 110px; height: 20px" data-offset-x="0" data-offset-y="0"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column-reverse align-content-flex-start wrap-reverse" style="height: 35px" data-expected-width="80" data-expected-height="35">
|
||||||
|
<div style="width: 10px; height: 20px" data-offset-x="70" data-offset-y="15"></div>
|
||||||
|
<div style="width: 50px; height: 10px" data-offset-x="30" data-offset-y="5"></div>
|
||||||
|
<div style="width: 80px; height: 10px" data-offset-x="-50" data-offset-y="25"></div>
|
||||||
|
<div style="width: 40px; height: 20px" data-offset-x="-10" data-offset-y="5"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column-reverse align-content-flex-start wrap-reverse writing-mode-vertical" data-expected-width="280" data-expected-height="70">
|
||||||
|
<div style="width: 50px; height: 70px" data-offset-x="0" data-offset-y="0"></div>
|
||||||
|
<div style="width: 100px; height: 20px" data-offset-x="50" data-offset-y="50"></div>
|
||||||
|
<div style="width: 30px; height: 50px" data-offset-x="150" data-offset-y="20"></div>
|
||||||
|
<div style="width: 100px; height: 30px" data-offset-x="180" data-offset-y="40"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inline-flexbox column-reverse align-content-flex-start wrap-reverse writing-mode-vertical" style="width: 200px" data-expected-width="200" data-expected-height="70">
|
||||||
|
<div style="width: 50px; height: 20px" data-offset-x="0" data-offset-y="50"></div>
|
||||||
|
<div style="width: 100px; height: 50px" data-offset-x="50" data-offset-y="20"></div>
|
||||||
|
<div style="width: 30px; height: 30px" data-offset-x="150" data-offset-y="40"></div>
|
||||||
|
<div style="width: 100px; height: 70px" data-offset-x="0" data-offset-y="-50"></div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,7 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
Tests that auto-height column flexboxes with border and padding correctly size their height to their content.
|
||||||
|
<div style="border: 5px solid salmon; padding: 5px; overflow: scroll">
|
||||||
|
<div>
|
||||||
|
<div style="height: 50px; background-color: pink">
|
||||||
|
<div>
|
||||||
|
</div>
|
|
@ -0,0 +1,46 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
.outer {
|
||||||
|
height: 100px;
|
||||||
|
overflow:scroll;
|
||||||
|
}
|
||||||
|
.outer > div, td:nth-child(1) {
|
||||||
|
background-color: lightgreen;
|
||||||
|
}
|
||||||
|
td:nth-child(2) {
|
||||||
|
background-color: lightblue;
|
||||||
|
}
|
||||||
|
table, td {
|
||||||
|
padding: 0;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>This tests that when setting the height of a flex item to a percentage
|
||||||
|
height, we use the content height with scrollbars. The content should not be
|
||||||
|
scrollable in any of the test cases below.</p>
|
||||||
|
|
||||||
|
<div class="outer">
|
||||||
|
<div style="height: 100%"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="outer">
|
||||||
|
<div style="height: 100%; box-sizing: border-box; border: 5px solid green"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="outer">
|
||||||
|
<div style="display:inline-block; height: 50px; width: 50%;"></div><div
|
||||||
|
style="display:inline-block; height: 50px; width: 50%; background-color: lightblue"></div>
|
||||||
|
</div>
|
||||||
|
<div class="outer" style="padding: 10px; height: auto">
|
||||||
|
<table style="margin: 0; padding: 0; width: 600px">
|
||||||
|
<tr>
|
||||||
|
<td style="width: 50%; height: 50px"></td>
|
||||||
|
<td style="width: 50%; height: 50px"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,28 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<style>
|
||||||
|
#flexbox {
|
||||||
|
background-color: lightgrey;
|
||||||
|
}
|
||||||
|
#flexbox > * {
|
||||||
|
border: 1px solid green;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
This example is from the spec. There should be four flex items. Anonymous item 3 shouldn't have
|
||||||
|
a green border because the anonymous block is the flex item.
|
||||||
|
</p>
|
||||||
|
<div id="flexbox">
|
||||||
|
<div style="display: inline-block">block</div><div
|
||||||
|
style="display: inline-block">float</div><div
|
||||||
|
style="display: inline-block; border: 0">anonymous item 3</div><div
|
||||||
|
style="display: inline-block">
|
||||||
|
item 4<br>
|
||||||
|
item 4<br>
|
||||||
|
item 4
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,34 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Fonts Module Level 3: Order of values in @font-face range descriptors</title>
|
||||||
|
<link rel="author" title="Dominik Röttsches" href="mailto:drott@chromium.org"/>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-fonts/#font-prop-desc">
|
||||||
|
<meta name="assert" content="Allow ranges to be specified in reverse order.">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<style>
|
||||||
|
@font-face {
|
||||||
|
font-family: reversed-range-test;
|
||||||
|
font-stretch: 200% 50%;
|
||||||
|
font-style: oblique 90deg -90deg;
|
||||||
|
font-weight: 900 100;
|
||||||
|
src: local(Ahem);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
async_test(function(t) {
|
||||||
|
document.fonts.load("12px reversed-range-test").then((fonts) => {
|
||||||
|
t.step( () => {
|
||||||
|
assert_equals(fonts[0].stretch, "200% 50%", "Stretch value must be returned as specified.");
|
||||||
|
assert_equals(fonts[0].style, "oblique 90deg -90deg", "Style value must be returned as specified.");
|
||||||
|
assert_equals(fonts[0].weight, "900 100", "Weight value must be returned as specified.");
|
||||||
|
});
|
||||||
|
t.done()
|
||||||
|
})});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,20 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html class="reftest-wait">
|
||||||
|
<style>
|
||||||
|
@font-face {
|
||||||
|
font-family: variable_axes;
|
||||||
|
src: url("resources/variabletest_matching.ttf");
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: variable_axes, sans-serif;
|
||||||
|
font-size: 80px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<span>0p;/</span>
|
||||||
|
<span>8i;,</span>
|
||||||
|
<script>
|
||||||
|
document.fonts.ready.then(
|
||||||
|
() => { document.documentElement.classList.remove("reftest-wait"); });
|
||||||
|
</script>
|
||||||
|
</html>
|
|
@ -0,0 +1,28 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html class="reftest-wait">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Fonts Module Level 3: Property descriptor ranges</title>
|
||||||
|
<link rel="author" title="Dominik Röttsches" href="mailto:drott@chromium.org"/>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-fonts/#font-prop-desc">
|
||||||
|
<link rel="match" href="range-descriptor-reversed-ref.html">
|
||||||
|
<meta name="assert" content="User agents must swap the computed value of the startpoint and endpoint of the range in order to forbid decreasing ranges.">
|
||||||
|
</head>
|
||||||
|
<link rel="stylesheet" href="font-matching.css">
|
||||||
|
<style>
|
||||||
|
@font-face {
|
||||||
|
font-family: variable_axes;
|
||||||
|
src: url("resources/variabletest_matching.ttf");
|
||||||
|
font-stretch: 200% 50%;
|
||||||
|
font-style: oblique 90deg -90deg;
|
||||||
|
font-weight: 900 100;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<link rel="match" href="stretch-distance-over-weight-distance-ref.html">
|
||||||
|
<span id="stretch_style_weight_1">MNOP</span>
|
||||||
|
<span id="stretch_style_weight_9">MNOP</span>
|
||||||
|
<script>
|
||||||
|
document.fonts.ready.then(
|
||||||
|
() => { document.documentElement.classList.remove("reftest-wait"); });
|
||||||
|
</script>
|
||||||
|
</html>
|
|
@ -88,7 +88,7 @@
|
||||||
{ value: "calc(100 + 100) 400", isValid: true, expectedValue: "200 400", description: "Lower bound calc()" },
|
{ value: "calc(100 + 100) 400", isValid: true, expectedValue: "200 400", description: "Lower bound calc()" },
|
||||||
{ value: "200 calc(200 + 200)", isValid: true, expectedValue: "200 400", description: "Upper bound calc()" },
|
{ value: "200 calc(200 + 200)", isValid: true, expectedValue: "200 400", description: "Upper bound calc()" },
|
||||||
{ value: "calc(100 + 100) calc(200 + 200)", isValid: true, expectedValue: "200 400", description: "Both bounds are calc()" },
|
{ value: "calc(100 + 100) calc(200 + 200)", isValid: true, expectedValue: "200 400", description: "Both bounds are calc()" },
|
||||||
{ value: "400 200", isValid: true, expectedValue: "200 400", description: "Bounds out of order are valid" },
|
{ value: "400 200", isValid: true, expectedValue: "400 200", description: "Bounds out of order are valid" },
|
||||||
{ value: "100 200 300", isValid: false, description: "Extra content after upper bound" },
|
{ value: "100 200 300", isValid: false, description: "Extra content after upper bound" },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@
|
||||||
{ value: "calc(10% + 10%) 30%", isValid: true, expectedValue: "20% 30%", description: "Lower bound calc()" },
|
{ value: "calc(10% + 10%) 30%", isValid: true, expectedValue: "20% 30%", description: "Lower bound calc()" },
|
||||||
{ value: "10% calc(10% + 10%)", isValid: true, expectedValue: "10% 20%", description: "Upper bound calc()" },
|
{ value: "10% calc(10% + 10%)", isValid: true, expectedValue: "10% 20%", description: "Upper bound calc()" },
|
||||||
{ value: "calc(10% + 10%) calc(20% + 20%)", isValid: true, expectedValue: "20% 40%", description: "Both bounds are calc()" },
|
{ value: "calc(10% + 10%) calc(20% + 20%)", isValid: true, expectedValue: "20% 40%", description: "Both bounds are calc()" },
|
||||||
{ value: "200% 100%", isValid: true, expectedValue: "100% 200%", description: "Bounds out of order" },
|
{ value: "200% 100%", isValid: true, expectedValue: "200% 100%", description: "Bounds out of order" },
|
||||||
{ value: "100% 200% 300%", isValid: false, description: "Extra content after upper bound" },
|
{ value: "100% 200% 300%", isValid: false, description: "Extra content after upper bound" },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@ -161,7 +161,7 @@
|
||||||
{ value: "oblique 10deg 20deg", isValid: true, description: "Simple range" },
|
{ value: "oblique 10deg 20deg", isValid: true, description: "Simple range" },
|
||||||
{ value: "oblique 10deg 10deg", isValid: true, expectedValue: "oblique 10deg", description: "Simple range with equal upper and lower bounds" },
|
{ value: "oblique 10deg 10deg", isValid: true, expectedValue: "oblique 10deg", description: "Simple range with equal upper and lower bounds" },
|
||||||
{ value: "oblique 20deg 20deg", isValid: true, expectedValue: "oblique", description: "Simple range with default angle for both bounds" },
|
{ value: "oblique 20deg 20deg", isValid: true, expectedValue: "oblique", description: "Simple range with default angle for both bounds" },
|
||||||
{ value: "oblique 20deg 10deg", isValid: true, expectedValue: "oblique 10deg 20deg", description: "Bounds out of order" },
|
{ value: "oblique 20deg 10deg", isValid: true, expectedValue: "oblique 20deg 10deg", description: "Bounds out of order" },
|
||||||
{ value: "oblique -100deg 20deg", isValid: false, description: "Lower bound out of range" },
|
{ value: "oblique -100deg 20deg", isValid: false, description: "Lower bound out of range" },
|
||||||
{ value: "oblique 20deg 100deg", isValid: false, description: "Upper bound out of range" },
|
{ value: "oblique 20deg 100deg", isValid: false, description: "Upper bound out of range" },
|
||||||
{ value: "oblique 10deg 20deg 30deg", isValid: false, description: "Extra content after upper bound" },
|
{ value: "oblique 10deg 20deg 30deg", isValid: false, description: "Extra content after upper bound" },
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Overflow: text-overflow: ellipsis and scrolling reference file</title>
|
||||||
|
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||||
|
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||||
|
<style>
|
||||||
|
div {
|
||||||
|
font: 100px/1 Ahem;
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<p>The test passes if it matches the reference.</p>
|
||||||
|
|
||||||
|
<div>p pX</div>
|
||||||
|
<div>pp p</div>
|
||||||
|
<div> pX</div>
|
||||||
|
<div>pp p</div>
|
|
@ -0,0 +1,16 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Overflow: text-overflow: ellipsis and scrolling reference file</title>
|
||||||
|
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||||
|
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||||
|
<style>
|
||||||
|
div {
|
||||||
|
font: 100px/1 Ahem;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<p>The test passes if it matches the reference.</p>
|
||||||
|
|
||||||
|
<div>X pp</div>
|
||||||
|
<div>ppp</div>
|
||||||
|
<div>Xp</div>
|
||||||
|
<div>ppp</div>
|
|
@ -0,0 +1,20 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Overflow: text-overflow: ellipsis and scrolling reference file</title>
|
||||||
|
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||||
|
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||||
|
<style>
|
||||||
|
div {
|
||||||
|
display: inline-block;
|
||||||
|
writing-mode: vertical-lr;
|
||||||
|
font: 100px/1 Ahem;
|
||||||
|
height: 400px;
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<p>The test passes if it matches the reference.</p>
|
||||||
|
|
||||||
|
<div>p pX</div>
|
||||||
|
<div>pp p</div>
|
||||||
|
<div> pX</div>
|
||||||
|
<div>pp p</div>
|
|
@ -0,0 +1,19 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Overflow: text-overflow: ellipsis and scrolling reference file</title>
|
||||||
|
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||||
|
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||||
|
<style>
|
||||||
|
div {
|
||||||
|
display: inline-block;
|
||||||
|
writing-mode: vertical-lr;
|
||||||
|
font: 100px/1 Ahem;
|
||||||
|
height: 400px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<p>The test passes if it matches the reference.</p>
|
||||||
|
|
||||||
|
<div>X pp</div>
|
||||||
|
<div>ppp</div>
|
||||||
|
<div>Xp</div>
|
||||||
|
<div>ppp</div>
|
|
@ -0,0 +1,36 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html class="reftest-wait">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Overflow: text-overflow: ellipsis and scrolling</title>
|
||||||
|
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-overflow-4/#ellipsis-scrolling">
|
||||||
|
<link rel="match" href="reference/text-overflow-scroll-001-ref.html">
|
||||||
|
<meta name="flags" content="should">
|
||||||
|
<meta name="assert" content="If you scroll an element with 'text-overflow: ellipsis', the ellipsis should move to the new position.">
|
||||||
|
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||||
|
<style>
|
||||||
|
div {
|
||||||
|
font: 100px/1 Ahem;
|
||||||
|
white-space: pre;
|
||||||
|
width: 400px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<p>The test passes if it matches the reference.</p>
|
||||||
|
|
||||||
|
<div id="test1">ppp pp p</div>
|
||||||
|
<div id="test2">ppp pp p</div>
|
||||||
|
<div id="test3"><span style="padding-inline-start: 400px;">ppp pp p</span></div>
|
||||||
|
<div id="test4"><span style="padding-inline-start: 600px;">ppp pp p</span></div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
requestAnimationFrame(() => requestAnimationFrame(() => {
|
||||||
|
test1.scrollLeft = 200;
|
||||||
|
test2.scrollLeft = 400;
|
||||||
|
test3.scrollLeft = 200;
|
||||||
|
test4.scrollLeft = 1000;
|
||||||
|
document.documentElement.className = "";
|
||||||
|
}));
|
||||||
|
</script>
|
|
@ -0,0 +1,38 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html class="reftest-wait">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Overflow: text-overflow: ellipsis and scrolling RTL</title>
|
||||||
|
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-overflow-4/#ellipsis-scrolling">
|
||||||
|
<link rel="match" href="reference/text-overflow-scroll-rtl-001-ref.html">
|
||||||
|
<meta name="flags" content="should">
|
||||||
|
<meta name="assert" content="If you scroll an element with 'text-overflow: ellipsis' in RTL, the ellipsis should move to the new position.">
|
||||||
|
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||||
|
<style>
|
||||||
|
div {
|
||||||
|
font: 100px/1 Ahem;
|
||||||
|
white-space: pre;
|
||||||
|
width: 400px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<p>The test passes if it matches the reference.</p>
|
||||||
|
|
||||||
|
<div id="test1">ppp pp p</div>
|
||||||
|
<div id="test2">ppp pp p</div>
|
||||||
|
<div id="test3"><span style="padding-inline-start: 400px;">ppp pp p</span></div>
|
||||||
|
<div id="test4"><span style="padding-inline-start: 600px;">ppp pp p</span></div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
requestAnimationFrame(() => requestAnimationFrame(() => {
|
||||||
|
test1.scrollLeft = -200;
|
||||||
|
test2.scrollLeft = -400;
|
||||||
|
test3.scrollLeft = -200;
|
||||||
|
test4.scrollLeft = -1000;
|
||||||
|
document.documentElement.className = "";
|
||||||
|
}));
|
||||||
|
</script>
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html class="reftest-wait">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Overflow: text-overflow: ellipsis and scrolling vertical-lr</title>
|
||||||
|
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-overflow-4/#ellipsis-scrolling">
|
||||||
|
<link rel="match" href="reference/text-overflow-scroll-vertical-lr-001-ref.html">
|
||||||
|
<meta name="flags" content="should">
|
||||||
|
<meta name="assert" content="If you scroll an element with 'text-overflow: ellipsis', the ellipsis should move to the new position. This should work in vertical-lr writing mode too.">
|
||||||
|
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||||
|
<style>
|
||||||
|
div {
|
||||||
|
display: inline-block;
|
||||||
|
writing-mode: vertical-lr;
|
||||||
|
font: 100px/1 Ahem;
|
||||||
|
white-space: pre;
|
||||||
|
height: 400px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<p>The test passes if it matches the reference.</p>
|
||||||
|
|
||||||
|
<div id="test1">ppp pp p</div>
|
||||||
|
<div id="test2">ppp pp p</div>
|
||||||
|
<div id="test3"><span style="padding-inline-start: 400px;">ppp pp p</span></div>
|
||||||
|
<div id="test4"><span style="padding-inline-start: 600px;">ppp pp p</span></div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
requestAnimationFrame(() => requestAnimationFrame(() => {
|
||||||
|
test1.scrollTop = 200;
|
||||||
|
test2.scrollTop = 400;
|
||||||
|
test3.scrollTop = 200;
|
||||||
|
test4.scrollTop = 1000;
|
||||||
|
document.documentElement.className = "";
|
||||||
|
}));
|
||||||
|
</script>
|
|
@ -0,0 +1,39 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html class="reftest-wait">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Overflow: text-overflow: ellipsis and scrolling vertical-lr RTL</title>
|
||||||
|
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-overflow-4/#ellipsis-scrolling">
|
||||||
|
<link rel="match" href="reference/text-overflow-scroll-vertical-lr-rtl-001-ref.html">
|
||||||
|
<meta name="flags" content="should">
|
||||||
|
<meta name="assert" content="If you scroll an element with 'text-overflow: ellipsis', the ellipsis should move to the new position. This should work in vertical-lr writing mode and RTL too.">
|
||||||
|
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||||
|
<style>
|
||||||
|
div {
|
||||||
|
display: inline-block;
|
||||||
|
writing-mode: vertical-lr;
|
||||||
|
font: 100px/1 Ahem;
|
||||||
|
white-space: pre;
|
||||||
|
height: 400px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<p>The test passes if it matches the reference.</p>
|
||||||
|
|
||||||
|
<div id="test1">ppp pp p</div>
|
||||||
|
<div id="test2">ppp pp p</div>
|
||||||
|
<div id="test3"><span style="padding-inline-start: 400px;">ppp pp p</span></div>
|
||||||
|
<div id="test4"><span style="padding-inline-start: 600px;">ppp pp p</span></div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
requestAnimationFrame(() => requestAnimationFrame(() => {
|
||||||
|
test1.scrollTop = -200;
|
||||||
|
test2.scrollTop = -400;
|
||||||
|
test3.scrollTop = -200;
|
||||||
|
test4.scrollTop = -1000;
|
||||||
|
document.documentElement.className = "";
|
||||||
|
}));
|
||||||
|
</script>
|
|
@ -0,0 +1,38 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html class="reftest-wait">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Overflow: text-overflow: ellipsis and scrolling vertical-rl</title>
|
||||||
|
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-overflow-4/#ellipsis-scrolling">
|
||||||
|
<link rel="match" href="reference/text-overflow-scroll-vertical-lr-001-ref.html">
|
||||||
|
<meta name="flags" content="should">
|
||||||
|
<meta name="assert" content="If you scroll an element with 'text-overflow: ellipsis', the ellipsis should move to the new position. This should work in vertical-rl writing mode too.">
|
||||||
|
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||||
|
<style>
|
||||||
|
div {
|
||||||
|
display: inline-block;
|
||||||
|
writing-mode: vertical-rl;
|
||||||
|
font: 100px/1 Ahem;
|
||||||
|
white-space: pre;
|
||||||
|
height: 400px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<p>The test passes if it matches the reference.</p>
|
||||||
|
|
||||||
|
<div id="test1">ppp pp p</div>
|
||||||
|
<div id="test2">ppp pp p</div>
|
||||||
|
<div id="test3"><span style="padding-inline-start: 400px;">ppp pp p</span></div>
|
||||||
|
<div id="test4"><span style="padding-inline-start: 600px;">ppp pp p</span></div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
requestAnimationFrame(() => requestAnimationFrame(() => {
|
||||||
|
test1.scrollTop = 200;
|
||||||
|
test2.scrollTop = 400;
|
||||||
|
test3.scrollTop = 200;
|
||||||
|
test4.scrollTop = 1000;
|
||||||
|
document.documentElement.className = "";
|
||||||
|
}));
|
||||||
|
</script>
|
|
@ -0,0 +1,39 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html class="reftest-wait">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Overflow: text-overflow: ellipsis and scrolling vertical-rl RTL</title>
|
||||||
|
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-overflow-4/#ellipsis-scrolling">
|
||||||
|
<link rel="match" href="reference/text-overflow-scroll-vertical-lr-rtl-001-ref.html">
|
||||||
|
<meta name="flags" content="should">
|
||||||
|
<meta name="assert" content="If you scroll an element with 'text-overflow: ellipsis', the ellipsis should move to the new position. This should work in vertical-rl writing mode and RTL too.">
|
||||||
|
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||||
|
<style>
|
||||||
|
div {
|
||||||
|
display: inline-block;
|
||||||
|
writing-mode: vertical-rl;
|
||||||
|
font: 100px/1 Ahem;
|
||||||
|
white-space: pre;
|
||||||
|
height: 400px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<p>The test passes if it matches the reference.</p>
|
||||||
|
|
||||||
|
<div id="test1">ppp pp p</div>
|
||||||
|
<div id="test2">ppp pp p</div>
|
||||||
|
<div id="test3"><span style="padding-inline-start: 400px;">ppp pp p</span></div>
|
||||||
|
<div id="test4"><span style="padding-inline-start: 600px;">ppp pp p</span></div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
requestAnimationFrame(() => requestAnimationFrame(() => {
|
||||||
|
test1.scrollTop = -200;
|
||||||
|
test2.scrollTop = -400;
|
||||||
|
test3.scrollTop = -200;
|
||||||
|
test4.scrollTop = -1000;
|
||||||
|
document.documentElement.className = "";
|
||||||
|
}));
|
||||||
|
</script>
|
|
@ -5,7 +5,7 @@
|
||||||
<link rel=author title="Florian Rivoal" href="https://florian.rivoal.net">
|
<link rel=author title="Florian Rivoal" href="https://florian.rivoal.net">
|
||||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||||
<style>
|
<style>
|
||||||
.red {
|
div {
|
||||||
font: 50px/1 Ahem;
|
font: 50px/1 Ahem;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: -1;
|
z-index: -1;
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
# CSS Metadata
|
# CSS Metadata
|
||||||
|
|
||||||
CSS tests have some additional requirements for metadata.
|
CSS tests have some additional metadata.
|
||||||
|
|
||||||
### Specification Links
|
### Specification Links
|
||||||
|
|
||||||
Specification Links
|
Each test **requires** at least one link to specifications:
|
||||||
|
|
||||||
``` html
|
``` html
|
||||||
<link rel="help" href="RELEVANT_SPEC_SECTION" />
|
<link rel="help" href="RELEVANT_SPEC_SECTION" />
|
||||||
|
@ -46,6 +46,9 @@ href="https://www.w3.org/TR/CSS21/colors.html#background-properties" />
|
||||||
|
|
||||||
### Requirement Flags
|
### Requirement Flags
|
||||||
|
|
||||||
|
If a test has any of the following requirements, a meta element can be added
|
||||||
|
to include the corresponding flags (tokens):
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Token</th>
|
<th>Token</th>
|
||||||
|
@ -144,12 +147,6 @@ Example 2 (multiple tokens apply):
|
||||||
<meta name="flags" content="asis HTMLonly may" />
|
<meta name="flags" content="asis HTMLonly may" />
|
||||||
```
|
```
|
||||||
|
|
||||||
Example 3 (no tokens apply):
|
|
||||||
|
|
||||||
``` html
|
|
||||||
<meta name="flags" content="" />
|
|
||||||
```
|
|
||||||
|
|
||||||
### Test Assertions
|
### Test Assertions
|
||||||
|
|
||||||
``` html
|
``` html
|
||||||
|
@ -169,7 +166,7 @@ The assertion should not be:
|
||||||
* A line or reference from the CSS specification unless that line is
|
* A line or reference from the CSS specification unless that line is
|
||||||
a complete assertion when taken out of context.
|
a complete assertion when taken out of context.
|
||||||
|
|
||||||
The test assertion is **optional**, but is is highly recommended to include one.
|
The test assertion is **optional**, but is highly recommended.
|
||||||
It helps the reviewer understand
|
It helps the reviewer understand
|
||||||
the goal of the test so that he or she can make sure it is being
|
the goal of the test so that he or she can make sure it is being
|
||||||
tested correctly. Also, in case a problem is found with the test
|
tested correctly. Also, in case a problem is found with the test
|
||||||
|
|
|
@ -10,13 +10,13 @@
|
||||||
<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
|
<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
|
||||||
<link rel="help" href="https://html.spec.whatwg.org/#lazy-loading-attributes">
|
<link rel="help" href="https://html.spec.whatwg.org/#lazy-loading-attributes">
|
||||||
</head>
|
</head>
|
||||||
<div style="height: 3.7499995rem; "></div>
|
<div style="height: 44.5px"></div>
|
||||||
<div style="position: relative; font-size: 0; background: lightblue">
|
<div style="position: relative; font-size: 0; background: lightblue">
|
||||||
<img id=target loading="lazy" data-sizes="auto" src="resources/image.png"
|
<img id=target loading="lazy" data-sizes="auto">
|
||||||
title="" width="1600">
|
|
||||||
</div>
|
</div>
|
||||||
</html>
|
</html>
|
||||||
<script src="/common/reftest-wait.js"></script>
|
<script src="/common/reftest-wait.js"></script>
|
||||||
<script>
|
<script>
|
||||||
target.onload = takeScreenshot;
|
target.onload = takeScreenshot;
|
||||||
|
target.src = "resources/image.png";
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -11,15 +11,15 @@
|
||||||
<link rel="help" href="https://html.spec.whatwg.org/#lazy-loading-attributes">
|
<link rel="help" href="https://html.spec.whatwg.org/#lazy-loading-attributes">
|
||||||
<link rel="match" href="image-loading-subpixel-clip-ref.html">
|
<link rel="match" href="image-loading-subpixel-clip-ref.html">
|
||||||
</head>
|
</head>
|
||||||
<div style="height: 3.7499995rem"></div>
|
<div style="height: 44.5px"></div>
|
||||||
<div style="overflow: hidden">
|
<div style="overflow: hidden">
|
||||||
<div style="position: relative; font-size: 0; background: lightblue">
|
<div style="position: relative; font-size: 0; background: lightblue">
|
||||||
<img id=target loading="lazy" data-sizes="auto" src="resources/image.png"
|
<img id=target loading="lazy" data-sizes="auto">
|
||||||
title="" width="1600">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</html>
|
</html>
|
||||||
<script src="/common/reftest-wait.js"></script>
|
<script src="/common/reftest-wait.js"></script>
|
||||||
<script>
|
<script>
|
||||||
target.onload = takeScreenshot;
|
target.onload = takeScreenshot;
|
||||||
|
target.src = "resources/image.png";
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<body>
|
||||||
|
<iframe id="i" src="about:blank"></iframe>
|
||||||
|
<script>
|
||||||
|
async_test(t => {
|
||||||
|
var form = i.contentDocument.createElement('form');
|
||||||
|
form.action = '/common/blank.html';
|
||||||
|
i.contentDocument.body.appendChild(form);
|
||||||
|
i.onload = t.step_func_done(() => {});
|
||||||
|
form.submit();
|
||||||
|
new Document().prepend(form);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
|
@ -1,32 +1,23 @@
|
||||||
// GENERATED CONTENT - DO NOT EDIT
|
// GENERATED CONTENT - DO NOT EDIT
|
||||||
// Content was automatically extracted by Reffy into reffy-reports
|
// Content was automatically extracted by Reffy into reffy-reports
|
||||||
// (https://github.com/tidoust/reffy-reports)
|
// (https://github.com/tidoust/reffy-reports)
|
||||||
// Source: Wake Lock API (https://w3c.github.io/wake-lock/)
|
// Source: Screen Wake Lock API (https://w3c.github.io/wake-lock/)
|
||||||
|
|
||||||
dictionary WakeLockPermissionDescriptor : PermissionDescriptor {
|
|
||||||
required WakeLockType type;
|
|
||||||
};
|
|
||||||
|
|
||||||
enum WakeLockType { "screen", "system" };
|
|
||||||
|
|
||||||
[SecureContext]
|
[SecureContext]
|
||||||
partial interface Navigator {
|
partial interface Navigator {
|
||||||
[SameObject] readonly attribute WakeLock wakeLock;
|
[SameObject] readonly attribute WakeLock wakeLock;
|
||||||
};
|
};
|
||||||
|
|
||||||
[SecureContext]
|
[SecureContext, Exposed=(Window)]
|
||||||
partial interface WorkerNavigator {
|
|
||||||
[SameObject] readonly attribute WakeLock wakeLock;
|
|
||||||
};
|
|
||||||
|
|
||||||
[SecureContext, Exposed=(DedicatedWorker, Window)]
|
|
||||||
interface WakeLock {
|
interface WakeLock {
|
||||||
Promise<WakeLockSentinel> request(WakeLockType type);
|
Promise<WakeLockSentinel> request(WakeLockType type);
|
||||||
};
|
};
|
||||||
|
|
||||||
[SecureContext, Exposed=(DedicatedWorker, Window)]
|
[SecureContext, Exposed=(Window)]
|
||||||
interface WakeLockSentinel : EventTarget {
|
interface WakeLockSentinel : EventTarget {
|
||||||
readonly attribute WakeLockType type;
|
readonly attribute WakeLockType type;
|
||||||
Promise<void> release();
|
Promise<void> release();
|
||||||
attribute EventHandler onrelease;
|
attribute EventHandler onrelease;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum WakeLockType { "screen" };
|
||||||
|
|
|
@ -330,6 +330,9 @@ dictionary RTCIceCandidatePairStats : RTCStats {
|
||||||
DOMHighResTimeStamp consentExpiredTimestamp;
|
DOMHighResTimeStamp consentExpiredTimestamp;
|
||||||
unsigned long packetsDiscardedOnSend;
|
unsigned long packetsDiscardedOnSend;
|
||||||
unsigned long long bytesDiscardedOnSend;
|
unsigned long long bytesDiscardedOnSend;
|
||||||
|
unsigned long long requestBytesSent;
|
||||||
|
unsigned long long consentRequestBytesSent;
|
||||||
|
unsigned long long responseBytesSent;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum RTCStatsIceCandidatePairState {
|
enum RTCStatsIceCandidatePairState {
|
||||||
|
|
4
tests/wpt/web-platform-tests/native-io/META.yml
Normal file
4
tests/wpt/web-platform-tests/native-io/META.yml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
spec: https://todo.github.io/native-io/
|
||||||
|
suggested_reviewers:
|
||||||
|
- pwnall
|
||||||
|
- mikewest
|
16
tests/wpt/web-platform-tests/native-io/README.md
Normal file
16
tests/wpt/web-platform-tests/native-io/README.md
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
This directory contains tests for the
|
||||||
|
[NativeIO API](https://github.com/TODO/native-io).
|
||||||
|
|
||||||
|
## Note on the synchronous APIs
|
||||||
|
|
||||||
|
Chrome is currently working with developers to explore the performance
|
||||||
|
implications of using NativeIO as an asynchronous Promise-based API from
|
||||||
|
WebAssembly.
|
||||||
|
|
||||||
|
In order to assess the performance overhead, a baseline is needed. This baseline
|
||||||
|
is a synchronous API that can be easily used to port existing database code to
|
||||||
|
WebAssembly. The synchronous API is only exposed to dedicated workers.
|
||||||
|
|
||||||
|
Until our performance studies are concluded, Chrome has no plans of shipping the
|
||||||
|
synchronous API. In other words, there are no plans of adding a new synchronous
|
||||||
|
storage API to the Web Platform.
|
|
@ -0,0 +1,82 @@
|
||||||
|
// META: title=NativeIO API: close().
|
||||||
|
// META: global=window,worker
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// Returns a handle to a newly created file that holds some data.
|
||||||
|
//
|
||||||
|
// The file will be closed and deleted when the test ends.
|
||||||
|
async function createFile(testCase, fileName) {
|
||||||
|
const file = await nativeIO.open(fileName);
|
||||||
|
testCase.add_cleanup(async () => {
|
||||||
|
await file.close();
|
||||||
|
await nativeIO.delete('test_file');
|
||||||
|
});
|
||||||
|
|
||||||
|
const writeSharedArrayBuffer = new SharedArrayBuffer(4);
|
||||||
|
const writtenBytes = new Uint8Array(writeSharedArrayBuffer);
|
||||||
|
writtenBytes.set([64, 65, 66, 67]);
|
||||||
|
const writeCount = await file.write(writtenBytes, 0);
|
||||||
|
assert_precondition(writeCount == 4);
|
||||||
|
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
promise_test(async testCase => {
|
||||||
|
const file = await createFile(testCase, 'file_name');
|
||||||
|
assert_equals(await file.close(), undefined);
|
||||||
|
|
||||||
|
assert_equals(await file.close(), undefined);
|
||||||
|
}, 'NativeIOFile.close is idempotent');
|
||||||
|
|
||||||
|
promise_test(async testCase => {
|
||||||
|
const file = await createFile(testCase, 'file_name');
|
||||||
|
const closePromise = file.close();
|
||||||
|
|
||||||
|
assert_equals(await file.close(), undefined);
|
||||||
|
assert_equals(await closePromise, undefined);
|
||||||
|
}, 'NativeIOFile.close is idempotent when called immediately');
|
||||||
|
|
||||||
|
promise_test(async testCase => {
|
||||||
|
const file = await createFile(testCase, 'file_name');
|
||||||
|
assert_equals(await file.close(), undefined);
|
||||||
|
|
||||||
|
const readSharedArrayBuffer = new SharedArrayBuffer(4);
|
||||||
|
const readBytes = new Uint8Array(readSharedArrayBuffer);
|
||||||
|
await promise_rejects_dom(testCase, 'InvalidStateError',
|
||||||
|
file.read(readBytes, 4));
|
||||||
|
}, 'NativeIOFile.read fails after NativeIOFile.close settles');
|
||||||
|
|
||||||
|
promise_test(async testCase => {
|
||||||
|
const file = await createFile(testCase, 'file_name');
|
||||||
|
const closePromise = file.close();
|
||||||
|
|
||||||
|
const readSharedArrayBuffer = new SharedArrayBuffer(4);
|
||||||
|
const readBytes = new Uint8Array(readSharedArrayBuffer);
|
||||||
|
await promise_rejects_dom(testCase, 'InvalidStateError',
|
||||||
|
file.read(readBytes, 4));
|
||||||
|
assert_equals(await closePromise, undefined);
|
||||||
|
}, 'NativeIOFile.read fails immediately after calling NativeIOFile.close');
|
||||||
|
|
||||||
|
promise_test(async testCase => {
|
||||||
|
const file = await createFile(testCase, 'file_name');
|
||||||
|
assert_equals(await file.close(), undefined);
|
||||||
|
|
||||||
|
const writeSharedArrayBuffer = new SharedArrayBuffer(4);
|
||||||
|
const writtenBytes = new Uint8Array(writeSharedArrayBuffer);
|
||||||
|
writtenBytes.set([96, 97, 98, 99]);
|
||||||
|
await promise_rejects_dom(testCase, 'InvalidStateError',
|
||||||
|
file.write(writtenBytes, 4));
|
||||||
|
}, 'NativeIOFile.write fails after NativeIOFile.close settles');
|
||||||
|
|
||||||
|
promise_test(async testCase => {
|
||||||
|
const file = await createFile(testCase, 'file_name');
|
||||||
|
const closePromise = file.close();
|
||||||
|
|
||||||
|
const writeSharedArrayBuffer = new SharedArrayBuffer(4);
|
||||||
|
const writtenBytes = new Uint8Array(writeSharedArrayBuffer);
|
||||||
|
writtenBytes.set([96, 97, 98, 99]);
|
||||||
|
await promise_rejects_dom(testCase, 'InvalidStateError',
|
||||||
|
file.write(writtenBytes, 4));
|
||||||
|
assert_equals(await closePromise, undefined);
|
||||||
|
}, 'NativeIOFile.write fails immediately after calling NativeIOFile.close');
|
|
@ -0,0 +1,44 @@
|
||||||
|
// META: title=Synchronous NativeIO API: close().
|
||||||
|
// META: global=!default,dedicatedworker
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// Returns a handle to a newly created file that holds some data.
|
||||||
|
//
|
||||||
|
// The file will be closed and deleted when the test ends.
|
||||||
|
function createFileSync(testCase, fileName) {
|
||||||
|
const file = nativeIO.openSync(fileName);
|
||||||
|
testCase.add_cleanup(() => {
|
||||||
|
file.close();
|
||||||
|
nativeIO.deleteSync('test_file');
|
||||||
|
});
|
||||||
|
|
||||||
|
const writtenBytes = Uint8Array.from([64, 65, 66, 67]);
|
||||||
|
const writeCount = file.write(writtenBytes, 0);
|
||||||
|
assert_precondition(writeCount == 4);
|
||||||
|
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
test(testCase => {
|
||||||
|
const file = createFileSync(testCase, 'file_name');
|
||||||
|
assert_equals(undefined, file.close());
|
||||||
|
|
||||||
|
assert_equals(undefined, file.close());
|
||||||
|
}, 'nativeIO.close is idempotent');
|
||||||
|
|
||||||
|
test(testCase => {
|
||||||
|
const file = createFileSync(testCase, 'file_name');
|
||||||
|
assert_equals(undefined, file.close());
|
||||||
|
|
||||||
|
const readBytes = new Uint8Array(4);
|
||||||
|
assert_throws_dom('InvalidStateError', () => file.read(readBytes, 4));
|
||||||
|
}, 'nativeIO.read fails after nativeIO.close settles');
|
||||||
|
|
||||||
|
test(testCase => {
|
||||||
|
const file = createFileSync(testCase, 'file_name');
|
||||||
|
assert_equals(undefined, file.close());
|
||||||
|
|
||||||
|
const writtenBytes = Uint8Array.from([96, 97, 98, 99]);
|
||||||
|
assert_throws_dom('InvalidStateError', () => file.write(writtenBytes, 4));
|
||||||
|
}, 'NativeIOFile.write fails after NativeIOFile.close');
|
|
@ -0,0 +1,105 @@
|
||||||
|
// META: title=NativeIO API: close().
|
||||||
|
// META: global=window,worker
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// Returns a handle to a newly created file that holds some data.
|
||||||
|
//
|
||||||
|
// The file will be closed and deleted when the test ends.
|
||||||
|
async function createFile(testCase, fileName) {
|
||||||
|
const file = await nativeIO.open(fileName);
|
||||||
|
testCase.add_cleanup(async () => {
|
||||||
|
await file.close();
|
||||||
|
await nativeIO.delete('test_file');
|
||||||
|
});
|
||||||
|
|
||||||
|
const writeSharedArrayBuffer = new SharedArrayBuffer(4);
|
||||||
|
const writtenBytes = new Uint8Array(writeSharedArrayBuffer);
|
||||||
|
writtenBytes.set([64, 65, 66, 67]);
|
||||||
|
const writeCount = await file.write(writtenBytes, 0);
|
||||||
|
assert_precondition(writeCount == 4);
|
||||||
|
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
promise_test(async testCase => {
|
||||||
|
const file = await createFile(testCase, 'file_name');
|
||||||
|
|
||||||
|
const readSharedArrayBuffer = new SharedArrayBuffer(4);
|
||||||
|
const readBytes = new Uint8Array(readSharedArrayBuffer);
|
||||||
|
const readSharedArrayBuffer2 = new SharedArrayBuffer(4);
|
||||||
|
const readBytes2 = new Uint8Array(readSharedArrayBuffer2);
|
||||||
|
|
||||||
|
const readPromise = file.read(readBytes, 0);
|
||||||
|
await promise_rejects_dom(testCase, 'InvalidStateError',
|
||||||
|
file.read(readBytes2, 4));
|
||||||
|
|
||||||
|
assert_equals(await readPromise, 4);
|
||||||
|
assert_array_equals(readBytes, [64, 65, 66, 67]);
|
||||||
|
assert_array_equals(readBytes2, [0, 0, 0, 0]);
|
||||||
|
}, 'read() rejects wrile read() is resolving');
|
||||||
|
|
||||||
|
promise_test(async testCase => {
|
||||||
|
const file = await createFile(testCase, 'file_name');
|
||||||
|
|
||||||
|
const writeSharedArrayBuffer = new SharedArrayBuffer(4);
|
||||||
|
const writtenBytes = new Uint8Array(writeSharedArrayBuffer);
|
||||||
|
writtenBytes.set([96, 97, 98, 99]);
|
||||||
|
const readSharedArrayBuffer = new SharedArrayBuffer(4);
|
||||||
|
const readBytes = new Uint8Array(readSharedArrayBuffer);
|
||||||
|
|
||||||
|
const writePromise = file.write(writtenBytes, 0);
|
||||||
|
await promise_rejects_dom(testCase, 'InvalidStateError',
|
||||||
|
file.read(readBytes, 4));
|
||||||
|
|
||||||
|
assert_equals(await writePromise, 4);
|
||||||
|
assert_array_equals(readBytes, [0, 0, 0, 0]);
|
||||||
|
}, 'read() rejects wrile write() is resolving');
|
||||||
|
|
||||||
|
promise_test(async testCase => {
|
||||||
|
const file = await createFile(testCase, 'file_name');
|
||||||
|
|
||||||
|
const readSharedArrayBuffer = new SharedArrayBuffer(4);
|
||||||
|
const readBytes = new Uint8Array(readSharedArrayBuffer);
|
||||||
|
const writeSharedArrayBuffer = new SharedArrayBuffer(4);
|
||||||
|
const writtenBytes = new Uint8Array(writeSharedArrayBuffer);
|
||||||
|
writtenBytes.set([96, 97, 98, 99]);
|
||||||
|
|
||||||
|
const readPromise = file.read(readBytes, 0);
|
||||||
|
await promise_rejects_dom(testCase, 'InvalidStateError',
|
||||||
|
file.write(writtenBytes, 4));
|
||||||
|
|
||||||
|
assert_equals(await readPromise, 4);
|
||||||
|
assert_array_equals(readBytes, [64, 65, 66, 67]);
|
||||||
|
|
||||||
|
readBytes.fill(0);
|
||||||
|
assert_equals(await file.read(readBytes, 0), 4,
|
||||||
|
'NativeIOFile.read() should not fail after a rejected write');
|
||||||
|
assert_array_equals(readBytes, [64, 65, 66, 67],
|
||||||
|
'The rejected write should not change the file');
|
||||||
|
}, 'write() rejects wrile read() is resolving');
|
||||||
|
|
||||||
|
promise_test(async testCase => {
|
||||||
|
const file = await createFile(testCase, 'file_name');
|
||||||
|
|
||||||
|
const writeSharedArrayBuffer = new SharedArrayBuffer(4);
|
||||||
|
const writtenBytes = new Uint8Array(writeSharedArrayBuffer);
|
||||||
|
writtenBytes.set([96, 97, 98, 99]);
|
||||||
|
|
||||||
|
const writeSharedArrayBuffer2 = new SharedArrayBuffer(4);
|
||||||
|
const writtenBytes2 = new Uint8Array(writeSharedArrayBuffer2);
|
||||||
|
writtenBytes2.set([48, 49, 50, 51]);
|
||||||
|
|
||||||
|
const writePromise = file.write(writtenBytes, 0);
|
||||||
|
await promise_rejects_dom(testCase, 'InvalidStateError',
|
||||||
|
file.write(writtenBytes2, 4));
|
||||||
|
|
||||||
|
assert_equals(await writePromise, 4);
|
||||||
|
|
||||||
|
const readSharedArrayBuffer = new SharedArrayBuffer(4);
|
||||||
|
const readBytes = new Uint8Array(readSharedArrayBuffer);
|
||||||
|
assert_equals(await file.read(readBytes, 0), 4,
|
||||||
|
'NativeIOFile.read() should not fail after a rejected write');
|
||||||
|
assert_array_equals(readBytes, writtenBytes,
|
||||||
|
'The rejected write should not change the file');
|
||||||
|
}, 'write() rejects wrile write() is resolving');
|
|
@ -0,0 +1,20 @@
|
||||||
|
// META: title=NativeIO API: File deletion is reflected in listing.
|
||||||
|
// META: global=window,worker
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
promise_test(async testCase => {
|
||||||
|
const file = await nativeIO.open('test_file');
|
||||||
|
testCase.add_cleanup(async () => {
|
||||||
|
await nativeIO.delete('test_file');
|
||||||
|
});
|
||||||
|
await file.close();
|
||||||
|
|
||||||
|
const fileNamesBeforeDelete = await nativeIO.getAll();
|
||||||
|
assert_in_array('test_file', fileNamesBeforeDelete);
|
||||||
|
|
||||||
|
await nativeIO.delete('test_file');
|
||||||
|
const fileNames = await nativeIO.getAll();
|
||||||
|
assert_equals(fileNames.indexOf('test_file'), -1);
|
||||||
|
}, 'nativeIO.getAll does not return file deleted by nativeIO.delete');
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
// META: title=Synchronous NativeIO API: File deletion is reflected in listing.
|
||||||
|
// META: global=!default,dedicatedworker
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
test(testCase => {
|
||||||
|
const file = nativeIO.openSync('test_file');
|
||||||
|
testCase.add_cleanup(() => {
|
||||||
|
nativeIO.deleteSync('test_file');
|
||||||
|
});
|
||||||
|
file.close();
|
||||||
|
|
||||||
|
const fileNamesBeforeDelete = nativeIO.getAllSync();
|
||||||
|
assert_in_array('test_file', fileNamesBeforeDelete);
|
||||||
|
|
||||||
|
nativeIO.deleteSync('test_file');
|
||||||
|
const fileNames = nativeIO.getAllSync();
|
||||||
|
assert_equals(fileNames.indexOf('test_file'), -1);
|
||||||
|
}, 'nativeIO.getAllSync does not return file deleted by nativeIO.deleteSync');
|
|
@ -0,0 +1,15 @@
|
||||||
|
// META: title=NativeIO API: File creation is reflected in listing.
|
||||||
|
// META: global=window,worker
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
promise_test(async testCase => {
|
||||||
|
const file = await nativeIO.open('test_file');
|
||||||
|
testCase.add_cleanup(async () => {
|
||||||
|
await nativeIO.delete('test_file');
|
||||||
|
});
|
||||||
|
await file.close();
|
||||||
|
|
||||||
|
const fileNames = await nativeIO.getAll();
|
||||||
|
assert_in_array('test_file', fileNames);
|
||||||
|
}, 'nativeIO.getAll returns file created by nativeIO.open');
|
|
@ -0,0 +1,15 @@
|
||||||
|
// META: title=Synchronous NativeIO API: File creation is reflected in listing.
|
||||||
|
// META: global=!default,dedicatedworker
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
test(testCase => {
|
||||||
|
const file = nativeIO.openSync('test_file');
|
||||||
|
testCase.add_cleanup(() => {
|
||||||
|
nativeIO.deleteSync('test_file');
|
||||||
|
});
|
||||||
|
file.close();
|
||||||
|
|
||||||
|
const fileNames = nativeIO.getAllSync();
|
||||||
|
assert_in_array('test_file', fileNames);
|
||||||
|
}, 'nativeIO.getAllSync returns file created by nativeIO.openSync');
|
|
@ -0,0 +1,29 @@
|
||||||
|
// META: title=NativeIO API: Written bytes are read back.
|
||||||
|
// META: global=window,worker
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
promise_test(async testCase => {
|
||||||
|
const file = await nativeIO.open('test_file');
|
||||||
|
testCase.add_cleanup(async () => {
|
||||||
|
await file.close();
|
||||||
|
await nativeIO.delete('test_file');
|
||||||
|
});
|
||||||
|
|
||||||
|
const writeSharedArrayBuffer = new SharedArrayBuffer(4);
|
||||||
|
const writtenBytes = new Uint8Array(writeSharedArrayBuffer);
|
||||||
|
writtenBytes.set([64, 65, 66, 67]);
|
||||||
|
const writeCount = await file.write(writtenBytes, 0);
|
||||||
|
assert_equals(
|
||||||
|
writeCount, 4,
|
||||||
|
'NativeIOFile.write() should resolve with the number of bytes written');
|
||||||
|
|
||||||
|
const readSharedArrayBuffer = new SharedArrayBuffer(writtenBytes.length);
|
||||||
|
const readBytes = new Uint8Array(readSharedArrayBuffer);
|
||||||
|
const readCount = await file.read(readBytes, 0);
|
||||||
|
assert_equals(readCount, 4,
|
||||||
|
'NativeIOFile.read() should return the number of bytes read');
|
||||||
|
|
||||||
|
assert_array_equals(readBytes, writtenBytes,
|
||||||
|
'the bytes read should match the bytes written');
|
||||||
|
}, 'NativeIOFile.read returns bytes written by NativeIOFile.write');
|
|
@ -0,0 +1,26 @@
|
||||||
|
// META: title=Synchronous NativeIO API: Written bytes are read back.
|
||||||
|
// META: global=!default,dedicatedworker
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
test(testCase => {
|
||||||
|
const file = nativeIO.openSync('test_file');
|
||||||
|
testCase.add_cleanup(() => {
|
||||||
|
file.close();
|
||||||
|
nativeIO.deleteSync('test_file');
|
||||||
|
});
|
||||||
|
|
||||||
|
const writtenBytes = Uint8Array.from([64, 65, 66, 67]);
|
||||||
|
const writeCount = file.write(writtenBytes, 0);
|
||||||
|
assert_equals(
|
||||||
|
writeCount, 4,
|
||||||
|
'NativeIOFile.write() should resolve with the number of bytes written');
|
||||||
|
|
||||||
|
const readBytes = new Uint8Array(writtenBytes.length);
|
||||||
|
const readCount = file.read(readBytes, 0);
|
||||||
|
assert_equals(readCount, 4,
|
||||||
|
'NativeIOFile.read() should return the number of bytes read');
|
||||||
|
|
||||||
|
assert_array_equals(readBytes, writtenBytes,
|
||||||
|
'the bytes read should match the bytes written');
|
||||||
|
}, 'NativeIOFileSync.read returns bytes written by NativeIOFileSync.write');
|
|
@ -0,0 +1,129 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Lostpointercapture fires on document when target in shadow dom is removed</title>
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=810882">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="/resources/testdriver.js"></script>
|
||||||
|
<script src="/resources/testdriver-actions.js"></script>
|
||||||
|
<script src="/resources/testdriver-vendor.js"></script>
|
||||||
|
</head>
|
||||||
|
<body onload="onLoad()">
|
||||||
|
<template id="template">
|
||||||
|
<style>
|
||||||
|
#content{
|
||||||
|
height:100px;
|
||||||
|
width:100px;
|
||||||
|
background-color: lightgrey;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div id="content"></div>
|
||||||
|
</template>
|
||||||
|
<h1>Pointer Events - lostpointercapture when capturing element in shadow dom is removed</h1>
|
||||||
|
<h4>
|
||||||
|
Test Description:
|
||||||
|
This test checks if lostpointercapture is fired at the document when the capturing node that is in shadow dom is removed from the shadow dom.
|
||||||
|
Complete the following actions:
|
||||||
|
<ol>
|
||||||
|
<li>Press left mouse button over "Set Capture" button. Pointer should be captured by the gray rectangle which is in shadow dom.</li>
|
||||||
|
<li>Gray rectangle will be removed from shadow dom.</li>
|
||||||
|
<li>"lostpointercapture" should be received on the document not on the gray rectangle.</li>
|
||||||
|
</ol>
|
||||||
|
</h4>
|
||||||
|
<div id="shadowhost"></div>
|
||||||
|
<br>
|
||||||
|
<input type="button" id="btnCapture" value="Set Capture">
|
||||||
|
<div id="log"></div>
|
||||||
|
<script>
|
||||||
|
async function onLoad(){
|
||||||
|
var logDiv = document.getElementById("log");
|
||||||
|
function logMessage(message){
|
||||||
|
var log = document.createElement("div");
|
||||||
|
var messageNode = document.createTextNode(message);
|
||||||
|
log.appendChild(messageNode);
|
||||||
|
logDiv.appendChild(log);
|
||||||
|
}
|
||||||
|
var events = [];
|
||||||
|
|
||||||
|
var host = document.getElementById("shadowhost");
|
||||||
|
var shadowRoot = host.attachShadow({mode: "open"});
|
||||||
|
var template = document.getElementById("template");
|
||||||
|
var node = template.content.cloneNode(true);
|
||||||
|
shadowRoot.appendChild(node);
|
||||||
|
|
||||||
|
var content = host.shadowRoot.getElementById("content");
|
||||||
|
var captureButton = document.getElementById("btnCapture");
|
||||||
|
|
||||||
|
captureButton.addEventListener("pointerdown", function(event){
|
||||||
|
logMessage("Pointer will be captured by the shadow dom gray rectangle.");
|
||||||
|
content.setPointerCapture(event.pointerId);
|
||||||
|
events.push("pointerdown@captureButton");
|
||||||
|
});
|
||||||
|
content.addEventListener("gotpointercapture", function(event){
|
||||||
|
logMessage("Gray rectangle received pointercapture.");
|
||||||
|
logMessage("Removing gray rectangle from shadow dom.")
|
||||||
|
content.parentNode.removeChild(content);
|
||||||
|
events.push("gotpointercapture@content");
|
||||||
|
});
|
||||||
|
content.addEventListener("lostpointercapture", function(event){
|
||||||
|
logMessage("Test Failed! The element removed from shadow dom should not receive lostpointercapture.")
|
||||||
|
events.push("lostpointercapture@content");
|
||||||
|
if(window.promise_test && shadow_dom_test){
|
||||||
|
shadow_dom_test.step(function(){
|
||||||
|
assert_unreached("lostpointercapture must be fired on the document, not the capturing element");
|
||||||
|
reject_test("lostpointercapture must not be dispatched on the disconnected node");
|
||||||
|
shadow_dom_test.done();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
document.addEventListener("lostpointercapture", function(event){
|
||||||
|
logMessage("Test Passed! Document received lostpointercapture.");
|
||||||
|
events.push("lostpointercapture@document");
|
||||||
|
if(window.promise_test && shadow_dom_test){
|
||||||
|
shadow_dom_test.step(function(){
|
||||||
|
assert_array_equals(events, ["pointerdown@captureButton",
|
||||||
|
"gotpointercapture@content",
|
||||||
|
"lostpointercapture@document"]);
|
||||||
|
resolve_test();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var shadow_dom_test = null;
|
||||||
|
var resolve_test = null;
|
||||||
|
var reject_test = null;
|
||||||
|
|
||||||
|
function cleanup(){
|
||||||
|
events = [];
|
||||||
|
shadow_dom_test = null;
|
||||||
|
resolve_test = null;
|
||||||
|
reject_test = null;
|
||||||
|
}
|
||||||
|
if(window.promise_test){
|
||||||
|
promise_test(async function(t){
|
||||||
|
var actions_promise;
|
||||||
|
return new Promise(async function(resolve, reject){
|
||||||
|
shadow_dom_test = t;
|
||||||
|
resolve_test = resolve;
|
||||||
|
reject_test = reject;
|
||||||
|
t.add_cleanup(function(){
|
||||||
|
cleanup();
|
||||||
|
});
|
||||||
|
var actions = new test_driver.Actions();
|
||||||
|
actions_promise = actions
|
||||||
|
.pointerMove(0, 0, {origin:captureButton})
|
||||||
|
.pointerDown({button: actions.ButtonType.LEFT})
|
||||||
|
.pointerUp({button: actions.ButtonType.LEFT})
|
||||||
|
.send();
|
||||||
|
}).finally(async () => {
|
||||||
|
await actions_promise;
|
||||||
|
t.done();
|
||||||
|
});
|
||||||
|
}, "lostpointercapture is dispatched on the document when shadow dom capturing element is removed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,123 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>PointerCapture for Custome Shadow DOM</title>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<link rel="help" href= "https://bugs.chromium.org/p/chromium/issues/detail?id=810882">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="/resources/testdriver.js"></script>
|
||||||
|
<script src="/resources/testdriver-actions.js"></script>
|
||||||
|
<script src="/resources/testdriver-vendor.js"></script>
|
||||||
|
<script>
|
||||||
|
class WC extends HTMLElement{
|
||||||
|
constructor(){
|
||||||
|
super();
|
||||||
|
let template = document.getElementById('template-wc');
|
||||||
|
let node = template.content.cloneNode(true) ;
|
||||||
|
|
||||||
|
let shadowRoot = this.attachShadow({mode: 'open'});
|
||||||
|
shadowRoot.appendChild(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
customElements.define("wc-wc", WC);
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body onload="onLoad()">
|
||||||
|
<template id="template-wc">
|
||||||
|
<style>
|
||||||
|
#content{
|
||||||
|
height:50px;
|
||||||
|
width:50px;
|
||||||
|
background-color: magenta;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div id="content"></div>
|
||||||
|
</template>
|
||||||
|
<h4>PointerCapture by Custom Element's Shadow DOM</h4>
|
||||||
|
The magenta box below is part of a custom element's Shadow DOM.
|
||||||
|
<ul>
|
||||||
|
<li> Click left mouse button inside the box and keep mouse button depressed</li>
|
||||||
|
<li> Move the mouse</li>
|
||||||
|
<li> There should be a message stating <em>Pointer was captured by custom element's Shadow DOM!</em></li>
|
||||||
|
<li> Release left mouse button</li>
|
||||||
|
<li> There should be a message stating <em>Pointer was released by custom element's Shadow DOM!</em></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<wc-wc id="wc-wc"></wc-wc>
|
||||||
|
<div id="log"></div>
|
||||||
|
<script>
|
||||||
|
var logDiv = document.getElementById("log");
|
||||||
|
function logMessage(message){
|
||||||
|
var log = document.createElement("div");
|
||||||
|
var messageNode = document.createTextNode(message);
|
||||||
|
log.appendChild(messageNode);
|
||||||
|
logDiv.appendChild(log);
|
||||||
|
}
|
||||||
|
var events = [];
|
||||||
|
|
||||||
|
var content = document.getElementById("wc-wc")
|
||||||
|
.shadowRoot.getElementById("content");
|
||||||
|
|
||||||
|
content.addEventListener("pointerdown", function(e){
|
||||||
|
content.setPointerCapture(e.pointerId);
|
||||||
|
events.push("pointerdown@content");
|
||||||
|
});
|
||||||
|
content.addEventListener("gotpointercapture", function(e){
|
||||||
|
logMessage("Pointer was captured by custom element's Shadow DOM!");
|
||||||
|
events.push("gotpointercapture@content");
|
||||||
|
});
|
||||||
|
content.addEventListener("pointerup", function(e){
|
||||||
|
content.releasePointerCapture(e.pointerId);
|
||||||
|
events.push("pointerup@content");
|
||||||
|
});
|
||||||
|
content.addEventListener("lostpointercapture", function(e){
|
||||||
|
logMessage("Pointer was released by custom element's Shadow DOM!");
|
||||||
|
events.push("lostpointercapture@content");
|
||||||
|
if(window.promise_test && wc_shadow_dom_test){
|
||||||
|
wc_shadow_dom_test.step(function(){
|
||||||
|
assert_array_equals(events, ["pointerdown@content",
|
||||||
|
"gotpointercapture@content", "pointerup@content",
|
||||||
|
"lostpointercapture@content"]);
|
||||||
|
resolve_test();
|
||||||
|
wc_shadow_dom_test.done();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var wc_shadow_dom_test = null;
|
||||||
|
var resolve_test = null;
|
||||||
|
var reject_test = null;
|
||||||
|
|
||||||
|
function cleanup(){
|
||||||
|
events = [];
|
||||||
|
shadow_dom_test = null;
|
||||||
|
resolve_test = null;
|
||||||
|
reject_test = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLoad(){
|
||||||
|
if(window.promise_test){
|
||||||
|
promise_test(function(t){
|
||||||
|
return new Promise(function(resolve, reject){
|
||||||
|
wc_shadow_dom_test = t;
|
||||||
|
resolve_test = resolve;
|
||||||
|
reject_test = reject;
|
||||||
|
t.add_cleanup(function(){
|
||||||
|
cleanup();
|
||||||
|
});
|
||||||
|
var contentRect = content.getBoundingClientRect();
|
||||||
|
var actions = new test_driver.Actions();
|
||||||
|
var actions_promise = actions
|
||||||
|
.pointerMove(contentRect.x, contentRect.y)
|
||||||
|
.pointerDown({button: actions.ButtonType.LEFT})
|
||||||
|
.pointerUp({button: actions.ButtonType.LEFT})
|
||||||
|
.send();
|
||||||
|
});
|
||||||
|
}, "PointerCapture works for custom element Shadow DOM.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,114 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>PointerCapture for Shadow DOM Elements</title>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<link rel="help" href= "https://bugs.chromium.org/p/chromium/issues/detail?id=810882">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="/resources/testdriver.js"></script>
|
||||||
|
<script src="/resources/testdriver-actions.js"></script>
|
||||||
|
<script src="/resources/testdriver-vendor.js"></script>
|
||||||
|
</head>
|
||||||
|
<body onload="onLoad()">
|
||||||
|
<template id="template">
|
||||||
|
<style>
|
||||||
|
#content{
|
||||||
|
height:100px;
|
||||||
|
width:100px;
|
||||||
|
background-color: lightgrey;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div id="content"></div>
|
||||||
|
</template>
|
||||||
|
<h4>PointerCapture by Shadow DOM element</h4>
|
||||||
|
The light gray box below is part of Shadow DOM.
|
||||||
|
<ul>
|
||||||
|
<li> Click left mouse button inside the box and keep mouse button depressed </li>
|
||||||
|
<li> Move the mouse </li>
|
||||||
|
<li> There should be a message stating <em>Pointer was captured by Shadow DOM!</em></li>
|
||||||
|
<li> Release left mouse button
|
||||||
|
<li> There should be a message stating <em>Pointer was released by Shadow DOM!</em></li>
|
||||||
|
</ul>
|
||||||
|
<div id="shadowhost"></div>
|
||||||
|
<div id="log"></div>
|
||||||
|
<script>
|
||||||
|
var logDiv = document.getElementById("log");
|
||||||
|
function logMessage(message){
|
||||||
|
var log = document.createElement("div");
|
||||||
|
var messageNode = document.createTextNode(message);
|
||||||
|
log.appendChild(messageNode);
|
||||||
|
logDiv.appendChild(log);
|
||||||
|
}
|
||||||
|
var events = [];
|
||||||
|
|
||||||
|
var host = document.getElementById("shadowhost");
|
||||||
|
var shadowRoot = host.attachShadow({mode: "open"});
|
||||||
|
var template = document.getElementById("template");
|
||||||
|
var node = template.content.cloneNode(true);
|
||||||
|
shadowRoot.appendChild(node);
|
||||||
|
|
||||||
|
var content = host.shadowRoot.getElementById("content");
|
||||||
|
|
||||||
|
content.addEventListener("pointerdown", function(e){
|
||||||
|
content.setPointerCapture(e.pointerId);
|
||||||
|
events.push("pointerdown@content");
|
||||||
|
});
|
||||||
|
content.addEventListener("gotpointercapture", function(e){
|
||||||
|
logMessage("Pointer was captured by Shadow DOM!");
|
||||||
|
events.push("gotpointercapture@content");
|
||||||
|
});
|
||||||
|
content.addEventListener("pointerup", function(e){
|
||||||
|
content.releasePointerCapture(e.pointerId);
|
||||||
|
events.push("pointerup@content");
|
||||||
|
});
|
||||||
|
content.addEventListener("lostpointercapture", function(e){
|
||||||
|
logMessage("Pointer was released by Shadow DOM!");
|
||||||
|
events.push("lostpointercapture@content");
|
||||||
|
if(window.promise_test && shadow_dom_test){
|
||||||
|
shadow_dom_test.step(function(){
|
||||||
|
assert_array_equals(events, ["pointerdown@content",
|
||||||
|
"gotpointercapture@content", "pointerup@content",
|
||||||
|
"lostpointercapture@content"]);
|
||||||
|
resolve_test();
|
||||||
|
shadow_dom_test.done();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var shadow_dom_test = null;
|
||||||
|
var resolve_test = null;
|
||||||
|
var reject_test = null;
|
||||||
|
|
||||||
|
function cleanup(){
|
||||||
|
events = [];
|
||||||
|
shadow_dom_test = null;
|
||||||
|
resolve_test = null;
|
||||||
|
reject_test = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLoad(){
|
||||||
|
if(window.promise_test){
|
||||||
|
promise_test(function(t){
|
||||||
|
return new Promise(function(resolve, reject){
|
||||||
|
shadow_dom_test = t;
|
||||||
|
resolve_test = resolve;
|
||||||
|
reject_test = reject;
|
||||||
|
t.add_cleanup(function(){
|
||||||
|
cleanup();
|
||||||
|
});
|
||||||
|
var contentRect = content.getBoundingClientRect();
|
||||||
|
var actions = new test_driver.Actions();
|
||||||
|
var actions_promise = actions
|
||||||
|
.pointerMove(contentRect.x, contentRect.y)
|
||||||
|
.pointerDown({button: actions.ButtonType.LEFT})
|
||||||
|
.pointerUp({button: actions.ButtonType.LEFT})
|
||||||
|
.send();
|
||||||
|
});
|
||||||
|
}, "PointerCapture works for Shadow DOM element.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,54 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:html="http://www.w3.org/1999/xhtml">
|
||||||
|
<title>'textLength' on <textPath> with 'text-anchor' adjustments</title>
|
||||||
|
<html:script src="/resources/testharness.js"/>
|
||||||
|
<html:script src="/resources/testharnessreport.js"/>
|
||||||
|
<html:link rel="stylesheet" href="/fonts/ahem.css"/>
|
||||||
|
<html:link rel="help" href="https://svgwg.org/svg2-draft/text.html#TextPathElement"/>
|
||||||
|
<html:link rel="help" href="https://svgwg.org/svg2-draft/text.html#TextElementTextLengthAttribute"/>
|
||||||
|
<defs>
|
||||||
|
<path id="p" d="M0,25h100"/>
|
||||||
|
</defs>
|
||||||
|
<g font-family="Ahem" font-size="20px">
|
||||||
|
<text expected-x="0">
|
||||||
|
<textPath href="#p" textLength="25" lengthAdjust="spacing"
|
||||||
|
text-anchor="start">XXXX</textPath>
|
||||||
|
</text>
|
||||||
|
<text expected-x="0" transform="translate(0 50)">
|
||||||
|
<textPath href="#p" textLength="25" lengthAdjust="spacingAndGlyphs"
|
||||||
|
text-anchor="start">XXXX</textPath>
|
||||||
|
</text>
|
||||||
|
|
||||||
|
<text expected-x="37.5">
|
||||||
|
<textPath href="#p" textLength="25" lengthAdjust="spacing"
|
||||||
|
text-anchor="middle" startOffset="50%">XXXX</textPath>
|
||||||
|
</text>
|
||||||
|
<text expected-x="37.5" transform="translate(0 50)">
|
||||||
|
<textPath href="#p" textLength="25" lengthAdjust="spacingAndGlyphs"
|
||||||
|
text-anchor="middle" startOffset="50%">XXXX</textPath>
|
||||||
|
</text>
|
||||||
|
|
||||||
|
<text expected-x="75">
|
||||||
|
<textPath href="#p" textLength="25" lengthAdjust="spacing"
|
||||||
|
text-anchor="end" startOffset="100%">XXXX</textPath>
|
||||||
|
</text>
|
||||||
|
<text expected-x="75" transform="translate(0 50)">
|
||||||
|
<textPath href="#p" textLength="25" lengthAdjust="spacingAndGlyphs"
|
||||||
|
text-anchor="end" startOffset="100%">XXXX</textPath>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<script>
|
||||||
|
test(t => {
|
||||||
|
let texts = Array.from(document.getElementsByTagName('text'));
|
||||||
|
for (let text of texts) {
|
||||||
|
let bbox = text.getBBox();
|
||||||
|
let textpath = text.firstElementChild;
|
||||||
|
let description = 'text-anchor=' + textpath.getAttribute('text-anchor');
|
||||||
|
assert_approx_equals(bbox.x, parseFloat(text.getAttribute('expected-x')), 0.5,
|
||||||
|
'x, ' + description);
|
||||||
|
assert_approx_equals(bbox.width, 25, 0.5,
|
||||||
|
'width, ' + description);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.3 KiB |
|
@ -37,10 +37,7 @@
|
||||||
// Inject mouse click events.
|
// Inject mouse click events.
|
||||||
var actions = new test_driver.Actions();
|
var actions = new test_driver.Actions();
|
||||||
document.getElementById("other").focus();
|
document.getElementById("other").focus();
|
||||||
var bounds = target.getBoundingClientRect();
|
actions.pointerMove(0, 0, {origin: target})
|
||||||
actions.pointerMove(Math.floor(bounds.width / 5),
|
|
||||||
Math.floor(bounds.height / 2),
|
|
||||||
{origin: target})
|
|
||||||
.pointerDown({button: mouseButton})
|
.pointerDown({button: mouseButton})
|
||||||
.pointerUp({button: mouseButton})
|
.pointerUp({button: mouseButton})
|
||||||
.send()
|
.send()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue