diff options
94 files changed, 1167 insertions, 439 deletions
diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/nested-orthogonal-flexbox-relayout.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/nested-orthogonal-flexbox-relayout.html.ini new file mode 100644 index 00000000000..a1dee88680c --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/nested-orthogonal-flexbox-relayout.html.ini @@ -0,0 +1,2 @@ +[nested-orthogonal-flexbox-relayout.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini index 628b1fab770..c884dc82eab 100644 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini @@ -2,3 +2,6 @@ [listeners are called when <iframe> is resized] expected: FAIL + [listeners are called correct number of times] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini deleted file mode 100644 index e38782d8c85..00000000000 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[elementFromPoint-001.html] - [CSSOM View - 5 - extensions to the Document interface] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini index c131078eace..23c61ede1a1 100644 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini @@ -17,3 +17,6 @@ [test the top of layer] expected: FAIL + [test some point of the element: top left corner] + 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/effect-reference-add-hw-001.html.ini b/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-add-hw-001.html.ini new file mode 100644 index 00000000000..feabed0d89d --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/filter-effects/effect-reference-add-hw-001.html.ini @@ -0,0 +1,2 @@ +[effect-reference-add-hw-001.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 4576b32cc97..6448d502269 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 @@ -312,24 +312,24 @@ [Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK] expected: NOTRUN - [<iframe>: combined response Content-Type: text/html;x=" text/plain] + [<iframe>: combined response Content-Type: text/html */*] expected: FAIL - [<iframe>: combined response Content-Type: text/html */*] + [<iframe>: combined response Content-Type: text/html;" text/plain] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" \\" text/plain] + [<iframe>: separate response Content-Type: text/html;" \\" text/plain] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" text/plain] + [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] expected: FAIL - [<iframe>: separate response Content-Type: text/html */*;charset=gbk] + [<iframe>: combined response Content-Type: */* text/html] expected: FAIL - [<iframe>: separate response Content-Type: text/html;" \\" text/plain] + [<iframe>: separate response Content-Type: text/plain */*] expected: FAIL - [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] + [<iframe>: separate 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 646a46c0cbb..c7413d589dc 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 @@ -59,6 +59,6 @@ [separate text/javascript;charset=windows-1252 error text/javascript] expected: FAIL - [separate text/javascript error] + [separate text/javascript;charset=windows-1252 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..f9392e03143 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,9 @@ [X-Content-Type-Options%3A%20nosniff%0C] expected: FAIL + [X-Content-Type-Options%3A%20%22nosniFF%22] + 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 deleted file mode 100644 index 87b07c3e670..00000000000 --- a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[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_5.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini deleted file mode 100644 index dc2e45516de..00000000000 --- a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_5.html] - [Multiple history traversals, last would be aborted] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini index a16aaaad8b3..8040ed18a5b 100644 --- a/tests/wpt/metadata-layout-2020/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini +++ b/tests/wpt/metadata-layout-2020/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini @@ -11,6 +11,6 @@ [Set HTTP URL frame location.protocol to ftp] expected: FAIL - [Set data URL frame location.protocol to file] + [Set data URL frame location.protocol to data] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini new file mode 100644 index 00000000000..16fa2c5cfc1 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini @@ -0,0 +1,4 @@ +[creating_browsing_context_test_01.html] + [first argument: absolute url] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/html/interaction/focus/tabindex-focus-flag.html.ini b/tests/wpt/metadata-layout-2020/html/interaction/focus/tabindex-focus-flag.html.ini new file mode 100644 index 00000000000..d23f60c1a9d --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/interaction/focus/tabindex-focus-flag.html.ini @@ -0,0 +1,52 @@ +[tabindex-focus-flag.html] + [text with tabindex=invalid should not be focusable.] + expected: FAIL + + [A with tabindex=invalid should not be focusable.] + expected: FAIL + + [#svg-a should not be focusable by default.] + expected: FAIL + + [input[type="hidden"\] should not be focusable by default.] + expected: FAIL + + [text with tabindex=0 should be focusable.] + expected: FAIL + + [IMG with tabindex=invalid should not be focusable.] + expected: FAIL + + [a with tabindex=invalid should not be focusable.] + expected: FAIL + + [#summary-first should be focusable by default.] + expected: FAIL + + [a with tabindex=0 should be focusable.] + expected: FAIL + + [a with tabindex=-1 should be focusable.] + expected: FAIL + + [#svg-text should not be focusable by default.] + expected: FAIL + + [a should not be focusable by default.] + expected: FAIL + + [[contenteditable\] should be focusable by default.] + expected: FAIL + + [DIV with tabindex=invalid should not be focusable.] + expected: FAIL + + [SUMMARY#summary-out-tabindex-invalid with tabindex=invalid should not be focusable.] + expected: FAIL + + [a#with-href with tabindex=invalid should not be focusable.] + expected: FAIL + + [text with tabindex=-1 should be focusable.] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini b/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini index c12c0f8ae48..6852d7663de 100644 --- a/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini +++ b/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini @@ -1,4 +1,8 @@ [skip-document-with-fragment.html] + expected: TIMEOUT [Autofocus elements in iframed documents with URL fragments should be skipped.] expected: FAIL + [Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.] + expected: TIMEOUT + diff --git a/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini b/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini index af14e19a466..f45aaafe1c5 100644 --- a/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini +++ b/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini @@ -1,20 +1,16 @@ [supported-elements.html] - expected: TIMEOUT [Contenteditable element should support autofocus] expected: FAIL [Host element with delegatesFocus including no focusable descendants should be skipped] - expected: NOTRUN + expected: FAIL [Element with tabindex should support autofocus] - expected: TIMEOUT + expected: FAIL [Area element should support autofocus] - expected: NOTRUN + expected: FAIL [Host element with delegatesFocus should support autofocus] - expected: NOTRUN - - [Non-HTMLElement should not support autofocus] - expected: NOTRUN + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini index 295031c1812..338d283eb0e 100644 --- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini +++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini @@ -1,5 +1,4 @@ [iframe_sandbox_popups_escaping-3.html] - expected: TIMEOUT [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] - expected: TIMEOUT + 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 46801a858b3..90360fde975 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 @@ -53,3 +53,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 44061 more errors.\n\tMax AbsError of 1.9999794363975525e+0 at index of 28452.\n\t[28452\]\t9.9997943639755249e-1\t-1.0000000000000000e+0\t1.9999794363975525e+0\t1.9999794363975525e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n] expected: FAIL + [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 44052 more errors.\n\tMax AbsError of 1.9999977350234985e+0 at index of 39026.\n\t[39026\]\t9.9999773502349854e-1\t-1.0000000000000000e+0\t1.9999977350234985e+0\t1.9999977350234985e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 14112.\n\t[14112\]\t-9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-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 b76a51e16c5..b0712c65363 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 @@ -86,3 +86,6 @@ [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-3.3433449219311302e-17\t5.6332010030746460e-1\t5.6332010030746460e-1\t1.0000000000000000e+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.0000000000000000e+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\]\t-4.6400068104817376e-34\t5.6332010030746460e-1\t5.6332010030746460e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\t[31081\]\t4.5571627358307376e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31080.\n] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini new file mode 100644 index 00000000000..663a1f8fa30 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini @@ -0,0 +1,5 @@ +[018.html] + expected: TIMEOUT + [origin of the script that invoked the method, javascript:] + expected: TIMEOUT + diff --git a/tests/wpt/metadata-layout-2020/webmessaging/without-ports/018.html.ini b/tests/wpt/metadata-layout-2020/webmessaging/without-ports/018.html.ini new file mode 100644 index 00000000000..663a1f8fa30 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/webmessaging/without-ports/018.html.ini @@ -0,0 +1,5 @@ +[018.html] + expected: TIMEOUT + [origin of the script that invoked the method, javascript:] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 5578e7dd2ac..e07d754e936 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -136815,6 +136815,19 @@ {} ] ], + "nested-orthogonal-flexbox-relayout.html": [ + "ef158c6a4884b8ee2840bafe27e605e618aa8be5", + [ + null, + [ + [ + "/css/css-flexbox/reference/nested-orthogonal-flexbox-relayout-ref.html", + "==" + ] + ], + {} + ] + ], "order": { "order-with-column-reverse.html": [ "5083d6843649bbbb2bf9d417ae4022042c87e0aa", @@ -202804,6 +202817,19 @@ {} ] ], + "background-image-blur-repaint.html": [ + "7b3df263081ecceb6517e056e60cfaa35b9981a0", + [ + null, + [ + [ + "/css/filter-effects/reference/background-image-blur-repaint-expected.html", + "==" + ] + ], + {} + ] + ], "blur-clip-stacking-context-001.html": [ "a96994a8afe126e474f9ee015338749f0015dc1f", [ @@ -203129,8 +203155,21 @@ {} ] ], + "effect-reference-add-hw-001.html": [ + "78f30c35f47926b63d417c29fc063c96b9171c96", + [ + null, + [ + [ + "/css/filter-effects/reference/effect-reference-add-hw-001-ref.html", + "==" + ] + ], + {} + ] + ], "effect-reference-after-001.html": [ - "e8bbc787df5ddd047df3e393d8e07b17c2f95fc9", + "a6de2465027e99ff6239dd45524862465dde847f", [ null, [ @@ -238363,7 +238402,7 @@ }, "support": { ".azure-pipelines.yml": [ - "fb78944998e33edde5ea614af1a0cf1adc4f02ca", + "0bf63f7a374f69063654169e0b74169fce8dc5fd", [] ], ".codecov.yml": [ @@ -285751,6 +285790,10 @@ "186c5d130c5ea7facc55ff2ac88b1f1f9edf63af", [] ], + "nested-orthogonal-flexbox-relayout-ref.html": [ + "124ecf843c848a71918559c0b853032184a5e5b1", + [] + ], "order-painting-ref.html": [ "bf7bc30d017dd4066193b7ed18bdd94dbfeb8de3", [] @@ -307227,12 +307270,20 @@ "9ce975c1ef631dc4e8e59c35fcacf6d9c7483b58", [] ], + "background-image-blur-repaint-expected.html": [ + "bf16d1fa2890af8d1bdb7b95b44af5bfff4dccaa", + [] + ], "dynamic-filter-changes-001-ref.html": [ "699d57c2a8c087c25079232a443a6e2b72c1e79e", [] ], + "effect-reference-add-hw-001-ref.html": [ + "79a15223610df684732b9d6d6f5b59810f79403e", + [] + ], "effect-reference-after-001-ref.html": [ - "cbcff3fa444c580acc67640ce330edcf898aeeb2", + "45192b13451fdfe2f00c17dbc84d30a770426e86", [] ], "effect-reference-convolve-error-001-ref.html": [ @@ -307345,6 +307396,10 @@ "85dd7324815b8f8ef1a1d0496224c1a0661db9d8", [] ], + "color-palette.png": [ + "68641b76771abf086dc213b353ac2088fffb931a", + [] + ], "div-with-filter.html": [ "9a4d4105a8d50b55297783871e144a5858d7a33e", [] @@ -307385,10 +307440,6 @@ "8b4b25364e0ffbe09e563e13b567fa57330e48d5", [] ], - "reference.png": [ - "68641b76771abf086dc213b353ac2088fffb931a", - [] - ], "ruler-h-50%.png": [ "cf2eea6b438a11503a89414cbb2f9f1fde55df0c", [] @@ -312420,7 +312471,27 @@ [] ], "experimental-features": { + "layout-animations-disabled-tentative.html.headers": [ + "bebb5d054826ce19d4a0d4f1381deeb5e72f7270", + [] + ], + "layout-animations-disabled-violation-report-js-tentative.html.headers": [ + "bebb5d054826ce19d4a0d4f1381deeb5e72f7270", + [] + ], + "layout-animations-disabled-violation-report-keyframes-tentative.html.headers": [ + "bebb5d054826ce19d4a0d4f1381deeb5e72f7270", + [] + ], "resources": { + "animation-property-height.js": [ + "79316cb488fade6e877c690f90c74961ff944f52", + [] + ], + "common.js": [ + "639847abf36d636e537c081a6afd06a3a8fb7f9f", + [] + ], "document-policy-image.html": [ "4e5b919bd112f044cc3ec9e57afe05ae20f22ece", [] @@ -314690,18 +314761,6 @@ [] ], "experimental-features": { - "layout-animations-disabled-tentative.html.headers": [ - "7c441bbba555d9da8c2cfc34de2ddaf2a52074f4", - [] - ], - "layout-animations-disabled-violation-report-js-tentative.html.headers": [ - "7c441bbba555d9da8c2cfc34de2ddaf2a52074f4", - [] - ], - "layout-animations-disabled-violation-report-keyframes-tentative.html.headers": [ - "7c441bbba555d9da8c2cfc34de2ddaf2a52074f4", - [] - ], "lazyload": { "lazyload-disabled-image-tentative.sub.html.headers": [ "7974815fc9cc069a3890cec9d09d1c6b3e3f9908", @@ -314721,10 +314780,6 @@ ] }, "resources": { - "animation-property-height.js": [ - "79316cb488fade6e877c690f90c74961ff944f52", - [] - ], "async-script.js": [ "3c0ee6d02343891b0234f31c0fb229929ae1b24b", [] @@ -315071,7 +315126,7 @@ [] ], "feature-policy-screen-wakelock.html": [ - "7d3dab45af1d57c805f14cfdbed142ddb2415eba", + "6feed51d498651c6565517df3afb49076bcb7c57", [] ], "feature-policy-serial-worker.html": [ @@ -338401,7 +338456,7 @@ [] ], "serve.py": [ - "e4f0d5efaee37170a9c03a208924e483b2a4608a", + "45bfd4766ebcd278ab068f9632471c5c23a3c3f1", [] ], "test_functional.py": [ @@ -343424,7 +343479,7 @@ [] ], "environment.py": [ - "2ed4a0f5f93e17c1aad2c6fb9d5de5b48a07aebe", + "cbbee8213266bf2f914a4066437dbfa63c774701", [] ], "executors": { @@ -344122,7 +344177,7 @@ [] ], "server.py": [ - "9e842802fc0f1b273cd78313275e0bf78dbcaf64", + "c2498c4ee1e8f45de604f71394c3d6feef82aef1", [] ], "sslutils": { @@ -346412,7 +346467,7 @@ [] ], "RTCRtpParameters-helper.js": [ - "d61d8e14932963e9f17c47b99f2998d7ef0e9ff4", + "17ecfbaf99e8ff133373f1487a282dbaab7562f6", [] ], "RTCStats-helper.js": [ @@ -381968,13 +382023,6 @@ {} ] ], - "flex-flow-percentage-margins-no-available-space-assert.html": [ - "086c4f5dd711fb45b2739dbf74794f81d8e88d95", - [ - null, - {} - ] - ], "flex-item-contains-strict.html": [ "25849cc64b2f10cf2d319e1a2f750f32d64359b5", [ @@ -383080,6 +383128,13 @@ {} ] ], + "fontfaceset-load-css-wide-keywords.html": [ + "b85b92bd15e387db3dacd93b325f7f7b4d8d80db", + [ + null, + {} + ] + ], "fontfacesetloadevent-constructor.html": [ "d5038ce690c6df5f8eb6f2d0266df052f7200fc5", [ @@ -390196,6 +390251,13 @@ {} ] ], + "host-part-001.html": [ + "9004141534f134d85590df3372f83838668a72e7", + [ + null, + {} + ] + ], "host-stylesheet.html": [ "2e65c4b1b57bd9959c68e85e11b442c67f2c5a42", [ @@ -399859,7 +399921,7 @@ ] ], "CSSStyleSheet-constructable.html": [ - "fbee4298c1411937f8c45a2f6001ee78dccadbb5", + "e6293909c2178966a942abb7e544ff437e6d51d3", [ null, {} @@ -403539,6 +403601,34 @@ }, "document-policy": { "experimental-features": { + "layout-animations-disabled-tentative.html": [ + "0190eaa84f75e3097b95f70adde89296d47cc1f3", + [ + null, + {} + ] + ], + "layout-animations-disabled-violation-report-js-tentative.html": [ + "ee7c295156f26733358d62a4046a097450a6b8e2", + [ + null, + {} + ] + ], + "layout-animations-disabled-violation-report-keyframes-tentative.html": [ + "cd9210cc1382ee1f6dc892783bd275c1de7ab669", + [ + null, + {} + ] + ], + "layout-animations-enabled-tentative.html": [ + "19e405496eef72d176d007c93f7262e6a12b3806", + [ + null, + {} + ] + ], "unsized-media.tentative.https.sub.html": [ "d7bb72524902cbd519d892b8206569d7607a120b", [ @@ -419901,34 +419991,6 @@ {} ] ], - "layout-animations-disabled-tentative.html": [ - "0190eaa84f75e3097b95f70adde89296d47cc1f3", - [ - null, - {} - ] - ], - "layout-animations-disabled-violation-report-js-tentative.html": [ - "e7150a91e8749473962884727fb59bb3b978bf68", - [ - null, - {} - ] - ], - "layout-animations-disabled-violation-report-keyframes-tentative.html": [ - "163ccae812f129e6cc338eb548e7ace92dd65b17", - [ - null, - {} - ] - ], - "layout-animations-enabled-tentative.html": [ - "19e405496eef72d176d007c93f7262e6a12b3806", - [ - null, - {} - ] - ], "lazyload": { "lazyload-disabled-image-tentative.sub.html": [ "5bd9fca2a868197bdcc81486e0a33ce4e3a0659b", @@ -430350,7 +430412,7 @@ ] }, "tabindex-focus-flag.html": [ - "341162f09e79e9aad17769b709f94aeadb8771cc", + "93fdb19a592ff632405c338256082043ae608002", [ null, {} @@ -438061,7 +438123,7 @@ ] ], "import-css-module-basic.html": [ - "902430d0779e3b9e34f95db1da4d4b96c2b24bbb", + "1cb290de3feb584bf9dc63e8090f6b31dd10eeb9", [ null, {} @@ -447531,7 +447593,7 @@ }, "media-capabilities": { "decodingInfo.any.js": [ - "2d74d30eeb623992f629b6932304c3ee2b89e84f", + "772d47e87295775f207fedd6f3f68681ca32ad79", [ "media-capabilities/decodingInfo.any.html", { @@ -450435,6 +450497,13 @@ {} ] ], + "RTCRtpSendParameters-degradationPreference.html": [ + "3573bb58760210611cd13f0d7d0fbd2aa6682bd7", + [ + null, + {} + ] + ], "idlharness.window.js": [ "0d9137dc6fb91b1499d922e01d6ad96049f5757b", [ @@ -494861,7 +494930,7 @@ }, "wake-lock": { "idlharness-worker.https.window.js": [ - "c747ad6872a91a5ca81fb1e7ca73f72e4e987097", + "76f5352721dfdadca5093b6f08bb648d8b17f93e", [ "wake-lock/idlharness-worker.https.window.html", { @@ -494879,7 +494948,7 @@ ] ], "idlharness.https.window.js": [ - "f9e3c02175d519f454c15109b30fa567709cee2d", + "60c25f3386ea8bd2ce8a5955745f9d1ede580f46", [ "wake-lock/idlharness.https.window.html", { @@ -494933,7 +495002,7 @@ ] ], "wakelock-enabled-by-feature-policy.https.sub.html": [ - "376359e888d6191b9eb1241373b3d411bb5bd2d0", + "f908717ff410d736ccb42e89c3e95c4852e82696", [ null, { @@ -494942,7 +495011,7 @@ ] ], "wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html": [ - "a2d3725857be76f33b33257c0c3373edb68396be", + "b15289beff4853765fdc30dfd0a3b35d48fd8619", [ null, { @@ -494976,7 +495045,7 @@ ] ], "wakelock-onrelease.https.html": [ - "3506c8ae82b91178468a7158b9fca6d099a498f6", + "88c0cdb654c8e700195c430aa74fb2238ce9db10", [ null, { @@ -494985,7 +495054,7 @@ ] ], "wakelock-request-denied.https.html": [ - "8dbe523ed2c5653932a3f6f246d34ada1e4b113f", + "b222ef342a6566a9d424044713b1acf2666679eb", [ null, { @@ -495008,7 +495077,7 @@ ] ], "wakelock-supported-by-feature-policy.html": [ - "e7f9c8cb283c20d72c6d936398b9c352a2a0b88a", + "a55eb54ba1c48ae7d5330ed1281029d71f0a23e9", [ null, {} @@ -495040,7 +495109,7 @@ ] ], "wakelockpermissiondescriptor.https.html": [ - "fd7a08a34ba7dfe203c42f4d4f78ae626fbea235", + "88c95987f1ead6d0e194e3d1dcff6d4b5e852778", [ null, { @@ -502662,42 +502731,35 @@ ] ], "RTCRtpParameters-codecs.html": [ - "fdb584460f862825f2c695ec3cff678c14503fb4", - [ - null, - {} - ] - ], - "RTCRtpParameters-degradationPreference.html": [ - "e2c92bc1c0814f294e1b9153febc76886cf2fdb9", + "f5fa65e2ac9be706a72feb49c09b37def65986e8", [ null, {} ] ], "RTCRtpParameters-encodings.html": [ - "2f94186fe1e76980f77f5da7fdb516ba411b036f", + "00e80885cff30c7bae8c94ebf8fd3ac37e26603a", [ null, {} ] ], "RTCRtpParameters-headerExtensions.html": [ - "85c3338dd62b0a8a4aad1e217673f01dd80d50fa", + "7de2b75f4ee85b338d6b36ff7c12c5b17bb61779", [ null, {} ] ], "RTCRtpParameters-rtcp.html": [ - "82fb49be7dea91b0be43ddbbf1d259d3d80b7d99", + "79653045200e667f405a749ae6f51a083dc1f99d", [ null, {} ] ], "RTCRtpParameters-transactionId.html": [ - "ae56fb401f44bad254edfbfd670776c5ffe96211", + "a7b7865532b877e17bf17edab0ab44ec3ca288d4", [ null, {} @@ -502718,7 +502780,7 @@ ] ], "RTCRtpReceiver-getParameters.html": [ - "7f8ac673a60c73681122df5243f6054b82f31fff", + "4be0e3b95ec45bd9693a4da38b146c58b37810f8", [ null, {} diff --git a/tests/wpt/metadata/css/css-flexbox/flex-flow-percentage-margins-no-available-space-assert.html.ini b/tests/wpt/metadata/css/css-flexbox/flex-flow-percentage-margins-no-available-space-assert.html.ini deleted file mode 100644 index 5c7a587b84e..00000000000 --- a/tests/wpt/metadata/css/css-flexbox/flex-flow-percentage-margins-no-available-space-assert.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[flex-flow-percentage-margins-no-available-space-assert.html] - expected: CRASH diff --git a/tests/wpt/metadata/css/css-flexbox/nested-orthogonal-flexbox-relayout.html.ini b/tests/wpt/metadata/css/css-flexbox/nested-orthogonal-flexbox-relayout.html.ini new file mode 100644 index 00000000000..a1dee88680c --- /dev/null +++ b/tests/wpt/metadata/css/css-flexbox/nested-orthogonal-flexbox-relayout.html.ini @@ -0,0 +1,2 @@ +[nested-orthogonal-flexbox-relayout.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini index 628b1fab770..c884dc82eab 100644 --- a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini +++ b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini @@ -2,3 +2,6 @@ [listeners are called when <iframe> is resized] expected: FAIL + [listeners are called correct number of times] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini deleted file mode 100644 index e38782d8c85..00000000000 --- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[elementFromPoint-001.html] - [CSSOM View - 5 - extensions to the Document interface] - expected: FAIL - diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini index 85e94926cb3..5733d536fd3 100644 --- a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini +++ b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini @@ -21,3 +21,6 @@ [test the top of layer] expected: FAIL + [test some point of the element: top left corner] + 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/effect-reference-add-hw-001.html.ini b/tests/wpt/metadata/css/filter-effects/effect-reference-add-hw-001.html.ini new file mode 100644 index 00000000000..feabed0d89d --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/effect-reference-add-hw-001.html.ini @@ -0,0 +1,2 @@ +[effect-reference-add-hw-001.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 6ca28f093c5..ddd9d62b9bf 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -312,24 +312,24 @@ [fetch(): separate response Content-Type: text/plain ] expected: NOTRUN - [<iframe>: combined response Content-Type: text/html;x=" text/plain] + [<iframe>: combined response Content-Type: text/html */*] expected: FAIL - [<iframe>: combined response Content-Type: text/html */*] + [<iframe>: combined response Content-Type: text/html;" text/plain] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" \\" text/plain] + [<iframe>: separate response Content-Type: text/html;" \\" text/plain] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" text/plain] + [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] expected: FAIL - [<iframe>: separate response Content-Type: text/html */*;charset=gbk] + [<iframe>: combined response Content-Type: */* text/html] expected: FAIL - [<iframe>: separate response Content-Type: text/html;" \\" text/plain] + [<iframe>: separate response Content-Type: text/plain */*] expected: FAIL - [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] + [<iframe>: separate 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 646a46c0cbb..c7413d589dc 100644 --- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini @@ -59,6 +59,6 @@ [separate text/javascript;charset=windows-1252 error text/javascript] expected: FAIL - [separate text/javascript error] + [separate text/javascript;charset=windows-1252 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..9383f8004c1 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,9 @@ [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%20%22nosniFF%22] + 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 deleted file mode 100644 index 87b07c3e670..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[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_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini deleted file mode 100644 index dc2e45516de..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_5.html] - [Multiple history traversals, last would be aborted] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini index bc08ec856bc..ee369c247a4 100644 --- a/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini @@ -18,6 +18,6 @@ [Set HTTP URL frame location.protocol to ftp] expected: FAIL - [Set data URL frame location.protocol to file] + [Set data URL frame location.protocol to data] expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini new file mode 100644 index 00000000000..16fa2c5cfc1 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini @@ -0,0 +1,4 @@ +[creating_browsing_context_test_01.html] + [first argument: absolute url] + expected: FAIL + diff --git a/tests/wpt/metadata/html/interaction/focus/tabindex-focus-flag.html.ini b/tests/wpt/metadata/html/interaction/focus/tabindex-focus-flag.html.ini index 5af0d13df14..5877dca48b6 100644 --- a/tests/wpt/metadata/html/interaction/focus/tabindex-focus-flag.html.ini +++ b/tests/wpt/metadata/html/interaction/focus/tabindex-focus-flag.html.ini @@ -11,3 +11,42 @@ [[contenteditable\] should be focusable by default.] expected: FAIL + [text with tabindex=invalid should not be focusable.] + expected: FAIL + + [A with tabindex=invalid should not be focusable.] + expected: FAIL + + [#svg-a should not be focusable by default.] + expected: FAIL + + [text with tabindex=0 should be focusable.] + expected: FAIL + + [IMG with tabindex=invalid should not be focusable.] + expected: FAIL + + [a with tabindex=invalid should not be focusable.] + expected: FAIL + + [a with tabindex=0 should be focusable.] + expected: FAIL + + [a with tabindex=-1 should be focusable.] + expected: FAIL + + [#svg-text should not be focusable by default.] + expected: FAIL + + [DIV with tabindex=invalid should not be focusable.] + expected: FAIL + + [SUMMARY#summary-out-tabindex-invalid with tabindex=invalid should not be focusable.] + expected: FAIL + + [a#with-href with tabindex=invalid should not be focusable.] + expected: FAIL + + [text with tabindex=-1 should be focusable.] + expected: FAIL + diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini index c12c0f8ae48..6852d7663de 100644 --- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini +++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini @@ -1,4 +1,8 @@ [skip-document-with-fragment.html] + expected: TIMEOUT [Autofocus elements in iframed documents with URL fragments should be skipped.] expected: FAIL + [Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini index 8b743f36e1d..6b68e9094e4 100644 --- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini +++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini @@ -1,20 +1,16 @@ [supported-elements.html] - expected: TIMEOUT [Contenteditable element should support autofocus] expected: FAIL [Element with tabindex should support autofocus] - expected: TIMEOUT + expected: FAIL [Host element with delegatesFocus including no focusable descendants should be skipped] - expected: NOTRUN + expected: FAIL [Area element should support autofocus] - expected: NOTRUN + expected: FAIL [Host element with delegatesFocus should support autofocus] - expected: NOTRUN - - [Non-HTMLElement should not support autofocus] - expected: NOTRUN + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini index 5f60c78e73c..f6a7aca3306 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini @@ -1,6 +1,5 @@ [iframe_sandbox_popups_escaping-3.html] type: testharness - expected: TIMEOUT [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] - expected: TIMEOUT + 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 62e14af7f80..b921bb187fb 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 @@ -122,3 +122,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 44061 more errors.\n\tMax AbsError of 1.9999794363975525e+0 at index of 28452.\n\t[28452\]\t9.9997943639755249e-1\t-1.0000000000000000e+0\t1.9999794363975525e+0\t1.9999794363975525e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n] expected: FAIL + [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 44052 more errors.\n\tMax AbsError of 1.9999977350234985e+0 at index of 39026.\n\t[39026\]\t9.9999773502349854e-1\t-1.0000000000000000e+0\t1.9999977350234985e+0\t1.9999977350234985e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 14112.\n\t[14112\]\t-9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-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 c698a27f639..a5f3201be52 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 @@ -317,3 +317,6 @@ [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-3.3433449219311302e-17\t5.6332010030746460e-1\t5.6332010030746460e-1\t1.0000000000000000e+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.0000000000000000e+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\]\t-4.6400068104817376e-34\t5.6332010030746460e-1\t5.6332010030746460e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\t[31081\]\t4.5571627358307376e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31080.\n] + expected: FAIL + diff --git a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini new file mode 100644 index 00000000000..663a1f8fa30 --- /dev/null +++ b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini @@ -0,0 +1,5 @@ +[018.html] + expected: TIMEOUT + [origin of the script that invoked the method, javascript:] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/webmessaging/without-ports/018.html.ini b/tests/wpt/metadata/webmessaging/without-ports/018.html.ini new file mode 100644 index 00000000000..663a1f8fa30 --- /dev/null +++ b/tests/wpt/metadata/webmessaging/without-ports/018.html.ini @@ -0,0 +1,5 @@ +[018.html] + expected: TIMEOUT + [origin of the script that invoked the method, javascript:] + expected: TIMEOUT + diff --git a/tests/wpt/web-platform-tests/.azure-pipelines.yml b/tests/wpt/web-platform-tests/.azure-pipelines.yml index fb78944998e..0bf63f7a374 100644 --- a/tests/wpt/web-platform-tests/.azure-pipelines.yml +++ b/tests/wpt/web-platform-tests/.azure-pipelines.yml @@ -630,7 +630,7 @@ jobs: - template: tools/ci/azure/update_hosts.yml - template: tools/ci/azure/update_manifest.yml # --exclude is a workaround for https://github.com/web-platform-tests/wpt/issues/18634 + https://github.com/web-platform-tests/wpt/issues/22175 - - script: no_proxy='*' ./wpt run --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --this-chunk=$(System.JobPositionInPhase) --total-chunks=$(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-mach - --log-mach-level info safari --exclude /inert/inert-retargeting.tentative.html --exclude /inert/inert-retargeting-iframe.tentative.html --exclude /pointerevents/pointerevent_pointercapture-not-lost-in-chorded-buttons.html + - script: no_proxy='*' ./wpt run --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --this-chunk=$(System.JobPositionInPhase) --total-chunks=$(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-mach - --log-mach-level info safari --exclude /inert/inert-retargeting.tentative.html --exclude /inert/inert-retargeting-iframe.tentative.html --exclude /pointerevents/pointerevent_pointercapture-not-lost-in-chorded-buttons.html --exclude /pointerevents/pointerevent_pointercapture_in_frame.html --exclude /web-share/share-sharePromise-internal-slot.https.html displayName: 'Run tests' - task: PublishBuildArtifacts@1 displayName: 'Publish results' diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/flex-flow-percentage-margins-no-available-space-assert.html b/tests/wpt/web-platform-tests/css/css-flexbox/flex-flow-percentage-margins-no-available-space-assert.html deleted file mode 100644 index 086c4f5dd71..00000000000 --- a/tests/wpt/web-platform-tests/css/css-flexbox/flex-flow-percentage-margins-no-available-space-assert.html +++ /dev/null @@ -1,25 +0,0 @@ -<!DOCTYPE html> -<title>CSS Flexbox: flex-flow percentage margin with no available space</title> -<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#flex-shrink-property"> -<link rel="issue" href="https://bugs.chromium.org/p/chromium/issues/detail?id=380201"> -<meta name="assert" content="This test checks that a flexbox doesn't shrink below border/padding -when stretching children with no available space."> -<style> -* { - display: flex; - padding-bottom: 20pt; - min-height: 0.7%; - margin-top: 6000%; - flex-shrink: 0; - flex-basis: 7000%; -} -</style> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/resources/check-layout-th.js"></script> -<abbr data-expected-height=30210272> - <input></input> -</abbr> -<script> - window.checkLayout('abbr'); -</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/nested-orthogonal-flexbox-relayout.html b/tests/wpt/web-platform-tests/css/css-flexbox/nested-orthogonal-flexbox-relayout.html new file mode 100644 index 00000000000..ef158c6a488 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/nested-orthogonal-flexbox-relayout.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html> +<title>CSS Flexbox: nested orthogonal children on relayout.</title> +<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#flex-direction-property"> +<link rel="match" href="reference/nested-orthogonal-flexbox-relayout-ref.html"> +<meta name="assert" content="This test ensures nested orthogonal flex items get properly relaid out when flexbox changes dimensions."/> +<style> +#column { + display: flex; + flex-direction: column; + border: 5px solid yellow; +} + +#row { + display: flex; + flex-direction: row; + border: 5px solid blue; +} + +.item { + border: 5px solid green; +} +</style> +<body> +<div id="column"> + <div id="row"> + <div class="item">This text should not overflow its box</div> + </div> +</div> +<script> +var columnBox = document.getElementById("column"); +columnBox.offsetHeight; +columnBox.style.width = "200px"; +</script> diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/reference/nested-orthogonal-flexbox-relayout-ref.html b/tests/wpt/web-platform-tests/css/css-flexbox/reference/nested-orthogonal-flexbox-relayout-ref.html new file mode 100644 index 00000000000..124ecf843c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/reference/nested-orthogonal-flexbox-relayout-ref.html @@ -0,0 +1,25 @@ +<!DOCTYPE html> +<style> +#column { + display: flex; + flex-direction: column; + border: 5px solid yellow; + width: 200px; +} + +#row { + display: flex; + flex-direction: row; + border: 5px solid blue; +} + +.item { + border: 5px solid green; +} +</style> +<body> +<div id="column"> + <div id="row"> + <div class="item">This text should not overflow its box</div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-font-loading/fontfaceset-load-css-wide-keywords.html b/tests/wpt/web-platform-tests/css/css-font-loading/fontfaceset-load-css-wide-keywords.html new file mode 100644 index 00000000000..b85b92bd15e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-font-loading/fontfaceset-load-css-wide-keywords.html @@ -0,0 +1,60 @@ +<!DOCTYPE html> +<title>SyntaxError thrown when matching CSS-wide keyword</title> +<link rel="help" href="https://drafts.csswg.org/css-font-loading/#font-face-set-load"> +<link rel="help" href="https://drafts.csswg.org/css-font-loading/#find-the-matching-font-faces"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> + + function load_on_worker(keyword) { + return new Promise((resolve, reject) =>{ + var blob = new Blob([` + self.fonts.load('${keyword}').then( + ()=>{ self.postMessage('success') }, + (e)=>{ self.postMessage(e) } + ); + `]); + var blob_url = window.URL.createObjectURL(blob); + let worker = new Worker(blob_url); + worker.onmessage = msg => { + if (msg === 'success') + resolve(msg.data) + else + reject(msg.data) + } + }); + } + + promise_test(test => { + return promise_rejects_dom(test, 'SyntaxError', document.fonts.load('initial')); + }, 'Loading CSS-wide keyword "initial" causes SyntaxError (document)') + + promise_test(test => { + return promise_rejects_dom(test, 'SyntaxError', document.fonts.load('inherit')); + }, 'Loading CSS-wide keyword "inherit" causes SyntaxError (document)') + + promise_test(test => { + return promise_rejects_dom(test, 'SyntaxError', document.fonts.load('unset')); + }, 'Loading CSS-wide keyword "unset" causes SyntaxError (document)') + + promise_test(test => { + return promise_rejects_dom(test, 'SyntaxError', document.fonts.load('revert')); + }, 'Loading CSS-wide keyword "revert" causes SyntaxError (document)') + + promise_test(test => { + return promise_rejects_dom(test, 'SyntaxError', load_on_worker('initial')); + }, 'Loading CSS-wide keyword "initial" causes SyntaxError (worker)') + + promise_test(test => { + return promise_rejects_dom(test, 'SyntaxError', load_on_worker('inherit')); + }, 'Loading CSS-wide keyword "inherit" causes SyntaxError (worker)') + + promise_test(test => { + return promise_rejects_dom(test, 'SyntaxError', load_on_worker('unset')); + }, 'Loading CSS-wide keyword "unset" causes SyntaxError (worker)') + + promise_test(test => { + return promise_rejects_dom(test, 'SyntaxError', load_on_worker('revert')); + }, 'Loading CSS-wide keyword "revert" causes SyntaxError (worker)') + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/host-part-001.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/host-part-001.html new file mode 100644 index 00000000000..9004141534f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/host-part-001.html @@ -0,0 +1,43 @@ +<!doctype html> +<title>CSS Shadow Parts - :host::part()</title> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io"> +<link rel="help" href="https://drafts.csswg.org/css-shadow-parts/#part"> +<link rel="help" href="https://drafts.csswg.org/css-scoping/#host-selector"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1624968"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=980506"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="host"></div> +<script> +test(function() { + let host = document.getElementById("host"); + host.attachShadow({ mode: "open" }).innerHTML = ` + <style> + :host::part(mypart) { + color: lime; + } + :host(.tweak)::part(mypart) { + color: blue; + } + </style> + <div part="mypart"></div> + `; + + let part = host.shadowRoot.querySelector("[part]"); + + assert_equals( + window.getComputedStyle(part).color, + "rgb(0, 255, 0)", + ":host::part() works", + ); + + host.classList.add("tweak"); + + assert_equals( + window.getComputedStyle(part).color, + "rgb(0, 0, 255)", + ":host::part() invalidation works properly", + ); +}, ":host::part works"); +</script> diff --git a/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable.html b/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable.html index fbee4298c14..e6293909c21 100644 --- a/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable.html +++ b/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable.html @@ -48,7 +48,7 @@ test(() => { test(() => { const sheet = new CSSStyleSheet({disabled: true, media: "screen, print"}); - assert_equals(sheet.title, null); + assert_equals(sheet.title, null, "The title attribute must return the title or null if title is the empty string"); assert_equals(sheet.ownerNode, null); assert_equals(sheet.ownerRule, null); assert_equals(sheet.media.length, 2); @@ -66,7 +66,7 @@ test(() => { assert_equals(sheet.cssRules[0].cssText, redStyleTexts[1]); const sheet2 = new CSSStyleSheet({}); - assert_equals(sheet2.title, null); + assert_equals(sheet2.title, null, "The title attribute must return the title or null if title is the empty string"); assert_equals(sheet2.ownerNode, null); assert_equals(sheet2.ownerRule, null); assert_equals(sheet2.media.length, 0); @@ -81,7 +81,7 @@ test(() => { assert_equals(sheet2.cssRules.length, 0); const sheet3 = new CSSStyleSheet(); - assert_equals(sheet3.title, null); + assert_equals(sheet3.title, null, "The title attribute must return the title or null if title is the empty string"); assert_equals(sheet3.ownerNode, null); assert_equals(sheet3.ownerRule, null); assert_equals(sheet3.media.length, 0); @@ -98,14 +98,14 @@ test(() => { test(() => { const sheet = new CSSStyleSheet({title: "something"}); - assert_equals(sheet.title, null); -}, "title cannot be set in the CSSStyleSheet constructor"); + assert_equals(sheet.title, null, "title and alternate are not supported by the constructor. https://github.com/WICG/construct-stylesheets/issues/105"); +}, "title can be set in the CSSStyleSheet constructor"); promise_test(() => { const sheet = new CSSStyleSheet({disabled: true, media: "screen, print"}); const promise_sheet = sheet.replace(redStyleTexts[0]); return promise_sheet.then(function(sheet) { - assert_equals(sheet.title, null); + assert_equals(sheet.title, null, "The title attribute must return the title or null if title is the empty string"); assert_equals(sheet.ownerNode, null); assert_equals(sheet.ownerRule, null); assert_equals(sheet.media.length, 2); @@ -535,24 +535,19 @@ test(() => { const style = document.createElement("style"); style.textContent = ".target { color: white; }"; span.shadowRoot.appendChild(style) - // non-adopted styles should be ordered before adopted styles - assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 0, 0)"); + assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 0, 0)", "non-adopted styles should be ordered before adopted styles"); span.shadowRoot.adoptedStyleSheets = []; - // with no adopted styles in conflict, the non-adopted style should take effect - assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 255, 255)"); + assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 255, 255)", "with no adopted styles in conflict, the non-adopted style should take effect"); span.shadowRoot.adoptedStyleSheets = [sheet]; - // the adopted style should be ordered after the non-adopted style - assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 0, 0)"); + assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 0, 0)", "the adopted style should be ordered after the non-adopted style"); sheet.disabled = true; - // with the adopted sheet disabled, the non-adopted style should take effect - assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 255, 255)"); + assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 255, 255)", "with the adopted sheet disabled, the non-adopted style should take effect"); sheet.disabled = false; - // the adopted sheet re-enabled, it should take effect again. - assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 0, 0)"); + assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 0, 0)", "the adopted sheet re-enabled, it should take effect again"); }, 'Adopted sheets are ordered after non-adopted sheets in the shadow root') test(() => { @@ -574,41 +569,32 @@ test(() => { const style = document.createElement("style"); style.textContent = ".target { color: white; }"; span.appendChild(style) - // non-adopted styles should be ordered before adopted styles - assert_equals(getComputedStyle(span).color, "rgb(255, 0, 0)"); + assert_equals(getComputedStyle(span).color, "rgb(255, 0, 0)", "non-adopted styles should be ordered before adopted styles"); document.adoptedStyleSheets = []; - // with no adopted styles in conflict, the non-adopted style should take effect - assert_equals(getComputedStyle(span).color, "rgb(255, 255, 255)"); + assert_equals(getComputedStyle(span).color, "rgb(255, 255, 255)", "with no adopted styles in conflict, the non-adopted style should take effect"); document.adoptedStyleSheets = [sheet]; - // the adopted style should be ordered after the non-adopted style - assert_equals(getComputedStyle(span).color, "rgb(255, 0, 0)"); + assert_equals(getComputedStyle(span).color, "rgb(255, 0, 0)", "the adopted style should be ordered after the non-adopted style"); sheet.disabled = true; - // with the adopted sheet disabled, the non-adopted style should take effect - assert_equals(getComputedStyle(span).color, "rgb(255, 255, 255)"); + assert_equals(getComputedStyle(span).color, "rgb(255, 255, 255)", "with the adopted sheet disabled, the non-adopted style should take effect"); sheet.disabled = false; - // the adopted sheet re-enabled, it should take effect again. - assert_equals(getComputedStyle(span).color, "rgb(255, 0, 0)") + assert_equals(getComputedStyle(span).color, "rgb(255, 0, 0)", "the adopted sheet re-enabled, it should take effect again") }, 'Adopted sheets are ordered after non-adopted sheets in the document') const import_text = '@import url("support/constructable-import.css");'; test(() => { - assert_throws_dom("NotAllowedError", () => { (new CSSStyleSheet).replaceSync(import_text) }); -}, 'CSSStyleSheet.replaceSync throws exception when there is import rule inside'); - -test(() => { - assert_throws_dom("NotAllowedError", () => { (new CSSStyleSheet).insertRule(import_text) }); + assert_throws_dom("SyntaxError", () => { (new CSSStyleSheet).insertRule(import_text) }); }, 'Inserting an @import rule through insertRule on a constructed stylesheet throws an exception'); async_test(t => { const importUrl = "support/constructable-import.css"; const sheet = new CSSStyleSheet(); - assert_throws_dom("NotAllowedError", () => { sheet.replaceSync(`@import url("${importUrl}");`) }); + sheet.replaceSync(`@import url("${importUrl}");`); const timeAfterReplaceSync = performance.now(); let link = document.createElement("link"); @@ -632,27 +618,68 @@ promise_test(() => { const sheet = new CSSStyleSheet(); span.shadowRoot.adoptedStyleSheets = [sheet]; assert_equals(getComputedStyle(shadowDiv).color, "rgb(0, 0, 0)"); - // Replace and assert that the imported rule is applied. + // Replace and assert that the imported rule is NOT applied. const sheet_promise = sheet.replace(import_text); return sheet_promise.then((sheet) => { + // replace() ignores @import rules: + assert_equals(sheet.cssRules.length, 0); + assert_equals(getComputedStyle(shadowDiv).color, "rgb(0, 0, 0)"); + }).catch((reason) => { + assert_unreached(`Promise was rejected (${reason}) when it should have been resolved`); + }); +}, 'CSSStyleSheet.replace allows, but ignores, import rule inside'); + +promise_test(() => { + const span = document.createElement("span"); + thirdSection.appendChild(span); + const shadowDiv = attachShadowDiv(span); + const targetSpan = document.createElement("span"); + targetSpan.classList.add("target"); + shadowDiv.appendChild(targetSpan); + const sheet = new CSSStyleSheet(); + span.shadowRoot.adoptedStyleSheets = [sheet]; + assert_equals(getComputedStyle(shadowDiv).color, "rgb(0, 0, 0)"); + // Replace and assert that the imported rule is NOT applied, but regular rule does apply. + const sheet_promise = sheet.replace(import_text + ".target { color: blue; }"); + return sheet_promise.then((sheet) => { assert_equals(sheet.cssRules.length, 1); - assert_equals(sheet.cssRules[0].cssText, import_text); - assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 0, 0)"); + // @import not applied: + assert_equals(getComputedStyle(shadowDiv).color, "rgb(0, 0, 0)"); + // regular rule applied: + assert_equals(getComputedStyle(targetSpan).color, "rgb(0, 0, 255)"); }).catch((reason) => { assert_unreached(`Promise was rejected (${reason}) when it should have been resolved`); }); -}, 'CSSStyleSheet.replace allows import rule inside'); +}, 'CSSStyleSheet.replace ignores @import rule but still loads other rules'); + +test(() => { + const span = document.createElement("span"); + thirdSection.appendChild(span); + const shadowDiv = attachShadowDiv(span); + const sheet = new CSSStyleSheet(); + span.shadowRoot.adoptedStyleSheets = [sheet]; + assert_equals(getComputedStyle(shadowDiv).color, "rgb(0, 0, 0)"); + // Replace and assert that the imported rule is NOT applied. + try { + sheet.replaceSync(import_text); + // replaceSync() ignores @import rules: + assert_equals(sheet.cssRules.length, 0); + assert_equals(getComputedStyle(shadowDiv).color, "rgb(0, 0, 0)"); + } catch(reason) { + assert_unreached(`replaceSync threw an exception (${reason}) when it shouldn't have`); + } +}, 'CSSStyleSheet.replaceSync allows, but ignores, import rule inside'); promise_test(() => { const sheet = new CSSStyleSheet(); const sheet_promise = sheet.replace("@import url('not-there.css');"); return sheet_promise.then((sheet) => { - assert_unreached("Promise was resolved when it should have been rejected"); + // No exception here }).catch((reason) => { - assert_equals(reason.name, "NetworkError"); + assert_unreached("Promise was rejected"); }); -}, 'CSSStyleSheet.replace returns rejected promise on failed imports'); +}, 'CSSStyleSheet.replace does not reject on failed imports'); test(() => { const span = document.createElement("span"); diff --git a/tests/wpt/web-platform-tests/css/filter-effects/background-image-blur-repaint.html b/tests/wpt/web-platform-tests/css/filter-effects/background-image-blur-repaint.html new file mode 100644 index 00000000000..7b3df263081 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/background-image-blur-repaint.html @@ -0,0 +1,56 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<head> +<title>CSS Filters: Repaint of element with background-image and blur filter</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://drafts.csswg.org/css-backgrounds-3/#background-image"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=415106"> +<link rel="match" href="reference/background-image-blur-repaint-expected.html"> +<meta name="assert" content="An element with background-image and a filter should be rendered correctly after other elements on the page change size. You should see a 50x50 green box over a blurred background."/> + +<script src="/common/reftest-wait.js"></script> +<script> +function runTest() { + function shrinkBox() { + var box = document.getElementsByClassName("box")[0]; + box.style.width = "50px"; + box.style.height = "50px"; + } + + // Wait for two requestAnimationFrame() calls to make sure that at least one + // frame has been rendered before shrinking the box and taking the screenshot. + requestAnimationFrame(function() { + requestAnimationFrame(function() { + shrinkBox(); + takeScreenshot(); + }); + }); +} +</script> +<style> +.bg { + position: absolute; + left: 200px; + top: 0px; + width: 400px; + height: 300px; + background-image: url(support/color-palette.png); + filter: blur(8px); +} +.box { + position: absolute; + left: 300px; + top: 50px; + width: 100px; + height: 100px; + background-color: green; +} +</style> +</head> + +<body onload="runTest()"> +<div class="bg"></div> +<div class="box"></div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-add-hw-001.html b/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-add-hw-001.html new file mode 100644 index 00000000000..78f30c35f47 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-add-hw-001.html @@ -0,0 +1,19 @@ +<!doctype html> +<title>SVG Filters: feColorMatrix filter</title> +<link rel="help" href="https://drafts.fxtf.org/filter-effects/#FilterProperty"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects/#feColorMatrixElement"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=227025"> +<link rel="match" href="reference/effect-reference-add-hw-001-ref.html"> +<meta name="assert" content="Check that a reference filter can be dynamically set on elements with will-change: transform."/> +<div style="width: 100px; height: 100px; background-color: rgb(255, 0, 0); will-change: transform" id="div1"></div> +<svg xmlns="http://www.w3.org/2000/svg" width="0" height="0" version="1.1"> + <defs> + <filter id="colormatrix"> + <feColorMatrix type="matrix" values="0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0"/> + </filter> + </defs> +</svg> +<script> + var div = document.getElementById("div1"); + div.style.filter = "url(#colormatrix)"; +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-after-001.html b/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-after-001.html index e8bbc787df5..a6de2465027 100644 --- a/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-after-001.html +++ b/tests/wpt/web-platform-tests/css/filter-effects/effect-reference-after-001.html @@ -6,7 +6,7 @@ <link rel="match" href="reference/effect-reference-after-001-ref.html"> <meta name="assert" content="Check that a reference filter with forward references work"/> <body> -<img style="filter: url(#MyFilter);" src="support/reference.png"> +<img style="filter: url(#MyFilter);" src="support/color-palette.png"> <svg width="0px" height="0px"> <defs> <filter id="MyFilter"> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/background-image-blur-repaint-expected.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/background-image-blur-repaint-expected.html new file mode 100644 index 00000000000..bf16d1fa289 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/background-image-blur-repaint-expected.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html> +<head> +<style> +.bg { + position: absolute; + left: 200px; + top: 0px; + width: 400px; + height: 300px; + background-image: url(../support/color-palette.png); + filter: blur(8px); +} +.box { + position: absolute; + left: 300px; + top: 50px; + width: 50px; + height: 50px; + background-color: green; +} +</style> +</head> +<body> +<div class="bg"></div> +<div class="box"></div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-add-hw-001-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-add-hw-001-ref.html new file mode 100644 index 00000000000..79a15223610 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-add-hw-001-ref.html @@ -0,0 +1,2 @@ +<!doctype html> +<div style="width: 100px; height: 100px; background-color: rgb(0, 255, 0); will-change: transform"></div> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-after-001-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-after-001-ref.html index cbcff3fa444..45192b13451 100644 --- a/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-after-001-ref.html +++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/effect-reference-after-001-ref.html @@ -7,6 +7,6 @@ <feColorMatrix type="hueRotate" values="180"/> </filter> </defs> - </svg><img style="filter: url(#MyFilter);" src="../support/reference.png"> + </svg><img style="filter: url(#MyFilter);" src="../support/color-palette.png"> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/support/reference.png b/tests/wpt/web-platform-tests/css/filter-effects/support/color-palette.png Binary files differindex 68641b76771..68641b76771 100644 --- a/tests/wpt/web-platform-tests/css/filter-effects/support/reference.png +++ b/tests/wpt/web-platform-tests/css/filter-effects/support/color-palette.png diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-tentative.html b/tests/wpt/web-platform-tests/document-policy/experimental-features/layout-animations-disabled-tentative.html index 0190eaa84f7..0190eaa84f7 100644 --- a/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-tentative.html +++ b/tests/wpt/web-platform-tests/document-policy/experimental-features/layout-animations-disabled-tentative.html diff --git a/tests/wpt/web-platform-tests/document-policy/experimental-features/layout-animations-disabled-tentative.html.headers b/tests/wpt/web-platform-tests/document-policy/experimental-features/layout-animations-disabled-tentative.html.headers new file mode 100644 index 00000000000..bebb5d05482 --- /dev/null +++ b/tests/wpt/web-platform-tests/document-policy/experimental-features/layout-animations-disabled-tentative.html.headers @@ -0,0 +1 @@ +Document-Policy: no-layout-animations diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html b/tests/wpt/web-platform-tests/document-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html index e7150a91e87..ee7c295156f 100644 --- a/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html +++ b/tests/wpt/web-platform-tests/document-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html @@ -1,24 +1,17 @@ <!DOCTYPE html> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="/feature-policy/experimental-features/resources/common.js"></script> +<script src="/document-policy/experimental-features/resources/common.js"></script> <title> 'layout-animations' Policy : violation reports from javascript </title> <body> <script> - test(() => { - document.featurePolicy.allowedFeatures().forEach((enabled_feature) => { - assert_not_equals(enabled_feature, "layout-animations"); - }); - }, - "Verify 'layout-animations' is not in document's feature list."); - promise_test(async () => { let promise = wait_for_violation_in_file( "layout-animations", "animation-property-height.js"); let script = document.createElement("script"); - script.src = "/feature-policy/experimental-features/resources/" + + script.src = "/document-policy/experimental-features/resources/" + "animation-property-height.js"; document.body.appendChild(script); await promise; diff --git a/tests/wpt/web-platform-tests/document-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html.headers b/tests/wpt/web-platform-tests/document-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html.headers new file mode 100644 index 00000000000..bebb5d05482 --- /dev/null +++ b/tests/wpt/web-platform-tests/document-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html.headers @@ -0,0 +1 @@ +Document-Policy: no-layout-animations diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html b/tests/wpt/web-platform-tests/document-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html index 163ccae812f..cd9210cc138 100644 --- a/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html +++ b/tests/wpt/web-platform-tests/document-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html @@ -1,18 +1,11 @@ <!DOCTYPE html> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="/feature-policy/experimental-features/resources/common.js"></script> +<script src="/document-policy/experimental-features/resources/common.js"></script> <title> 'layout-animations' Policy : violation reports from CSS keyframes </title> <body> <script> - test(() => { - document.featurePolicy.allowedFeatures().forEach((enabled_feature) => { - assert_not_equals(enabled_feature, "layout-animations"); - }); - }, - "Sanity-check: 'layout-animations' is not in document's feature list."); - promise_test(async () => { let promise = wait_for_violation_in_file( "layout-animations", null /* source not specified */); diff --git a/tests/wpt/web-platform-tests/document-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html.headers b/tests/wpt/web-platform-tests/document-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html.headers new file mode 100644 index 00000000000..bebb5d05482 --- /dev/null +++ b/tests/wpt/web-platform-tests/document-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html.headers @@ -0,0 +1 @@ +Document-Policy: no-layout-animations diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-enabled-tentative.html b/tests/wpt/web-platform-tests/document-policy/experimental-features/layout-animations-enabled-tentative.html index 19e405496ee..19e405496ee 100644 --- a/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-enabled-tentative.html +++ b/tests/wpt/web-platform-tests/document-policy/experimental-features/layout-animations-enabled-tentative.html diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/animation-property-height.js b/tests/wpt/web-platform-tests/document-policy/experimental-features/resources/animation-property-height.js index 79316cb488f..79316cb488f 100644 --- a/tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/animation-property-height.js +++ b/tests/wpt/web-platform-tests/document-policy/experimental-features/resources/animation-property-height.js diff --git a/tests/wpt/web-platform-tests/document-policy/experimental-features/resources/common.js b/tests/wpt/web-platform-tests/document-policy/experimental-features/resources/common.js new file mode 100644 index 00000000000..639847abf36 --- /dev/null +++ b/tests/wpt/web-platform-tests/document-policy/experimental-features/resources/common.js @@ -0,0 +1,90 @@ +const url_base = "/document-policy/experimental-features/resources/"; +window.messageResponseCallback = null; + +// Returns a promise which is resolved when the <iframe> is navigated to |url| +// and "load" handler has been called. +function loadUrlInIframe(iframe, url) { + return new Promise((resolve) => { + iframe.addEventListener("load", resolve); + iframe.src = url; + }); +} + +// Posts |message| to |target| and resolves the promise with the response coming +// back from |target|. +function sendMessageAndGetResponse(target, message) { + return new Promise((resolve) => { + window.messageResponseCallback = resolve; + target.postMessage(message, "*"); + }); +} + + +function onMessage(e) { + if (window.messageResponseCallback) { + window.messageResponseCallback(e.data); + window.messageResponseCallback = null; + } +} + +window.addEventListener("message", onMessage); + +// Waits for |load_timeout| before resolving the promise. It will resolve the +// promise sooner if a message event with |e.data.id| of |id| is received. +// In such a case the response is the contents of the message |e.data.contents|. +// Otherwise, returns false (when timeout occurs). +function waitForMessageOrTimeout(t, id, load_timeout) { + return new Promise((resolve) => { + window.addEventListener( + "message", + (e) => { + if (!e.data || e.data.id !== id) + return; + resolve(e.data.contents); + } + ); + t.step_timeout(() => { resolve(false); }, load_timeout); + }); +} + +function createIframe(container, attributes) { + var new_iframe = document.createElement("iframe"); + for (attr_name in attributes) + new_iframe.setAttribute(attr_name, attributes[attr_name]); + container.appendChild(new_iframe); + return new_iframe; +} + +// Returns a promise which is resolved when |load| event is dispatched for |e|. +function wait_for_load(e) { + return new Promise((resolve) => { + e.addEventListener("load", resolve); + }); +} + +setup(() => { + window.reporting_observer_instance = new ReportingObserver((reports, observer) => { + if (window.reporting_observer_callback) { + reports.forEach(window.reporting_observer_callback); + } + }, {types: ["document-policy-violation"]}); + window.reporting_observer_instance.observe(); + window.reporting_observer_callback = null; +}); + +// Waits for a violation in |feature| and source file containing |file_name|. +function wait_for_violation_in_file(feature, file_name) { + return new Promise( (resolve) => { + assert_equals(null, window.reporting_observer_callback); + window.reporting_observer_callback = (report) => { + var feature_match = (feature === report.body.featureId); + var file_name_match = + !file_name || + (report.body.sourceFile.indexOf(file_name) !== -1); + if (feature_match && file_name_match) { + window.reporting_observer_callback = null; + resolve(report); + } + }; + }); +} diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-tentative.html.headers b/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-tentative.html.headers deleted file mode 100644 index 7c441bbba55..00000000000 --- a/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-tentative.html.headers +++ /dev/null @@ -1 +0,0 @@ -Feature-Policy: layout-animations 'none' diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html.headers b/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html.headers deleted file mode 100644 index 7c441bbba55..00000000000 --- a/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html.headers +++ /dev/null @@ -1 +0,0 @@ -Feature-Policy: layout-animations 'none' diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html.headers b/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html.headers deleted file mode 100644 index 7c441bbba55..00000000000 --- a/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html.headers +++ /dev/null @@ -1 +0,0 @@ -Feature-Policy: layout-animations 'none' diff --git a/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-screen-wakelock.html b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-screen-wakelock.html index 7d3dab45af1..6feed51d498 100644 --- a/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-screen-wakelock.html +++ b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-screen-wakelock.html @@ -6,7 +6,7 @@ Promise.resolve().then(async () => { try { await test_driver.set_permission( - { name: 'wake-lock', type: 'screen' }, 'granted', false); + { name: 'screen-wake-lock' }, 'granted', false); const wakeLock = await navigator.wakeLock.request("screen"); await wakeLock.release(); diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/tabindex-focus-flag.html b/tests/wpt/web-platform-tests/html/interaction/focus/tabindex-focus-flag.html index 341162f09e7..93fdb19a592 100644 --- a/tests/wpt/web-platform-tests/html/interaction/focus/tabindex-focus-flag.html +++ b/tests/wpt/web-platform-tests/html/interaction/focus/tabindex-focus-flag.html @@ -15,6 +15,9 @@ <details open><summary id="summary-first"></summary><summary id="summary-second"></summary></details> <div contenteditable="true"></div> <iframe></iframe> +<svg><a id="svg-a"></a></svg> +<svg><text id="svg-text"></text></svg> +<img> </div> <script> setup({ explicit_done: true }); @@ -34,6 +37,9 @@ function runTests() { ['#summary-second', false], ['[contenteditable]', true], ['iframe', true], + ['#svg-a', false], + ['#svg-text', false], + ['img', false], ]; for (entry of defaultList) { test(() => { @@ -52,8 +58,11 @@ function runTests() { <div id="tabindex-0"> <a tabindex="0"></a> +<svg><a tabindex="0"></a></svg> +<svg><text tabindex="0"></text></svg> <summary tabindex="0" id="summary-out-tabindex0"></summary> <details open><summary id="summary-first"></summary><summary tabindex="0" id="summary-second-tabindex0"></summary></details> +<img tabindex="0"> </div> <script> function runTests_tabindex0() { @@ -67,6 +76,58 @@ function runTests_tabindex0() { }, elementDesc + ' with tabindex=0 should be focusable.'); } + runTests_tabindex_negative(); +} +</script> + +<div id="tabindex-negative"> +<a tabindex="-1"></a> +<svg><a tabindex="-1"></a></svg> +<svg><text tabindex="-1"></text></svg> +<summary tabindex="-1" id="summary-out-tabindex-negative"></summary> +<details open><summary id="summary-first"></summary><summary tabindex="0" id="summary-second-tabindex-negative"></summary></details> +<img tabindex="-1"> +</div> +<script> +function runTests_tabindex_negative() { + for (element of document.querySelectorAll('#tabindex-negative [tabindex]')) { + var elementDesc = element.tagName; + if (element.id) + elementDesc += '#' + element.id; + test(() => { + element.focus(); + assert_equals(document.activeElement, element); + }, elementDesc + ' with tabindex=-1 should be focusable.'); + } + + runTests_tabindex_invalid(); +} +</script> + +<div id="tabindex-invalid"> +<a tabindex="invalid"></a> +<a href="#" tabindex="invalid" id="with-href" data-focusable=true></a> +<svg><a tabindex="invalid"></a></svg> +<svg><a href="#" tabindex="invalid" id="with-href" data-focusable=true></a></svg> +<svg><text tabindex="invalid"></text></svg> +<div tabindex="invalid"></div> +<summary tabindex="invalid" id="summary-out-tabindex-invalid"></summary> +<img tabindex="invalid"> +</div> +<script> +function runTests_tabindex_invalid() { + for (element of document.querySelectorAll('#tabindex-invalid [tabindex]')) { + var focusable = element.dataset && element.dataset.focusable; + var elementDesc = element.tagName; + if (element.id) + elementDesc += '#' + element.id; + test(() => { + element.focus(); + focusable ? assert_equals(document.activeElement, element) + : assert_not_equals(document.activeElement, element); + }, `${elementDesc} with tabindex=invalid should ${focusable ? "be" : "not be"} focusable.`); + } + done(); } </script> diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html index 902430d0779..1cb290de3fe 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html @@ -22,13 +22,13 @@ const iframe = document.createElement("iframe"); iframe.src = "resources/css-module-at-import-iframe.html"; iframe.onload = test.step_func_done(function () { - assert_equals(iframe.contentDocument.load_error, "NotAllowedError"); + assert_equals(iframe.contentDocument.load_error, undefined); assert_not_equals(getComputedStyle(iframe.contentDocument.querySelector('#test')) .backgroundColor, "rgb(255, 0, 0)", "CSS module @import should not succeed"); }); document.body.appendChild(iframe); - }, "An @import CSS Module should not load"); + }, "An @import CSS Module should not load, but should not throw an exception"); async_test(function (test) { const iframe = document.createElement("iframe"); diff --git a/tests/wpt/web-platform-tests/media-capabilities/decodingInfo.any.js b/tests/wpt/web-platform-tests/media-capabilities/decodingInfo.any.js index 2d74d30eeb6..772d47e8729 100644 --- a/tests/wpt/web-platform-tests/media-capabilities/decodingInfo.any.js +++ b/tests/wpt/web-platform-tests/media-capabilities/decodingInfo.any.js @@ -23,6 +23,19 @@ var audioConfigurationWithSpatialRendering = { spatialRendering: true, }; +// VideoConfiguration with optional hdrMetadataType, colorGamut, and +// transferFunction properties. +var videoConfigurationWithDynamicRange = { + contentType: 'video/webm; codecs="vp09.00.10.08"', + width: 800, + height: 600, + bitrate: 3000, + framerate: 24, + hdrMetadataType: "smpteSt2086", + colorGamut: "srgb", + transferFunction: "srgb", +} + promise_test(t => { return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo()); }, "Test that decodingInfo rejects if it doesn't get a configuration"); @@ -314,3 +327,57 @@ promise_test(t => { assert_equals(typeof ability.keySystemAccess, "object"); }); }, "Test that decodingInfo with spatialRendering set returns a valid MediaCapabilitiesInfo objects"); + +promise_test(t => { + return navigator.mediaCapabilities.decodingInfo({ + type: 'file', + video: videoConfigurationWithDynamicRange, + }).then(ability => { + assert_equals(typeof ability.supported, "boolean"); + assert_equals(typeof ability.smooth, "boolean"); + assert_equals(typeof ability.powerEfficient, "boolean"); + assert_equals(typeof ability.keySystemAccess, "object"); + }); +}, "Test that decodingInfo with hdrMetadataType, colorGamut, and transferFunction set returns a valid MediaCapabilitiesInfo objects"); + +promise_test(t => { + return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({ + type: 'file', + video: { + contentType: 'video/webm; codecs="vp09.00.10.08"', + width: 800, + height: 600, + bitrate: 3000, + framerate: 24, + hdrMetadataType: "" + }, + })); +}, "Test that decodingInfo rejects if the video configuration has an empty hdrMetadataType"); + +promise_test(t => { + return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({ + type: 'file', + video: { + contentType: 'video/webm; codecs="vp09.00.10.08"', + width: 800, + height: 600, + bitrate: 3000, + framerate: 24, + colorGamut: true + }, + })); +}, "Test that decodingInfo rejects if the video configuration has a colorGamut set to true"); + +promise_test(t => { + return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({ + type: 'file', + video: { + contentType: 'video/webm; codecs="vp09.00.10.08"', + width: 800, + height: 600, + bitrate: 3000, + framerate: 24, + transferFunction: 3 + }, + })); +}, "Test that decodingInfo rejects if the video configuration has a transferFunction set to 3"); diff --git a/tests/wpt/web-platform-tests/mst-content-hint/RTCRtpSendParameters-degradationPreference.html b/tests/wpt/web-platform-tests/mst-content-hint/RTCRtpSendParameters-degradationPreference.html new file mode 100644 index 00000000000..3573bb58760 --- /dev/null +++ b/tests/wpt/web-platform-tests/mst-content-hint/RTCRtpSendParameters-degradationPreference.html @@ -0,0 +1,129 @@ +<!doctype html> +<meta charset=utf-8> +<title>RTCRtpSendParameters degradationPreference</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> + 'use strict'; + +promise_test(async t => { + const pc = new RTCPeerConnection(); + t.add_cleanup(() => pc.close()); + const { sender } = pc.addTransceiver('video'); + + let param = sender.getParameters(); + + assert_equals(param.degradationPreference, undefined, + 'Expect initial param.degradationPreference to be undefined'); + + param.degradationPreference = 'maintain-framerate'; + await sender.setParameters(param); + param = sender.getParameters(); + assert_equals(param.degradationPreference, 'maintain-framerate'); + + param.degradationPreference = 'maintain-resolution'; + await sender.setParameters(param); + param = sender.getParameters(); + assert_equals(param.degradationPreference, 'maintain-resolution'); + + param.degradationPreference = 'balanced'; + await sender.setParameters(param); + param = sender.getParameters(); + assert_equals(param.degradationPreference, 'balanced'); + + param.degradationPreference = undefined; + await sender.setParameters(param); + param = sender.getParameters(); + assert_equals(param.degradationPreference, undefined); +}, 'setParameters with degradationPreference set should succeed on video transceiver'); + +promise_test(async t => { + const pc = new RTCPeerConnection(); + t.add_cleanup(() => pc.close()); + const { sender } = pc.addTransceiver('video'); + + let param = sender.getParameters(); + + assert_equals(param.degradationPreference, undefined, + 'Expect initial param.degradationPreference to be undefined'); + + param.degradationPreference = undefined; + + await sender.setParameters(param); + + param = sender.getParameters(); + assert_equals(param.degradationPreference, undefined); +}, 'setParameters with degradationPreference unset should succeed on video transceiver'); + +promise_test(async t => { + const pc = new RTCPeerConnection(); + t.add_cleanup(() => pc.close()); + const { sender } = pc.addTransceiver('video'); + + let param = sender.getParameters(); + param.degradationPreference = 'invalid'; + + return promise_rejects_js(t, TypeError, sender.setParameters(param)); +}, 'setParameters with invalid degradationPreference should throw TypeError on video transceiver'); + +promise_test(async t => { + const pc = new RTCPeerConnection(); + t.add_cleanup(() => pc.close()); + const { sender } = pc.addTransceiver('audio'); + + let param = sender.getParameters(); + + assert_equals(param.degradationPreference, undefined, + 'Expect initial param.degradationPreference to be undefined'); + + param.degradationPreference = 'maintain-framerate'; + await sender.setParameters(param); + param = sender.getParameters(); + assert_equals(param.degradationPreference, 'maintain-framerate'); + + param.degradationPreference = 'maintain-resolution'; + await sender.setParameters(param); + param = sender.getParameters(); + assert_equals(param.degradationPreference, 'maintain-resolution'); + + param.degradationPreference = 'balanced'; + await sender.setParameters(param); + param = sender.getParameters(); + assert_equals(param.degradationPreference, 'balanced'); + + param.degradationPreference = undefined; + await sender.setParameters(param); + param = sender.getParameters(); + assert_equals(param.degradationPreference, undefined); +}, 'setParameters with degradationPreference set should succeed on audio transceiver'); + +promise_test(async t => { + const pc = new RTCPeerConnection(); + t.add_cleanup(() => pc.close()); + const { sender } = pc.addTransceiver('audio'); + + let param = sender.getParameters(); + + assert_equals(param.degradationPreference, undefined, + 'Expect initial param.degradationPreference to be undefined'); + + param.degradationPreference = undefined; + + await sender.setParameters(param); + + param = sender.getParameters(); + assert_equals(param.degradationPreference, undefined); +}, 'setParameters with degradationPreference unset should succeed on audio transceiver'); + +promise_test(async t => { + const pc = new RTCPeerConnection(); + t.add_cleanup(() => pc.close()); + const { sender } = pc.addTransceiver('audio'); + + let param = sender.getParameters(); + param.degradationPreference = 'invalid'; + + return promise_rejects_js(t, TypeError, sender.setParameters(param)); +}, 'setParameters with invalid degradationPreference should throw TypeError on audio transceiver'); + +</script> diff --git a/tests/wpt/web-platform-tests/tools/serve/serve.py b/tests/wpt/web-platform-tests/tools/serve/serve.py index e4f0d5efaee..45bfd4766eb 100644 --- a/tests/wpt/web-platform-tests/tools/serve/serve.py +++ b/tests/wpt/web-platform-tests/tools/serve/serve.py @@ -34,7 +34,7 @@ from mod_pywebsocket import standalone as pywebsocket EDIT_HOSTS_HELP = ("Please ensure all the necessary WPT subdomains " - "are mapped to a loopback device in /etc/hosts. " + "are mapped to a loopback device in /etc/hosts.\n" "See https://web-platform-tests.org/running-tests/from-local-system.html#system-setup " "for instructions.") @@ -419,10 +419,10 @@ class ServerProc(object): try: self.daemon = init_func(host, port, paths, routes, bind_address, config, **kwargs) except socket.error: - print("Socket error on port %s" % port, file=sys.stderr) + logger.critical("Socket error on port %s" % port, file=sys.stderr) raise except Exception: - print(traceback.format_exc(), file=sys.stderr) + logger.critical(traceback.format_exc()) raise if self.daemon: @@ -538,50 +538,68 @@ def start_servers(host, ports, paths, routes, bind_address, config, **kwargs): return servers +def startup_failed(log=True): + # Log=False is a workaround for https://github.com/web-platform-tests/wpt/issues/22719 + if log: + logger.critical(EDIT_HOSTS_HELP) + else: + print("CRITICAL %s" % EDIT_HOSTS_HELP, file=sys.stderr) + sys.exit(1) + + def start_http_server(host, port, paths, routes, bind_address, config, **kwargs): - return wptserve.WebTestHttpd(host=host, - port=port, - doc_root=paths["doc_root"], - routes=routes, - rewrites=rewrites, - bind_address=bind_address, - config=config, - use_ssl=False, - key_file=None, - certificate=None, - latency=kwargs.get("latency")) + try: + return wptserve.WebTestHttpd(host=host, + port=port, + doc_root=paths["doc_root"], + routes=routes, + rewrites=rewrites, + bind_address=bind_address, + config=config, + use_ssl=False, + key_file=None, + certificate=None, + latency=kwargs.get("latency")) + except Exception: + startup_failed() def start_https_server(host, port, paths, routes, bind_address, config, **kwargs): - return wptserve.WebTestHttpd(host=host, - port=port, - doc_root=paths["doc_root"], - routes=routes, - rewrites=rewrites, - bind_address=bind_address, - config=config, - use_ssl=True, - key_file=config.ssl_config["key_path"], - certificate=config.ssl_config["cert_path"], - encrypt_after_connect=config.ssl_config["encrypt_after_connect"], - latency=kwargs.get("latency")) + try: + return wptserve.WebTestHttpd(host=host, + port=port, + doc_root=paths["doc_root"], + routes=routes, + rewrites=rewrites, + bind_address=bind_address, + config=config, + use_ssl=True, + key_file=config.ssl_config["key_path"], + certificate=config.ssl_config["cert_path"], + encrypt_after_connect=config.ssl_config["encrypt_after_connect"], + latency=kwargs.get("latency")) + except Exception: + startup_failed() def start_http2_server(host, port, paths, routes, bind_address, config, **kwargs): - return wptserve.WebTestHttpd(host=host, - port=port, - handler_cls=wptserve.Http2WebTestRequestHandler, - doc_root=paths["doc_root"], - routes=routes, - rewrites=rewrites, - bind_address=bind_address, - config=config, - use_ssl=True, - key_file=config.ssl_config["key_path"], - certificate=config.ssl_config["cert_path"], - encrypt_after_connect=config.ssl_config["encrypt_after_connect"], - latency=kwargs.get("latency"), - http2=True) + try: + return wptserve.WebTestHttpd(host=host, + port=port, + handler_cls=wptserve.Http2WebTestRequestHandler, + doc_root=paths["doc_root"], + routes=routes, + rewrites=rewrites, + bind_address=bind_address, + config=config, + use_ssl=True, + key_file=config.ssl_config["key_path"], + certificate=config.ssl_config["cert_path"], + encrypt_after_connect=config.ssl_config["encrypt_after_connect"], + latency=kwargs.get("latency"), + http2=True) + except Exception: + startup_failed() class WebSocketDaemon(object): @@ -603,6 +621,12 @@ class WebSocketDaemon(object): opts.is_executable_method = None self.server = pywebsocket.WebSocketServer(opts) ports = [item[0].getsockname()[1] for item in self.server._sockets] + if not ports: + # TODO: Fix the logging configuration in WebSockets processes + # see https://github.com/web-platform-tests/wpt/issues/22719 + print("Failed to start websocket server on port %s, " + "is something already using that port?" % port, file=sys.stderr) + raise OSError() assert all(item == ports[0] for item in ports) self.port = ports[0] self.started = False @@ -651,12 +675,15 @@ def start_ws_server(host, port, paths, routes, bind_address, config, **kwargs): # in the logging module unlocked reload_module(logging) release_mozlog_lock() - return WebSocketDaemon(host, - str(port), - repo_root, - config.paths["ws_doc_root"], - bind_address, - ssl_config=None) + try: + return WebSocketDaemon(host, + str(port), + repo_root, + config.paths["ws_doc_root"], + bind_address, + ssl_config=None) + except Exception: + startup_failed(log=False) def start_wss_server(host, port, paths, routes, bind_address, config, **kwargs): @@ -664,12 +691,15 @@ def start_wss_server(host, port, paths, routes, bind_address, config, **kwargs): # in the logging module unlocked reload_module(logging) release_mozlog_lock() - return WebSocketDaemon(host, - str(port), - repo_root, - config.paths["ws_doc_root"], - bind_address, - config.ssl_config) + try: + return WebSocketDaemon(host, + str(port), + repo_root, + config.paths["ws_doc_root"], + bind_address, + config.ssl_config) + except Exception: + startup_failed(log=False) def start(config, routes, **kwargs): @@ -892,7 +922,8 @@ def run(**kwargs): signal.signal(signal.SIGTERM, handle_signal) signal.signal(signal.SIGINT, handle_signal) - while all(item.is_alive() for item in iter_procs(servers)) and not received_signal.is_set(): + while (all(item.is_alive() for item in iter_procs(servers)) and + not received_signal.is_set()): for item in iter_procs(servers): item.join(1) exited = [item for item in iter_procs(servers) if not item.is_alive()] diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py index 2ed4a0f5f93..cbbee821326 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py @@ -92,6 +92,7 @@ class TestEnvironment(object): self.servers = serve.start(self.config, self.get_routes()) + if self.options.get("supports_debugger") and self.debug_info and self.debug_info.interactive: self.ignore_interrupts() return self @@ -212,8 +213,10 @@ class TestEnvironment(object): each_sleep_secs = 0.5 end_time = time.time() + total_sleep_secs while time.time() < end_time: - failed = self.test_servers() - if not failed: + failed, pending = self.test_servers() + if failed: + break + if not pending: return time.sleep(each_sleep_secs) raise EnvironmentError("Servers failed to start: %s" % @@ -221,19 +224,23 @@ class TestEnvironment(object): def test_servers(self): failed = [] + pending = [] host = self.config["server_host"] for scheme, servers in iteritems(self.servers): for port, server in servers: - if self.test_server_port: + if not server.is_alive(): + failed.append((scheme, port)) + + if not failed and self.test_server_port: + for scheme, servers in iteritems(self.servers): + for port, server in servers: s = socket.socket() s.settimeout(0.1) try: s.connect((host, port)) except socket.error: - failed.append((host, port)) + pending.append((host, port)) finally: s.close() - if not server.is_alive(): - failed.append((scheme, port)) - return failed + return failed, pending diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py index 9e842802fc0..c2498c4ee1e 100644 --- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py +++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py @@ -64,12 +64,6 @@ handler returns, or for directly writing to the output stream. """ -EDIT_HOSTS_HELP = ("Please ensure all the necessary WPT subdomains " - "are mapped to a loopback device in /etc/hosts. " - "See https://web-platform-tests.org/running-tests/from-local-system.html#system-setup " - "for instructions.") - - class RequestRewriter(object): def __init__(self, rules): """Object for rewriting the request path. @@ -676,7 +670,8 @@ class WebTestHttpd(object): _host, self.port = self.httpd.socket.getsockname() except Exception: - self.logger.critical("Failed to start HTTP server. {}".format(EDIT_HOSTS_HELP)) + self.logger.critical("Failed to start HTTP server on port %s; " + "is something already using that port?" % port) raise def start(self, block=False): diff --git a/tests/wpt/web-platform-tests/wake-lock/idlharness-worker.https.window.js b/tests/wpt/web-platform-tests/wake-lock/idlharness-worker.https.window.js index c747ad6872a..76f5352721d 100644 --- a/tests/wpt/web-platform-tests/wake-lock/idlharness-worker.https.window.js +++ b/tests/wpt/web-platform-tests/wake-lock/idlharness-worker.https.window.js @@ -7,7 +7,7 @@ promise_test(async t => { await test_driver.set_permission( - { name: 'wake-lock', type: 'system' }, 'granted', false); + { name: 'system-wake-lock' }, 'granted', false); await fetch_tests_from_worker(new Worker('resources/idlharness-worker.js')); }, 'Run idlharness tests in a worker.'); diff --git a/tests/wpt/web-platform-tests/wake-lock/idlharness.https.window.js b/tests/wpt/web-platform-tests/wake-lock/idlharness.https.window.js index f9e3c02175d..60c25f3386e 100644 --- a/tests/wpt/web-platform-tests/wake-lock/idlharness.https.window.js +++ b/tests/wpt/web-platform-tests/wake-lock/idlharness.https.window.js @@ -3,7 +3,7 @@ // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js -// https://w3c.github.io/wake-lock/ +// https://w3c.github.io/screen-wake-lock/ 'use strict'; @@ -19,7 +19,7 @@ idl_test( }); await test_driver.set_permission( - { name: 'wake-lock', type: 'screen' }, 'granted', false); + { name: 'screen-wake-lock' }, 'granted', false); self.sentinel = await navigator.wakeLock.request('screen'); self.sentinel.release(); } diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy.https.sub.html index 376359e888d..f908717ff41 100644 --- a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy.https.sub.html +++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy.https.sub.html @@ -15,7 +15,7 @@ promise_test(async t => { await test_driver.set_permission( - { name: 'wake-lock', type: 'screen' }, 'granted', false); + { name: 'screen-wake-lock' }, 'granted', false); await navigator.wakeLock.request('screen').then(lock => lock.release()); }, 'Feature-Policy header {"screen-wake-lock" : ["*"]} allows the top-level document.'); diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html index a2d3725857b..b15289beff4 100644 --- a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html +++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html @@ -16,7 +16,7 @@ promise_test(async t => { await test_driver.set_permission( - { name: 'wake-lock', type: 'screen' }, 'granted', false); + { name: 'screen-wake-lock' }, 'granted', false); await navigator.wakeLock.request('screen').then(lock => lock.release()); }, 'Feature-Policy header screen-wake-lock "self" allows the top-level document.'); diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-onrelease.https.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-onrelease.https.html index 3506c8ae82b..88c0cdb654c 100644 --- a/tests/wpt/web-platform-tests/wake-lock/wakelock-onrelease.https.html +++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-onrelease.https.html @@ -1,12 +1,12 @@ <!DOCTYPE html> -<link rel="help" href="https://w3c.github.io/wake-lock/#the-onrelease-attribute"> +<link rel="help" href="https://w3c.github.io/screen-wake-lock/#the-onrelease-attribute"> <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> async_test(async t => { - await test_driver.set_permission({name: 'wake-lock', type: 'screen'}, 'granted', false); + await test_driver.set_permission({name: 'screen-wake-lock'}, 'granted', false); const lock = await navigator.wakeLock.request("screen"); lock.onrelease = t.step_func_done((ev) => { diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-request-denied.https.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-request-denied.https.html index 8dbe523ed2c..b222ef342a6 100644 --- a/tests/wpt/web-platform-tests/wake-lock/wakelock-request-denied.https.html +++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-request-denied.https.html @@ -9,7 +9,7 @@ 'use strict'; promise_test(async t => { - await test_driver.set_permission({name: 'wake-lock', type: 'screen'}, 'denied', false); + await test_driver.set_permission({name: 'screen-wake-lock'}, 'denied', false); return promise_rejects_dom(t, "NotAllowedError", navigator.wakeLock.request('screen')); }, 'Denied requests should abort with NotAllowedError'); </script> diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-supported-by-feature-policy.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-supported-by-feature-policy.html index e7f9c8cb283..a55eb54ba1c 100644 --- a/tests/wpt/web-platform-tests/wake-lock/wakelock-supported-by-feature-policy.html +++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-supported-by-feature-policy.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <title>Test that wake-lock is advertised in the feature list</title> <link rel="help" href="https://w3c.github.io/webappsec-feature-policy/#dom-featurepolicy-features"> -<link rel="help" href="https://w3c.github.io/wake-lock/#dfn-wake-lock-feature"> +<link rel="help" href="https://w3c.github.io/screen-wake-lock/#dfn-wake-lock-feature"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script> diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelockpermissiondescriptor.https.html b/tests/wpt/web-platform-tests/wake-lock/wakelockpermissiondescriptor.https.html index fd7a08a34ba..88c95987f1e 100644 --- a/tests/wpt/web-platform-tests/wake-lock/wakelockpermissiondescriptor.https.html +++ b/tests/wpt/web-platform-tests/wake-lock/wakelockpermissiondescriptor.https.html @@ -5,29 +5,21 @@ <script src="/resources/testdriver.js"></script> <script src="/resources/testdriver-vendor.js"></script> <script> -promise_test(t => { - return promise_rejects_js(t, TypeError, navigator.permissions.query({ name:'wake-lock' })); -}, "WakeLockPermissionDescriptor's type attribute is required"); - -promise_test(t => { - return promise_rejects_js(t, TypeError, navigator.permissions.query({ name: 'wake-lock', type: 'foo' })); -}, "WakeLockPermissionDescriptor's type attribute must be a WakeLockType"); - promise_test(async t => { - await test_driver.set_permission({name: 'wake-lock', type: 'screen'}, 'denied', false); + await test_driver.set_permission({name: 'screen-wake-lock'}, 'denied', false); - return navigator.permissions.query({name:'wake-lock', type: 'screen'}).then(status => { + return navigator.permissions.query({name:'screen-wake-lock'}).then(status => { assert_class_string(status, "PermissionStatus"); assert_equals(status.state, "denied"); }); -}, "WakeLockPermissionDescriptor with type=screen works"); +}, "PermissionDescriptor with name='screen-wake-lock' works"); promise_test(async t => { - await test_driver.set_permission({name: 'wake-lock', type: 'system'}, 'denied', false); + await test_driver.set_permission({name: 'system-wake-lock'}, 'denied', false); - return navigator.permissions.query({ name: 'wake-lock', type: 'system' }).then(status => { + return navigator.permissions.query({ name: 'system-wake-lock' }).then(status => { assert_class_string(status, "PermissionStatus"); assert_equals(status.state, "denied"); }); -}, "WakeLockPermissionDescriptor with type=system works"); +}, "PermissionDescriptor with name='system-wake-lock' works"); </script> diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-codecs.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-codecs.html index fdb584460f8..f5fa65e2ac9 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-codecs.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-codecs.html @@ -28,7 +28,6 @@ sequence<RTCRtpHeaderExtensionParameters> headerExtensions; RTCRtcpParameters rtcp; sequence<RTCRtpCodecParameters> codecs; - RTCDegradationPreference degradationPreference; }; dictionary RTCRtpCodecParameters { diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-degradationPreference.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-degradationPreference.html deleted file mode 100644 index e2c92bc1c08..00000000000 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-degradationPreference.html +++ /dev/null @@ -1,87 +0,0 @@ -<!doctype html> -<meta charset=utf-8> -<title>RTCRtpParameters degradationPreference</title> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="dictionary-helper.js"></script> -<script src="RTCRtpParameters-helper.js"></script> -<script> - 'use strict'; - - // Test is based on the following editor draft: - // https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html - - // The following helper functions are called from RTCRtpParameters-helper.js: - // validateSenderRtpParameters - - /* - 5.2. RTCRtpSender Interface - interface RTCRtpSender { - Promise<void> setParameters(optional RTCRtpParameters parameters); - RTCRtpParameters getParameters(); - }; - - dictionary RTCRtpParameters { - DOMString transactionId; - sequence<RTCRtpEncodingParameters> encodings; - sequence<RTCRtpHeaderExtensionParameters> headerExtensions; - RTCRtcpParameters rtcp; - sequence<RTCRtpCodecParameters> codecs; - RTCDegradationPreference degradationPreference; - }; - - enum RTCDegradationPreference { - "maintain-framerate", - "maintain-resolution", - "balanced" - }; - - - degradationPreference is set to the last value passed into setParameters, - or the default value of "balanced" if setParameters hasn't been called. - */ - - promise_test(t => { - const pc = new RTCPeerConnection(); - t.add_cleanup(() => pc.close()); - const { sender } = pc.addTransceiver('audio'); - - const param = sender.getParameters(); - validateSenderRtpParameters(param); - - assert_equals(param.degradationPreference, 'balanced', - 'Expect initial param.degradationPreference to be balanced'); - - param.degradationPreference = 'maintain-framerate'; - - return pc.setParameters(param) - .then(() => { - const param = sender.getParameters(); - validateSenderRtpParameters(param); - - assert_equals(param.degradationPreference, 'maintain-framerate'); - }); - }, 'setParameters with degradationPreference set should succeed'); - - promise_test(t => { - const pc = new RTCPeerConnection(); - t.add_cleanup(() => pc.close()); - const { sender } = pc.addTransceiver('audio'); - - const param = sender.getParameters(); - validateSenderRtpParameters(param); - - assert_equals(param.degradationPreference, 'balanced', - 'Expect initial param.degradationPreference to be balanced'); - - param.degradationPreference = undefined; - - return pc.setParameters(param) - .then(() => { - const param = sender.getParameters(); - validateSenderRtpParameters(param); - - assert_equals(param.degradationPreference, undefined); - }); - }, 'setParameters with degradationPreference unset should succeed'); - -</script> diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-encodings.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-encodings.html index 2f94186fe1e..00e80885cff 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-encodings.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-encodings.html @@ -41,7 +41,6 @@ sequence<RTCRtpHeaderExtensionParameters> headerExtensions; RTCRtcpParameters rtcp; sequence<RTCRtpCodecParameters> codecs; - RTCDegradationPreference degradationPreference; }; dictionary RTCRtpEncodingParameters { diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-headerExtensions.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-headerExtensions.html index 85c3338dd62..7de2b75f4ee 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-headerExtensions.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-headerExtensions.html @@ -27,7 +27,6 @@ sequence<RTCRtpHeaderExtensionParameters> headerExtensions; RTCRtcpParameters rtcp; sequence<RTCRtpCodecParameters> codecs; - RTCDegradationPreference degradationPreference; }; dictionary RTCRtpHeaderExtensionParameters { diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-helper.js b/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-helper.js index d61d8e14932..17ecfbaf99e 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-helper.js +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-helper.js @@ -46,9 +46,6 @@ async function doOfferAnswerExchange(t, caller) { - rtcp.cname is set to the CNAME of the associated RTCPeerConnection. rtcp.reducedSize is set to true if reduced-size RTCP has been negotiated for sending, and false otherwise. - - - degradationPreference is set to the last value passed into setParameters, or the - default value of "balanced" if setParameters hasn't been called. */ function validateSenderRtpParameters(param) { validateRtpParameters(param); @@ -80,7 +77,7 @@ function validateSenderRtpParameters(param) { - rtcp.reducedSize is set to true if the receiver is currently prepared to receive reduced-size RTCP packets, and false otherwise. rtcp.cname is left undefined. - - transactionId and degradationPreference are left undefined. + - transactionId is left undefined. */ function validateReceiverRtpParameters(param) { validateRtpParameters(param); @@ -93,9 +90,6 @@ function validateReceiverRtpParameters(param) { assert_equals(param.rtcp.cname, undefined, 'Expect receiver param.rtcp.cname to be unset'); - - assert_equals(param.degradationPreference, undefined, - 'Expect receiver param.degradationPreference to be unset'); } /* @@ -105,7 +99,6 @@ function validateReceiverRtpParameters(param) { sequence<RTCRtpHeaderExtensionParameters> headerExtensions; RTCRtcpParameters rtcp; sequence<RTCRtpCodecParameters> codecs; - RTCDegradationPreference degradationPreference; }; enum RTCDegradationPreference { @@ -134,9 +127,6 @@ function validateRtpParameters(param) { for(const codec of param.codecs) { validateCodecParameters(codec); } - - assert_optional_enum_field(param, 'degradationPreference', - ['maintain-framerate', 'maintain-resolution', 'balanced']); } /* @@ -307,4 +297,4 @@ function test_modified_encoding(kind, field, value1, value2, desc) { const encoding2 = getFirstEncoding(param2); assert_equals(encoding2[field], value2); }, desc + ' without RTCRtpTransceiverInit'); -}
\ No newline at end of file +} diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-rtcp.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-rtcp.html index 82fb49be7de..79653045200 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-rtcp.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-rtcp.html @@ -27,7 +27,6 @@ sequence<RTCRtpHeaderExtensionParameters> headerExtensions; RTCRtcpParameters rtcp; sequence<RTCRtpCodecParameters> codecs; - RTCDegradationPreference degradationPreference; }; dictionary RTCRtcpParameters { diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-transactionId.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-transactionId.html index ae56fb401f4..a7b7865532b 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-transactionId.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-transactionId.html @@ -48,7 +48,6 @@ sequence<RTCRtpHeaderExtensionParameters> headerExtensions; RTCRtcpParameters rtcp; sequence<RTCRtpCodecParameters> codecs; - RTCDegradationPreference degradationPreference; }; getParameters diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getParameters.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getParameters.html index 7f8ac673a60..4be0e3b95ec 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getParameters.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getParameters.html @@ -30,9 +30,7 @@ - rtcp.reducedSize is set to true if the receiver is currently prepared to receive reduced-size RTCP packets, and false otherwise. rtcp.cname is left undefined. - - - transactionId and degradationPreference are left undefined. - */ + */ promise_test(async t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); |