Update web-platform-tests to revision 66e7f134c43e83a70edf4028ec4738ddfea28e15

This commit is contained in:
WPT Sync Bot 2020-03-26 08:19:21 +00:00
parent 145c3a5502
commit d23cb97662
97 changed files with 2817 additions and 110 deletions

View file

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

View file

@ -0,0 +1,7 @@
[columns-height-set-via-top-bottom.html]
[.flexbox 1]
expected: FAIL
[.flexbox 2]
expected: FAIL

View file

@ -0,0 +1,2 @@
[content-height-with-scrollbars.html]
expected: FAIL

View file

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

View file

@ -0,0 +1,2 @@
[floated-flexitem.html]
expected: FAIL

View file

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

View file

@ -0,0 +1,4 @@
[font-face-range-order.html]
[CSS Fonts Module Level 3: Order of values in @font-face range descriptors]
expected: FAIL

View file

@ -0,0 +1,2 @@
[range-descriptor-reversed.html]
expected: TIMEOUT

View file

@ -2,6 +2,3 @@
[Hit test intersecting scaled box]
expected: FAIL
[Hit test within unscaled box]
expected: FAIL

View file

@ -17,3 +17,6 @@
[test the top of layer]
expected: FAIL
[test some point of the element: top left corner]
expected: FAIL

View file

