diff options
156 files changed, 2619 insertions, 152 deletions
diff --git a/tests/wpt/metadata-layout-2020/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height-orientation-none.tentative.html.ini b/tests/wpt/metadata-layout-2020/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height-orientation-none.tentative.html.ini new file mode 100644 index 00000000000..6ae80ba13ca --- /dev/null +++ b/tests/wpt/metadata-layout-2020/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height-orientation-none.tentative.html.ini @@ -0,0 +1,2 @@ +[drawImage-from-bitmap-swap-width-height-orientation-none.tentative.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height.tentative.html.ini b/tests/wpt/metadata-layout-2020/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height.tentative.html.ini new file mode 100644 index 00000000000..a74d6e4189c --- /dev/null +++ b/tests/wpt/metadata-layout-2020/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height.tentative.html.ini @@ -0,0 +1,2 @@ +[drawImage-from-bitmap-swap-width-height.tentative.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height.tentative.html.ini b/tests/wpt/metadata-layout-2020/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height.tentative.html.ini new file mode 100644 index 00000000000..10bab447002 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height.tentative.html.ini @@ -0,0 +1,2 @@ +[drawImage-from-element-swap-width-height.tentative.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini new file mode 100644 index 00000000000..4bfb0c2053a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-004.html] + [Miss float below something else] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini deleted file mode 100644 index baa9f1a7541..00000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-005.html] - [Miss clipped float] - expected: FAIL - diff --git a/tests/wpt/metadata/css/css-flexbox/percentage-size-quirks-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/percentage-size-quirks.html.ini index dbdea2ef97f..930207f198a 100644 --- a/tests/wpt/metadata/css/css-flexbox/percentage-size-quirks-001.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/percentage-size-quirks.html.ini @@ -1,4 +1,4 @@ -[percentage-size-quirks-001.html] +[percentage-size-quirks.html] [.flexbox 8] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-text-decor/text-underline-position-from-font-variable.html.ini b/tests/wpt/metadata-layout-2020/css/css-text-decor/text-underline-position-from-font-variable.html.ini new file mode 100644 index 00000000000..fa2b7b8be8f --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-text-decor/text-underline-position-from-font-variable.html.ini @@ -0,0 +1,2 @@ +[text-underline-position-from-font-variable.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-text/line-break/line-break-normal-015a.xht.ini b/tests/wpt/metadata-layout-2020/css/css-text/line-break/line-break-normal-015a.xht.ini new file mode 100644 index 00000000000..71680f4af31 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-text/line-break/line-break-normal-015a.xht.ini @@ -0,0 +1,2 @@ +[line-break-normal-015a.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-text/line-break/line-break-normal-015b.xht.ini b/tests/wpt/metadata-layout-2020/css/css-text/line-break/line-break-normal-015b.xht.ini new file mode 100644 index 00000000000..45a7609fed1 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-text/line-break/line-break-normal-015b.xht.ini @@ -0,0 +1,2 @@ +[line-break-normal-015b.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-text/line-break/line-break-strict-015a.xht.ini b/tests/wpt/metadata-layout-2020/css/css-text/line-break/line-break-strict-015a.xht.ini new file mode 100644 index 00000000000..881ee8aa238 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-text/line-break/line-break-strict-015a.xht.ini @@ -0,0 +1,2 @@ +[line-break-strict-015a.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-text/line-break/line-break-strict-015b.xht.ini b/tests/wpt/metadata-layout-2020/css/css-text/line-break/line-break-strict-015b.xht.ini new file mode 100644 index 00000000000..fcc474b48ee --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-text/line-break/line-break-strict-015b.xht.ini @@ -0,0 +1,2 @@ +[line-break-strict-015b.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini new file mode 100644 index 00000000000..e181af5397f --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini @@ -0,0 +1,4 @@ +[elementsFromPoint-invalid-cases.html] + [The root element is the last element returned for otherwise empty queries within the viewport] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/filter-effects/drop-shadow-clipped-001.html.ini b/tests/wpt/metadata-layout-2020/css/filter-effects/drop-shadow-clipped-001.html.ini new file mode 100644 index 00000000000..fd9bd8fc327 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/filter-effects/drop-shadow-clipped-001.html.ini @@ -0,0 +1,2 @@ +[drop-shadow-clipped-001.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-feimage-001.html.ini b/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-feimage-001.html.ini new file mode 100644 index 00000000000..4fc95ebcba0 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-feimage-001.html.ini @@ -0,0 +1,2 @@ +[effect-reference-feimage-001.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-feimage-002.html.ini b/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-feimage-002.html.ini new file mode 100644 index 00000000000..7511fa073bf --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-feimage-002.html.ini @@ -0,0 +1,2 @@ +[effect-reference-feimage-002.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-feimage-003.html.ini b/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-feimage-003.html.ini new file mode 100644 index 00000000000..d36b9498ab1 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-feimage-003.html.ini @@ -0,0 +1,2 @@ +[effect-reference-feimage-003.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-local-url-with-base-001.html.ini b/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-local-url-with-base-001.html.ini new file mode 100644 index 00000000000..9b68627eef1 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-local-url-with-base-001.html.ini @@ -0,0 +1,2 @@ +[effect-reference-local-url-with-base-001.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-on-transparent-element.html.ini b/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-on-transparent-element.html.ini new file mode 100644 index 00000000000..6a658d9a25d --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-on-transparent-element.html.ini @@ -0,0 +1,2 @@ +[effect-reference-on-transparent-element.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-source-alpha-001.html.ini b/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-source-alpha-001.html.ini new file mode 100644 index 00000000000..3e443afc7d3 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-source-alpha-001.html.ini @@ -0,0 +1,2 @@ +[effect-reference-source-alpha-001.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-source-alpha-002.html.ini b/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-source-alpha-002.html.ini new file mode 100644 index 00000000000..1b72e3bc687 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-source-alpha-002.html.ini @@ -0,0 +1,2 @@ +[effect-reference-source-alpha-002.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini index 8bd785894f8..a46b97e6be3 100644 --- a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini @@ -315,21 +315,21 @@ [<iframe>: combined response Content-Type: text/html */*] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" text/plain] - expected: FAIL - [<iframe>: separate response Content-Type: text/html;" text/plain] expected: FAIL [<iframe>: separate response Content-Type: text/html */*] expected: FAIL - [<iframe>: separate response Content-Type: text/plain */*] + [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html] + expected: FAIL + + [<iframe>: separate response Content-Type: text/html */*;charset=gbk] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" \\" text/plain] + [<iframe>: combined response Content-Type: text/html */*;charset=gbk] expected: FAIL - [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] + [<iframe>: combined response Content-Type: text/html;x=" text/plain] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini index 8456d88e4f3..5c001592859 100644 --- a/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini @@ -56,9 +56,6 @@ [separate text/javascript x/x] expected: FAIL - [separate text/javascript; charset=windows-1252 text/javascript] - expected: FAIL - - [separate text/javascript;charset=windows-1252 text/javascript] + [separate text/javascript;charset=windows-1252 error text/javascript] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini index 87c807a49ff..2023a855086 100644 --- a/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini @@ -11,3 +11,6 @@ [X-Content-Type-Options%3A%20nosniff%0C] expected: FAIL + [X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini new file mode 100644 index 00000000000..87b07c3e670 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_1.html] + [Multiple history traversals from the same task] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini new file mode 100644 index 00000000000..51f8272a6de --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_3.html] + [Multiple history traversals, last would be aborted] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini new file mode 100644 index 00000000000..385376c7321 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_4.html] + [Multiple history traversals, last would be aborted] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini new file mode 100644 index 00000000000..dc2e45516de --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_5.html] + [Multiple history traversals, last would be aborted] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini index 256a49c578d..9d05ef1f801 100644 --- a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini +++ b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini @@ -62,3 +62,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 44063 more errors.\n\tMax AbsError of 1.9999977350234985e+0 at index of 36821.\n\t[36821\]\t9.9999773502349854e-1\t-1.0000000000000000e+0\t1.9999977350234985e+0\t1.9999977350234985e+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 + [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 42300 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 23900.\n\t[23900\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 7056.\n\t[7056\]\t5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini index 7cb62c82da3..07b7337bb30 100644 --- a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini +++ b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini @@ -101,3 +101,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-8.5582718212587339e-15\t5.6332010030746460e-1\t5.6332010030747315e-1\t1.0000000000000151e+0\t9.0957000000000003e-5\n\t[31081\]\t4.5672520847738763e-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.0000000000000151e+0 at index of 31080.\n] 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.1377695940205217e+22\t5.6332010030746460e-1\t1.1377695940205217e+22\t2.0197567837531770e+22\t9.0957000000000003e-5\n\t[31081\]\t4.5772013038705825e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 1.1377695940205217e+22 at index of 31080.\n\tMax RelError of 2.0197567837531770e+22 at index of 31080.\n] + expected: FAIL + + [X SNR (-397.687000526132 dB) is not greater than or equal to 85.58. Got -397.687000526132.] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator-connections.html.ini b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator-connections.html.ini new file mode 100644 index 00000000000..476f2c75c91 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator-connections.html.ini @@ -0,0 +1,22 @@ +[k-rate-oscillator-connections.html] + [X k-rate frequency with input does not equal [0,0.07662386447191238,0.15279719233512878,0.22807207703590393,0.30200594663619995,0.37416407465934753,0.4441221356391907,0.5114688277244568,0.5758082270622253,0.6367618441581726,0.6939714550971985,0.7471005916595459,0.7958369255065918,0.8398938179016113,0.8790122270584106,0.9129621982574463...\] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[129\]\t-6.8821799755096436e-1\t-4.5234957337379456e-1\t2.3586842417716980e-1\t5.2142952720829094e-1\t0.0000000000000000e+0\n\t[130\]\t-9.0242308378219604e-1\t-5.1935595273971558e-1\t3.8306713104248047e-1\t7.3758109254687088e-1\t0.0000000000000000e+0\n\t[131\]\t-9.9687290191650391e-1\t-5.8330863714218140e-1\t4.1356426477432251e-1\t7.0899732738487853e-1\t0.0000000000000000e+0\n\t[132\]\t-9.5903325080871582e-1\t-6.4383149147033691e-1\t3.1520175933837891e-1\t4.8957182665691512e-1\t0.0000000000000000e+0\n\t[133\]\t-7.9392594099044800e-1\t-7.0056873559951782e-1\t9.3357205390930176e-2\t1.3325916594185283e-1\t0.0000000000000000e+0\n\t...and 506 more errors.\n\tMax AbsError of 1.9995587468147278e+0 at index of 618.\n\t[618\]\t-9.9961638450622559e-1\t9.9994236230850220e-1\t1.9995587468147278e+0\t1.9996740034080325e+0\t0.0000000000000000e+0\n\tMax RelError of 7.0191030309800865e+1 at index of 164.\n\t[164\]\t-8.4908038377761841e-1\t1.2271538376808167e-2\t8.6135192215442657e-1\t7.0191030309800865e+1\t0.0000000000000000e+0\n] + expected: FAIL + + [< [Test 1\] 1 out of 8 assertions were failed.] + expected: FAIL + + [X k-rate inputs for both frequency and detune does not equal [0,0.07662386447191238,0.15279719233512878,0.22807207703590393,0.30200594663619995,0.37416407465934753,0.4441221356391907,0.5114688277244568,0.5758082270622253,0.6367618441581726,0.6939714550971985,0.7471005916595459,0.7958369255065918,0.8398938179016113,0.8790122270584106,0.9129621982574463...\] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[129\]\t-6.8821799755096436e-1\t-4.5234957337379456e-1\t2.3586842417716980e-1\t5.2142952720829094e-1\t0.0000000000000000e+0\n\t[130\]\t-9.0242308378219604e-1\t-5.1935595273971558e-1\t3.8306713104248047e-1\t7.3758109254687088e-1\t0.0000000000000000e+0\n\t[131\]\t-9.9687290191650391e-1\t-5.8330863714218140e-1\t4.1356426477432251e-1\t7.0899732738487853e-1\t0.0000000000000000e+0\n\t[132\]\t-9.5903325080871582e-1\t-6.4383149147033691e-1\t3.1520175933837891e-1\t4.8957182665691512e-1\t0.0000000000000000e+0\n\t[133\]\t-7.9392594099044800e-1\t-7.0056873559951782e-1\t9.3357205390930176e-2\t1.3325916594185283e-1\t0.0000000000000000e+0\n\t...and 506 more errors.\n\tMax AbsError of 1.9995587468147278e+0 at index of 618.\n\t[618\]\t-9.9961638450622559e-1\t9.9994236230850220e-1\t1.9995587468147278e+0\t1.9996740034080325e+0\t0.0000000000000000e+0\n\tMax RelError of 7.0191030309800865e+1 at index of 164.\n\t[164\]\t-8.4908038377761841e-1\t1.2271538376808167e-2\t8.6135192215442657e-1\t7.0191030309800865e+1\t0.0000000000000000e+0\n] + expected: FAIL + + [< [Test 5\] 1 out of 15 assertions were failed.] + expected: FAIL + + [< [Test 3\] 1 out of 12 assertions were failed.] + expected: FAIL + + [# AUDIT TASK RUNNER FINISHED: 3 out of 5 tasks were failed.] + expected: FAIL + + [X k-rate frequency input with a-rate detune does not equal [0,0.07662386447191238,0.15279719233512878,0.22807207703590393,0.30200594663619995,0.37416407465934753,0.4441221356391907,0.5114688277244568,0.5758082270622253,0.6367618441581726,0.6939714550971985,0.7471005916595459,0.7958369255065918,0.8398938179016113,0.8790122270584106,0.9129621982574463...\] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[129\]\t-6.8821799755096436e-1\t-4.5234957337379456e-1\t2.3586842417716980e-1\t5.2142952720829094e-1\t0.0000000000000000e+0\n\t[130\]\t-9.0242308378219604e-1\t-5.1935595273971558e-1\t3.8306713104248047e-1\t7.3758109254687088e-1\t0.0000000000000000e+0\n\t[131\]\t-9.9687290191650391e-1\t-5.8330863714218140e-1\t4.1356426477432251e-1\t7.0899732738487853e-1\t0.0000000000000000e+0\n\t[132\]\t-9.5903325080871582e-1\t-6.4383149147033691e-1\t3.1520175933837891e-1\t4.8957182665691512e-1\t0.0000000000000000e+0\n\t[133\]\t-7.9392594099044800e-1\t-7.0056873559951782e-1\t9.3357205390930176e-2\t1.3325916594185283e-1\t0.0000000000000000e+0\n\t...and 506 more errors.\n\tMax AbsError of 1.9995587468147278e+0 at index of 618.\n\t[618\]\t-9.9961638450622559e-1\t9.9994236230850220e-1\t1.9995587468147278e+0\t1.9996740034080325e+0\t0.0000000000000000e+0\n\tMax RelError of 7.0191030309800865e+1 at index of 164.\n\t[164\]\t-8.4908038377761841e-1\t1.2271538376808167e-2\t8.6135192215442657e-1\t7.0191030309800865e+1\t0.0000000000000000e+0\n] + expected: FAIL + diff --git a/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height-orientation-none.html.ini b/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height-orientation-none.html.ini deleted file mode 100644 index 6a36d823470..00000000000 --- a/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height-orientation-none.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[drawImage-from-bitmap-swap-width-height-orientation-none.html] - expected: FAIL diff --git a/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height-orientation-none.tentative.html.ini b/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height-orientation-none.tentative.html.ini new file mode 100644 index 00000000000..6ae80ba13ca --- /dev/null +++ b/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height-orientation-none.tentative.html.ini @@ -0,0 +1,2 @@ +[drawImage-from-bitmap-swap-width-height-orientation-none.tentative.html] + expected: FAIL diff --git a/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height.html.ini b/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height.html.ini deleted file mode 100644 index bf8e8dbcfd1..00000000000 --- a/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[drawImage-from-bitmap-swap-width-height.html] - expected: FAIL diff --git a/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height.tentative.html.ini b/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height.tentative.html.ini new file mode 100644 index 00000000000..a74d6e4189c --- /dev/null +++ b/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height.tentative.html.ini @@ -0,0 +1,2 @@ +[drawImage-from-bitmap-swap-width-height.tentative.html] + expected: FAIL diff --git a/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height.html.ini b/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height.html.ini deleted file mode 100644 index 130c303642e..00000000000 --- a/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[drawImage-from-element-swap-width-height.html] - expected: FAIL diff --git a/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height.tentative.html.ini b/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height.tentative.html.ini new file mode 100644 index 00000000000..10bab447002 --- /dev/null +++ b/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height.tentative.html.ini @@ -0,0 +1,2 @@ +[drawImage-from-element-swap-width-height.tentative.html] + expected: FAIL diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 7376fa59b3c..54899242d11 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -270,6 +270,38 @@ {} ] ] + }, + "filter-effects": { + "crashtests": { + "multiple-references-id-crash-001.html": [ + "9ee04e1015d3c9fc04e8fab240a15d59ae92892d", + [ + null, + {} + ] + ], + "multiple-references-id-crash-002.html": [ + "f7141da63c7a8ce60fa2670486312d77f58b567b", + [ + null, + {} + ] + ] + }, + "feimage-circular-reference-foreign-object-crash.html": [ + "00f0e362237ab3fdb856ea648e950608e8c3f06c", + [ + null, + {} + ] + ], + "feimage-reference-foreign-object-crash.html": [ + "dde4805a368e5b7d9e4dd83ed977d6eb841f4fe4", + [ + null, + {} + ] + ] } }, "dom": { @@ -23664,7 +23696,7 @@ ] ], "image-orientation": { - "drawImage-from-bitmap-orientation-none.html": [ + "drawImage-from-bitmap-orientation-none.tentative.html": [ "f629caf27f0c6a4353443a37b5a6618606f193b4", [ null, @@ -23677,7 +23709,7 @@ {} ] ], - "drawImage-from-bitmap-swap-width-height-orientation-none.html": [ + "drawImage-from-bitmap-swap-width-height-orientation-none.tentative.html": [ "2e88ae2e604209130c3318c7cd347f436cad10d9", [ null, @@ -23690,7 +23722,7 @@ {} ] ], - "drawImage-from-bitmap-swap-width-height.html": [ + "drawImage-from-bitmap-swap-width-height.tentative.html": [ "bca00b3825678a8211c40fd6714b4a5d80b482bd", [ null, @@ -23703,7 +23735,7 @@ {} ] ], - "drawImage-from-bitmap.html": [ + "drawImage-from-bitmap.tentative.html": [ "2014f9c5a2f349986c01ff32b129764246266e64", [ null, @@ -23716,7 +23748,7 @@ {} ] ], - "drawImage-from-element-orientation-none.html": [ + "drawImage-from-element-orientation-none.tentative.html": [ "e18beb9e3cd78cd6bc575f06e5904cc8d21ee63e", [ null, @@ -23729,7 +23761,7 @@ {} ] ], - "drawImage-from-element-swap-width-height-orientation-none.html": [ + "drawImage-from-element-swap-width-height-orientation-none.tentative.html": [ "253c5361327bfbc4d3277527fc9a85dacc1cf708", [ null, @@ -23742,7 +23774,7 @@ {} ] ], - "drawImage-from-element-swap-width-height.html": [ + "drawImage-from-element-swap-width-height.tentative.html": [ "fb59013645a304a44851eb9395e051234b8d29f6", [ null, @@ -23755,7 +23787,7 @@ {} ] ], - "drawImage-from-element.html": [ + "drawImage-from-element.tentative.html": [ "7bad16cc31ccd91a0ad1e9687db46d5c4610f4a9", [ null, @@ -148642,6 +148674,19 @@ {} ] ], + "clip-path-columns-shape-001.html": [ + "de13607ad83c9f06382c8584613883bb8e93639d", + [ + null, + [ + [ + "/css/css-masking/clip-path/reference/clip-path-columns-shape-001-ref.html", + "==" + ] + ], + {} + ] + ], "clip-path-element-userSpaceOnUse-001.html": [ "1381f53cb0c0aefc82a91a232b712d18be625b97", [ @@ -149084,6 +149129,32 @@ {} ] ], + "clip-path-reference-box-001.html": [ + "35b31ebaef1fc184e7f4e6202093d650e6b1db65", + [ + null, + [ + [ + "/css/css-masking/clip-path/reference/clip-path-reference-box-001-ref.html", + "==" + ] + ], + {} + ] + ], + "clip-path-reference-box-003.html": [ + "ac88439d7b2e70a235b7b991b83450083fb8a94c", + [ + null, + [ + [ + "/css/css-masking/clip-path/reference/clip-path-reference-box-003-ref.html", + "==" + ] + ], + {} + ] + ], "clip-path-svg-invalidate.html": [ "0bf921c7cf125c1e8a9e6842c62f294b13104790", [ @@ -149097,6 +149168,19 @@ {} ] ], + "clip-path-transform-mutated-001.html": [ + "01f11a34a33823651d46f4788ca12074f91560ed", + [ + null, + [ + [ + "/css/css-masking/clip-path/reference/clip-path-transform-mutated-001-ref.html", + "==" + ] + ], + {} + ] + ], "clip-path-url-reference-change-from-empty.html": [ "2de0bb866f1c837887d6fa3c5889f8d38da3c055", [ @@ -149122,6 +149206,19 @@ ], {} ] + ], + "reference-local-url-with-base-001.html": [ + "c65761bddfc095e0e85b4feaea4359516a8df5b1", + [ + null, + [ + [ + "/css/css-masking/clip-path/reference/reference-local-url-with-base-001-ref.html", + "==" + ] + ], + {} + ] ] }, "clip-path-svg-content": { @@ -166461,13 +166558,26 @@ {} ] ], - "line-break-normal-015.xht": [ - "3d2f239bbdbce1cb8fe181d753a880c54fafadca", + "line-break-normal-015a.xht": [ + "db3ee2a586fb90433f85b626cf05c2da5eb143cb", [ null, [ [ - "/css/css-text/line-break/reference/line-break-normal-015-ref.xht", + "/css/css-text/line-break/reference/line-break-normal-015a-ref.xht", + "==" + ] + ], + {} + ] + ], + "line-break-normal-015b.xht": [ + "904b009ac69553af92859ec32ef3146669d8219d", + [ + null, + [ + [ + "/css/css-text/line-break/reference/line-break-normal-015b-ref.xht", "==" ] ], @@ -166643,13 +166753,26 @@ {} ] ], - "line-break-strict-015.xht": [ - "ea8caab699fbe16fcdab530809a44867cd7299d3", + "line-break-strict-015a.xht": [ + "9114120bc86e2b629a555539fd97682c8bfe6d6e", [ null, [ [ - "/css/css-text/line-break/reference/line-break-strict-015-ref.xht", + "/css/css-text/line-break/reference/line-break-strict-015a-ref.xht", + "==" + ] + ], + {} + ] + ], + "line-break-strict-015b.xht": [ + "563ae9da9a26ab80ba7b6bf89af8e90c52213a76", + [ + null, + [ + [ + "/css/css-text/line-break/reference/line-break-strict-015b-ref.xht", "==" ] ], @@ -176537,6 +176660,19 @@ ], {} ] + ], + "text-underline-position-from-font-variable.html": [ + "0459a2ea1d48edca515b4d14add39ffa82a4469b", + [ + null, + [ + [ + "/css/css-text-decor/reference/text-underline-position-from-font-variable-ref.html", + "==" + ] + ], + {} + ] ] }, "css-transforms": { @@ -202977,6 +203113,32 @@ {} ] ], + "clip-under-filter-001.html": [ + "7fbf0d60182f70a1d3d4538d9aca143999cfb1de", + [ + null, + [ + [ + "/css/filter-effects/reference/clip-under-filter-001-ref.html", + "==" + ] + ], + {} + ] + ], + "clip-under-filter-002.html": [ + "8b6a66d45232e9924fe079bfbeff88c1aa0b0f53", + [ + null, + [ + [ + "/css/filter-effects/reference/clip-under-filter-002-ref.html", + "==" + ] + ], + {} + ] + ], "css-backdrop-filters-animation-blur.html": [ "3d883c2efd57c0654ef90007444e7cb9b80ed578", [ @@ -203263,6 +203425,19 @@ {} ] ], + "drop-shadow-clipped-001.html": [ + "c08331d77ff3b1c4bfda9262e62d947b55eecf79", + [ + null, + [ + [ + "/css/filter-effects/reference/drop-shadow-clipped-001-ref.html", + "==" + ] + ], + {} + ] + ], "dynamic-filter-changes-001.html": [ "e2a28a3fe45ba90ad512e47b8756a01680b36511", [ @@ -203328,6 +203503,45 @@ {} ] ], + "effect-reference-feimage-001.html": [ + "3a8fb36db92fb408c7011f44724bc8457da7ff37", + [ + null, + [ + [ + "/css/filter-effects/reference/effect-reference-feimage-001-ref.html", + "==" + ] + ], + {} + ] + ], + "effect-reference-feimage-002.html": [ + "c10be0f173ef6638461a7475fefb9ee5f61ac578", + [ + null, + [ + [ + "/css/filter-effects/reference/effect-reference-feimage-002-ref.html", + "==" + ] + ], + {} + ] + ], + "effect-reference-feimage-003.html": [ + "887f5ff212f011b88023386d53346b52599b83e5", + [ + null, + [ + [ + "/css/filter-effects/reference/effect-reference-feimage-003-ref.html", + "==" + ] + ], + {} + ] + ], "effect-reference-lighting-no-light.tentative.html": [ "beefd47a544d5c82b4b1d468ce99938e6d9924d9", [ @@ -203341,6 +203555,19 @@ {} ] ], + "effect-reference-local-url-with-base-001.html": [ + "d3c81300e66fc8df37e89f690940df35426d8bf8", + [ + null, + [ + [ + "/css/filter-effects/reference/effect-reference-local-url-with-base-001-ref.html", + "==" + ] + ], + {} + ] + ], "effect-reference-merge-no-inputs.tentative.html": [ "4fb67db643dd5aebdbff53a0773035747c18836c", [ @@ -203380,6 +203607,19 @@ {} ] ], + "effect-reference-on-transparent-element.html": [ + "e88a656170489af9d4fe69b4a5290ab650fefdc1", + [ + null, + [ + [ + "/css/filter-effects/reference/effect-reference-on-transparent-element-ref.html", + "==" + ] + ], + {} + ] + ], "effect-reference-rename-001.html": [ "6c8374536f4cf748784b7a58fc158d230ea3557f", [ @@ -203406,6 +203646,32 @@ {} ] ], + "effect-reference-source-alpha-001.html": [ + "3bb76015eedd44c590376e80cfd282c2ce5b33a1", + [ + null, + [ + [ + "/css/filter-effects/reference/effect-reference-source-alpha-001-ref.html", + "==" + ] + ], + {} + ] + ], + "effect-reference-source-alpha-002.html": [ + "3c570c59e201b6c3a8a302e07732f3235cec67e5", + [ + null, + [ + [ + "/css/filter-effects/reference/effect-reference-source-alpha-002-ref.html", + "==" + ] + ], + {} + ] + ], "empty-element-with-filter.html": [ "3e8fc7e164cde54a8ff81a241909c2f729f32afb", [ @@ -294998,6 +295264,10 @@ "c427e696bfd64a7fb550d777ce8a8c3d28598245", [] ], + "clip-path-columns-shape-001-ref.html": [ + "4337cdf63758c06d261eb42bd0abc595261350c1", + [] + ], "clip-path-ellipse-ref.html": [ "5adc91a5c00f27f0d3225c99a6c2534b5b868a8d", [] @@ -295034,6 +295304,14 @@ "a19be598ca4b5c428627298d5424eba34bf870f8", [] ], + "clip-path-reference-box-001-ref.html": [ + "f718ea6abfbab54333ba674ff0dcd320d8672bcd", + [] + ], + "clip-path-reference-box-003-ref.html": [ + "f718ea6abfbab54333ba674ff0dcd320d8672bcd", + [] + ], "clip-path-square-001-ref.html": [ "6bc5a16754b1d174bec65817d02d25fb7615f305", [] @@ -295054,9 +295332,17 @@ "e31282c02fdbfd08bbe80acb245bb7b85c28bee9", [] ], + "clip-path-transform-mutated-001-ref.html": [ + "f718ea6abfbab54333ba674ff0dcd320d8672bcd", + [] + ], "green-100x100.html": [ "f718ea6abfbab54333ba674ff0dcd320d8672bcd", [] + ], + "reference-local-url-with-base-001-ref.html": [ + "f718ea6abfbab54333ba674ff0dcd320d8672bcd", + [] ] }, "svg-clipPath.svg": [ @@ -299540,7 +299826,11 @@ "577bf29a5181640a49169cb53b3fdc093d8affcc", [] ], - "line-break-normal-015-ref.xht": [ + "line-break-normal-015a-ref.xht": [ + "941e18242d9868a45dbde986a189feecaed8b05c", + [] + ], + "line-break-normal-015b-ref.xht": [ "b4697babbc212753389385a1376f04331af44817", [] ], @@ -299592,7 +299882,11 @@ "2af0a903eb6776ff7b0ccaf1297dfc8a94d501ed", [] ], - "line-break-strict-015-ref.xht": [ + "line-break-strict-015a-ref.xht": [ + "f8a1222a3334edb8117e9141359958c9b8f51748", + [] + ], + "line-break-strict-015b-ref.xht": [ "8eceb2ae9dc30e4a757675ae952829ba8e932ecd", [] ], @@ -301588,6 +301882,24 @@ "text-underline-position-001-ref.html": [ "aae441ac4e02ddb6e44bfa9004ff33c376cb6548", [] + ], + "text-underline-position-from-font-variable-ref.html": [ + "e621545772d1baa59a8cd37c44d18384551d9d98", + [] + ] + }, + "resources": { + "UnderlineTest-Close.ttf": [ + "983ee05f30f411c774236d0607420274aa97251a", + [] + ], + "UnderlineTest-Far.ttf": [ + "cbca09812ee3d6f687b2e1fba0aebbe84d891b0c", + [] + ], + "UnderlineTest-VF.ttf": [ + "2ac4de16f7e301257e3ee38388e302ee67850d33", + [] ] } }, @@ -307669,6 +307981,18 @@ "bf16d1fa2890af8d1bdb7b95b44af5bfff4dccaa", [] ], + "clip-under-filter-001-ref.html": [ + "60c2c336346dbd236ba29104fdd7a20fa29e7264", + [] + ], + "clip-under-filter-002-ref.html": [ + "60c2c336346dbd236ba29104fdd7a20fa29e7264", + [] + ], + "drop-shadow-clipped-001-ref.html": [ + "305b1d2233de6845713fd43f2cfc1f72b1afdb60", + [] + ], "dynamic-filter-changes-001-ref.html": [ "699d57c2a8c087c25079232a443a6e2b72c1e79e", [] @@ -307689,10 +308013,26 @@ "f718ea6abfbab54333ba674ff0dcd320d8672bcd", [] ], + "effect-reference-feimage-001-ref.html": [ + "9b982b3cfb408badeb9b8b977000fc5e8935e5a6", + [] + ], + "effect-reference-feimage-002-ref.html": [ + "72250a1cf802f836c2b187281fcdd38f076386b3", + [] + ], + "effect-reference-feimage-003-ref.html": [ + "9b982b3cfb408badeb9b8b977000fc5e8935e5a6", + [] + ], "effect-reference-lighting-no-light.tentative-ref.html": [ "e863a6703b2acebbdb10a5eef342cbbd1b6b5bc9", [] ], + "effect-reference-local-url-with-base-001-ref.html": [ + "f718ea6abfbab54333ba674ff0dcd320d8672bcd", + [] + ], "effect-reference-merge-no-inputs.tentative-ref.html": [ "5743e0c3de96ba4fbdf814bf5ec997e0c93e65da", [] @@ -307705,6 +308045,10 @@ "76a7953831720fbe9556afdc4800879c5cdd2634", [] ], + "effect-reference-on-transparent-element-ref.html": [ + "6e27519825d314beda4eaf86bd79e4eef1447e85", + [] + ], "effect-reference-rename-001-ref.html": [ "fe3beae2d4997a7603153c5c885f01c7ca656bcd", [] @@ -307713,6 +308057,14 @@ "d8719aa43a43ebbfebe6caa43b961eeee10b99c5", [] ], + "effect-reference-source-alpha-001-ref.html": [ + "f718ea6abfbab54333ba674ff0dcd320d8672bcd", + [] + ], + "effect-reference-source-alpha-002-ref.html": [ + "eb106f327aa4cb89b96c28d43387144b293c5d6f", + [] + ], "empty-element-with-filter-ref.html": [ "cf2c997f6c0d60cac9896c0b0014189cea7790bc", [] @@ -312789,7 +313141,7 @@ [] ], "crashtest.md": [ - "fa5c4ee67ecda24c4ad87f62008df752aa08503d", + "0166bdeb752ccccb6fdeb6860fe9286936b7bf01", [] ], "css-metadata.md": [ @@ -328336,7 +328688,7 @@ [] ], "event-timing.idl": [ - "e8475d31922f03d34dd70f1fbee094c7977f6676", + "be9918fa9a698ce3c5f35089865becf3307aca65", [] ], "feature-policy.idl": [ @@ -328652,7 +329004,7 @@ [] ], "video-raf.idl": [ - "df4aa4c33decc5e94b7a31442df8d470a61f0f00", + "25f9e3a3ba6d5ee0e6f1be59863455607604b47e", [] ], "visual-viewport.idl": [ @@ -330834,6 +331186,42 @@ [] ] }, + "origin-isolation": { + "META.yml": [ + "937eca52e71dffcbd50b6f9dd869cb95e1808cd5", + [] + ], + "README.md": [ + "b028fcd9a36ff71b0eacd0363121a1fe2774f384", + [] + ], + "parent-yes-child-no-same.sub.https.html.headers": [ + "ea3f6b335c7620acf59f546fd48484bf624ccb38", + [] + ], + "parent-yes-child-no-subdomain.sub.https.html.headers": [ + "ea3f6b335c7620acf59f546fd48484bf624ccb38", + [] + ], + "parent-yes-child-yes-same.sub.https.html.headers": [ + "ea3f6b335c7620acf59f546fd48484bf624ccb38", + [] + ], + "parent-yes-child-yes-subdomain.sub.https.html.headers": [ + "ea3f6b335c7620acf59f546fd48484bf624ccb38", + [] + ], + "resources": { + "helpers.mjs": [ + "e088ffb4e9034216c356366fcc25b18cbe60406a", + [] + ], + "send-origin-isolation-header.py": [ + "8654b087dfa0a859c5f29886e0208eb8f5c4af15", + [] + ] + } + }, "origin-policy": { "bad-server": { "resources": { @@ -331047,7 +331435,7 @@ [] ], "utils.js": [ - "fb60500f3b5f806783a394eed17accc36c75e87c", + "a1fb993eb90e9e24f6502e4aed53a79420d360a6", [] ] } @@ -331356,6 +331744,10 @@ "7c9df9dba643a8202529d9f0b154a504535d7bcb", [] ], + "invalid.asis": [ + "20f7c7f7e515de5f41f423f2dbf6b88a0507b8cc", + [] + ], "open-blank-host.js": [ "f7580bd15212234c36b55a368efa0c729bd64e5b", [] @@ -383318,6 +383710,13 @@ {} ] ], + "overflow-auto-008.html": [ + "03f843a4621022fe028934b36dddae4cc69642ea", + [ + null, + {} + ] + ], "parsing": { "flex-basis-computed.html": [ "549c9bf7053fac57c5dd11eedbf0fddebd324ea7", @@ -383565,8 +383964,8 @@ {} ] ], - "percentage-size-quirks-001.html": [ - "0f01c2069726498f9ca5ded6f476f9ed9e96a7ed", + "percentage-size-quirks.html": [ + "1a5c5136bee8eeca54e65ae9bb509c121a98df62", [ null, {} @@ -420157,7 +420556,16 @@ ] ], "event-click-counts.html": [ - "5c67ac8708271a2d26cdb5b74aaaa8629398b291", + "034e172c1df8d051fde76c2e8787832f2a7c213b", + [ + null, + { + "testdriver": true + } + ] + ], + "event-counts-zero.html": [ + "0cc9e2ee38aa9f0a720952d5c27d3b01537fbdd4", [ null, { @@ -443273,7 +443681,7 @@ ] ], "chained-setTimeout.tentative.html": [ - "133f137eed6f42c6160556eb08efc8290026f1ec", + "b815adab605a33405004556e479dbe53d32cf091", [ null, { @@ -464525,6 +464933,50 @@ ] ] }, + "origin-isolation": { + "parent-no-child-yes-same.sub.https.html": [ + "4239e1644638b04d330ff70f8a27e97f5af88ab0", + [ + null, + {} + ] + ], + "parent-no-child-yes-subdomain.sub.https.html": [ + "f2389eaa6a02ccb42f232e35f1c4600ddbf92fa6", + [ + null, + {} + ] + ], + "parent-yes-child-no-same.sub.https.html": [ + "a1b9e4e3f5a230e8e49d3552d338d48f029d07cd", + [ + null, + {} + ] + ], + "parent-yes-child-no-subdomain.sub.https.html": [ + "b167b1b4954080c57ed718996f50ff2c6586a9ad", + [ + null, + {} + ] + ], + "parent-yes-child-yes-same.sub.https.html": [ + "f43526cd5529fc8346c338545f9cbba99769cb7e", + [ + null, + {} + ] + ], + "parent-yes-child-yes-subdomain.sub.https.html": [ + "5c3567cee570757305189263ed6149392b3c4fd5", + [ + null, + {} + ] + ] + }, "origin-policy": { "bad-server": { "bad-headers.https.html": [ @@ -464954,14 +465406,14 @@ ] ], "fcp-canvas-context.html": [ - "18eb07bfdea11aa1c5eef9e77b5aeccd1b0c3332", + "5f3c9d9983bf0404509fc960d1b7dd66b058950f", [ null, {} ] ], "fcp-gradient.html": [ - "3a356f3dd1abf0f35c248fece3c877210162550b", + "1d15812a0f3ea5c274017f028f42cc2c242a83b3", [ null, {} @@ -465073,7 +465525,7 @@ ] ], "fcp-text-input.html": [ - "6a0cd86881fd8f7ebeee2d79dc173c063e8bc181", + "b22c618c119fd7cf99cfbf2b53c0dfbaaef5983e", [ null, {} @@ -465087,14 +465539,14 @@ ] ], "fcp-video-frame.html": [ - "fff38cd2c811937cac38c605e94402eab1e4e977", + "0f61b7e5289b69457258258db4b2daea6224b5df", [ null, {} ] ], "fcp-video-poster.html": [ - "ed9cabcaeeb8c62687aee7ec4033650eeea3295c", + "5c1048ac0a7992c454ce9f542036a0b6bcf2edc2", [ null, {} @@ -465108,7 +465560,7 @@ ] ], "fcp-with-rtl.html": [ - "35a73d490c4df57263f7b115644ad0c97214db48", + "868d2fcaf8fdfaf3f20713375688aa106c579b03", [ null, {} @@ -467509,6 +467961,13 @@ {} ] ], + "portals-activate-network-error.html": [ + "c2094fd4ded233f33f5a7631c2f9d2309567d624", + [ + null, + {} + ] + ], "portals-activate-no-browsing-context.html": [ "bfc45f68c1859401b015d9cd22aaf50cdefb1770", [ @@ -467659,7 +468118,7 @@ ], "xfo": { "portals-xfo-deny.sub.html": [ - "dde09c6e72bf9d2f0632aecbf6f8ca1cd0006436", + "2110d4906f9dd0769beb07cf428ecf3ce40ef370", [ null, { @@ -481685,10 +482144,12 @@ ] ], "sandboxed-iframe-fetch-event.https.html": [ - "e08b71645325cd8fe94f1001bc778ed325571a98", + "ba34e790ff07c8ba35d89d50df7b010e6c529e35", [ null, - {} + { + "timeout": "long" + } ] ], "sandboxed-iframe-navigator-serviceworker.https.html": [ @@ -500780,6 +501241,13 @@ {} ] ], + "k-rate-oscillator-connections.html": [ + "475b36436728709ad58d25ee300af094ea208eac", + [ + null, + {} + ] + ], "k-rate-oscillator.html": [ "6803f55eab00bbfb9766cc044a7240e6b4a0fda0", [ diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini new file mode 100644 index 00000000000..4bfb0c2053a --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-004.html] + [Miss float below something else] + expected: FAIL + diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini deleted file mode 100644 index baa9f1a7541..00000000000 --- a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-005.html] - [Miss clipped float] - expected: FAIL - diff --git a/tests/wpt/metadata/css/css-flexbox/percentage-size-quirks.html.ini b/tests/wpt/metadata/css/css-flexbox/percentage-size-quirks.html.ini new file mode 100644 index 00000000000..930207f198a --- /dev/null +++ b/tests/wpt/metadata/css/css-flexbox/percentage-size-quirks.html.ini @@ -0,0 +1,4 @@ +[percentage-size-quirks.html] + [.flexbox 8] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-text-decor/text-underline-position-from-font-variable.html.ini b/tests/wpt/metadata/css/css-text-decor/text-underline-position-from-font-variable.html.ini new file mode 100644 index 00000000000..fa2b7b8be8f --- /dev/null +++ b/tests/wpt/metadata/css/css-text-decor/text-underline-position-from-font-variable.html.ini @@ -0,0 +1,2 @@ +[text-underline-position-from-font-variable.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/line-break/line-break-normal-015.xht.ini b/tests/wpt/metadata/css/css-text/line-break/line-break-normal-015.xht.ini deleted file mode 100644 index 8f4870130ff..00000000000 --- a/tests/wpt/metadata/css/css-text/line-break/line-break-normal-015.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[line-break-normal-015.xht] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/line-break/line-break-normal-015a.xht.ini b/tests/wpt/metadata/css/css-text/line-break/line-break-normal-015a.xht.ini new file mode 100644 index 00000000000..71680f4af31 --- /dev/null +++ b/tests/wpt/metadata/css/css-text/line-break/line-break-normal-015a.xht.ini @@ -0,0 +1,2 @@ +[line-break-normal-015a.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/line-break/line-break-normal-015b.xht.ini b/tests/wpt/metadata/css/css-text/line-break/line-break-normal-015b.xht.ini new file mode 100644 index 00000000000..45a7609fed1 --- /dev/null +++ b/tests/wpt/metadata/css/css-text/line-break/line-break-normal-015b.xht.ini @@ -0,0 +1,2 @@ +[line-break-normal-015b.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/line-break/line-break-strict-015.xht.ini b/tests/wpt/metadata/css/css-text/line-break/line-break-strict-015.xht.ini deleted file mode 100644 index 3a68b42577f..00000000000 --- a/tests/wpt/metadata/css/css-text/line-break/line-break-strict-015.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[line-break-strict-015.xht] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/line-break/line-break-strict-015a.xht.ini b/tests/wpt/metadata/css/css-text/line-break/line-break-strict-015a.xht.ini new file mode 100644 index 00000000000..881ee8aa238 --- /dev/null +++ b/tests/wpt/metadata/css/css-text/line-break/line-break-strict-015a.xht.ini @@ -0,0 +1,2 @@ +[line-break-strict-015a.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/line-break/line-break-strict-015b.xht.ini b/tests/wpt/metadata/css/css-text/line-break/line-break-strict-015b.xht.ini new file mode 100644 index 00000000000..fcc474b48ee --- /dev/null +++ b/tests/wpt/metadata/css/css-text/line-break/line-break-strict-015b.xht.ini @@ -0,0 +1,2 @@ +[line-break-strict-015b.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini new file mode 100644 index 00000000000..e181af5397f --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini @@ -0,0 +1,4 @@ +[elementsFromPoint-invalid-cases.html] + [The root element is the last element returned for otherwise empty queries within the viewport] + expected: FAIL + diff --git a/tests/wpt/metadata/css/filter-effects/drop-shadow-clipped-001.html.ini b/tests/wpt/metadata/css/filter-effects/drop-shadow-clipped-001.html.ini new file mode 100644 index 00000000000..fd9bd8fc327 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/drop-shadow-clipped-001.html.ini @@ -0,0 +1,2 @@ +[drop-shadow-clipped-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/effect-reference-feimage-001.html.ini b/tests/wpt/metadata/css/filter-effects/effect-reference-feimage-001.html.ini new file mode 100644 index 00000000000..4fc95ebcba0 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/effect-reference-feimage-001.html.ini @@ -0,0 +1,2 @@ +[effect-reference-feimage-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/effect-reference-feimage-002.html.ini b/tests/wpt/metadata/css/filter-effects/effect-reference-feimage-002.html.ini new file mode 100644 index 00000000000..7511fa073bf --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/effect-reference-feimage-002.html.ini @@ -0,0 +1,2 @@ +[effect-reference-feimage-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/effect-reference-feimage-003.html.ini b/tests/wpt/metadata/css/filter-effects/effect-reference-feimage-003.html.ini new file mode 100644 index 00000000000..d36b9498ab1 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/effect-reference-feimage-003.html.ini @@ -0,0 +1,2 @@ +[effect-reference-feimage-003.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/effect-reference-local-url-with-base-001.html.ini b/tests/wpt/metadata/css/filter-effects/effect-reference-local-url-with-base-001.html.ini new file mode 100644 index 00000000000..9b68627eef1 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/effect-reference-local-url-with-base-001.html.ini @@ -0,0 +1,2 @@ +[effect-reference-local-url-with-base-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/effect-reference-on-transparent-element.html.ini b/tests/wpt/metadata/css/filter-effects/effect-reference-on-transparent-element.html.ini new file mode 100644 index 00000000000..6a658d9a25d --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/effect-reference-on-transparent-element.html.ini @@ -0,0 +1,2 @@ +[effect-reference-on-transparent-element.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/effect-reference-source-alpha-001.html.ini b/tests/wpt/metadata/css/filter-effects/effect-reference-source-alpha-001.html.ini new file mode 100644 index 00000000000..3e443afc7d3 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/effect-reference-source-alpha-001.html.ini @@ -0,0 +1,2 @@ +[effect-reference-source-alpha-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/effect-reference-source-alpha-002.html.ini b/tests/wpt/metadata/css/filter-effects/effect-reference-source-alpha-002.html.ini new file mode 100644 index 00000000000..1b72e3bc687 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/effect-reference-source-alpha-002.html.ini @@ -0,0 +1,2 @@ +[effect-reference-source-alpha-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini index f88cdea09d8..42843b8ce63 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -315,21 +315,21 @@ [<iframe>: combined response Content-Type: text/html */*] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" text/plain] - expected: FAIL - [<iframe>: separate response Content-Type: text/html;" text/plain] expected: FAIL [<iframe>: separate response Content-Type: text/html */*] expected: FAIL - [<iframe>: separate response Content-Type: text/plain */*] + [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html] + expected: FAIL + + [<iframe>: separate response Content-Type: text/html */*;charset=gbk] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" \\" text/plain] + [<iframe>: combined response Content-Type: text/html */*;charset=gbk] expected: FAIL - [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] + [<iframe>: combined response Content-Type: text/html;x=" text/plain] expected: FAIL diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini index 8456d88e4f3..5c001592859 100644 --- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini @@ -56,9 +56,6 @@ [separate text/javascript x/x] expected: FAIL - [separate text/javascript; charset=windows-1252 text/javascript] - expected: FAIL - - [separate text/javascript;charset=windows-1252 text/javascript] + [separate text/javascript;charset=windows-1252 error text/javascript] expected: FAIL diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini index 30e1b851fd4..70efd28ddfc 100644 --- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini +++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini @@ -11,3 +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%20no%0D%0AX-Content-Type-Options%3A%20nosniff] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini new file mode 100644 index 00000000000..87b07c3e670 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_1.html] + [Multiple history traversals from the same task] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini new file mode 100644 index 00000000000..51f8272a6de --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_3.html] + [Multiple history traversals, last would be aborted] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini new file mode 100644 index 00000000000..385376c7321 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_4.html] + [Multiple history traversals, last would be aborted] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini new file mode 100644 index 00000000000..dc2e45516de --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_5.html] + [Multiple history traversals, last would be aborted] + expected: FAIL + diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini index 192675d0844..1f47978311d 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini @@ -131,3 +131,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 44063 more errors.\n\tMax AbsError of 1.9999977350234985e+0 at index of 36821.\n\t[36821\]\t9.9999773502349854e-1\t-1.0000000000000000e+0\t1.9999977350234985e+0\t1.9999977350234985e+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 + [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 42300 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 23900.\n\t[23900\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 7056.\n\t[7056\]\t5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n] + expected: FAIL + diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini index 06fdfd037df..bf6a53ab8b2 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini @@ -332,3 +332,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-8.5582718212587339e-15\t5.6332010030746460e-1\t5.6332010030747315e-1\t1.0000000000000151e+0\t9.0957000000000003e-5\n\t[31081\]\t4.5672520847738763e-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.0000000000000151e+0 at index of 31080.\n] 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.1377695940205217e+22\t5.6332010030746460e-1\t1.1377695940205217e+22\t2.0197567837531770e+22\t9.0957000000000003e-5\n\t[31081\]\t4.5772013038705825e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 1.1377695940205217e+22 at index of 31080.\n\tMax RelError of 2.0197567837531770e+22 at index of 31080.\n] + expected: FAIL + + [X SNR (-397.687000526132 dB) is not greater than or equal to 85.58. Got -397.687000526132.] + expected: FAIL + diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator-connections.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator-connections.html.ini new file mode 100644 index 00000000000..476f2c75c91 --- /dev/null +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator-connections.html.ini @@ -0,0 +1,22 @@ +[k-rate-oscillator-connections.html] + [X k-rate frequency with input does not equal [0,0.07662386447191238,0.15279719233512878,0.22807207703590393,0.30200594663619995,0.37416407465934753,0.4441221356391907,0.5114688277244568,0.5758082270622253,0.6367618441581726,0.6939714550971985,0.7471005916595459,0.7958369255065918,0.8398938179016113,0.8790122270584106,0.9129621982574463...\] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[129\]\t-6.8821799755096436e-1\t-4.5234957337379456e-1\t2.3586842417716980e-1\t5.2142952720829094e-1\t0.0000000000000000e+0\n\t[130\]\t-9.0242308378219604e-1\t-5.1935595273971558e-1\t3.8306713104248047e-1\t7.3758109254687088e-1\t0.0000000000000000e+0\n\t[131\]\t-9.9687290191650391e-1\t-5.8330863714218140e-1\t4.1356426477432251e-1\t7.0899732738487853e-1\t0.0000000000000000e+0\n\t[132\]\t-9.5903325080871582e-1\t-6.4383149147033691e-1\t3.1520175933837891e-1\t4.8957182665691512e-1\t0.0000000000000000e+0\n\t[133\]\t-7.9392594099044800e-1\t-7.0056873559951782e-1\t9.3357205390930176e-2\t1.3325916594185283e-1\t0.0000000000000000e+0\n\t...and 506 more errors.\n\tMax AbsError of 1.9995587468147278e+0 at index of 618.\n\t[618\]\t-9.9961638450622559e-1\t9.9994236230850220e-1\t1.9995587468147278e+0\t1.9996740034080325e+0\t0.0000000000000000e+0\n\tMax RelError of 7.0191030309800865e+1 at index of 164.\n\t[164\]\t-8.4908038377761841e-1\t1.2271538376808167e-2\t8.6135192215442657e-1\t7.0191030309800865e+1\t0.0000000000000000e+0\n] + expected: FAIL + + [< [Test 1\] 1 out of 8 assertions were failed.] + expected: FAIL + + [X k-rate inputs for both frequency and detune does not equal [0,0.07662386447191238,0.15279719233512878,0.22807207703590393,0.30200594663619995,0.37416407465934753,0.4441221356391907,0.5114688277244568,0.5758082270622253,0.6367618441581726,0.6939714550971985,0.7471005916595459,0.7958369255065918,0.8398938179016113,0.8790122270584106,0.9129621982574463...\] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[129\]\t-6.8821799755096436e-1\t-4.5234957337379456e-1\t2.3586842417716980e-1\t5.2142952720829094e-1\t0.0000000000000000e+0\n\t[130\]\t-9.0242308378219604e-1\t-5.1935595273971558e-1\t3.8306713104248047e-1\t7.3758109254687088e-1\t0.0000000000000000e+0\n\t[131\]\t-9.9687290191650391e-1\t-5.8330863714218140e-1\t4.1356426477432251e-1\t7.0899732738487853e-1\t0.0000000000000000e+0\n\t[132\]\t-9.5903325080871582e-1\t-6.4383149147033691e-1\t3.1520175933837891e-1\t4.8957182665691512e-1\t0.0000000000000000e+0\n\t[133\]\t-7.9392594099044800e-1\t-7.0056873559951782e-1\t9.3357205390930176e-2\t1.3325916594185283e-1\t0.0000000000000000e+0\n\t...and 506 more errors.\n\tMax AbsError of 1.9995587468147278e+0 at index of 618.\n\t[618\]\t-9.9961638450622559e-1\t9.9994236230850220e-1\t1.9995587468147278e+0\t1.9996740034080325e+0\t0.0000000000000000e+0\n\tMax RelError of 7.0191030309800865e+1 at index of 164.\n\t[164\]\t-8.4908038377761841e-1\t1.2271538376808167e-2\t8.6135192215442657e-1\t7.0191030309800865e+1\t0.0000000000000000e+0\n] + expected: FAIL + + [< [Test 5\] 1 out of 15 assertions were failed.] + expected: FAIL + + [< [Test 3\] 1 out of 12 assertions were failed.] + expected: FAIL + + [# AUDIT TASK RUNNER FINISHED: 3 out of 5 tasks were failed.] + expected: FAIL + + [X k-rate frequency input with a-rate detune does not equal [0,0.07662386447191238,0.15279719233512878,0.22807207703590393,0.30200594663619995,0.37416407465934753,0.4441221356391907,0.5114688277244568,0.5758082270622253,0.6367618441581726,0.6939714550971985,0.7471005916595459,0.7958369255065918,0.8398938179016113,0.8790122270584106,0.9129621982574463...\] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[129\]\t-6.8821799755096436e-1\t-4.5234957337379456e-1\t2.3586842417716980e-1\t5.2142952720829094e-1\t0.0000000000000000e+0\n\t[130\]\t-9.0242308378219604e-1\t-5.1935595273971558e-1\t3.8306713104248047e-1\t7.3758109254687088e-1\t0.0000000000000000e+0\n\t[131\]\t-9.9687290191650391e-1\t-5.8330863714218140e-1\t4.1356426477432251e-1\t7.0899732738487853e-1\t0.0000000000000000e+0\n\t[132\]\t-9.5903325080871582e-1\t-6.4383149147033691e-1\t3.1520175933837891e-1\t4.8957182665691512e-1\t0.0000000000000000e+0\n\t[133\]\t-7.9392594099044800e-1\t-7.0056873559951782e-1\t9.3357205390930176e-2\t1.3325916594185283e-1\t0.0000000000000000e+0\n\t...and 506 more errors.\n\tMax AbsError of 1.9995587468147278e+0 at index of 618.\n\t[618\]\t-9.9961638450622559e-1\t9.9994236230850220e-1\t1.9995587468147278e+0\t1.9996740034080325e+0\t0.0000000000000000e+0\n\tMax RelError of 7.0191030309800865e+1 at index of 164.\n\t[164\]\t-8.4908038377761841e-1\t1.2271538376808167e-2\t8.6135192215442657e-1\t7.0191030309800865e+1\t0.0000000000000000e+0\n] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/WorkerGlobalScope-close.html.ini b/tests/wpt/metadata/workers/WorkerGlobalScope-close.html.ini deleted file mode 100644 index fe8654e447c..00000000000 --- a/tests/wpt/metadata/workers/WorkerGlobalScope-close.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[WorkerGlobalScope-close.html] - [Test sending a message after closing.] - expected: FAIL - diff --git a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-orientation-none.html b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-orientation-none.tentative.html index f629caf27f0..f629caf27f0 100644 --- a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-orientation-none.html +++ b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-orientation-none.tentative.html diff --git a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height-orientation-none.html b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height-orientation-none.tentative.html index 2e88ae2e604..2e88ae2e604 100644 --- a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height-orientation-none.html +++ b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height-orientation-none.tentative.html diff --git a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height.html b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height.tentative.html index bca00b38256..bca00b38256 100644 --- a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height.html +++ b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height.tentative.html diff --git a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap.html b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap.tentative.html index 2014f9c5a2f..2014f9c5a2f 100644 --- a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap.html +++ b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap.tentative.html diff --git a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-orientation-none.html b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-orientation-none.tentative.html index e18beb9e3cd..e18beb9e3cd 100644 --- a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-orientation-none.html +++ b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-orientation-none.tentative.html diff --git a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height-orientation-none.html b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height-orientation-none.tentative.html index 253c5361327..253c5361327 100644 --- a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height-orientation-none.html +++ b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height-orientation-none.tentative.html diff --git a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height.html b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height.tentative.html index fb59013645a..fb59013645a 100644 --- a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height.html +++ b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height.tentative.html diff --git a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element.html b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element.tentative.html index 7bad16cc31c..7bad16cc31c 100644 --- a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element.html +++ b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/image-orientation/drawImage-from-element.tentative.html diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/overflow-auto-008.html b/tests/wpt/web-platform-tests/css/css-flexbox/overflow-auto-008.html new file mode 100644 index 00000000000..03f843a4621 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/overflow-auto-008.html @@ -0,0 +1,50 @@ +<!DOCTYPE html> +<html> +<title>CSS Flexbox: adding scrollbars with overflow: auto and flex-direction: column.</title> +<link rel="help" href="https://drafts.csswg.org/css-overflow-3/#overflow-properties"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-direction-property"> +<link rel="help" href="https://crbug.com/512229"> +<meta name="assert" content="This test checks that, when a block inside a flexbox with flex-direction: column adds horizontal scrollbars due to overflow, the parent flexbox is still able to render its contents without overflowing."/> + +<style> +.vflex { + display: flex; + flex-direction: column; + max-width: 200px; + margin: 10px 0 10px 0; +} + +.hbox { + overflow-x: auto; + white-space: nowrap; +} + +.rect { + min-height: 100px; + min-width: 100px; + background-color: green; + display: inline-block; +} +</style> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<body> + +<div class="vflex"> + <div class="hbox"> + <div class="rect"></div> + <div class="rect"></div> + </div> +</div> + +<script> +var hbox = document.querySelector('.hbox'); +test(function() { + assert_equals(hbox.parentNode.clientHeight, hbox.parentNode.scrollHeight); + assert_equals(hbox.clientHeight, hbox.scrollHeight); +}, 'hbox dimensions'); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/percentage-size-quirks-001.html b/tests/wpt/web-platform-tests/css/css-flexbox/percentage-size-quirks.html index 0f01c206972..1a5c5136bee 100644 --- a/tests/wpt/web-platform-tests/css/css-flexbox/percentage-size-quirks-001.html +++ b/tests/wpt/web-platform-tests/css/css-flexbox/percentage-size-quirks.html @@ -1,8 +1,8 @@ <title>CSS Flexbox: percentage size in flexbox children in quirks mode</title> <link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-containers"> <link rel="help" href="https://drafts.csswg.org/css-sizing-3/#percentage-sizing"> -<link rel="help" href="https://bugs.webkit.org/show_bug.cgi?id=81809"> -<meta name="assert" content="This test checks that percentage height/width values in quirks mode are correctly resolved in flexbox children."> +<link rel="help" href="https://crbug.com/531783"> +<meta name="assert" content="This test checks that percentage height/width values in flexbox children are correctly resolved regardless of quirks mode."> <style> .flexbox { display: flex; diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-columns-shape-001.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-columns-shape-001.html new file mode 100644 index 00000000000..de13607ad83 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-columns-shape-001.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<title>CSS Masking: Test clip-path property in column</title> +<link rel="author" title="Fredrik Söderquist" href="mailto:fs@opera.com"> +<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#the-clip-path"> +<link rel="issue" href="https://bugs.chromium.org/p/chromium/issues/detail?id=626097"> +<link rel="match" href="reference/clip-path-columns-shape-001-ref.html"> +<meta name="assert" content="This test ensures that clip-path property works correctly in column layout."> +<style> +body { margin: 0; } +.clipped { + background-color: green; + border: 5px solid red; + -webkit-clip-path: inset(5px); + clip-path: inset(5px); +} +</style> +<div style="columns: 2; column-gap: 0; width: 200px; height: 100px"> + <div style="height: 100px"></div> + <div style="height: 90px" class="clipped"></div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-reference-box-001.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-reference-box-001.html new file mode 100644 index 00000000000..35b31ebaef1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-reference-box-001.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<title>CSS Masking: clip path reference box with box-shadow</title> +<link rel="author" title="Fredrik Söderquist" href="mailto:fs@opera.com"> +<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#the-clip-path"> +<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#propdef-box-shadow"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=418484"> +<link rel="match" href="reference/clip-path-reference-box-001-ref.html"> +<meta name="assert" content="Check that the 'clip-path' property uses the border box as the reference box."> + +<style> +.clipped { + width: 100px; + height: 200px; + background-color: green; + clip-path: polygon(0% 0%,100% 0%,100% 50%,0% 50%); + box-shadow: 100px 0px red; +} +</style> +<div class="clipped"></div> diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-reference-box-003.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-reference-box-003.html new file mode 100644 index 00000000000..ac88439d7b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-reference-box-003.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<title>CSS Masking: clip path reference box with transform</title> +<link rel="author" title="Fredrik Söderquist" href="mailto:fs@opera.com"> +<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#the-clip-path"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=418484"> +<link rel="match" href="reference/clip-path-reference-box-003-ref.html"> +<meta name="assert" content="Check that the 'clip-path' property uses the border box as the reference box when using transform."> + +<style> +.clipped { + width: 100px; + height: 200px; + background-color: green; + clip-path: polygon(0% 0%,100% 0%,100% 50%,0% 50%); +} +.abs { + position: absolute; + width: 200px; + height: 200px; +} +</style> +<div class="abs"> + <div class="clipped" style="position: absolute; overflow: hidden"> + <div class="abs" style="transform: translate(0px, 100px); background-color: red;"></div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-transform-mutated-001.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-transform-mutated-001.html new file mode 100644 index 00000000000..01f11a34a33 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-transform-mutated-001.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<title>CSS Masking: Test clip-path after updating its transform</title> +<link rel="author" title="Fredrik Söderquist" href="mailto:fs@opera.com"> +<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#the-clip-path"> +<link rel="issue" href="https://bugs.chromium.org/p/chromium/issues/detail?id=881700"> +<link rel="match" href="reference/clip-path-transform-mutated-001-ref.html"> +<meta name="assert" content="This test ensures that updating clipPath transform works properly."> +<script> +setup({ explicit_done: true }); +</script> +<style> +#target { + width: 100px; + height: 100px; + background-color: green; + clip-path: url(#clip); +} +</style> +<div id="target"></div> +<svg> + <clipPath id="clip"> + <rect width="1" height="1"/> + </clipPath> +</svg> +<script> +clip.style.transform = 'scale(100, 100)'; +</script> diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference-local-url-with-base-001.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference-local-url-with-base-001.html new file mode 100644 index 00000000000..c65761bddfc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference-local-url-with-base-001.html @@ -0,0 +1,25 @@ +<!DOCTYPE html> +<title>CSS Masking: clip path with local URL using a base element</title> +<link rel="author" title="Fredrik Söderquist" href="mailto:fs@opera.com"> +<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#the-clip-path"> +<link rel="help" href="https://drafts.csswg.org/css-values/#local-urls"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=470608"> +<link rel="match" href="reference/reference-local-url-with-base-001-ref.html"> +<meta name="assert" content="Check that fragment-only URLs are always document-local references."> + +<base href="http://www.example.com/"> +<style> +#target { + width: 100px; + height: 100px; + border-right: 100px solid red; + background-color: green; + clip-path: url(#clip); +} +</style> +<div id="target"></div> +<svg> + <clipPath id="clip"> + <rect width="100" height="100"/> + </clipPath> +</svg> diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/clip-path-columns-shape-001-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/clip-path-columns-shape-001-ref.html new file mode 100644 index 00000000000..4337cdf6375 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/clip-path-columns-shape-001-ref.html @@ -0,0 +1,4 @@ +<!DOCTYPE html> +<body style="margin: 0"> + <div style="width: 90px; height: 90px; margin-left: 105px; margin-top: 5px; background-color: green"></div> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/clip-path-reference-box-001-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/clip-path-reference-box-001-ref.html new file mode 100644 index 00000000000..f718ea6abfb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/clip-path-reference-box-001-ref.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<div style="width: 100px; height: 100px; background-color: green"></div> diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/clip-path-reference-box-003-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/clip-path-reference-box-003-ref.html new file mode 100644 index 00000000000..f718ea6abfb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/clip-path-reference-box-003-ref.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<div style="width: 100px; height: 100px; background-color: green"></div> diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/clip-path-transform-mutated-001-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/clip-path-transform-mutated-001-ref.html new file mode 100644 index 00000000000..f718ea6abfb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/clip-path-transform-mutated-001-ref.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<div style="width: 100px; height: 100px; background-color: green"></div> diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/reference-local-url-with-base-001-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/reference-local-url-with-base-001-ref.html new file mode 100644 index 00000000000..f718ea6abfb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/reference/reference-local-url-with-base-001-ref.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<div style="width: 100px; height: 100px; background-color: green"></div> diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-position-from-font-variable-ref.html b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-position-from-font-variable-ref.html new file mode 100644 index 00000000000..e621545772d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-position-from-font-variable-ref.html @@ -0,0 +1,42 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Text Decoration Test: text-underline-position respects variable font properties</title> +<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#text-underline-position-property"> +<meta name="assert" content="text-underline-position from-font respects MVAR table of variable fonts for variable metrics"> +<link rel="author" title="Dominik Röttsches" href="mailto:drott@chromium.org"> +<style> +@font-face { +font-family: underline-close; +src: url(../resources/UnderlineTest-Close.ttf); +} + +@font-face { +font-family: underline-far; +src: url(../resources/UnderlineTest-Far.ttf); +} + +.test { +text-decoration: underline; +text-underline-position: from-font; +font-size: 64px; +line-height: 1.8; +} + +.close_underline { +font-family: underline-close; +} + +.far_underline { +font-family: underline-far; +} +</style> +</head> +<body> + <p>Test passes if the underline on the first line is close to the baseline and far from the baseline on the + second line.</p> + <div class="test"><span class="close_underline">aagaa</span></div> + <div class="test"><span class="far_underline">aagaa</span></div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/resources/UnderlineTest-Close.ttf b/tests/wpt/web-platform-tests/css/css-text-decor/resources/UnderlineTest-Close.ttf Binary files differnew file mode 100644 index 00000000000..983ee05f30f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/resources/UnderlineTest-Close.ttf diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/resources/UnderlineTest-Far.ttf b/tests/wpt/web-platform-tests/css/css-text-decor/resources/UnderlineTest-Far.ttf Binary files differnew file mode 100644 index 00000000000..cbca09812ee --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/resources/UnderlineTest-Far.ttf diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/resources/UnderlineTest-VF.ttf b/tests/wpt/web-platform-tests/css/css-text-decor/resources/UnderlineTest-VF.ttf Binary files differnew file mode 100644 index 00000000000..2ac4de16f7e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/resources/UnderlineTest-VF.ttf diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-underline-position-from-font-variable.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-underline-position-from-font-variable.html new file mode 100644 index 00000000000..0459a2ea1d4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-underline-position-from-font-variable.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Text Decoration Test: text-underline-position respects variable font properties</title> +<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#text-underline-position-property"> +<meta name="assert" content="text-underline-position from-font respects MVAR table of variable fonts for variable metrics"> +<link rel="author" title="Dominik Röttsches" href="mailto:drott@chromium.org"> +<link rel="match" href="reference/text-underline-position-from-font-variable-ref.html"> +<style> +@font-face { +font-family: underline-variable; +src: url(resources/UnderlineTest-VF.ttf); +} + +.test { +text-decoration: underline; +text-underline-position: from-font; +font-size: 64px; +line-height: 1.8; +} + +.close_underline { +font-family: underline-variable, sans-serif; +font-variation-settings: 'UNDO' 1; +} + +.far_underline { +font-family: underline-variable, sans-serif; +font-variation-settings: 'UNDO' 1000; +} +</style> +</head> +<body> + <p>Test passes if the underline on the first line is close to the baseline and far from the baseline on the + second line.</p> + <div class="test"><span class="close_underline">aagaa</span></div> + <div class="test"><span class="far_underline">aagaa</span></div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-text/line-break/line-break-normal-015a.xht b/tests/wpt/web-platform-tests/css/css-text/line-break/line-break-normal-015a.xht new file mode 100644 index 00000000000..db3ee2a586f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/line-break/line-break-normal-015a.xht @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <title>CSS Text Test: line-break - normal and inseparable characters</title> + <!-- inseparable characters --> + <link rel="author" title="Taka Oshiyama" href="mailto:takaoshiyama@gmail.com" /> + <link rel="author" title="Shinyu Murakami" href="mailto:murakami@vivliostyle.org" /> + <link rel="help" title="5.3. Line Breaking Rules: the 'line-break' property" href="https://drafts.csswg.org/css-text-3/#line-break-property" /> + <link rel="match" href="reference/line-break-normal-015a-ref.xht" /> + <meta http-equiv="content-language" content="en, ja" /> + <meta name="assert" content="This test verifies that 'line-break: normal' does not allow line breaking between inseparable characters such as TWO DOT LEADER (U+2025) and HORIZONTAL ELLIPSIS (U+2026)." /> + <style type="text/css"> + @font-face + { + font-family: "mplus-1p-regular"; + src: url("/fonts/mplus-1p-regular.woff") format("woff"); + /* filesize: 803300 bytes (784.5 KBytes) */ + /* + mplus-1p-regular.ttf can be downloaded at/from [TBD later] + */ + } + .test span { + line-break: normal; /* The property to be tested */ + } + p.test, p.control { + border: 1px solid gray; + color: blue; + font-family: "mplus-1p-regular"; + width: 10.2em; /* added extra .2em for some symbols wider than 1em */ + } + span.target { + background-color: aqua; + } + div.wrapper { + display: inline-block; + border: 1px solid; + margin: 10px; + padding: 10px; + } + </style> + </head> + <body lang="en"> + <p> + Test passes if the highlighted characters in each pair of rectangles are at the exact same horizontal position. + </p> + <div class="wrapper"> + <!-- inseparable characters TWO DOT LEADER --> + <p class="test" lang="ja"> + <span>サンプルサンプル文<span class="target">‥‥</span>サンプル文</span> + </p> + <p class="control" lang="ja"> + <span>サンプルサンプル文<br /><span class="target">‥‥</span>サンプル文</span> + </p> + </div> + <div class="wrapper"> + <!-- inseparable characters HORIZONTAL ELLIPSIS --> + <p class="test" lang="ja"> + <span>サンプルサンプル文<span class="target">……</span>サンプル文</span> + </p> + <p class="control" lang="ja"> + <span>サンプルサンプル文<br /><span class="target">……</span>サンプル文</span> + </p> + </div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-text/line-break/line-break-normal-015.xht b/tests/wpt/web-platform-tests/css/css-text/line-break/line-break-normal-015b.xht index 3d2f239bbdb..904b009ac69 100644 --- a/tests/wpt/web-platform-tests/css/css-text/line-break/line-break-normal-015.xht +++ b/tests/wpt/web-platform-tests/css/css-text/line-break/line-break-normal-015b.xht @@ -7,9 +7,10 @@ <link rel="author" title="Taka Oshiyama" href="mailto:takaoshiyama@gmail.com" /> <link rel="author" title="Shinyu Murakami" href="mailto:murakami@vivliostyle.org" /> <link rel="help" title="5.3. Line Breaking Rules: the 'line-break' property" href="https://drafts.csswg.org/css-text-3/#line-break-property" /> - <link rel="match" href="reference/line-break-normal-015-ref.xht" /> + <link rel="match" href="reference/line-break-normal-015b-ref.xht" /> <meta http-equiv="content-language" content="en, ja" /> - <meta name="assert" content="This test verifies that 'line-break: normal' does not allow line breaking between inseparable characters such as TWO DOT LEADER (U+2025) and HORIZONTAL ELLIPSIS (U+2026)." /> + <meta name="assert" content="This test verifies that 'line-break: normal' does not allow line breaking between inseparable characters such as TWO DOT LEADER (U+2025) and HORIZONTAL ELLIPSIS (U+2026). Tailorable breaks between ID and CL, as well as CL and IN are also disallowed." /> + <meta name="flags" content="should" /> <style type="text/css"> @font-face { diff --git a/tests/wpt/web-platform-tests/css/css-text/line-break/line-break-strict-015a.xht b/tests/wpt/web-platform-tests/css/css-text/line-break/line-break-strict-015a.xht new file mode 100644 index 00000000000..9114120bc86 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/line-break/line-break-strict-015a.xht @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <title>CSS Text Test: line-break - strict and inseparable characters</title> + <!-- inseparable characters --> + <link rel="author" title="Taka Oshiyama" href="mailto:takaoshiyama@gmail.com" /> + <link rel="author" title="Shinyu Murakami" href="mailto:murakami@vivliostyle.org" /> + <link rel="help" title="5.3. Line Breaking Rules: the 'line-break' property" href="https://drafts.csswg.org/css-text-3/#line-break-property" /> + <link rel="match" href="reference/line-break-strict-015a-ref.xht" /> + <meta http-equiv="content-language" content="en, ja" /> + <meta name="assert" content="This test verifies that 'line-break: strict' does not allow line breaking between inseparable characters such as TWO DOT LEADER (U+2025) and HORIZONTAL ELLIPSIS (U+2026)." /> + <style type="text/css"> + @font-face + { + font-family: "mplus-1p-regular"; + src: url("/fonts/mplus-1p-regular.woff") format("woff"); + /* filesize: 803300 bytes (784.5 KBytes) */ + /* + mplus-1p-regular.ttf can be downloaded at/from [TBD later] + */ + } + .test span { + line-break: strict; /* The property to be tested */ + } + p.test, p.control { + border: 1px solid gray; + color: blue; + font-family: "mplus-1p-regular"; + width: 10.2em; /* added extra .2em for some symbols wider than 1em */ + } + span.target { + background-color: aqua; + } + div.wrapper { + display: inline-block; + border: 1px solid; + margin: 10px; + padding: 10px; + } + </style> + </head> + <body lang="en"> + <p> + Test passes if the highlighted characters in each pair of rectangles are at the exact same horizontal position. + </p> + <div class="wrapper"> + <!-- inseparable characters TWO DOT LEADER --> + <p class="test" lang="ja"> + <span>サンプルサンプル文<span class="target">‥‥</span>サンプル文</span> + </p> + <p class="control" lang="ja"> + <span>サンプルサンプル文<br /><span class="target">‥‥</span>サンプル文</span> + </p> + </div> + <div class="wrapper"> + <!-- inseparable characters HORIZONTAL ELLIPSIS --> + <p class="test" lang="ja"> + <span>サンプルサンプル文<span class="target">……</span>サンプル文</span> + </p> + <p class="control" lang="ja"> + <span>サンプルサンプル文<br /><span class="target">……</span>サンプル文</span> + </p> + </div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-text/line-break/line-break-strict-015.xht b/tests/wpt/web-platform-tests/css/css-text/line-break/line-break-strict-015b.xht index ea8caab699f..563ae9da9a2 100644 --- a/tests/wpt/web-platform-tests/css/css-text/line-break/line-break-strict-015.xht +++ b/tests/wpt/web-platform-tests/css/css-text/line-break/line-break-strict-015b.xht @@ -7,9 +7,10 @@ <link rel="author" title="Taka Oshiyama" href="mailto:takaoshiyama@gmail.com" /> <link rel="author" title="Shinyu Murakami" href="mailto:murakami@vivliostyle.org" /> <link rel="help" title="5.3. Line Breaking Rules: the 'line-break' property" href="https://drafts.csswg.org/css-text-3/#line-break-property" /> - <link rel="match" href="reference/line-break-strict-015-ref.xht" /> + <link rel="match" href="reference/line-break-strict-015b-ref.xht" /> <meta http-equiv="content-language" content="en, ja" /> - <meta name="assert" content="This test verifies that 'line-break: strict' does not allow line breaking between inseparable characters such as TWO DOT LEADER (U+2025) and HORIZONTAL ELLIPSIS (U+2026)." /> + <meta name="assert" content="This test verifies that 'line-break: strict' does not allow line breaking between inseparable characters such as TWO DOT LEADER (U+2025) and HORIZONTAL ELLIPSIS (U+2026). Tailorable breaks between ID and CL, as well as CL and IN are also disallowed." /> + <meta name="flags" content="should" /> <style type="text/css"> @font-face { diff --git a/tests/wpt/web-platform-tests/css/css-text/line-break/reference/line-break-normal-015a-ref.xht b/tests/wpt/web-platform-tests/css/css-text/line-break/reference/line-break-normal-015a-ref.xht new file mode 100644 index 00000000000..941e18242d9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/line-break/reference/line-break-normal-015a-ref.xht @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <title>CSS Reftest Reference</title> + <!-- reftest for line-break-normal-015.xht --> + <link rel="author" title="Taka Oshiyama" href="mailto:takaoshiyama@gmail.com" /> + <link rel="author" title="Shinyu Murakami" href="mailto:murakami@vivliostyle.org" /> + <meta http-equiv="content-language" content="en, ja" /> + <style type="text/css"> + @font-face + { + font-family: "mplus-1p-regular"; + src: url("/fonts/mplus-1p-regular.woff") format("woff"); + /* filesize: 803300 bytes (784.5 KBytes) */ + /* + mplus-1p-regular.ttf can be downloaded at/from [TBD later] + */ + } + p.control { + border: 1px solid gray; + color: blue; + font-family: "mplus-1p-regular"; + width: 10.2em; /* added extra .2em for some symbols wider than 1em */ + } + span.target { + background-color: aqua; + } + div.wrapper { + display: inline-block; + border: 1px solid; + margin: 10px; + padding: 10px; + } + </style> + </head> + <body lang="en"> + <p> + Test passes if the highlighted characters in each pair of rectangles are at the exact same horizontal position. + </p> + <div class="wrapper"> + <!-- inseparable characters TWO DOT LEADER --> + <p class="control" lang="ja"> + <span>サンプルサンプル文<br /><span class="target">‥‥</span>サンプル文</span> + </p> + <p class="control" lang="ja"> + <span>サンプルサンプル文<br /><span class="target">‥‥</span>サンプル文</span> + </p> + </div> + <div class="wrapper"> + <!-- inseparable characters HORIZONTAL ELLIPSIS --> + <p class="control" lang="ja"> + <span>サンプルサンプル文<br /><span class="target">……</span>サンプル文</span> + </p> + <p class="control" lang="ja"> + <span>サンプルサンプル文<br /><span class="target">……</span>サンプル文</span> + </p> + </div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-text/line-break/reference/line-break-normal-015-ref.xht b/tests/wpt/web-platform-tests/css/css-text/line-break/reference/line-break-normal-015b-ref.xht index b4697babbc2..b4697babbc2 100644 --- a/tests/wpt/web-platform-tests/css/css-text/line-break/reference/line-break-normal-015-ref.xht +++ b/tests/wpt/web-platform-tests/css/css-text/line-break/reference/line-break-normal-015b-ref.xht diff --git a/tests/wpt/web-platform-tests/css/css-text/line-break/reference/line-break-strict-015a-ref.xht b/tests/wpt/web-platform-tests/css/css-text/line-break/reference/line-break-strict-015a-ref.xht new file mode 100644 index 00000000000..f8a1222a333 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/line-break/reference/line-break-strict-015a-ref.xht @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <title>CSS Reftest Reference</title> + <!-- reftest for line-break-strict-015.xht --> + <link rel="author" title="Taka Oshiyama" href="mailto:takaoshiyama@gmail.com" /> + <link rel="author" title="Shinyu Murakami" href="mailto:murakami@vivliostyle.org" /> + <meta http-equiv="content-language" content="en, ja" /> + <style type="text/css"> + @font-face + { + font-family: "mplus-1p-regular"; + src: url("/fonts/mplus-1p-regular.woff") format("woff"); + /* filesize: 803300 bytes (784.5 KBytes) */ + /* + mplus-1p-regular.ttf can be downloaded at/from [TBD later] + */ + } + p.control { + border: 1px solid gray; + color: blue; + font-family: "mplus-1p-regular"; + width: 10.2em; /* added extra .2em for some symbols wider than 1em */ + } + span.target { + background-color: aqua; + } + div.wrapper { + display: inline-block; + border: 1px solid; + margin: 10px; + padding: 10px; + } + </style> + </head> + <body lang="en"> + <p> + Test passes if the highlighted characters in each pair of rectangles are at the exact same horizontal position. + </p> + <div class="wrapper"> + <!-- inseparable characters TWO DOT LEADER --> + <p class="control" lang="ja"> + <span>サンプルサンプル文<br /><span class="target">‥‥</span>サンプル文</span> + </p> + <p class="control" lang="ja"> + <span>サンプルサンプル文<br /><span class="target">‥‥</span>サンプル文</span> + </p> + </div> + <div class="wrapper"> + <!-- inseparable characters HORIZONTAL ELLIPSIS --> + <p class="control" lang="ja"> + <span>サンプルサンプル文<br /><span class="target">……</span>サンプル文</span> + </p> + <p class="control" lang="ja"> + <span>サンプルサンプル文<br /><span class="target">……</span>サンプル文</span> + </p> + </div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-text/line-break/reference/line-break-strict-015-ref.xht b/tests/wpt/web-platform-tests/css/css-text/line-break/reference/line-break-strict-015b-ref.xht index 8eceb2ae9dc..8eceb2ae9dc 100644 --- a/tests/wpt/web-platform-tests/css/css-text/line-break/reference/line-break-strict-015-ref.xht +++ b/tests/wpt/web-platform-tests/css/css-text/line-break/reference/line-break-strict-015b-ref.xht diff --git a/tests/wpt/web-platform-tests/css/filter-effects/clip-under-filter-001.html b/tests/wpt/web-platform-tests/css/filter-effects/clip-under-filter-001.html new file mode 100644 index 00000000000..7fbf0d60182 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/clip-under-filter-001.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<title>CSS Filters: Clips on descendants of filter elements are applied</title> +<link rel="author" title="Xianzhu Wang" href="wangxianzhu@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#funcdef-filter-blur"> +<link rel="help" href="https://drafts.csswg.org/css-overflow-3/#overflow-properties"> +<link rel="help" href="https://crbug.com/809102"> +<link rel="match" href="reference/clip-under-filter-001-ref.html"> +<meta name="assert" content="Check that there is a blurred square, left half blue and right half green."/> + +<div style="filter: blur(10px)"> + <div style="position: relative; width: 100px; height: 100px; background: blue; overflow: hidden"> + <div style="position: absolute; width: 100px; height: 100px; right: -50px; background: green"></div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/clip-under-filter-002.html b/tests/wpt/web-platform-tests/css/filter-effects/clip-under-filter-002.html new file mode 100644 index 00000000000..8b6a66d4523 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/clip-under-filter-002.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<title>CSS Filters: Clips on descendants of filter elements are applied</title> +<link rel="author" title="Xianzhu Wang" href="wangxianzhu@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#funcdef-filter-blur"> +<link rel="help" href="https://drafts.csswg.org/css-overflow-3/#overflow-properties"> +<link rel="help" href="https://crbug.com/809102"> +<link rel="match" href="reference/clip-under-filter-002-ref.html"> +<meta name="assert" content="Check that there is a blurred square, left half blue and right half green"/> + +<div style="filter: blur(10px)"> + <div style="position: relative; width: 100px; height: 100px; background: blue; overflow: hidden"> + <div style="position: absolute; width: 100px; height: 100px; right: -50px; background: green; overflow: hidden"></div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/crashtests/multiple-references-id-crash-001.html b/tests/wpt/web-platform-tests/css/filter-effects/crashtests/multiple-references-id-crash-001.html new file mode 100644 index 00000000000..9ee04e1015d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/crashtests/multiple-references-id-crash-001.html @@ -0,0 +1,25 @@ +<!DOCTYPE html> +<html> +<title>CSS Filters: multiple references to non-existent filter</title> +<link rel="author" title="Fredrik Söderquist" href="mailto:fs@opera.com"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#FilterProperty"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=439970"> +<meta name="assert" content="Check that applying the same filter pointing to a non-existing target from multiple elements does not crash when removed."/> + +<style> +.filter { + filter: url(#foo); +} +</style> +<body onload="runTest()"> +<div class="filter"></div> +<div class="filter"></div> +<button form="bar"></button> + +<script> +function runTest() { + document.body.innerHTML = "PASS if no crash"; +} +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/crashtests/multiple-references-id-crash-002.html b/tests/wpt/web-platform-tests/css/filter-effects/crashtests/multiple-references-id-crash-002.html new file mode 100644 index 00000000000..f7141da63c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/crashtests/multiple-references-id-crash-002.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html class="test-wait"> +<title>CSS Filters: multiple references to filter in mutating subtree</title> +<link rel="author" title="Fredrik Söderquist" href="mailto:fs@opera.com"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#FilterProperty"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=439970"> +<meta name="assert" content="Check that applying the same filter pointing to several target elements in a mutating subtree does not crash."/> + +<script src="/common/rendering-utils.js"></script> + +<style> +#move, #obj, #bdo { + filter: url(#target); +} +</style> + +<body> +<object id="obj">PASS if no crash</object> +<div id="move"> + <span id="target"></span> +</div> +<div id="bdo"></div> + +<script> +waitForAtLeastOneFrame().then(function() { + bdo.style.zoom = 2; + obj.appendChild(move); + document.documentElement.classList.remove('test-wait'); +}); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/drop-shadow-clipped-001.html b/tests/wpt/web-platform-tests/css/filter-effects/drop-shadow-clipped-001.html new file mode 100644 index 00000000000..c08331d77ff --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/drop-shadow-clipped-001.html @@ -0,0 +1,11 @@ +<!doctype HTML> +<title>CSS Filters: drop-shadow clipping</title> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#dropshadowEquivalent"> +<link rel="issue" href="https://bugs.chromium.org/p/chromium/issues/detail?id=804670"> +<link rel="match" href="reference/drop-shadow-clipped-001-ref.html"> +<meta name="assert" content="This test ensures that the overflowing parts of drop-shadowed elements cast shadows."> +<div style="overflow: hidden; width: 100px; height: 100px"> + <div style="filter: drop-shadow(-105px 0 0 green);"> + <div style="width: 50px; height: 50px; position: relative; left: 105px; background: red"></div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-feimage-001.html b/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-feimage-001.html new file mode 100644 index 00000000000..3a8fb36db92 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-feimage-001.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<title>CSS Filters: feImage and CSS reference filters.</title> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#feImageElement"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#FilterProperty"> +<link rel="match" href="reference/effect-reference-feimage-001-ref.html"> +<meta name="assert" content="This test ensures that CSS reference filters supports feImage."/> +<style> + #filtered { + width: 160px; + height: 90px; + filter: url(#imagereplace); + } +</style> +<div id="filtered"></div> +<svg width="0" height="0"> + <filter id="imagereplace" x="0%" y="0%" width="100%" height="100%"> + <feimage xlink:href="support/color-palette.png"/> + </filter> +</svg> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-feimage-002.html b/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-feimage-002.html new file mode 100644 index 00000000000..c10be0f173e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-feimage-002.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<title>CSS Filters: feImage and CSS reference filters.</title> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#feImageElement"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#FilterProperty"> +<link rel="match" href="reference/effect-reference-feimage-002-ref.html"> +<meta name="assert" content="This test ensures that CSS reference filters with 'will-change: transform' supports feImage."/> +<style> + #filtered { + width: 160px; + height: 90px; + filter: url(#imagereplace); + will-change: transform; + } +</style> +<div id="filtered"></div> +<svg width="0" height="0"> + <filter id="imagereplace" color-interpolation-filters="sRGB" x="0%" y="0%" width="100%" height="100%"> + <feimage xlink:href="support/color-palette.png"/> + </filter> +</svg> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-feimage-003.html b/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-feimage-003.html new file mode 100644 index 00000000000..887f5ff212f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-feimage-003.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<title>CSS Filters: feImage and CSS reference filters.</title> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#feImageElement"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#FilterProperty"> +<link rel="match" href="reference/effect-reference-feimage-003-ref.html"> +<meta name="assert" content="This test ensures that CSS reference filters support a dynamically attached feImage."/> +<body> + +<style> + #filtered { + width: 160px; + height: 90px; + filter: url(#imagereplace); + } +</style> + +<script type="text/html" id="source"> + <div id="filtered"></div> + <svg width="0" height="0"> + <filter id="imagereplace" x="0%" y="0" width="100%" height="100%"> + <feimage xlink:href="support/color-palette.png"/> + </filter> + </svg> +</script> + +<script> + document.body.offsetLeft; + var div = document.createElement('div'); + div.innerHTML = document.getElementById('source').textContent; + document.body.appendChild(div); +</script> + +</body> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-local-url-with-base-001.html b/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-local-url-with-base-001.html new file mode 100644 index 00000000000..d3c81300e66 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-local-url-with-base-001.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<title>SVG Filters: local URL with a base element</title> +<link rel="author" title="Fredrik Söderquist" href="mailto:fs@opera.com"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects/#FilterProperty"> +<link rel="help" href="https://drafts.csswg.org/css-values/#local-urls"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=470608"> +<link rel="match" href="reference/effect-reference-local-url-with-base-001-ref.html"> +<meta name="assert" content="Check that fragment-only URLs are always document-local references."> + +<base href="http://www.example.com/"> +<style> +#target { + width: 100px; + height: 100px; + background-color: red; + filter: url(#filter); +} +</style> +<div id="target"></div> +<svg> + <filter id="filter" x="0" y="0" width="1" height="1" color-interpolation-filters="sRGB"> + <feFlood flood-color="green"/> + </filter> +</svg> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-on-transparent-element.html b/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-on-transparent-element.html new file mode 100644 index 00000000000..e88a6561704 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-on-transparent-element.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html> +<title>CSS Filters: SVG filter on transparent element</title> +<link rel="author" title="Stephen White" href="mailto:senorblanco@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#FilterProperty"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=510541"> +<link rel="match" href="reference/effect-reference-on-transparent-element-ref.html"> +<meta name="assert" content="Check that applying a SVG filter to a transparent element works as expected. You should see a green lime colored square."/> + +<style> +.box { + width: 100px; + height: 100px; + filter: url(#flood_green); +} +</style> + +<body> +<div class="box"></div> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="0" height="0"> + <defs> + <filter id="flood_green" x="0%" y="0%" width="100%" height="100%" color-interpolation-filters="sRGB"> + <feColorMatrix type="matrix" values="0 0 0 0 0 + 0 0 0 0 1 + 0 0 0 0 0 + 0 0 0 0 1"/> + </filter> + </defs> +</svg> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-source-alpha-001.html b/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-source-alpha-001.html new file mode 100644 index 00000000000..3bb76015eed --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-source-alpha-001.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html> +<title>CSS Filters: feMergeNode with SourceAlpha</title> +<link rel="author" title="Fredrik Söderquist" href="mailto:fs@opera.com"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#feMergeElement"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#attr-valuedef-in-sourcealpha"> +<link rel="help" href="https://crbug.com/109224"> +<link rel="match" href="reference/effect-reference-source-alpha-001-ref.html"> +<meta name="assert" content="Check that SourceAlpha is correctly derived from SourceGraphic which is the output of the opacity(0) filter function which essentially sets all pixels to transparent."/> + +<style> +div { + position: absolute; + width: 100px; + height: 100px; +} +#test { + background-color: red; + filter: opacity(0) url(#f); +} +</style> +<div style="background-color: green"></div> +<div id="test"> +<svg height="0"> + <filter id="f"> + <feMerge><feMergeNode in="SourceAlpha"></feMergeNode></feMerge> + </filter> +</svg> +</div> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-source-alpha-002.html b/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-source-alpha-002.html new file mode 100644 index 00000000000..3c570c59e20 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-source-alpha-002.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html> +<title>CSS Filters: feColorMatrix with SourceAlpha</title> +<link rel="author" title="Stephen White" href="mailto:senorblanco@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#feColorMatrixElement"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#attr-valuedef-in-sourcealpha"> +<link rel="help" href="https://crbug.com/331362"> +<link rel="match" href="reference/effect-reference-source-alpha-002-ref.html"> +<meta name="assert" content="Check that the result of an identity feColorMatrix with SourceAlpha from an element with will-change: transform as input is opaque black"/> + +<style> +.rect { + position: absolute; + background-color: red; + width: 100px; + height: 100px; + filter: url(#alpha); + will-change: transform; +} +</style> +<div class="rect"></div> +<svg xmlns="http://www.w3.org/2000/svg" width="0" height="0" version="1.1"> + <defs> + <filter id="alpha" color-interpolation-filters="sRGB"> + <feColorMatrix in="SourceAlpha"/> + </filter> + </defs> +</svg> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/feimage-circular-reference-foreign-object-crash.html b/tests/wpt/web-platform-tests/css/filter-effects/feimage-circular-reference-foreign-object-crash.html new file mode 100644 index 00000000000..00f0e362237 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/feimage-circular-reference-foreign-object-crash.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html class="test-wait"> +<title>CSS Filters: filter reference a SVG foreign object.</title> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#FilterProperty"> +<link rel="bookmark" href="https://crrev.com/c/1080147"> +<meta name="assert" content="Test ensures that updating a filter which references a SVG foreign object through feImage with a circular reference does not crash."/> +<script src="/common/rendering-utils.js"></script> +<script> +waitForAtLeastOneFrame().then(function() { + feImage.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', '#svg'); + document.documentElement.classList.remove('test-wait'); +}); +</script> +<svg> + <filter id="filter"> + <feImage id="feImage"></feImage> + </filter> +</svg> +<svg id="svg"> + <foreignObject id="foreignObject" filter="url(#filter)">FO</foreignObject> +</svg> +</html> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/feimage-reference-foreign-object-crash.html b/tests/wpt/web-platform-tests/css/filter-effects/feimage-reference-foreign-object-crash.html new file mode 100644 index 00000000000..dde4805a368 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/feimage-reference-foreign-object-crash.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<html class="test-wait"> +<title>CSS Filters: filter reference a SVG foreign object.</title> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#FilterProperty"> +<link rel="bookmark" href="https://crrev.com/c/1080147"> +<meta name="assert" content="Test ensures that updating a filter which references a SVG foreign object through feImage does not crash."/> +<script src="/common/rendering-utils.js"></script> +<script> +waitForAtLeastOneFrame().then(function() { + feImage.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', '#svg'); + document.documentElement.classList.remove('test-wait'); +}); +</script> + +<svg> + <filter id="filter"> + <feImage id="feImage"></feImage> + </filter> +</svg> +<div style="filter: url(#filter)"></div> +<svg id="svg"> + <foreignObject id="foreignObject">FO</foreignObject> +</svg> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/clip-under-filter-001-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/clip-under-filter-001-ref.html new file mode 100644 index 00000000000..60c2c336346 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/clip-under-filter-001-ref.html @@ -0,0 +1,6 @@ +<!DOCTYPE html> +<div style="filter: blur(10px)"> + <div style="width: 100px; height: 100px; background: blue"> + <div style="position: relative; left: 50px; width: 50px; height: 100px; background: green"></div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/clip-under-filter-002-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/clip-under-filter-002-ref.html new file mode 100644 index 00000000000..60c2c336346 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/clip-under-filter-002-ref.html @@ -0,0 +1,6 @@ +<!DOCTYPE html> +<div style="filter: blur(10px)"> + <div style="width: 100px; height: 100px; background: blue"> + <div style="position: relative; left: 50px; width: 50px; height: 100px; background: green"></div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/drop-shadow-clipped-001-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/drop-shadow-clipped-001-ref.html new file mode 100644 index 00000000000..305b1d2233d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/drop-shadow-clipped-001-ref.html @@ -0,0 +1,2 @@ +<!doctype HTML> +<div style="width: 50px; height: 50px; background: green"></div> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-feimage-001-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-feimage-001-ref.html new file mode 100644 index 00000000000..9b982b3cfb4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-feimage-001-ref.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<img src="../support/color-palette.png"> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-feimage-002-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-feimage-002-ref.html new file mode 100644 index 00000000000..72250a1cf80 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-feimage-002-ref.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<img src="../support/color-palette.png" style="will-change: transform;"> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-feimage-003-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-feimage-003-ref.html new file mode 100644 index 00000000000..9b982b3cfb4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-feimage-003-ref.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<img src="../support/color-palette.png"> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-local-url-with-base-001-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-local-url-with-base-001-ref.html new file mode 100644 index 00000000000..f718ea6abfb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-local-url-with-base-001-ref.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<div style="width: 100px; height: 100px; background-color: green"></div> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-on-transparent-element-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-on-transparent-element-ref.html new file mode 100644 index 00000000000..6e27519825d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-on-transparent-element-ref.html @@ -0,0 +1,8 @@ +<style> +.box { + width: 100px; + height: 100px; + background-color: rgb(0, 255, 0); +} +</style> +<div class="box"></div> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-source-alpha-001-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-source-alpha-001-ref.html new file mode 100644 index 00000000000..f718ea6abfb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-source-alpha-001-ref.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<div style="width: 100px; height: 100px; background-color: green"></div> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-source-alpha-002-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-source-alpha-002-ref.html new file mode 100644 index 00000000000..eb106f327aa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-source-alpha-002-ref.html @@ -0,0 +1,10 @@ +<!DOCTYPE html> +<style> +.rect { + background-color: black; + width: 100px; + height: 100px; + will-change: transform; +} +</style> +<div class="rect"></div> diff --git a/tests/wpt/web-platform-tests/docs/writing-tests/crashtest.md b/tests/wpt/web-platform-tests/docs/writing-tests/crashtest.md index fa5c4ee67ec..0166bdeb752 100644 --- a/tests/wpt/web-platform-tests/docs/writing-tests/crashtest.md +++ b/tests/wpt/web-platform-tests/docs/writing-tests/crashtest.md @@ -5,8 +5,12 @@ crashing or experiencing other low-level issues that may be checked by implementation-specific tooling (e.g. leaks, asserts, or sanitizer failures). -Crashtests are identified by the string `-crash` in the filename, or -by being in a directory called `crashtests`. +Crashtests are identified by the string `-crash` in the filename immediately +before the extension, or by being in a directory called `crashtests`. Examples: + +- `css/css-foo/bar-crash.html` is a crash test +- `css/css-foo/crashtests/bar.html` is a crash test +- `css/css-foo/bar-crash-001.html` is **not** a crash test The simplest crashtest is a single HTML file with any content. The test passes if the load event is reached, and the browser finishes diff --git a/tests/wpt/web-platform-tests/event-timing/event-click-counts.html b/tests/wpt/web-platform-tests/event-timing/event-click-counts.html index 5c67ac87082..034e172c1df 100644 --- a/tests/wpt/web-platform-tests/event-timing/event-click-counts.html +++ b/tests/wpt/web-platform-tests/event-timing/event-click-counts.html @@ -13,7 +13,7 @@ assert_precondition(window.EventCounts, "Event Counts isn't supported"); function testClicks(expectedCount, resolve) { const clickCount = performance.eventCounts.get('click'); - if (!clickCount || clickCount < expectedCount) { + if (clickCount < expectedCount) { t.step_timeout(function() { testClicks(expectedCount, resolve); }, 5); @@ -23,11 +23,8 @@ assert_equals(performance.eventCounts.get('mousedown'), expectedCount, 'Incorrect mousedown count'); assert_equals(performance.eventCounts.get('mouseup'), expectedCount, 'Incorrect mouseup count.'); assert_equals(performance.eventCounts.get('mouseover'), expectedCount, 'Incorrect mouseover count.'); - if (expectedCount == 1) { - assert_equals(performance.eventCounts.size, 4, 'There should only be 4 types observed.'); - } else { + if (expectedCount != 1) { assert_equals(performance.eventCounts.get('mouseout'), expectedCount - 1, 'Incorrect mouseout count.'); - assert_equals(performance.eventCounts.size, 5, 'There should only be 5 types observed.'); } resolve(); } @@ -37,7 +34,6 @@ }); } - assert_equals(performance.eventCounts.size, 0); return test_driver.click(document.getElementById('div')).then(() => { return promiseClicks(1); }).then(() => { diff --git a/tests/wpt/web-platform-tests/event-timing/event-counts-zero.html b/tests/wpt/web-platform-tests/event-timing/event-counts-zero.html new file mode 100644 index 00000000000..0cc9e2ee38a --- /dev/null +++ b/tests/wpt/web-platform-tests/event-timing/event-counts-zero.html @@ -0,0 +1,58 @@ +<!DOCTYPE html> +<html> +<meta charset=utf-8 /> +<title>Event Timing: eventCounts.</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src=/resources/testdriver.js></script> +<script src=/resources/testdriver-vendor.js></script> +<script> + test(() => { + assert_precondition(window.EventCounts, "Event Counts isn't supported"); + const eventTypes = [ + 'auxclick', + 'click', + 'contextmenu', + 'dblclick', + 'mousedown', + 'mouseenter', + 'mouseleave', + 'mouseout', + 'mouseover', + 'mouseup', + 'pointerover', + 'pointerenter', + 'pointerdown', + 'pointerup', + 'pointercancel', + 'pointerout', + 'pointerleave', + 'gotpointercapture', + 'lostpointercapture', + 'touchstart', + 'touchend', + 'touchcancel', + 'keydown', + 'keypress', + 'keyup', + 'beforeinput', + 'input', + 'compositionstart', + 'compositionupdate', + 'compositionend', + 'dragstart', + 'dragend', + 'dragenter', + // 'dragexit'? Unclear if it will be removed from HTML spec or not. + 'dragleave', + 'dragover', + 'drop' + ]; + eventTypes.forEach(type => { + assert_equals(performance.eventCounts.get(type), 0, 'There is a nonzero value for ' + type); + }) + assert_equals(performance.eventCounts.size, eventTypes.length, + 'The size of performance.eventCounts is incorrect.'); + }) +</script> +</html> diff --git a/tests/wpt/web-platform-tests/html/user-activation/chained-setTimeout.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/chained-setTimeout.tentative.html index 133f137eed6..b815adab605 100644 --- a/tests/wpt/web-platform-tests/html/user-activation/chained-setTimeout.tentative.html +++ b/tests/wpt/web-platform-tests/html/user-activation/chained-setTimeout.tentative.html @@ -10,48 +10,51 @@ <script src="/resources/testdriver.js"></script> <script src="/resources/testdriver-vendor.js"></script> <script> + let chained_timeout_test = async_test("Chained setTimeout test"); + const max_call_depth = 3; - let initial_async_tests = {}; - let final_async_tests = {}; + const delay_ms = 10; function testInitialStates(depth) { assert_true(1 <= depth && depth <= max_call_depth); - initial_async_tests[depth].step_timeout(() => { - assert_false(navigator.userActivation.isActive); - assert_false(navigator.userActivation.hasBeenActive); - initial_async_tests[depth].done(); + chained_timeout_test.step_timeout(() => { + let test_name = "Call-depth=" + depth + ": initial activation states are false"; + test(() => { + assert_false(navigator.userActivation.isActive); + assert_false(navigator.userActivation.hasBeenActive); + }, test_name); if (depth < max_call_depth) testInitialStates(depth+1); - }, 10); + else + test_driver.click(document.body); + }, delay_ms); } function testFinalStates(depth) { assert_true(1 <= depth && depth <= max_call_depth); - final_async_tests[depth].step_timeout(() => { - assert_true(navigator.userActivation.isActive); - assert_true(navigator.userActivation.hasBeenActive); - final_async_tests[depth].done(); + chained_timeout_test.step_timeout(() => { + let test_name = "Call-depth=" + depth + ": after-click activation states are true"; + test(() => { + assert_true(navigator.userActivation.isActive); + assert_true(navigator.userActivation.hasBeenActive); + }, test_name); if (depth < max_call_depth) testFinalStates(depth+1); - }, 10) + else + chained_timeout_test.done(); + }, delay_ms) } function run() { - for (let i = 1; i <= max_call_depth; i++) { - initial_async_tests[i] = async_test("Call-depth=" + i + " initial state"); - final_async_tests[i] = async_test("Call-depth=" + i + " final state"); - } - - testInitialStates(1); - window.addEventListener("click", event => { testFinalStates(1); }); - test_driver.click(document.body); + + testInitialStates(1); } </script> </head> diff --git a/tests/wpt/web-platform-tests/interfaces/event-timing.idl b/tests/wpt/web-platform-tests/interfaces/event-timing.idl index e8475d31922..be9918fa9a6 100644 --- a/tests/wpt/web-platform-tests/interfaces/event-timing.idl +++ b/tests/wpt/web-platform-tests/interfaces/event-timing.idl @@ -8,6 +8,7 @@ interface PerformanceEventTiming : PerformanceEntry { readonly attribute DOMHighResTimeStamp processingStart; readonly attribute DOMHighResTimeStamp processingEnd; readonly attribute boolean cancelable; + readonly attribute Node? target; [Default] object toJSON(); }; diff --git a/tests/wpt/web-platform-tests/interfaces/video-raf.idl b/tests/wpt/web-platform-tests/interfaces/video-raf.idl index df4aa4c33de..25f9e3a3ba6 100644 --- a/tests/wpt/web-platform-tests/interfaces/video-raf.idl +++ b/tests/wpt/web-platform-tests/interfaces/video-raf.idl @@ -1,7 +1,7 @@ // GENERATED CONTENT - DO NOT EDIT // Content was automatically extracted by Reffy into reffy-reports // (https://github.com/tidoust/reffy-reports) -// Source: HTMLVideoElement.requestAnimationFrame() (https://wicg.github.io/video-raf/) +// Source: HTMLVideoElement.requestVideoFrameCallback() (https://wicg.github.io/video-raf/) dictionary VideoFrameMetadata { required DOMHighResTimeStamp presentationTime; @@ -22,6 +22,6 @@ dictionary VideoFrameMetadata { callback VideoFrameRequestCallback = void(DOMHighResTimeStamp now, VideoFrameMetadata metadata); partial interface HTMLVideoElement { - unsigned long requestAnimationFrame(VideoFrameRequestCallback callback); - void cancelAnimationFrame(unsigned long handle); + unsigned long requestVideoFrameCallback(VideoFrameRequestCallback callback); + void cancelVideoFrameCallback(unsigned long handle); }; diff --git a/tests/wpt/web-platform-tests/origin-isolation/META.yml b/tests/wpt/web-platform-tests/origin-isolation/META.yml new file mode 100644 index 00000000000..937eca52e71 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/META.yml @@ -0,0 +1,5 @@ +spec: https://github.com/WICG/origin-isolation +suggested_reviewers: + - domenic + - annevk + - wjmaclean diff --git a/tests/wpt/web-platform-tests/origin-isolation/README.md b/tests/wpt/web-platform-tests/origin-isolation/README.md new file mode 100644 index 00000000000..b028fcd9a36 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/README.md @@ -0,0 +1,3 @@ +# Origin isolation tests + +These tests are for the proposal at [WICG/origin-isolation](https://github.com/WICG/origin-isolation). They should eventually move into a subdirectory of `html/` if/when that proposal merges into the HTML Standard. diff --git a/tests/wpt/web-platform-tests/origin-isolation/parent-no-child-yes-same.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/parent-no-child-yes-same.sub.https.html new file mode 100644 index 00000000000..4239e164463 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/parent-no-child-yes-same.sub.https.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Parent is not isolated, child is isolated, child is same-origin to the parent</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div id="log"></div> + +<script type="module"> +import { insertIframe, sendWasmModule, setBothDocumentDomains } from "./resources/helpers.mjs"; + +let frameWindow; +promise_setup(async () => { + frameWindow = await insertIframe("{{hosts[][]}}", "?1"); +}); + +// Since they're same-origin, and the parent loaded without isolation, the +// child's request for isolation gets ignored, and both end up site-keyed. + +promise_test(async () => { + const whatHappened = await sendWasmModule(frameWindow); + + assert_equals(whatHappened, "WebAssembly.Module message received"); +}, "message event must occur"); + +promise_test(async () => { + await setBothDocumentDomains(frameWindow); + + // Must not throw + frameWindow.document; +}, "setting document.domain must give sync access"); +</script> diff --git a/tests/wpt/web-platform-tests/origin-isolation/parent-no-child-yes-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/parent-no-child-yes-subdomain.sub.https.html new file mode 100644 index 00000000000..f2389eaa6a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/parent-no-child-yes-subdomain.sub.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Parent is not isolated, child is isolated, child is a subdomain of the parent</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div id="log"></div> + +<script type="module"> +import { insertIframe, sendWasmModule, setBothDocumentDomains } from "./resources/helpers.mjs"; + +let frameWindow; +promise_setup(async () => { + frameWindow = await insertIframe("{{hosts[][www]}}", "?1"); +}); + +// Since they're different-origin, the child's isolation request is respected, +// so the parent ends up in the site-keyed agent cluster and the child in the +// origin-keyed one. + +promise_test(async () => { + const whatHappened = await sendWasmModule(frameWindow); + + assert_equals(whatHappened, "messageerror"); +}, "messageerror event must occur"); + +promise_test(async () => { + await setBothDocumentDomains(frameWindow); + + assert_throws_dom("SecurityError", DOMException, () => { + frameWindow.document; + }); +}, "setting document.domain should no-op instead of giving sync access"); +</script> diff --git a/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-no-same.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-no-same.sub.https.html new file mode 100644 index 00000000000..a1b9e4e3f5a --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-no-same.sub.https.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Parent is isolated, child is not isolated, child is same-origin to the parent</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div id="log"></div> + +<script type="module"> +import { insertIframe, sendWasmModule, setBothDocumentDomains } from "./resources/helpers.mjs"; + +let frameWindow; +promise_setup(async () => { + frameWindow = await insertIframe("{{hosts[][]}}"); +}); + +// Since they're same-origin, and the parent loaded with isolation, the +// child's non-request for isolation gets ignored, and both end up origin-keyed. + +promise_test(async () => { + const whatHappened = await sendWasmModule(frameWindow); + + assert_equals(whatHappened, "WebAssembly.Module message received"); +}, "message event must occur"); + +promise_test(async () => { + await setBothDocumentDomains(frameWindow); + + // Must not throw + frameWindow.document; +}, "setting document.domain must give sync access"); +</script> diff --git a/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-no-same.sub.https.html.headers b/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-no-same.sub.https.html.headers new file mode 100644 index 00000000000..ea3f6b335c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-no-same.sub.https.html.headers @@ -0,0 +1 @@ +Origin-Isolation: ?1 diff --git a/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-no-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-no-subdomain.sub.https.html new file mode 100644 index 00000000000..b167b1b4954 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-no-subdomain.sub.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Parent is isolated, child is not isolated, child is a subdomain of the parent</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div id="log"></div> + +<script type="module"> +import { insertIframe, sendWasmModule, setBothDocumentDomains } from "./resources/helpers.mjs"; + +let frameWindow; +promise_setup(async () => { + frameWindow = await insertIframe("{{hosts[][www]}}"); +}); + +// Since they're different-origin, the parent's isolation request is respected, +// as is the child's non-request. So the parent ends up in the origin-keyed +// agent cluster and the child ends up in the site-keyed one. + +promise_test(async () => { + const whatHappened = await sendWasmModule(frameWindow); + + assert_equals(whatHappened, "messageerror"); +}, "messageerror event must occur"); + +promise_test(async () => { + await setBothDocumentDomains(frameWindow); + + assert_throws_dom("SecurityError", DOMException, () => { + frameWindow.document; + }); +}, "setting document.domain must not give sync access"); +</script> diff --git a/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-no-subdomain.sub.https.html.headers b/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-no-subdomain.sub.https.html.headers new file mode 100644 index 00000000000..ea3f6b335c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-no-subdomain.sub.https.html.headers @@ -0,0 +1 @@ +Origin-Isolation: ?1 diff --git a/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-yes-same.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-yes-same.sub.https.html new file mode 100644 index 00000000000..f43526cd552 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-yes-same.sub.https.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Parent is isolated, child is not isolated, child is same-origin to the parent</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div id="log"></div> + +<script type="module"> +import { insertIframe, sendWasmModule, setBothDocumentDomains } from "./resources/helpers.mjs"; + +let frameWindow; +promise_setup(async () => { + frameWindow = await insertIframe("{{hosts[][]}}", "?1"); +}); + +// Both request isolation, and they're same-origin, so they both end up in the +// same origin-keyed agent cluster. + +promise_test(async () => { + const whatHappened = await sendWasmModule(frameWindow); + + assert_equals(whatHappened, "WebAssembly.Module message received"); +}, "message event must occur"); + +promise_test(async () => { + await setBothDocumentDomains(frameWindow); + + // Must not throw + frameWindow.document; +}, "setting document.domain must give sync access"); +</script> diff --git a/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-yes-same.sub.https.html.headers b/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-yes-same.sub.https.html.headers new file mode 100644 index 00000000000..ea3f6b335c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-yes-same.sub.https.html.headers @@ -0,0 +1 @@ +Origin-Isolation: ?1 diff --git a/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-yes-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-yes-subdomain.sub.https.html new file mode 100644 index 00000000000..5c3567cee57 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-yes-subdomain.sub.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Parent is isolated, child is not isolated, child is a subdomain of the parent</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div id="log"></div> + +<script type="module"> +import { insertIframe, sendWasmModule, setBothDocumentDomains } from "./resources/helpers.mjs"; + +let frameWindow; +promise_setup(async () => { + frameWindow = await insertIframe("{{hosts[][www]}}", "?1"); +}); + +// Both request isolation, so the parent ends up in one origin-keyed agent +// cluster (the base domain's origin), and the child ends up in a different +// origin-keyed agent cluster (the www subdomain's origin). + +promise_test(async () => { + const whatHappened = await sendWasmModule(frameWindow); + + assert_equals(whatHappened, "messageerror"); +}, "messageerror event must occur"); + +promise_test(async () => { + await setBothDocumentDomains(frameWindow); + + assert_throws_dom("SecurityError", DOMException, () => { + frameWindow.document; + }); +}, "setting document.domain must not give sync access"); +</script> diff --git a/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-yes-subdomain.sub.https.html.headers b/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-yes-subdomain.sub.https.html.headers new file mode 100644 index 00000000000..ea3f6b335c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/parent-yes-child-yes-subdomain.sub.https.html.headers @@ -0,0 +1 @@ +Origin-Isolation: ?1 diff --git a/tests/wpt/web-platform-tests/origin-isolation/resources/helpers.mjs b/tests/wpt/web-platform-tests/origin-isolation/resources/helpers.mjs new file mode 100644 index 00000000000..e088ffb4e90 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/resources/helpers.mjs @@ -0,0 +1,53 @@ +export function insertIframe(hostname, header) { + const url = new URL("send-origin-isolation-header.py", import.meta.url); + url.hostname = hostname; + + if (header !== undefined) { + url.searchParams.set("header", header); + } + + const iframe = document.createElement("iframe"); + iframe.src = url.href; + + return new Promise((resolve, reject) => { + iframe.onload = () => resolve(iframe.contentWindow); + iframe.onerror = () => reject(new Error(`Could not load ${iframe.src}`)); + document.body.append(iframe); + }); +} + +// This function is coupled to ./send-origin-isolation-header.py, which ensures +// that sending such a message will result in a message back. +export async function sendWasmModule(frameWindow) { + frameWindow.postMessage(await createWasmModule(), "*"); + return waitForMessage(); +} + +// This function is coupled to ./send-origin-isolation-header.py, which ensures +// that sending such a message will result in a message back. +export async function setBothDocumentDomains(frameWindow) { + // By setting both this page's document.domain and the iframe's document.domain to the same + // value, we ensure that they can synchronously access each other, unless they are + // origin-isolated. + // NOTE: document.domain being unset is different than it being set to its current value. + // It is a terrible API. + document.domain = document.domain; + + frameWindow.postMessage({ command: "set document.domain", newDocumentDomain: document.domain }, "*"); + const whatHappened = await waitForMessage(); + assert_equals(whatHappened, "document.domain is set"); +} + +function waitForMessage() { + return new Promise(resolve => { + window.addEventListener("message", e => resolve(e.data), { once: true }); + }); +} + +// Any WebAssembly.Module will work fine for our tests; we just want to find out if it gives +// message or messageerror. So, we reuse one from the /wasm/ tests. +async function createWasmModule() { + const response = await fetch("/wasm/serialization/module/resources/incrementer.wasm"); + const ab = await response.arrayBuffer(); + return WebAssembly.compile(ab); +} diff --git a/tests/wpt/web-platform-tests/origin-isolation/resources/send-origin-isolation-header.py b/tests/wpt/web-platform-tests/origin-isolation/resources/send-origin-isolation-header.py new file mode 100644 index 00000000000..8654b087dfa --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/resources/send-origin-isolation-header.py @@ -0,0 +1,33 @@ +def main(request, response): + """Send a response with the Origin-Isolation header given in the "header" + query parameter, or no header if that is not provided. In either case, the + response will listen for message and messageerror events and echo them back + to the parent. See ./helpers.mjs for how these handlers are used. + """ + + if "header" in request.GET: + header = request.GET.first("header") + response.headers.set("Origin-Isolation", header) + + response.headers.set("Content-Type", "text/html") + + return """ + <!DOCTYPE html> + <meta charset="utf-8"> + <title>Helper page for origin isolation tests</title> + + <script type="module"> + window.onmessage = e => { + if (e.data.constructor === WebAssembly.Module) { + parent.postMessage("WebAssembly.Module message received", "*"); + } else if (e.data.command === "set document.domain") { + document.domain = e.data.newDocumentDomain; + parent.postMessage("document.domain is set", "*"); + } + }; + + window.onmessageerror = () => { + parent.postMessage("messageerror", "*"); + }; + </script> + """ diff --git a/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-canvas-context.html b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-canvas-context.html index 18eb07bfdea..5f3c9d9983b 100644 --- a/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-canvas-context.html +++ b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-canvas-context.html @@ -11,11 +11,11 @@ promise_test(async t => { assert_precondition(window.PerformancePaintTiming, "Paint Timing isn't supported."); await new Promise(r => window.addEventListener('load', r)); - await assertNoFirstContentfulPaint(); + await assertNoFirstContentfulPaint(t); const canvas = document.getElementById('canvas'); const context = canvas.getContext('2d'); context.fillRect(0, 0, 100, 100); - await assertFirstContentfulPaint(); + await assertFirstContentfulPaint(t); }, 'Canvas should count as contentful when context is created'); </script> </body> diff --git a/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-gradient.html b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-gradient.html index 3a356f3dd1a..1d15812a0f3 100644 --- a/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-gradient.html +++ b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-gradient.html @@ -17,9 +17,8 @@ <script> promise_test(async t => { assert_precondition(window.PerformancePaintTiming, "Paint Timing isn't supported."); - const main = document.getElementById('main'); await new Promise(r => window.addEventListener('load', r)); - await assertNoFirstContentfulPaint(); + await assertNoFirstContentfulPaint(t); }, 'Gradients should not count as contentful'); </script> </body> diff --git a/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-text-input.html b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-text-input.html index 6a0cd86881f..b22c618c119 100644 --- a/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-text-input.html +++ b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-text-input.html @@ -11,12 +11,12 @@ promise_test(async t => { assert_precondition(window.PerformancePaintTiming, "Paint Timing isn't supported."); await new Promise(r => window.addEventListener('load', r)); - await assertNoFirstContentfulPaint(); + await assertNoFirstContentfulPaint(t); const input = document.getElementById('input'); input.setAttribute('value', ' '); - await assertNoFirstContentfulPaint(); + await assertNoFirstContentfulPaint(t); input.setAttribute('value', 'value'); - await assertFirstContentfulPaint(); + await assertFirstContentfulPaint(t); }, 'Text input should become contentful when its value is non-empty'); </script> </body> diff --git a/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-video-frame.html b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-video-frame.html index fff38cd2c81..0f61b7e5289 100644 --- a/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-video-frame.html +++ b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-video-frame.html @@ -11,13 +11,14 @@ promise_test(async t => { assert_precondition(window.PerformancePaintTiming, "Paint Timing isn't supported."); await new Promise(r => window.addEventListener('load', r)); - await assertNoFirstContentfulPaint(); + await assertNoFirstContentfulPaint(t); + // Set actual video content to trigger FCP. const video = document.getElementById('video'); video.setAttribute('src', '/media/test.mp4'); await new Promise(resolve => { video.oncanplay = resolve; }); - await assertFirstContentfulPaint(); + await assertFirstContentfulPaint(t); }, 'Video should become contentful when first frame is loaded'); </script> </body> diff --git a/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-video-poster.html b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-video-poster.html index ed9cabcaeeb..5c1048ac0a7 100644 --- a/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-video-poster.html +++ b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-video-poster.html @@ -11,7 +11,7 @@ promise_test(async t => { assert_precondition(window.PerformancePaintTiming, "Paint Timing isn't supported."); await new Promise(r => window.addEventListener('load', r)); - await assertNoFirstContentfulPaint(); + await assertNoFirstContentfulPaint(t); const video = document.getElementById('video'); const src = '../resources/circles.png'; const image = new Image(); @@ -20,7 +20,7 @@ await new Promise(resolve => { image.onload = async () => resolve(); }) - await assertFirstContentfulPaint(); + await assertFirstContentfulPaint(t); }, 'Video should become contentful when poster is loaded'); </script> </body> diff --git a/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-with-rtl.html b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-with-rtl.html index 35a73d490c4..868d2fcaf8f 100644 --- a/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-with-rtl.html +++ b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-with-rtl.html @@ -21,9 +21,9 @@ promise_test(async t => { assert_precondition(window.PerformancePaintTiming, "Paint Timing isn't supported."); await new Promise(r => window.addEventListener('load', r)); - await assertNoFirstContentfulPaint(); + await assertNoFirstContentfulPaint(t); document.body.style.direction = 'ltr' - await assertFirstContentfulPaint(); + await assertFirstContentfulPaint(t); }, 'FCP should fire when coordinates are negative, if within document scrollable area'); </script> </body> diff --git a/tests/wpt/web-platform-tests/paint-timing/resources/utils.js b/tests/wpt/web-platform-tests/paint-timing/resources/utils.js index fb60500f3b5..a1fb993eb90 100644 --- a/tests/wpt/web-platform-tests/paint-timing/resources/utils.js +++ b/tests/wpt/web-platform-tests/paint-timing/resources/utils.js @@ -1,15 +1,3 @@ -// Number milliseconds to wait for CSS resources to load. -const numMillisecondsWait = 50; - -// We use requestAnimationFrame() calls to force the user agent to paint and give enough -// time for FCP to show up in the performance timeline. Hence, set |numFramesWaiting| to -// 3 and use that constant whenever the test needs to wait for the next paint to occur. -const numFramesWaiting = 3; - -function waitTime(t) { - return new Promise(resolve => t.step_timeout(resolve, numMillisecondsWait)); -} - function waitForAnimationFrames(count) { return new Promise(resolve => { if (count-- <= 0) { @@ -22,22 +10,26 @@ function waitForAnimationFrames(count) { }); } -// Asserts that there is currently no FCP reported, even after some wait. +// Asserts that there is currently no FCP reported. Pass t to add some wait, in case CSS is loaded +// and FCP is incorrectly fired afterwards. async function assertNoFirstContentfulPaint(t) { - if (t) - await waitTime(t); - - await waitForAnimationFrames(numFramesWaiting); + await waitForAnimationFrames(3); assert_equals(performance.getEntriesByName('first-contentful-paint').length, 0, 'First contentful paint marked too early. '); } -// Asserts that FCP is reported, possibly after some wait. The wait is needed -// because sometimes the FCP relies on some CSS resources to finish loading. +// Function that is resolved once FCP is reported, using PerformanceObserver. It rejects after a long +// wait time so that failing tests don't timeout. async function assertFirstContentfulPaint(t) { - if (t) - await waitTime(t); - await waitForAnimationFrames(numFramesWaiting); - assert_equals(performance.getEntriesByName('first-contentful-paint').length, 1, 'Expected first contentful paint not found. '); + return new Promise(resolve => { + function checkFCP() { + if (performance.getEntriesByName('first-contentful-paint').length === 1) { + resolve(); + } else { + t.step_timeout(checkFCP, 0); + } + } + t.step(checkFCP); + }); } async function test_fcp(label) { @@ -47,10 +39,10 @@ async function test_fcp(label) { assert_precondition(window.PerformancePaintTiming, "Paint Timing isn't supported."); const main = document.getElementById('main'); await new Promise(r => window.addEventListener('load', r)); - await assertNoFirstContentfulPaint(); + await assertNoFirstContentfulPaint(t); main.className = 'preFCP'; - await assertNoFirstContentfulPaint(); + await assertNoFirstContentfulPaint(t); main.className = 'contentful'; - await assertFirstContentfulPaint(); + await assertFirstContentfulPaint(t); }, label); } diff --git a/tests/wpt/web-platform-tests/portals/portals-activate-network-error.html b/tests/wpt/web-platform-tests/portals/portals-activate-network-error.html new file mode 100644 index 00000000000..c2094fd4ded --- /dev/null +++ b/tests/wpt/web-platform-tests/portals/portals-activate-network-error.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<body> +<script> +async_test(t => { + assert_precondition("HTMLPortalElement" in self); + let portal = document.createElement('portal'); + portal.src = "resources/invalid.asis"; + document.body.appendChild(portal); + t.add_cleanup(() => { document.body.removeChild(portal); }); + t.step_timeout(async () => { + await promise_rejects_dom(t, 'InvalidStateError', portal.activate()); + t.done(); + }, 2000); +}, "A portal that is showing inline content for a network error cannot be activated"); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/portals/resources/invalid.asis b/tests/wpt/web-platform-tests/portals/resources/invalid.asis new file mode 100644 index 00000000000..20f7c7f7e51 --- /dev/null +++ b/tests/wpt/web-platform-tests/portals/resources/invalid.asis @@ -0,0 +1 @@ +This is an invalid HTTP response used to produce a network error. diff --git a/tests/wpt/web-platform-tests/portals/xfo/portals-xfo-deny.sub.html b/tests/wpt/web-platform-tests/portals/xfo/portals-xfo-deny.sub.html index dde09c6e72b..2110d4906f9 100644 --- a/tests/wpt/web-platform-tests/portals/xfo/portals-xfo-deny.sub.html +++ b/tests/wpt/web-platform-tests/portals/xfo/portals-xfo-deny.sub.html @@ -26,5 +26,18 @@ async_test(t => { t.add_cleanup(() => portal.remove()); t.step_timeout(() => t.done(), 2000); }, "`XFO: DENY` blocks cross-origin portals."); + +async_test(t => { + assert_precondition("HTMLPortalElement" in self); + var portal = document.createElement('portal'); + portal.src = "/portals/xfo/resources/xfo-deny.asis"; + portal.onmessage = t.unreached_func("should not have received a message"); + document.body.appendChild(portal); + t.add_cleanup(() => portal.remove()); + t.step_timeout(async () => { + await promise_rejects_dom(t, 'InvalidStateError', portal.activate()); + t.done(); + }, 2000); +}, "Portals blocked by `XFO: DENY` cannot be activated."); </script> </body> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/sandboxed-iframe-fetch-event.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/sandboxed-iframe-fetch-event.https.html index e08b7164532..ba34e790ff0 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/sandboxed-iframe-fetch-event.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/sandboxed-iframe-fetch-event.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <title>ServiceWorker FetchEvent for sandboxed iframe.</title> +<meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="resources/test-helpers.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator-connections.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator-connections.html new file mode 100644 index 00000000000..475b3643672 --- /dev/null +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator-connections.html @@ -0,0 +1,578 @@ +<!doctype html> +<html> + <head> + <title> + k-rate AudioParams with inputs for OscillatorNode + </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/webaudio/resources/audit.js"></script> + <script src="/webaudio/resources/audit-util.js"></script> + </head> + + <body> + <script> + let audit = Audit.createTaskRunner(); + + // Sample rate must be a power of two to eliminate round-off when + // computing time from frames and vice versa. Using a non-power of two + // will work, but the thresholds below will not be zero. They're probably + // closer to 1e-5 or so, but if everything is working correctly, the + // outputs really should be exactly equal. + const sampleRate = 8192; + + // Fairly arbitrary but short duration to limit runtime. + const testFrames = 5 * RENDER_QUANTUM_FRAMES; + const testDuration = testFrames / sampleRate; + + audit.define( + {label: 'Test 1', description: 'k-rate frequency input'}, + async (task, should) => { + // Test that an input to the frequency AudioParam set to k-rate + // works. + + // Fairly arbitrary start and end frequencies for the automation. + const freqStart = 100; + const freqEnd = 2000; + + let refSetup = (context) => { + let srcRef = new OscillatorNode(context, {frequency: 0}); + + should( + () => srcRef.frequency.automationRate = 'k-rate', + `${task.label}: srcRef.frequency.automationRate = 'k-rate'`) + .notThrow(); + should( + () => srcRef.frequency.setValueAtTime(freqStart, 0), + `${task.label}: srcRef.frequency.setValueAtTime(${ + freqStart}, 0)`) + .notThrow(); + should( + () => srcRef.frequency.linearRampToValueAtTime( + freqEnd, testDuration), + `${task.label}: srcRef.frequency.linearRampToValueAtTime(${ + freqEnd}, ${testDuration})`) + .notThrow(); + + return srcRef; + }; + + let testSetup = (context) => { + let srcTest = new OscillatorNode(context, {frequency: 0}); + should( + () => srcTest.frequency.automationRate = 'k-rate', + `${task.label}: srcTest.frequency.automationRate = 'k-rate'`) + .notThrow(); + + return srcTest; + }; + + let modSetup = (context) => { + let mod = new ConstantSourceNode(context, {offset: 0}); + + should( + () => mod.offset.setValueAtTime(freqStart, 0), + `${task.label}: modFreq.offset.setValueAtTime(${ + freqStart}, 0)`) + .notThrow(); + should( + () => + mod.offset.linearRampToValueAtTime(freqEnd, testDuration), + `${task.label}: modFreq.offset.linearRampToValueAtTime(${ + freqEnd}, ${testDuration})`) + .notThrow(); + + // This node is going to be connected to the frequency AudioParam. + return {frequency: mod}; + }; + + await testParams(should, { + prefix: task.label, + summary: 'k-rate frequency with input', + setupRefOsc: refSetup, + setupTestOsc: testSetup, + setupMod: modSetup + }); + + task.done(); + }); + + audit.define( + {label: 'Test 2', description: 'k-rate detune input'}, + async (task, should) => { + // Test that an input to the detune AudioParam set to k-rate works. + // Threshold experimentally determined. It should be probably not + // be much larger than 5e-5. or something is not right. + + // Fairly arbitrary start and end detune values for automation. + const detuneStart = 0; + const detuneEnd = 2000; + + let refSetup = (context) => { + let srcRef = new OscillatorNode(context, {detune: 0}); + + should( + () => srcRef.detune.automationRate = 'k-rate', + `${task.label}: srcRef.detune.automationRate = 'k-rate'`) + .notThrow(); + + should( + () => srcRef.detune.setValueAtTime(detuneStart, 0), + `${task.label}: srcRef.detune.setValueAtTime(${ + detuneStart}, 0)`) + .notThrow(); + should( + () => srcRef.detune.linearRampToValueAtTime( + detuneEnd, testDuration), + `${task.label}: srcRef.detune.linearRampToValueAtTime(${ + detuneEnd}, ${testDuration})`) + .notThrow(); + + return srcRef; + }; + + let testSetup = (context) => { + let srcTest = new OscillatorNode(context, {detune: 0}); + + should( + () => srcTest.detune.automationRate = 'k-rate', + `${task.label}: srcTest.detune.automationRate = 'k-rate'`) + .notThrow(); + + return srcTest; + }; + + let modSetup = (context) => { + let mod = new ConstantSourceNode(context, {offset: 0}); + + should( + () => mod.offset.setValueAtTime(detuneStart, 0), + `${task.label}: modDetune.offset.setValueAtTime(${ + detuneStart}, 0)`) + .notThrow(); + should( + () => mod.offset.linearRampToValueAtTime( + detuneEnd, testDuration), + `${task.label}: modDetune.offset.linearRampToValueAtTime(${ + detuneEnd}, ${testDuration})`) + .notThrow(); + + return {detune: mod}; + }; + + await testParams(should, { + prefix: task.label, + summary: 'k-rate detune with input', + setupRefOsc: refSetup, + setupTestOsc: testSetup, + setupMod: modSetup + }); + + task.done(); + }); + + audit.define( + { + label: 'Test 3', + description: 'k-rate frequency input with a-rate detune' + }, + async (task, should) => { + // Test OscillatorNode with a k-rate frequency with input and an + // a-rate detune iwth automations. + + // Fairly arbitrary start and end values for the frequency and + // detune automations. + const freqStart = 100; + const freqEnd = 2000; + const detuneStart = 0; + const detuneEnd = -2000; + + let refSetup = (context) => { + let node = new OscillatorNode(context, {frequency: 0}); + + // Set up k-rate frequency and a-rate detune + should( + () => node.frequency.automationRate = 'k-rate', + `${task.label}: srcRef.frequency.automationRate = 'k-rate'`) + .notThrow(); + should( + () => node.frequency.setValueAtTime(freqStart, 0), + `${task.label}: srcRef.frequency.setValueAtTime(${ + freqStart}, 0)`) + .notThrow(); + should( + () => node.frequency.linearRampToValueAtTime( + 2000, testDuration), + `${task.label}: srcRef.frequency.linearRampToValueAtTime(${ + freqEnd}, ${testDuration})`) + .notThrow(); + should( + () => node.detune.setValueAtTime(detuneStart, 0), + `${task.label}: srcRef.detune.setValueAtTime(${ + detuneStart}, 0)`) + .notThrow(); + should( + () => node.detune.linearRampToValueAtTime( + detuneEnd, testDuration), + `${task.label}: srcRef.detune.linearRampToValueAtTime(${ + detuneEnd}, ${testDuration})`) + .notThrow(); + + return node; + }; + + let testSetup = (context) => { + let node = new OscillatorNode(context, {frequency: 0}); + + should( + () => node.frequency.automationRate = 'k-rate', + `${task.label}: srcTest.frequency.automationRate = 'k-rate'`) + .notThrow(); + should( + () => node.detune.setValueAtTime(detuneStart, 0), + `${task.label}: srcTest.detune.setValueAtTime(${ + detuneStart}, 0)`) + .notThrow(); + should( + () => node.detune.linearRampToValueAtTime( + detuneEnd, testDuration), + `${task.label}: srcTest.detune.linearRampToValueAtTime(${ + detuneEnd}, ${testDuration})`) + .notThrow(); + + return node; + }; + + let modSetup = (context) => { + let mod = {}; + mod['frequency'] = new ConstantSourceNode(context, {offset: 0}); + + should( + () => mod['frequency'].offset.setValueAtTime(freqStart, 0), + `${task.label}: modFreq.offset.setValueAtTime(${ + freqStart}, 0)`) + .notThrow(); + + should( + () => mod['frequency'].offset.linearRampToValueAtTime( + 2000, testDuration), + `${task.label}: modFreq.offset.linearRampToValueAtTime(${ + freqEnd}, ${testDuration})`) + .notThrow(); + + return mod; + }; + + await testParams(should, { + prefix: task.label, + summary: 'k-rate frequency input with a-rate detune', + setupRefOsc: refSetup, + setupTestOsc: testSetup, + setupMod: modSetup + }); + + task.done(); + }); + + audit.define( + { + label: 'Test 4', + description: 'a-rate frequency with k-rate detune input' + }, + async (task, should) => { + // Test OscillatorNode with an a-rate frequency with automations and + // a k-rate detune with input. + + // Fairly arbitrary start and end values for the frequency and + // detune automations. + const freqStart = 100; + const freqEnd = 2000; + const detuneStart = 0; + const detuneEnd = -2000; + + let refSetup = (context) => { + let node = new OscillatorNode(context, {detune: 0}); + + // Set up a-rate frequency and k-rate detune + should( + () => node.frequency.setValueAtTime(freqStart, 0), + `${task.label}: srcRef.frequency.setValueAtTime(${ + freqStart}, 0)`) + .notThrow(); + should( + () => node.frequency.linearRampToValueAtTime( + 2000, testDuration), + `${task.label}: srcRef.frequency.linearRampToValueAtTime(${ + freqEnd}, ${testDuration})`) + .notThrow(); + should( + () => node.detune.automationRate = 'k-rate', + `${task.label}: srcRef.detune.automationRate = 'k-rate'`) + .notThrow(); + should( + () => node.detune.setValueAtTime(detuneStart, 0), + `${task.label}: srcRef.detune.setValueAtTime(${ + detuneStart}, 0)`) + .notThrow(); + should( + () => node.detune.linearRampToValueAtTime( + detuneEnd, testDuration), + `${task.label}: srcRef.detune.linearRampToValueAtTime(${ + detuneEnd}, ${testDuration})`) + .notThrow(); + + return node; + }; + + let testSetup = (context) => { + let node = new OscillatorNode(context, {detune: 0}); + + should( + () => node.detune.automationRate = 'k-rate', + `${task.label}: srcTest.detune.automationRate = 'k-rate'`) + .notThrow(); + should( + () => node.frequency.setValueAtTime(freqStart, 0), + `${task.label}: srcTest.frequency.setValueAtTime(${ + freqStart}, 0)`) + .notThrow(); + should( + () => node.frequency.linearRampToValueAtTime( + freqEnd, testDuration), + `${task.label}: srcTest.frequency.linearRampToValueAtTime(${ + freqEnd}, ${testDuration})`) + .notThrow(); + + return node; + }; + + let modSetup = (context) => { + let mod = {}; + const name = 'detune'; + + mod['detune'] = new ConstantSourceNode(context, {offset: 0}); + should( + () => mod[name].offset.setValueAtTime(detuneStart, 0), + `${task.label}: modDetune.offset.setValueAtTime(${ + detuneStart}, 0)`) + .notThrow(); + + should( + () => mod[name].offset.linearRampToValueAtTime( + detuneEnd, testDuration), + `${task.label}: modDetune.offset.linearRampToValueAtTime(${ + detuneEnd}, ${testDuration})`) + .notThrow(); + + return mod; + }; + + await testParams(should, { + prefix: task.label, + summary: 'k-rate detune input with a-rate frequency', + setupRefOsc: refSetup, + setupTestOsc: testSetup, + setupMod: modSetup + }); + + task.done(); + }); + + audit.define( + { + label: 'Test 5', + description: 'k-rate inputs for frequency and detune' + }, + async (task, should) => { + // Test OscillatorNode with k-rate frequency and detune with inputs + // on both. + + // Fairly arbitrary start and end values for the frequency and + // detune automations. + const freqStart = 100; + const freqEnd = 2000; + const detuneStart = 0; + const detuneEnd = -2000; + + let refSetup = (context) => { + let node = new OscillatorNode(context, {frequency: 0, detune: 0}); + + should( + () => node.frequency.automationRate = 'k-rate', + `${task.label}: srcRef.frequency.automationRate = 'k-rate'`) + .notThrow(); + should( + () => node.frequency.setValueAtTime(freqStart, 0), + `${task.label}: srcRef.setValueAtTime(${freqStart}, 0)`) + .notThrow(); + should( + () => node.frequency.linearRampToValueAtTime( + freqEnd, testDuration), + `${task.label}: srcRef;.frequency.linearRampToValueAtTime(${ + freqEnd}, ${testDuration})`) + .notThrow(); + should( + () => node.detune.automationRate = 'k-rate', + `${task.label}: srcRef.detune.automationRate = 'k-rate'`) + .notThrow(); + should( + () => node.detune.setValueAtTime(detuneStart, 0), + `${task.label}: srcRef.detune.setValueAtTime(${ + detuneStart}, 0)`) + .notThrow(); + should( + () => node.detune.linearRampToValueAtTime( + detuneEnd, testDuration), + `${task.label}: srcRef.detune.linearRampToValueAtTime(${ + detuneEnd}, ${testDuration})`) + .notThrow(); + + return node; + }; + + let testSetup = (context) => { + let node = new OscillatorNode(context, {frequency: 0, detune: 0}); + + should( + () => node.frequency.automationRate = 'k-rate', + `${task.label}: srcTest.frequency.automationRate = 'k-rate'`) + .notThrow(); + should( + () => node.detune.automationRate = 'k-rate', + `${task.label}: srcTest.detune.automationRate = 'k-rate'`) + .notThrow(); + + return node; + }; + + let modSetup = (context) => { + let modF = new ConstantSourceNode(context, {offset: 0}); + + should( + () => modF.offset.setValueAtTime(freqStart, 0), + `${task.label}: modFreq.offset.setValueAtTime(${ + freqStart}, 0)`) + .notThrow(); + should( + () => modF.offset.linearRampToValueAtTime( + freqEnd, testDuration), + `${task.label}: modFreq.offset.linearRampToValueAtTime(${ + freqEnd}, ${testDuration})`) + .notThrow(); + + let modD = new ConstantSourceNode(context, {offset: 0}); + + should( + () => modD.offset.setValueAtTime(detuneStart, 0), + `${task.label}: modDetune.offset.setValueAtTime(${ + detuneStart}, 0)`) + .notThrow(); + should( + () => modD.offset.linearRampToValueAtTime( + detuneEnd, testDuration), + `${task.label}: modDetune.offset.linearRampToValueAtTime(${ + detuneEnd}, ${testDuration})`) + .notThrow(); + + return {frequency: modF, detune: modD}; + }; + + await testParams(should, { + prefix: task.label, + summary: 'k-rate inputs for both frequency and detune', + setupRefOsc: refSetup, + setupTestOsc: testSetup, + setupMod: modSetup + }); + + task.done(); + }); + + audit.run(); + + async function testParams(should, options) { + // Test a-rate and k-rate AudioParams of an OscillatorNode. + // + // |options| should be a dictionary with these members: + // prefix - prefix to use for messages + // summary - message to be printed with the final results + // setupRefOsc - function returning the reference oscillator + // setupTestOsc - function returning the test oscillator + // setupMod - function returning nodes to be connected to the + // AudioParams. + // + // |setupRefOsc| and |setupTestOsc| are given the context and each + // method is expected to create an OscillatorNode with the appropriate + // automations for testing. The constructed OscillatorNode is returned. + // + // The reference oscillator + // should automate the desired AudioParams at the appropriate automation + // rate, and the output is the expected result. + // + // The test oscillator should set up the AudioParams but expect the + // AudioParam(s) have an input that matches the automation for the + // reference oscillator. + // + // |setupMod| must create one or two ConstantSourceNodes with exactly + // the same automations as used for the reference oscillator. This node + // is used as the input to an AudioParam of the test oscillator. This + // function returns a dictionary whose members are named 'frequency' and + // 'detune'. The name indicates which AudioParam the constant source + // node should be connected to. + + // Two channels: 0 = reference signal, 1 = test signal + let context = new OfflineAudioContext({ + numberOfChannels: 2, + sampleRate: sampleRate, + length: testDuration * sampleRate + }); + + let merger = new ChannelMergerNode( + context, {numberOfInputs: context.destination.channelCount}); + merger.connect(context.destination); + + // The reference oscillator. + let srcRef = options.setupRefOsc(context); + + // The test oscillator. + let srcTest = options.setupTestOsc(context); + + // Inputs to AudioParam. + let mod = options.setupMod(context); + + if (mod['frequency']) { + should( + () => mod['frequency'].connect(srcTest.frequency), + `${options.prefix}: modFreq.connect(srcTest.frequency)`) + .notThrow(); + mod['frequency'].start() + } + + if (mod['detune']) { + should( + () => mod['detune'].connect(srcTest.detune), + `${options.prefix}: modDetune.connect(srcTest.detune)`) + .notThrow(); + mod['detune'].start() + } + + srcRef.connect(merger, 0, 0); + srcTest.connect(merger, 0, 1); + + srcRef.start(); + srcTest.start(); + + let buffer = await context.startRendering(); + let expected = buffer.getChannelData(0); + let actual = buffer.getChannelData(1); + + // The output of the reference and test oscillator should be + // exactly equal because the AudioParam values should be exactly + // equal. + should(actual, options.summary).beCloseToArray(expected, { + absoluteThreshold: 0 + }); + } + </script> + </body> +</html> |