@ -318,12 +318,6 @@
[<iframe>: separate response Content-Type: text/html */*]
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]
expected: FAIL
@ -333,6 +327,12 @@
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
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

View file

@ -56,6 +56,6 @@
[separate text/javascript;charset=windows-1252 text/javascript]
expected: FAIL
[separate text/javascript ]
[separate text/javascript x/x]
expected: FAIL

View file

@ -11,6 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
[X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff]
[Content-Type-Options%3A%20nosniff]
expected: FAIL

View file

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

View file

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

View file

@ -1,16 +1,20 @@
[supported-elements.html]
expected: TIMEOUT
[Contenteditable element should support autofocus]
expected: FAIL
[Host element with delegatesFocus including no focusable descendants should be skipped]
expected: FAIL
expected: NOTRUN
[Element with tabindex should support autofocus]
expected: FAIL
expected: TIMEOUT
[Area element should support autofocus]
expected: FAIL
expected: NOTRUN
[Host element with delegatesFocus should support autofocus]
expected: FAIL
expected: NOTRUN
[Non-HTMLElement should not support autofocus]
expected: NOTRUN

View file

@ -0,0 +1,2 @@
[iframe_sandbox_popups_escaping-3.html]
expected: CRASH

View file

@ -1,4 +1,5 @@
[iframe_sandbox_popups_nonescaping-3.html]
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: FAIL
expected: NOTRUN

View file

@ -0,0 +1,4 @@
[reparent-form-during-planned-navigation-task.html]
[reparent-form-during-planned-navigation-task]
expected: FAIL

View file

@ -0,0 +1,4 @@
[077.html]
[ adding several types of scripts through the DOM and removing some of them confuses scheduler ]
expected: FAIL

View file

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

View file

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

View file

@ -1,5 +0,0 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -1,5 +0,0 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -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": [
"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": [
"d5c7244f08dcad0b0955290804ec5959754a963d",
[
@ -135941,6 +135967,19 @@
{}
]
],
"floated-flexitem.html": [
"e2050034f48cb51eb7eeb75acb97ed72d5755a2f",
[
null,
[
[
"/css/css-flexbox/reference/floated-flexitem-ref.html",
"=="
]
],
{}
]
],
"gap-001-lr.html": [
"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": [
"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-with-line-height.tentative.html": [
"94a62a5b3fa1291683e4a653d0dd5cf71eea0aca",
@ -227903,7 +228037,7 @@
]
],
"image-loading-subpixel-clip.html": [
"de62d7d73599c144228b82139654660d2e8b1bfc",
"594d9bebe4330f871f535f6bd309fa9d84388095",
[
null,
[
@ -284657,10 +284791,18 @@
"fc8fe9f991d1df8b41a9ab6932f5eefa6553282d",
[]
],
"auto-height-column-with-border-and-padding-ref.html": [
"a5ed1085464e32169735a3dbcbf56eab176e5667",
[]
],
"auto-height-with-flex-ref.html": [
"d56fe356dcbb6ce87414a2075b5f47c515628016",
[]
],
"content-height-with-scrollbars-ref.html": [
"8a1484f6934dc3e30aae299380c82308cd1fec42",
[]
],
"css-box-justify-content-ref.html": [
"e8377473fdef6f93bdf0e1e0e78fd33f01c93e82",
[]
@ -284733,6 +284875,10 @@
"0a8869a1452962b4895e60d8cebe987b55499666",
[]
],
"floated-flexitem-ref.html": [
"ae0cd2e9608cfee74f8e269e588642229f5f8bf6",
[]
],
"item-with-max-height-and-scrollbar-ref.html": [
"b0b2469c2c3deb13038c6e74114d493c50843b17",
[]
@ -285535,6 +285681,10 @@
"ebbef02f628baa63b2cb565f0f2850899d54ae65",
[]
],
"range-descriptor-reversed-ref.html": [
"e59dc50dc757ddc746e73615953372c4a3e92d3c",
[]
],
"resources": {
"variabletest_matching.ttf": [
"89ed12a2c03531a1e8f764e3a2365824a8f40a12",
@ -294685,6 +294835,22 @@
"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": [
"ef28e01dac0223c9a2768d3fd1415fb9ef2f1c6b",
[]
@ -298125,7 +298291,7 @@
[]
],
"line-breaking-atomic-005-ref.html": [
"e22d482299b55cc1f5c833eb75b2b635c17c91ab",
"bd88329ad0eac9866ea4b195ebad6327ec83007c",
[]
],
"line-breaking-atomic-007-ref.html": [
@ -311145,7 +311311,7 @@
[]
],
"css-metadata.md": [
"e77681be4fac8c4ef7d9e8b634cf8caad514d144",
"9d8ebeddff2839265d38020fae519bd678d7b473",
[]
],
"css-user-styles.md": [
@ -323363,7 +323529,7 @@
[]
],
"image-loading-subpixel-clip-ref.html": [
"4b3c2d708a88a5451e3eef922dac44e1eae5b433",
"f841dba31bd255b17afa8a1c7129b6998294c154",
[]
],
"image.png": [
@ -326978,7 +327144,7 @@
[]
],
"wake-lock.idl": [
"85d1863fa6f6d1422e00b430ed2b04e3619a19ec",
"429b80e0668aa2607ef59e32b2c3c674974bd0c5",
[]
],
"wasm-js-api.idl": [
@ -327038,7 +327204,7 @@
[]
],
"webrtc-stats.idl": [
"514d09f15a60446ad7a6ba78bd1288a047085af1",
"aaadda29b8a5318ae7bafb10947b2c9b8a108620",
[]
],
"webrtc-svc.idl": [
@ -328862,6 +329028,16 @@
]
}
},
"native-io": {
"META.yml": [
"22a45c20c9b847433b0f7d9b793d8c1a96f17336",
[]
],
"README.md": [
"eb1a8d268cebf1f308925cbc1fe30a2478b9fa2c",
[]
]
},
"navigation-timing": {
"META.yml": [
"bfb0e0f1f67a9c6aa2e7e921b09e85f8d970b290",
@ -380610,6 +380786,13 @@
{}
]
],
"change-column-flex-width.html": [
"322af4f9b93aa86b6051b3ff54a673fe85856c6b",
[
null,
{}
]
],
"column-flex-child-with-overflow-scroll.html": [
"4c84a258658d8a0576a03e0e430677945e6eb005",
[
@ -380617,6 +380800,13 @@
{}
]
],
"columns-height-set-via-top-bottom.html": [
"80cdcc6974df9bb0b79bc91c2d4dc0aad881cf4d",
[
null,
{}
]
],
"display_flex_exist.html": [
"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": [
"718386af02069fa1a3fff0ee5aaa10415ef4b23a",
[
@ -381221,6 +381425,13 @@
{}
]
],
"inline-flexbox-wrap-vertically-width-calculation.html": [
"e9010cf96cff8d131e0319168d7570285331dd2a",
[
null,
{}
]
],
"order_value.html": [
"ca9af99b939f77835933ccc76de5185b656f5977",
[
@ -381574,6 +381785,13 @@
]
]
},
"font-face-range-order.html": [
"ed0508a18ff7c4d2e447f6227146f294950fe1e1",
[
null,
{}
]
],
"font-feature-settings-serialization-001.html": [
"031dd7d33008ebd5475edba35fe20a89d4445c66",
[
@ -382098,7 +382316,7 @@
],
"variations": {
"at-font-face-descriptors.html": [
"cd1c22b01ce0a6b84af2cf501e3446287faa97a6",
"7083639ddf6066794e7b27c8f5a71a9eb20c1dc1",
[
null,
{}
@ -434427,6 +434645,13 @@
}
]
],
"reparent-form-during-planned-navigation-task.html": [
"6b50bf599b888b1c3273a4e311ba6af69d67e86b",
[
null,
{}
]
],
"submission-checks.window.js": [
"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": {
"buffered-flag.window.js": [
"c6b1e0bc8558a2908d6471fff0e7f5351d4a0022",
@ -463611,6 +464225,15 @@
}
]
],
"pointerevent_lostpointercapture_for_disconnected_node_in_shadow_dom.html": [
"f92daeb02e7c39fdedb60c58cd3eeb9085b7703a",
[
null,
{
"testdriver": true
}
]
],
"pointerevent_lostpointercapture_is_first.html": [
"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": [
"02a6af0a4b89abf1c0c51844ace15b54e91966e9",
[
@ -488654,6 +489295,15 @@
{}
]
]
},
"scripted": {
"textpath-textlength-text-anchor-001.tentative.svg": [
"6c4f50fe871b0126548557976e8391c1d973b5fe",
[
null,
{}
]
]
}
},
"types": {
@ -489604,7 +490254,7 @@
]
],
"click_events_on_input.html": [
"731d13934f0d38505ae19334f0fa39a130021562",
"2f380eb4514bc79df891b409c9007271c7f66923",
[
null,
{

View file

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

View file

@ -0,0 +1,7 @@
[columns-height-set-via-top-bottom.html]
[.flexbox 1]
expected: FAIL
[.flexbox 2]
expected: FAIL

View file

@ -0,0 +1,2 @@
[content-height-with-scrollbars.html]
expected: FAIL

View file

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

View file

@ -0,0 +1,2 @@
[floated-flexitem.html]
expected: FAIL

View file

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

View file

@ -0,0 +1,4 @@
[font-face-range-order.html]
[CSS Fonts Module Level 3: Order of values in @font-face range descriptors]
expected: FAIL

View file

@ -0,0 +1,2 @@
[range-descriptor-reversed.html]
expected: TIMEOUT

View file

@ -2,6 +2,3 @@
[Hit test intersecting scaled box]
expected: FAIL
[Hit test within unscaled box]
expected: FAIL

View file

@ -21,3 +21,6 @@
[test the top of layer]
expected: FAIL
[test some point of the element: top left corner]
expected: FAIL

View file

@ -318,12 +318,6 @@
[<iframe>: separate response Content-Type: text/html */*]
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]
expected: FAIL
@ -333,6 +327,12 @@
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
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

View file

@ -56,6 +56,6 @@
[separate text/javascript;charset=windows-1252 text/javascript]
expected: FAIL
[separate text/javascript ]
[separate text/javascript x/x]
expected: FAIL

View file

@ -11,6 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL
[X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff]
[Content-Type-Options%3A%20nosniff]
expected: FAIL

View file

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

View file

@ -18,3 +18,9 @@
[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

View file

@ -1,16 +1,20 @@
[supported-elements.html]
expected: TIMEOUT
[Contenteditable element should support autofocus]
expected: FAIL
[Element with tabindex should support autofocus]
expected: FAIL
expected: TIMEOUT
[Host element with delegatesFocus including no focusable descendants should be skipped]
expected: FAIL
expected: NOTRUN
[Area element should support autofocus]
expected: FAIL
expected: NOTRUN
[Host element with delegatesFocus should support autofocus]
expected: FAIL
expected: NOTRUN
[Non-HTMLElement should not support autofocus]
expected: NOTRUN

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_escaping-3.html]
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]
expected: TIMEOUT

View file

@ -1,5 +1,6 @@
[iframe_sandbox_popups_nonescaping-3.html]
type: testharness
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: FAIL
expected: NOTRUN

View file

@ -0,0 +1,4 @@
[reparent-form-during-planned-navigation-task.html]
[reparent-form-during-planned-navigation-task]
expected: FAIL

View file

@ -0,0 +1,4 @@
[077.html]
[ adding several types of scripts through the DOM and removing some of them confuses scheduler ]
expected: FAIL

View file

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

View file

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

View file

@ -1,5 +0,0 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -1,5 +0,0 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -88,7 +88,7 @@
{ 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: "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" },
]);
@ -130,7 +130,7 @@
{ 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: "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" },
]);
@ -161,7 +161,7 @@
{ 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 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 20deg 100deg", isValid: false, description: "Upper bound out of range" },
{ value: "oblique 10deg 20deg 30deg", isValid: false, description: "Extra content after upper bound" },

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -5,7 +5,7 @@
<link rel=author title="Florian Rivoal" href="https://florian.rivoal.net">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
.red {
div {
font: 50px/1 Ahem;
position: absolute;
z-index: -1;

View file

@ -1,10 +1,10 @@
# CSS Metadata
CSS tests have some additional requirements for metadata.
CSS tests have some additional metadata.
### Specification Links
Specification Links
Each test **requires** at least one link to specifications:
``` html
<link rel="help" href="RELEVANT_SPEC_SECTION" />
@ -46,6 +46,9 @@ href="https://www.w3.org/TR/CSS21/colors.html#background-properties" />
### Requirement Flags
If a test has any of the following requirements, a meta element can be added
to include the corresponding flags (tokens):
<table>
<tr>
<th>Token</th>
@ -144,12 +147,6 @@ Example 2 (multiple tokens apply):
<meta name="flags" content="asis HTMLonly may" />
```
Example 3 (no tokens apply):
``` html
<meta name="flags" content="" />
```
### Test Assertions
``` html
@ -169,7 +166,7 @@ The assertion should not be:
* A line or reference from the CSS specification unless that line is
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
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

View file

@ -10,13 +10,13 @@
<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
<link rel="help" href="https://html.spec.whatwg.org/#lazy-loading-attributes">
</head>
<div style="height: 3.7499995rem; "></div>
<div style="height: 44.5px"></div>
<div style="position: relative; font-size: 0; background: lightblue">
<img id=target loading="lazy" data-sizes="auto" src="resources/image.png"
title="" width="1600">
<img id=target loading="lazy" data-sizes="auto">
</div>
</html>
<script src="/common/reftest-wait.js"></script>
<script>
target.onload = takeScreenshot;
target.src = "resources/image.png";
</script>

View file

@ -11,15 +11,15 @@
<link rel="help" href="https://html.spec.whatwg.org/#lazy-loading-attributes">
<link rel="match" href="image-loading-subpixel-clip-ref.html">
</head>
<div style="height: 3.7499995rem"></div>
<div style="height: 44.5px"></div>
<div style="overflow: hidden">
<div style="position: relative; font-size: 0; background: lightblue">
<img id=target loading="lazy" data-sizes="auto" src="resources/image.png"
title="" width="1600">
<img id=target loading="lazy" data-sizes="auto">
</div>
</div>
</html>
<script src="/common/reftest-wait.js"></script>
<script>
target.onload = takeScreenshot;
target.src = "resources/image.png";
</script>

View file

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

View file

@ -1,32 +1,23 @@
// GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into reffy-reports
// (https://github.com/tidoust/reffy-reports)
// Source: Wake Lock API (https://w3c.github.io/wake-lock/)
dictionary WakeLockPermissionDescriptor : PermissionDescriptor {
required WakeLockType type;
};
enum WakeLockType { "screen", "system" };
// Source: Screen Wake Lock API (https://w3c.github.io/wake-lock/)
[SecureContext]
partial interface Navigator {
[SameObject] readonly attribute WakeLock wakeLock;
};
[SecureContext]
partial interface WorkerNavigator {
[SameObject] readonly attribute WakeLock wakeLock;
};
[SecureContext, Exposed=(DedicatedWorker, Window)]
[SecureContext, Exposed=(Window)]
interface WakeLock {
Promise<WakeLockSentinel> request(WakeLockType type);
};
[SecureContext, Exposed=(DedicatedWorker, Window)]
[SecureContext, Exposed=(Window)]
interface WakeLockSentinel : EventTarget {
readonly attribute WakeLockType type;
Promise<void> release();
attribute EventHandler onrelease;
};
enum WakeLockType { "screen" };

View file

@ -330,6 +330,9 @@ dictionary RTCIceCandidatePairStats : RTCStats {
DOMHighResTimeStamp consentExpiredTimestamp;
unsigned long packetsDiscardedOnSend;
unsigned long long bytesDiscardedOnSend;
unsigned long long requestBytesSent;
unsigned long long consentRequestBytesSent;
unsigned long long responseBytesSent;
};
enum RTCStatsIceCandidatePairState {

View file

@ -0,0 +1,4 @@
spec: https://todo.github.io/native-io/
suggested_reviewers:
- pwnall
- mikewest

View 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.

View file

@ -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');

View file

@ -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');

View file

@ -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');

View file

@ -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');

View file

@ -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');

View file

@ -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');

View file

@ -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');

View file

@ -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');

View file

@ -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');

View file

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

View file

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

View file

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

View file

@ -0,0 +1,54 @@
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:html="http://www.w3.org/1999/xhtml">
<title>'textLength' on &#x3c;textPath&#x3e; 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

View file

@ -37,10 +37,7 @@
// Inject mouse click events.
var actions = new test_driver.Actions();
document.getElementById("other").focus();
var bounds = target.getBoundingClientRect();
actions.pointerMove(Math.floor(bounds.width / 5),
Math.floor(bounds.height / 2),
{origin: target})
actions.pointerMove(0, 0, {origin: target})
.pointerDown({button: mouseButton})
.pointerUp({button: mouseButton})
.send()