diff options
author | bors-servo <servo-ops@mozilla.com> | 2020-05-02 11:27:48 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-02 11:27:48 -0400 |
commit | 292d6ec588fa28ca264e1ef19547a4a8d40c9f7b (patch) | |
tree | f58c625e154e26093261b7ca24148c4ca3079fdb | |
parent | 73abf56e9954cd3efc86ae5bc3857ae07c2a6da6 (diff) | |
parent | 00971fa7af6ac1139f551bec6fe9d734077e4de0 (diff) | |
download | servo-292d6ec588fa28ca264e1ef19547a4a8d40c9f7b.tar.gz servo-292d6ec588fa28ca264e1ef19547a4a8d40c9f7b.zip |
Auto merge of #26393 - servo-wpt-sync:wpt_update_02-05-2020, r=jdm
Sync WPT with upstream (02-05-2020)
Automated downstream sync of changes from upstream as of 02-05-2020.
[no-wpt-sync]
r? @servo-wpt-sync
114 files changed, 877 insertions, 333 deletions
diff --git a/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini index 76b44d9e9cf..3605e8f3fc9 100644 --- a/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini +++ b/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini @@ -4,7 +4,7 @@ expected: TIMEOUT [Opening a blob URL in a new window immediately before revoking it works.] - expected: FAIL + expected: TIMEOUT [Fetching a blob URL immediately before revoking it works in an iframe.] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini new file mode 100644 index 00000000000..f64b45fea6b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-002.html] + [Hit test float] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini new file mode 100644 index 00000000000..f29da48a2a0 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-003.html] + [Miss float below something else] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini new file mode 100644 index 00000000000..4bfb0c2053a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-004.html] + [Miss float below something else] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/compositing/mix-blend-mode/mix-blend-mode-animation.html.ini b/tests/wpt/metadata-layout-2020/css/compositing/mix-blend-mode/mix-blend-mode-animation.html.ini new file mode 100644 index 00000000000..5496474410b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/compositing/mix-blend-mode/mix-blend-mode-animation.html.ini @@ -0,0 +1,2 @@ +[mix-blend-mode-animation.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-002.html.ini index fc4e1b87fbd..50e1f71234c 100644 --- a/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-002.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-002.html.ini @@ -509,3 +509,93 @@ [min-width length(ex) / values] expected: FAIL + [bottom length(ex) / values] + expected: FAIL + + [right length(pc) / values] + expected: FAIL + + [top length(pt) / values] + expected: FAIL + + [top length(pc) / values] + expected: FAIL + + [right percentage(%) / values] + expected: FAIL + + [bottom length(pt) / values] + expected: FAIL + + [right length(px) / values] + expected: FAIL + + [top length(px) / values] + expected: FAIL + + [right length(em) / values] + expected: FAIL + + [top percentage(%) / values] + expected: FAIL + + [right length(ex) / values] + expected: FAIL + + [right length(cm) / values] + expected: FAIL + + [right length(in) / values] + expected: FAIL + + [right length(mm) / values] + expected: FAIL + + [top length(em) / values] + expected: FAIL + + [bottom length(px) / values] + expected: FAIL + + [left length(px) / values] + expected: FAIL + + [bottom length(in) / values] + expected: FAIL + + [top length(in) / values] + expected: FAIL + + [bottom length(mm) / values] + expected: FAIL + + [left length(pt) / values] + expected: FAIL + + [bottom length(em) / values] + expected: FAIL + + [top length(cm) / values] + expected: FAIL + + [top length(mm) / values] + expected: FAIL + + [left length(pc) / values] + expected: FAIL + + [bottom length(pc) / values] + expected: FAIL + + [top length(ex) / values] + expected: FAIL + + [right length(pt) / values] + expected: FAIL + + [bottom percentage(%) / values] + expected: FAIL + + [bottom length(cm) / values] + 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 23c61ede1a1..c131078eace 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,6 +17,3 @@ [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-iframes.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-iframes.html.ini index 6ef8bb1049f..171592fc08f 100644 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-iframes.html.ini +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-iframes.html.ini @@ -2,6 +2,3 @@ [elementsFromPoint on the root document for points in iframe elements] expected: FAIL - [elementsFromPoint on inner documents] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/dom/events/EventListener-invoke-legacy.html.ini b/tests/wpt/metadata-layout-2020/dom/events/EventListener-invoke-legacy.html.ini new file mode 100644 index 00000000000..318483a3a09 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/dom/events/EventListener-invoke-legacy.html.ini @@ -0,0 +1,17 @@ +[EventListener-invoke-legacy.html] + expected: TIMEOUT + [Legacy listener of animationend] + expected: TIMEOUT + + [Listener of animationstart] + expected: TIMEOUT + + [Listener of animationend] + expected: FAIL + + [Legacy listener of transitionend] + expected: TIMEOUT + + [Legacy listener of animationstart] + expected: TIMEOUT + 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 9d6bf00a31f..157b411858c 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 @@ -321,9 +321,18 @@ [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" text/plain] + [<iframe>: combined response Content-Type: text/html */*] expected: FAIL - [<iframe>: separate response Content-Type: text/html;" text/plain] + [<iframe>: separate response Content-Type: text/html */*;charset=gbk] + expected: FAIL + + [<iframe>: separate response Content-Type: text/html */*] + expected: FAIL + + [<iframe>: separate response Content-Type: text/plain */*] + expected: FAIL + + [<iframe>: combined response Content-Type: text/html;" \\" 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 c7413d589dc..279734168dc 100644 --- a/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini @@ -56,9 +56,6 @@ [separate text/javascript x/x] expected: FAIL - [separate text/javascript;charset=windows-1252 error text/javascript] - expected: FAIL - [separate text/javascript;charset=windows-1252 text/javascript] 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_2.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini deleted file mode 100644 index 75d75b4cda2..00000000000 --- a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_2.html] - [Multiple history traversals, last would be aborted] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini 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/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.html.ini deleted file mode 100644 index 660f719e46e..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[size.attributes.parse.empty.html] - [Parsing of non-negative integers] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.worker.js.ini deleted file mode 100644 index 2643cec82f4..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[size.attributes.parse.empty.worker.html] - [Parsing of non-negative integers] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.html.ini deleted file mode 100644 index dc9b22a06cd..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[size.attributes.parse.onlyspace.html] - [Parsing of non-negative integers] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js.ini deleted file mode 100644 index d2d1d46b3eb..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[size.attributes.parse.onlyspace.worker.html] - [Parsing of non-negative integers] - expected: FAIL - 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..ba183b6db32 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,13 +1,13 @@ [supported-elements.html] expected: TIMEOUT [Contenteditable element should support autofocus] - expected: FAIL + expected: TIMEOUT [Host element with delegatesFocus including no focusable descendants should be skipped] expected: NOTRUN [Element with tabindex should support autofocus] - expected: TIMEOUT + expected: NOTRUN [Area element should support autofocus] expected: NOTRUN diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini index 0c89d5253df..d913fcbb129 100644 --- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini +++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini @@ -1,5 +1,5 @@ [iframe_sandbox_popups_nonescaping-1.html] - expected: CRASH + expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini index f4f994c5d6f..0fbc49ea1c1 100644 --- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini +++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini @@ -1,5 +1,5 @@ [iframe_sandbox_popups_nonescaping-3.html] - expected: TIMEOUT + expected: CRASH [Check that popups from a sandboxed iframe do not escape the sandbox] expected: NOTRUN diff --git a/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini b/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini index dbec6f2c2ff..450c88bd32b 100644 --- a/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini +++ b/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini @@ -3,3 +3,6 @@ [The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] expected: TIMEOUT + [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] + 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 e83bdad0f9f..d4732f0b872 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 @@ -119,3 +119,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 44054 more errors.\n\tMax AbsError of 1.9961981773376465e+0 at index of 31768.\n\t[31768\]\t-9.9879217147827148e-1\t9.9740600585937500e-1\t1.9961981773376465e+0\t2.0013897706758867e+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 42291 more errors.\n\tMax AbsError of 1.9986916780471802e+0 at index of 42250.\n\t[42250\]\t9.9994289875030518e-1\t-9.9874877929687500e-1\t1.9986916780471802e+0\t2.0011956154322119e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 12348.\n\t[12348\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini b/tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini deleted file mode 100644 index 064cf47545b..00000000000 --- a/tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[017.html] - expected: TIMEOUT - [origin of the script that invoked the method, about:blank] - 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 deleted file mode 100644 index 663a1f8fa30..00000000000 --- a/tests/wpt/metadata-layout-2020/webmessaging/without-ports/018.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[018.html] - expected: TIMEOUT - [origin of the script that invoked the method, javascript:] - expected: TIMEOUT - diff --git a/tests/wpt/metadata-layout-2020/webxr/gamepads-module/xrInputSource_gamepad_disconnect.https.html.ini b/tests/wpt/metadata-layout-2020/webxr/gamepads-module/xrInputSource_gamepad_disconnect.https.html.ini new file mode 100644 index 00000000000..325a0bb6738 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/webxr/gamepads-module/xrInputSource_gamepad_disconnect.https.html.ini @@ -0,0 +1,4 @@ +[xrInputSource_gamepad_disconnect.https.html] + [WebXR InputSource's gamepad gets disconnected when the input source is removed] + expected: FAIL + diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini index d4f62ed7113..faa00f45ecf 100644 --- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini +++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini @@ -7,7 +7,7 @@ expected: FAIL [Opening a blob URL in a new window immediately before revoking it works.] - expected: FAIL + expected: TIMEOUT [Opening a blob URL in a noopener about:blank window immediately before revoking it works.] expected: TIMEOUT diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 09c8489b3c8..7968aff7add 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -24334,6 +24334,21 @@ ] ] }, + "contenteditable": { + "synthetic-height.tentative.html": [ + "4d466bff412e6de924b9886ef808b49f7ff2b44d", + [ + null, + [ + [ + "/contenteditable/synthetic-height-ref.html", + "==" + ] + ], + {} + ] + ] + }, "css": { "CSS2": { "abspos": { @@ -264457,6 +264472,10 @@ "META.yml": [ "3618b8d29d08c2315f6480c0e02578bb4784b344", [] + ], + "synthetic-height-ref.html": [ + "a64b545f03c369a900ad6fee1971b60a176c6508", + [] ] }, "cookie-store": { @@ -317728,6 +317747,10 @@ "0cc259b24f3829f665dc97b5d5edd98a3e0147c3", [] ], + "feature-policy-frame-policy-allowed-for-some-override.https.sub.html.sub.headers": [ + "c2493a089031aa89fc6c689e0bdc1ea717da81c3", + [] + ], "feature-policy-frame-policy-allowed-for-some.https.sub.html.sub.headers": [ "c2493a089031aa89fc6c689e0bdc1ea717da81c3", [] @@ -322191,7 +322214,7 @@ [] ], "tests2d-offscreen.yaml": [ - "f4a605c0eca5a2305223da743d8c5ff8a50ca508", + "5fe168a66d572f2b3d8e33f3982d70702db849e3", [] ], "tests2d.yaml": [ @@ -331568,7 +331591,7 @@ [] ], "http2-context.sub.h2.any.js.ini": [ - "6537b7eae0705cfee6ff43145b505b2bc1880836", + "665258c9d94c2fc934b07fdb33d7e54eac6bc0cb", [] ], "order-of-metas.any.js.ini": [ @@ -331584,7 +331607,7 @@ [] ], "wpt-server-http.sub.html.ini": [ - "e2f26c7e4b697c77c5ee195cad763279bd1ecde0", + "b1e18f8948acf097d415209d18f084da58e02fa9", [] ], "wpt-server-websocket.sub.html.ini": [ @@ -332315,7 +332338,7 @@ [] ], "web-nfc.idl": [ - "155bf267a206719e64e5bc505b7602f8804643bf", + "f2e31b7352867d39edc9c43a4f1fffb3a02cb985", [] ], "web-share.idl": [ @@ -332496,6 +332519,10 @@ } }, "largest-contentful-paint": { + "META.yml": [ + "b7e2497681e98960fd00d70ced82aa9e3a48d144", + [] + ], "resources": { "iframe-stores-entry.html": [ "cd600254805570deab8447ea843657d7f268b7c5", @@ -332512,6 +332539,10 @@ } }, "layout-instability": { + "META.yml": [ + "10c6aa36cecf918928298102d1934c2ff79d01f2", + [] + ], "resources": { "slow-image.py": [ "ee7988c551f6429eea2b929af083ad30cbd5c73d", @@ -332563,7 +332594,7 @@ [] ] }, - "lint.whitelist": [ + "lint.ignore": [ "5f793cb6f3ec885017eeaf4cd7b4074d93e4d605", [] ], @@ -342064,7 +342095,7 @@ [] ], "ci_wptrunner_infrastructure.sh": [ - "f98385dd95d89a63eba12a4600b14dd2822816da", + "89267b50cb6432c495d428a180c59659b5c5a60a", [] ], "commands.json": [ @@ -342122,7 +342153,7 @@ ], "tasks": { "test.yml": [ - "d2d76df13a753643e0e32d4237ad19b9823e1742", + "3157fb6f273810a6cb75278af7920d8af41022ab", [] ] }, @@ -342154,7 +342185,7 @@ [] ], "test_valid.py": [ - "aa1ce20cd6d36191d96e2080393a70b13d8aa1df", + "85c015e521a6fcbe9e4050e4db7b9a191c3e113c", [] ] } @@ -342256,7 +342287,7 @@ [] ], "lint.py": [ - "fad93662a4465c7d1cb266f8ef475b26ed24f764", + "74b3c8cf9301a9d5ee3f0356a8a5604eea41fa3c", [] ], "rules.py": [ @@ -342383,7 +342414,7 @@ "29296f4c5876fc8c4cd052548616005c1e46f0e4", [] ], - "lint.whitelist": [ + "lint.ignore": [ "a763e4432e5afa2123035345e130d018710ffdd0", [] ], @@ -342437,7 +342468,7 @@ [] ], "test_lint.py": [ - "af2b7d3d4aa19f0c1d72a5575b5013c7897e1dc4", + "43da2f9ff21904868431533eaae846a403b7379a", [] ], "test_path_lints.py": [ @@ -348084,7 +348115,7 @@ [] ], "firefox.py": [ - "9532bd03cb7d8bd7b21543c756ba9197707947d0", + "f60185eb25f2e3140562dde5d96624f7081e4571", [] ], "firefox_android.py": [ @@ -348507,7 +348538,7 @@ [] ], "wpttest.py": [ - "8f828ff43abf72c9e3332e7e1eb0bf09f5caaf88", + "838a3ece325e8d58e952ea63b69508255fbb880f", [] ] }, @@ -353530,7 +353561,7 @@ [] ], "webxr_util.js": [ - "fcee893036799f917ed175d0444058103c4287b5", + "7c157518755dfef1f0ffe2e00cbb27d8a2939dcb", [] ] }, @@ -354866,7 +354897,7 @@ [] ], "access-control-preflight-denied.py": [ - "889ee6b0eca6ca68e7b8345fa2a1031103a8886c", + "e8010cc0ef71d8d1db3c4e381df45b56d541026e", [] ], "access-control-preflight-request-header-lowercase.py": [ @@ -380924,6 +380955,13 @@ null, {} ] + ], + "viewport-user-scalable-no-wide-content.tentative.html": [ + "6cf0bfa236a0cb5806c5deeeb7d45c07afb9f16f", + [ + null, + {} + ] ] }, "css-display": { @@ -399725,7 +399763,7 @@ ] ], "CSSStyleSheet-constructable-replace-on-regular-sheet.html": [ - "5ce0cbee97a2a1593018089f9252870bdb47587b", + "76bee452a661bb95908c66e176797dd62f918ab2", [ null, {} @@ -420303,8 +420341,17 @@ } ] ], + "feature-policy-frame-policy-allowed-for-some-override.https.sub.html": [ + "17c9cc6b8dbbb67891871874a5632b3cbaa89b3a", + [ + null, + { + "timeout": "long" + } + ] + ], "feature-policy-frame-policy-allowed-for-some.https.sub.html": [ - "9a020f9e6b5d513adaf2d36b25bd62b239789e50", + "d519743a4384c7242d849c011cf02e835eecd2ba", [ null, { @@ -444233,14 +444280,14 @@ ] ], "size.attributes.parse.empty.html": [ - "69e834f510ee1a4d2ded63b9e7820eb0bd89502d", + "382914954109d81fe79a20be1ab13907902b5724", [ null, {} ] ], "size.attributes.parse.empty.worker.js": [ - "1888d2ef132010d087a7379acdc75f585d6dfc88", + "0fb9808d36b10784a2d3a052f9e3edb06d477e84", [ "html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.worker.html", {} @@ -444317,14 +444364,14 @@ ] ], "size.attributes.parse.onlyspace.html": [ - "cbd9c1e3e3fb91a1caad7201c291eb0d5a4253a8", + "55d05b88c3f88508f387299ac4e75c492f96f518", [ null, {} ] ], "size.attributes.parse.onlyspace.worker.js": [ - "21c8cfc32baa462e2c543631cbcb26cbdc15a56d", + "b2e5d6c6726a599ff77ae7066127dfa6d5cfad9c", [ "html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.html", {} @@ -447538,6 +447585,13 @@ {} ] ], + "preventScroll-textarea.html": [ + "446284b1863d73f03b845a121189f273b77decd1", + [ + null, + {} + ] + ], "preventScroll.html": [ "97d341b30ec849fefc13adb8b3376307fea58b69", [ @@ -485858,6 +485912,15 @@ {} ] ], + "scroll-timeline-snapshotting.html": [ + "f2ba23fd4dc9cb4da40b4008071a7a109e6edb37", + [ + null, + { + "testdriver": true + } + ] + ], "setting-current-time.html": [ "d46206d8257702d443e3b1e620bf9bad4f327ee3", [ @@ -510054,7 +510117,7 @@ ] ], "RTCPeerConnection-setRemoteDescription-offer.html": [ - "21ecf17fef6aa8b242b22a55e78c3bb0280a28cb", + "b4702446613255daec7db5325f64089a917fdee9", [ null, {} @@ -510075,7 +510138,7 @@ ] ], "RTCPeerConnection-setRemoteDescription-rollback.html": [ - "516cb57025b195552ade0e600c02f7c92c8f4aa8", + "a031a6015f4274d783fc3a5a1bce03a7e23dffe8", [ null, {} @@ -516120,7 +516183,7 @@ }, "dom-overlay": { "ar_dom_overlay.https.html": [ - "e6f7a9d455cf22d1fa070f269ee9715992e5e2c8", + "de0cb68744956558541b574fd88800d262d23e97", [ null, {} @@ -516142,14 +516205,14 @@ ] ], "events_input_sources_change.https.html": [ - "107cc9b544e3a395c14655d0f4356485f05d7bf5", + "7c784c34479842148a3310b3f48d41990fcd4c34", [ null, {} ] ], "events_referenceSpace_reset_immersive.https.html": [ - "2da3788a39a20db3396d542f7fb0dc5d486c2aa3", + "9643bf61c877ed50fa70e49015828e1b58ba7870", [ null, {} @@ -516163,21 +516226,21 @@ ] ], "events_session_select.https.html": [ - "bc501b693497ddf58ccabd4491858263c4dfbdbc", + "f83d3c4f85421999d2480049dc4daa62acf07666", [ null, {} ] ], "events_session_select_subframe.https.html": [ - "0e2c23424c0893b6a563c2aa2fbd999e50b1cfef", + "96fa11713dd480b947b0c64b624dc6022cb7e8d0", [ null, {} ] ], "events_session_squeeze.https.html": [ - "59e4e3f72c5d63cff47b6a7e1dfbac6194203534", + "101f1dc7c886906a9f6bc9db8bba0e01fdcb4b73", [ null, {} @@ -516210,14 +516273,14 @@ ] ], "xrInputSource_gamepad_disconnect.https.html": [ - "7b8ff4a59c8e503d4f31fe33f9fa1dee6af10003", + "f69f943b5b58451f75a4f21ac149676066d1f799", [ null, {} ] ], "xrInputSource_gamepad_input_registered.https.html": [ - "038e28dcffbd507105da57fb1ced055ea83896c0", + "1ff9dcf3b40c9a9c9f41fcc756f6bab1d3add7b3", [ null, {} @@ -516225,21 +516288,21 @@ ] }, "getInputPose_handedness.https.html": [ - "5a310c6dd77274631d0ef9e751c6f195def9c3d3", + "c5c13fd08f4ec43cb33155c9ea92ad2177b6035e", [ null, {} ] ], "getInputPose_pointer.https.html": [ - "9c2bf5217f81fc6f345a15e79170ec7aa6b2f750", + "30dbe4c5304a33d2131548d8c168c85225cd4b82", [ null, {} ] ], "getViewerPose_emulatedPosition.https.html": [ - "d3f83dad26ac8280888f85a451016cefa78aa04a", + "acba79136a2925ef8c37ffe0a992c5a8da967976", [ null, {} @@ -516247,7 +516310,7 @@ ], "hit-test": { "ar_hittest_subscription_inputSources.https.html": [ - "7b609d5e3a7b0990493af37f614086b552af7945", + "d419055ab264276ab6c2c2f064ab11785440bdfe", [ null, {} @@ -516275,7 +516338,7 @@ ] ], "ar_hittest_subscription_transientInputSources.https.html": [ - "385bb667b318cb5d043bafc74aebb59be805b826", + "e38e9c601b312f1207cce29bd64d588381275e3c", [ null, {} @@ -516383,7 +516446,7 @@ ] ], "xrBoundedReferenceSpace_updates.https.html": [ - "9043d59e3b2318fab182b85ab29d15ea4e2b41cb", + "3d5040436657d7b09b290562f1cfde086b924495", [ null, {} @@ -516495,49 +516558,49 @@ ] ], "xrInputSource_add_remove.https.html": [ - "33264ddd68ab09e2ed6a596614116bd1225f2665", + "7764017910d2e5ada78febe954e9543aca89226b", [ null, {} ] ], "xrInputSource_emulatedPosition.https.html": [ - "7b0fda4508748c81a0865d137847fd7f13a3ff97", + "2bc21ffe6c395de22a1aa840cb8a97e44a81eebe", [ null, {} ] ], "xrInputSource_profiles.https.html": [ - "32073c631f8ecfc3b19c33ed03e6b9999553cfec", + "f55e682b67528c0e01406163490fa433a69d0592", [ null, {} ] ], "xrInputSource_sameObject.https.html": [ - "78240de2f9019218061e45359cfad7cd28057d52", + "305e5f9e0fccc8ef7a7d96d9e65da130b5f54239", [ null, {} ] ], "xrPose_transform_sameObject.https.html": [ - "79eed4cdec4663b3a0a401aff80126e4dad767f9", + "8e2239cff167cbb88b8702c4f3f413d447b5015e", [ null, {} ] ], "xrReferenceSpace_originOffset.https.html": [ - "3d244b8ce29e2c74dd6f5c243dd2ab6679122c82", + "f6929f27af0ee73676c09be7de25afa2ed3d1fd4", [ null, {} ] ], "xrReferenceSpace_originOffsetBounded.https.html": [ - "c50aff2515b85ab119c3c1c43487a98c5bf8dddb", + "7ce4acafd35ef7ccad553cdf15ebd43a0e24d6c7", [ null, {} @@ -516614,7 +516677,7 @@ ] ], "xrSession_input_events_end.https.html": [ - "a932aad2fad78ceb2449928773da3ecfe237b8e7", + "636562dd6ec06c1d5d84d73b0b10ed38d7950ad5", [ null, {} @@ -516670,7 +516733,7 @@ ] ], "xrSession_sameObject.https.html": [ - "837fa0a008d6cdfcbd9ee134e7ec78bce7c2b95b", + "66aeef81c50c36ff2fc50dcc7c45749f25605893", [ null, {} @@ -516698,7 +516761,7 @@ ] ], "xrStationaryReferenceSpace_floorlevel_updates.https.html": [ - "3f33cf354b8d3fde3d0a2efd3d92b78037a9178a", + "967291609c0f05a9e457e3ffa2a77f601fa9d461", [ null, {} diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini new file mode 100644 index 00000000000..f64b45fea6b --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-002.html] + [Hit test float] + expected: FAIL + diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini new file mode 100644 index 00000000000..f29da48a2a0 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-003.html] + [Miss float below something else] + expected: FAIL + diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini new file mode 100644 index 00000000000..4bfb0c2053a --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-004.html] + [Miss float below something else] + expected: FAIL + diff --git a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-animation.html.ini b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-animation.html.ini new file mode 100644 index 00000000000..5496474410b --- /dev/null +++ b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-animation.html.ini @@ -0,0 +1,2 @@ +[mix-blend-mode-animation.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini index 42f61e8ed49..99dd4705d0e 100644 --- a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini +++ b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini @@ -509,3 +509,93 @@ [border-left-width length(pt) / values] expected: FAIL + [bottom length(ex) / values] + expected: FAIL + + [right length(pc) / values] + expected: FAIL + + [top length(pt) / values] + expected: FAIL + + [top length(pc) / values] + expected: FAIL + + [right percentage(%) / values] + expected: FAIL + + [bottom length(pt) / values] + expected: FAIL + + [right length(px) / values] + expected: FAIL + + [top length(px) / values] + expected: FAIL + + [right length(em) / values] + expected: FAIL + + [top percentage(%) / values] + expected: FAIL + + [right length(ex) / values] + expected: FAIL + + [right length(cm) / values] + expected: FAIL + + [right length(in) / values] + expected: FAIL + + [right length(mm) / values] + expected: FAIL + + [top length(em) / values] + expected: FAIL + + [bottom length(px) / values] + expected: FAIL + + [left length(px) / values] + expected: FAIL + + [bottom length(in) / values] + expected: FAIL + + [top length(in) / values] + expected: FAIL + + [bottom length(mm) / values] + expected: FAIL + + [left length(pt) / values] + expected: FAIL + + [bottom length(em) / values] + expected: FAIL + + [top length(cm) / values] + expected: FAIL + + [top length(mm) / values] + expected: FAIL + + [left length(pc) / values] + expected: FAIL + + [bottom length(pc) / values] + expected: FAIL + + [top length(ex) / values] + expected: FAIL + + [right length(pt) / values] + expected: FAIL + + [bottom percentage(%) / values] + expected: FAIL + + [bottom length(cm) / values] + 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 c884dc82eab..628b1fab770 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,6 +2,3 @@ [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/elementFromPosition.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini index 5733d536fd3..85e94926cb3 100644 --- a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini +++ b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini @@ -21,6 +21,3 @@ [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-iframes.html.ini b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini index 6ef8bb1049f..171592fc08f 100644 --- a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini +++ b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini @@ -2,6 +2,3 @@ [elementsFromPoint on the root document for points in iframe elements] expected: FAIL - [elementsFromPoint on inner documents] - expected: FAIL - diff --git a/tests/wpt/metadata/dom/events/EventListener-invoke-legacy.html.ini b/tests/wpt/metadata/dom/events/EventListener-invoke-legacy.html.ini index c7ff398c924..3cf1f3e369b 100644 --- a/tests/wpt/metadata/dom/events/EventListener-invoke-legacy.html.ini +++ b/tests/wpt/metadata/dom/events/EventListener-invoke-legacy.html.ini @@ -5,7 +5,7 @@ expected: TIMEOUT [Listener of animationend] - expected: TIMEOUT + expected: FAIL [Legacy listener of animationend] expected: TIMEOUT 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 0e5c70af39f..20903eeffeb 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -312,18 +312,27 @@ [fetch(): separate response Content-Type: text/plain ] expected: NOTRUN - [<iframe>: combined response Content-Type: text/html;" text/plain] + [<iframe>: separate response Content-Type: text/html;x=" text/plain] expected: FAIL - [<iframe>: separate response Content-Type: text/html;" text/plain] + [<iframe>: separate response Content-Type: text/html;" \\" text/plain] expected: FAIL - [<iframe>: separate response Content-Type: text/html;x=" text/plain] + [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] expected: FAIL - [<iframe>: separate response Content-Type: text/html;" \\" text/plain] + [<iframe>: combined response Content-Type: text/html */*] expected: FAIL - [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] + [<iframe>: separate response Content-Type: text/html */*;charset=gbk] + expected: FAIL + + [<iframe>: separate response Content-Type: text/html */*] + expected: FAIL + + [<iframe>: separate response Content-Type: text/plain */*] + expected: FAIL + + [<iframe>: combined response Content-Type: text/html;" \\" 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 7d481211d8a..279734168dc 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,3 @@ [separate text/javascript;charset=windows-1252 text/javascript] expected: FAIL - [separate text/javascript;charset=windows-1252 error text/javascript] - 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_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini deleted file mode 100644 index 75d75b4cda2..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_2.html] - [Multiple history traversals, last would be aborted] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini 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/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini b/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini deleted file mode 100644 index 735a9a75a2a..00000000000 --- a/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[cross-origin-objects-on-new-window.html] - expected: TIMEOUT diff --git a/tests/wpt/metadata/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.html.ini b/tests/wpt/metadata/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.html.ini deleted file mode 100644 index 660f719e46e..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[size.attributes.parse.empty.html] - [Parsing of non-negative integers] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.worker.js.ini deleted file mode 100644 index 2643cec82f4..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[size.attributes.parse.empty.worker.html] - [Parsing of non-negative integers] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.html.ini b/tests/wpt/metadata/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.html.ini deleted file mode 100644 index dc9b22a06cd..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[size.attributes.parse.onlyspace.html] - [Parsing of non-negative integers] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js.ini deleted file mode 100644 index d2d1d46b3eb..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[size.attributes.parse.onlyspace.worker.html] - [Parsing of non-negative integers] - expected: FAIL - 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..44dc9ffabc4 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,10 +1,10 @@ [supported-elements.html] expected: TIMEOUT [Contenteditable element should support autofocus] - expected: FAIL + expected: TIMEOUT [Element with tabindex should support autofocus] - expected: TIMEOUT + expected: NOTRUN [Host element with delegatesFocus including no focusable descendants should be skipped] expected: NOTRUN diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini index 963d4cd20ef..9df1ac56f2a 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini @@ -1,6 +1,6 @@ [iframe_sandbox_popups_nonescaping-1.html] type: testharness - expected: CRASH + expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] expected: NOTRUN diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini index e440b1e38c6..71edac2c5ed 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini @@ -1,6 +1,6 @@ [iframe_sandbox_popups_nonescaping-3.html] type: testharness - expected: TIMEOUT + expected: CRASH [Check that popups from a sandboxed iframe do not escape the sandbox] expected: NOTRUN diff --git a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini index 0cef5158fae..01f7b72cbe7 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini @@ -4,3 +4,6 @@ [The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] expected: TIMEOUT + [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] + 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 37a773e5fec..2ac230ec4d6 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 @@ -191,3 +191,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 44054 more errors.\n\tMax AbsError of 1.9961981773376465e+0 at index of 31768.\n\t[31768\]\t-9.9879217147827148e-1\t9.9740600585937500e-1\t1.9961981773376465e+0\t2.0013897706758867e+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 42291 more errors.\n\tMax AbsError of 1.9986916780471802e+0 at index of 42250.\n\t[42250\]\t9.9994289875030518e-1\t-9.9874877929687500e-1\t1.9986916780471802e+0\t2.0011956154322119e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 12348.\n\t[12348\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n] + expected: FAIL + diff --git a/tests/wpt/metadata/webmessaging/without-ports/017.html.ini b/tests/wpt/metadata/webmessaging/without-ports/017.html.ini deleted file mode 100644 index 064cf47545b..00000000000 --- a/tests/wpt/metadata/webmessaging/without-ports/017.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[017.html] - expected: TIMEOUT - [origin of the script that invoked the method, about:blank] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/webmessaging/without-ports/018.html.ini b/tests/wpt/metadata/webmessaging/without-ports/018.html.ini deleted file mode 100644 index 663a1f8fa30..00000000000 --- a/tests/wpt/metadata/webmessaging/without-ports/018.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[018.html] - expected: TIMEOUT - [origin of the script that invoked the method, javascript:] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/webxr/gamepads-module/xrInputSource_gamepad_disconnect.https.html.ini b/tests/wpt/metadata/webxr/gamepads-module/xrInputSource_gamepad_disconnect.https.html.ini index fd1e62fe01b..325a0bb6738 100644 --- a/tests/wpt/metadata/webxr/gamepads-module/xrInputSource_gamepad_disconnect.https.html.ini +++ b/tests/wpt/metadata/webxr/gamepads-module/xrInputSource_gamepad_disconnect.https.html.ini @@ -1,5 +1,4 @@ [xrInputSource_gamepad_disconnect.https.html] - expected: ERROR [WebXR InputSource's gamepad gets disconnected when the input source is removed] expected: FAIL diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index 62ed74c3fda..76fedc21ad0 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -10868,7 +10868,7 @@ [] ] }, - "lint.whitelist": [ + "lint.ignore": [ "314a9e5b44443be1a4e28dd3c5047a5082a7ccab", [] ], diff --git a/tests/wpt/mozilla/tests/lint.whitelist b/tests/wpt/mozilla/tests/lint.ignore index 314a9e5b444..314a9e5b444 100644 --- a/tests/wpt/mozilla/tests/lint.whitelist +++ b/tests/wpt/mozilla/tests/lint.ignore diff --git a/tests/wpt/web-platform-tests/contenteditable/synthetic-height-ref.html b/tests/wpt/web-platform-tests/contenteditable/synthetic-height-ref.html new file mode 100644 index 00000000000..a64b545f03c --- /dev/null +++ b/tests/wpt/web-platform-tests/contenteditable/synthetic-height-ref.html @@ -0,0 +1,9 @@ +<!doctype html> +<title>CSS test reference</title> +<style> + div { background: green; border: 1px solid; } +</style> +<div><br></div> +<div><br></div> +<div><br></div> +<div><br></div> diff --git a/tests/wpt/web-platform-tests/contenteditable/synthetic-height.tentative.html b/tests/wpt/web-platform-tests/contenteditable/synthetic-height.tentative.html new file mode 100644 index 00000000000..4d466bff412 --- /dev/null +++ b/tests/wpt/web-platform-tests/contenteditable/synthetic-height.tentative.html @@ -0,0 +1,21 @@ +<!doctype html> +<title>contenteditable causes blocks to have a synthesized height</title> +<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez"> +<link rel="author" href="https://mozilla.org" title="Mozilla"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1098151"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1634543"> +<link rel="help" href="https://github.com/w3c/editing/issues/70"> +<link rel="match" href="synthetic-height-ref.html"> +<style> + div { background: green; border: 1px solid; } + .pseudo::before { + content: ""; + } + .abspos-pseudo::before { + position: absolute; + } +</style> +<div contenteditable></div> +<div contenteditable><span style="position: absolute"></span></div> +<div contenteditable class="pseudo"></div> +<div contenteditable class="pseudo abspos-pseudo"></div> diff --git a/tests/wpt/web-platform-tests/css/css-device-adapt/viewport-user-scalable-no-wide-content.tentative.html b/tests/wpt/web-platform-tests/css/css-device-adapt/viewport-user-scalable-no-wide-content.tentative.html new file mode 100644 index 00000000000..6cf0bfa236a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-device-adapt/viewport-user-scalable-no-wide-content.tentative.html @@ -0,0 +1,28 @@ +<!doctype html> +<meta charset=utf-8> +<meta name="viewport" content="width=device-width, user-scalable=no"> +<link rel="help" href="https://drafts.csswg.org/css-device-adapt/"> +<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/5016"> +<style> +body { + margin: 0; +} +#content { + width: 10000px; + height: 10000px; + background: green; +} +</style> + +<div id="content">Content</div> + +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script> +'use strict'; +test(() => { + assert_equals(window.visualViewport.scale, 1.0, + 'visual viewport scale should be 1.0'); +}, 'Page with meta viewport "width=device-width, user-scalable=no" ' + + 'should scale document with very wide content to 1.0.'); +</script> diff --git a/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable-replace-on-regular-sheet.html b/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable-replace-on-regular-sheet.html index 5ce0cbee97a..76bee452a66 100644 --- a/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable-replace-on-regular-sheet.html +++ b/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable-replace-on-regular-sheet.html @@ -4,29 +4,39 @@ <link rel="help" href="https://wicg.github.io/construct-stylesheets/"> <script src = '/resources/testharness.js'></script> <script src = '/resources/testharnessreport.js'></script> -<style id="style">:root { background-color: lime }</style> +<style id="style"> + @import url("support/constructable-import.css"); + :root { background-color: lime } +</style> <script> -test(() => { +promise_test(async () => { + await new Promise(resolve => window.addEventListener("load", resolve)); assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "precondition") let sheet = document.styleSheets[0]; + let childSheet = sheet.cssRules[0].styleSheet; assert_throws_dom("NotAllowedError", () => sheet.replaceSync(":root { background-color: red }"), "replaceSync on non-constructed sheet should throw"); + assert_throws_dom("NotAllowedError", () => childSheet.replaceSync(":root { background-color: red }"), "replaceSync on non-constructed sheet should throw"); assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "old sheet should still apply after replace"); }, "CSSStyleSheet.replaceSync throws NotAllowedError for non-constructed sheets") promise_test(async function(t) { assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "precondition") let sheet = document.styleSheets[0]; + let childSheet = sheet.cssRules[0].styleSheet; await promise_rejects_dom(t, "NotAllowedError", sheet.replace(":root { background-color: red }"), "replace on non-constructed sheet should return a rejected promise"); + await promise_rejects_dom(t, "NotAllowedError", childSheet.replace(":root { background-color: red }"), "replace on non-constructed sheet should return a rejected promise"); assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "old sheet should still apply after replace"); }, "CSSStyleSheet.replace returns a rejected promise for non-constructed sheets") promise_test(async function(t) { assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "precondition") let sheet = document.styleSheets[0]; + let childSheet = sheet.cssRules[0].styleSheet; style.remove() // sheet's associated document becomes null. await promise_rejects_dom(t, "NotAllowedError", sheet.replace(":root { background-color: red }"), "replace on non-constructed sheet should return a rejected promise"); - assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "old sheet should still apply after replace"); + await promise_rejects_dom(t, "NotAllowedError", childSheet.replace(":root { background-color: red }"), "replace on non-constructed sheet should return a rejected promise"); + assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgba(0, 0, 0, 0)", "old sheet was removed, so the default color should apply"); }, "CSSStyleSheet.replace returns a rejected promise for non-constructed sheets that have no associated document") </script> diff --git a/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-some-override.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-some-override.https.sub.html new file mode 100644 index 00000000000..17c9cc6b8db --- /dev/null +++ b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-some-override.https.sub.html @@ -0,0 +1,83 @@ +<!DOCTYPE html> +<html> +<head> + <meta name="timeout" content="long"> + <script src=/resources/testharness.js></script> + <script src=/resources/testharnessreport.js></script> +</head> +<body> + <script src=/feature-policy/resources/featurepolicy.js></script> + <!-- Feature-Policy: fullscreen 'self' cross_origin https://www.example.com; --> + <script> + 'use strict'; + var same_origin = 'https://{{domains[]}}:{{ports[https][0]}}'; + var cross_origin = 'https://{{domains[www]}}:{{ports[https][0]}}'; + var cross_origin1 = 'https://{{domains[www1]}}:{{ports[https][0]}}'; + var same_origin_src = '/feature-policy/resources/feature-policy-allowedfeatures.html'; + var cross_origin_src = cross_origin + same_origin_src; + var cross_origin_src1 = cross_origin1 + same_origin_src; + var data_src = 'data:text/html,<h1>data: URL</h1>'; + // Test feature policy with same_origin_src and cross_origin_src. + var policies = [ + {allow: "*", sameOriginTestExpect: true, crossOriginTestExpect: true, crossOrigin1TestExpect: true, dataOriginTestExpect: false}, + {allow: "'self'", sameOriginTestExpect: true, crossOriginTestExpect: false, crossOrigin1TestExpect: false, dataOriginTestExpect: false}, + {allow: "'none'", sameOriginTestExpect: false, crossOriginTestExpect: false, crossOrigin1TestExpect: false, dataOriginTestExpect: false}, + {allow: "'self' " + cross_origin + " https://www.example.com", sameOriginTestExpect: true, crossOriginTestExpect: true, crossOrigin1TestExpect: false, dataOriginTestExpect: false}]; + + // Test that the allow attribute overrides allowfullscreen. + for (var i = 0; i < policies.length; i++) { + test(function() { + test_frame_policy( + 'fullscreen', same_origin_src, undefined, + policies[i].sameOriginTestExpect, + 'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true); + }, 'Test frame policy on same origin iframe with allow = "' + policies[i].allow + + '" and allowfullscreen.'); + test(function() { + test_frame_policy( + 'fullscreen', cross_origin_src, undefined, + policies[i].crossOriginTestExpect, + 'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true); + }, 'Test frame policy on cross origin iframe with allow = "' + policies[i].allow + + '" and allowfullscreen.'); + test(function() { + test_frame_policy( + 'fullscreen', cross_origin_src1, undefined, + policies[i].crossOrigin1TestExpect, + 'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true); + }, 'Test frame policy on another cross origin iframe with allow = "' + policies[i].allow + + '" and allowfullscreen.'); + test(function() { + test_frame_policy( + 'fullscreen', undefined, true, policies[i].sameOriginTestExpect, + 'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true); + }, 'Test frame policy on srcdoc iframe with allow = "' + policies[i].allow + + '" and allowfullscreen.'); + test(function() { + test_frame_policy( + 'fullscreen', same_origin_src, true, policies[i].sameOriginTestExpect, + 'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true); + }, 'Test frame policy on srcdoc + same origin iframe with allow = "' + policies[i].allow + + '" and allowfullscreen.'); + test(function() { + test_frame_policy( + 'fullscreen', cross_origin_src, true, policies[i].sameOriginTestExpect, + 'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true); + }, 'Test frame policy on srcdoc + cross origin iframe with allow = "' + policies[i].allow + + '" and allowfullscreen.'); + test(function() { + test_frame_policy( + 'fullscreen', cross_origin_src1, true, policies[i].sameOriginTestExpect, + 'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true); + }, 'Test frame policy on srcdoc + another cross origin iframe with allow = "' + policies[i].allow + + '" and allowfullscreen.'); + test(function() { + test_frame_policy( + 'fullscreen', data_src, undefined, policies[i].dataOriginTestExpect, + 'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true); + }, 'Test frame policy on data: URL cross origin iframe with allow = "' + policies[i].allow + + '" and allowfullscreen.'); + } + </script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-some-override.https.sub.html.sub.headers b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-some-override.https.sub.html.sub.headers new file mode 100644 index 00000000000..c2493a08903 --- /dev/null +++ b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-some-override.https.sub.html.sub.headers @@ -0,0 +1 @@ +Feature-Policy: fullscreen 'self' https://{{domains[www]}}:{{ports[https][0]}} https://www.example.com; diff --git a/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html index 9a020f9e6b5..d519743a438 100644 --- a/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html +++ b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html @@ -131,61 +131,6 @@ '" and header policy = "Feature-Policy: fullscreen ' + header_policies[j] + ';".'); } } - - // Test that the allow attribute overrides allowfullscreen. - for (var i = 0; i < policies.length; i++) { - test(function() { - test_frame_policy( - 'fullscreen', same_origin_src, undefined, - policies[i].sameOriginTestExpect, - 'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true); - }, 'Test frame policy on same origin iframe with allow = "' + policies[i].allow + - '" and allowfullscreen.'); - test(function() { - test_frame_policy( - 'fullscreen', cross_origin_src, undefined, - policies[i].crossOriginTestExpect, - 'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true); - }, 'Test frame policy on cross origin iframe with allow = "' + policies[i].allow + - '" and allowfullscreen.'); - test(function() { - test_frame_policy( - 'fullscreen', cross_origin_src1, undefined, - policies[i].crossOrigin1TestExpect, - 'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true); - }, 'Test frame policy on another cross origin iframe with allow = "' + policies[i].allow + - '" and allowfullscreen.'); - test(function() { - test_frame_policy( - 'fullscreen', undefined, true, policies[i].sameOriginTestExpect, - 'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true); - }, 'Test frame policy on srcdoc iframe with allow = "' + policies[i].allow + - '" and allowfullscreen.'); - test(function() { - test_frame_policy( - 'fullscreen', same_origin_src, true, policies[i].sameOriginTestExpect, - 'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true); - }, 'Test frame policy on srcdoc + same origin iframe with allow = "' + policies[i].allow + - '" and allowfullscreen.'); - test(function() { - test_frame_policy( - 'fullscreen', cross_origin_src, true, policies[i].sameOriginTestExpect, - 'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true); - }, 'Test frame policy on srcdoc + cross origin iframe with allow = "' + policies[i].allow + - '" and allowfullscreen.'); - test(function() { - test_frame_policy( - 'fullscreen', cross_origin_src1, true, policies[i].sameOriginTestExpect, - 'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true); - }, 'Test frame policy on srcdoc + another cross origin iframe with allow = "' + policies[i].allow + - '" and allowfullscreen.'); - test(function() { - test_frame_policy( - 'fullscreen', data_src, undefined, policies[i].dataOriginTestExpect, - 'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true); - }, 'Test frame policy on data: URL cross origin iframe with allow = "' + policies[i].allow + - '" and allowfullscreen.'); - } </script> </body> </html> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.html index 69e834f510e..38291495410 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.html @@ -22,8 +22,8 @@ var ctx = offscreenCanvas.getContext('2d'); offscreenCanvas.width = ''; offscreenCanvas.height = ''; -_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); -_assertSame(offscreenCanvas.height, 50, "offscreenCanvas.height", "50"); +_assertSame(offscreenCanvas.width, 0, "offscreenCanvas.width", "0"); +_assertSame(offscreenCanvas.height, 0, "offscreenCanvas.height", "0"); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.worker.js index 1888d2ef132..0fb9808d36b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.worker.js @@ -18,8 +18,8 @@ var ctx = offscreenCanvas.getContext('2d'); offscreenCanvas.width = ''; offscreenCanvas.height = ''; -_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); -_assertSame(offscreenCanvas.height, 50, "offscreenCanvas.height", "50"); +_assertSame(offscreenCanvas.width, 0, "offscreenCanvas.width", "0"); +_assertSame(offscreenCanvas.height, 0, "offscreenCanvas.height", "0"); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.html index cbd9c1e3e3f..55d05b88c3f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.html @@ -22,8 +22,8 @@ var ctx = offscreenCanvas.getContext('2d'); offscreenCanvas.width = ' '; offscreenCanvas.height = ' '; -_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); -_assertSame(offscreenCanvas.height, 50, "offscreenCanvas.height", "50"); +_assertSame(offscreenCanvas.width, 0, "offscreenCanvas.width", "0"); +_assertSame(offscreenCanvas.height, 0, "offscreenCanvas.height", "0"); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js index 21c8cfc32ba..b2e5d6c6726 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js @@ -18,8 +18,8 @@ var ctx = offscreenCanvas.getContext('2d'); offscreenCanvas.width = ' '; offscreenCanvas.height = ' '; -_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); -_assertSame(offscreenCanvas.height, 50, "offscreenCanvas.height", "50"); +_assertSame(offscreenCanvas.width, 0, "offscreenCanvas.width", "0"); +_assertSame(offscreenCanvas.height, 0, "offscreenCanvas.height", "0"); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/tests2d-offscreen.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/tests2d-offscreen.yaml index f4a605c0eca..5fe168a66d5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/tests2d-offscreen.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/tests2d-offscreen.yaml @@ -9778,8 +9778,8 @@ - meta: | cases = [ ("zero", "0", 0), - ("empty", "", None), - ("onlyspace", " ", None), + ("empty", "", 0), + ("onlyspace", " ", 0), ("space", " 100", 100), ("whitespace", "\t\f100", 100), ("plus", "+100", 100), diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/processing-model/preventScroll-textarea.html b/tests/wpt/web-platform-tests/html/interaction/focus/processing-model/preventScroll-textarea.html new file mode 100644 index 00000000000..446284b1863 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/interaction/focus/processing-model/preventScroll-textarea.html @@ -0,0 +1,40 @@ +<!doctype html> +<title>focus(options) - preventScroll on textarea element</title> +<link rel="author" href="https://mozilla.org" title="Mozilla"> +<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1634153"> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<div style="height: 200vh"></div> +<textarea>ABCD</textarea> +<input value="EFGH"> +<button></button> +<div style="height: 200vh"></div> +<script> +promise_test(async function(t) { + await new Promise(resolve => window.addEventListener("load", resolve)); + let elements = document.querySelectorAll("textarea, input, button"); + assert_equals(elements.length, 3, `Precondition`); + for (let element of elements) { + let name = element.nodeName; + assert_equals(window.scrollY, 0, `${name}: Precondition`); + element.focus({ preventScroll: true }); + assert_equals(window.scrollY, 0, `${name}: Should not have scrolled`); + assert_equals(document.activeElement, element, `${name}: Should have been focused`); + + // Wait a couple event loop turns because the original bug was triggered off + // an async event. + await new Promise(resolve => t.step_timeout(resolve, 0)); + await new Promise(resolve => t.step_timeout(resolve, 0)); + assert_equals(window.scrollY, 0, `${name}: Should not have scrolled after a couple event loop ticks`); + assert_equals(document.activeElement, element, `${name}: Should remain focused`); + + // Also wait for rendering, just out of paranoia. + await new Promise(resolve => requestAnimationFrame(resolve)); + await new Promise(resolve => requestAnimationFrame(resolve)); + + assert_equals(window.scrollY, 0, `${name}: Should not have scrolled after rendering`); + assert_equals(document.activeElement, element, `${name}: Should remain focused after rendering`); + } +}, "preventScroll: true on a textarea element"); +</script> diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/http2-context.sub.h2.any.js.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/http2-context.sub.h2.any.js.ini index 6537b7eae07..665258c9d94 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/http2-context.sub.h2.any.js.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/http2-context.sub.h2.any.js.ini @@ -1,4 +1,17 @@ [http2-context.sub.h2.any.sharedworker.html] bug: https://bugs.webkit.org/show_bug.cgi?id=149850 expected: - if product == "safari" or product == "epiphany" or product == "webkit": ERROR + if product == "safari" or product == "epiphany" or product == "webkit" or python_version == 3: ERROR + +[http2-context.sub.h2.any.serviceworker.html] + expected: + if python_version == 3: ERROR + +[http2-context.sub.h2.any.html] + expected: + if python_version == 3: ERROR + +[http2-context.sub.h2.any.worker.html] + expected: + if python_version == 3: ERROR + diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/wpt-server-http.sub.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/wpt-server-http.sub.html.ini index e2f26c7e4b6..b1e18f8948a 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/wpt-server-http.sub.html.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/wpt-server-http.sub.html.ini @@ -18,3 +18,28 @@ [HTTPS protocol, punycode subdomain #2] expected: if product == "epiphany" or product == "webkit": FAIL + + [H2 protocol, no subdomain] + expected: + if python_version == 3: FAIL + + [H2 protocol, www subdomain #1] + expected: + if python_version == 3: FAIL + + [H2 protocol, www subdomain #2] + expected: + if python_version == 3: FAIL + + [H2 protocol, www subdomain #3] + expected: + if python_version == 3: FAIL + + [H2 protocol, punycode subdomain #1] + expected: + if python_version == 3: FAIL + + [H2 protocol, punycode subdomain #2] + expected: + if python_version == 3: FAIL + diff --git a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl index 155bf267a20..f2e31b73528 100644 --- a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl +++ b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl @@ -80,5 +80,8 @@ dictionary NDEFWriteOptions { }; dictionary NDEFScanOptions { + USVString id; + USVString recordType; + USVString mediaType; AbortSignal? signal; }; diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/META.yml b/tests/wpt/web-platform-tests/largest-contentful-paint/META.yml new file mode 100644 index 00000000000..b7e2497681e --- /dev/null +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/META.yml @@ -0,0 +1,4 @@ +spec: https://wicg.github.io/largest-contentful-paint/ +suggested_reviewers: + - npm1 + - yoavweiss diff --git a/tests/wpt/web-platform-tests/layout-instability/META.yml b/tests/wpt/web-platform-tests/layout-instability/META.yml new file mode 100644 index 00000000000..10c6aa36cec --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/META.yml @@ -0,0 +1,4 @@ +spec: https://wicg.github.io/layout-instability/ +suggested_reviewers: + - skobes + - npm1 diff --git a/tests/wpt/web-platform-tests/lint.whitelist b/tests/wpt/web-platform-tests/lint.ignore index 5f793cb6f3e..5f793cb6f3e 100644 --- a/tests/wpt/web-platform-tests/lint.whitelist +++ b/tests/wpt/web-platform-tests/lint.ignore diff --git a/tests/wpt/web-platform-tests/scroll-animations/scroll-timeline-snapshotting.html b/tests/wpt/web-platform-tests/scroll-animations/scroll-timeline-snapshotting.html new file mode 100644 index 00000000000..f2ba23fd4dc --- /dev/null +++ b/tests/wpt/web-platform-tests/scroll-animations/scroll-timeline-snapshotting.html @@ -0,0 +1,41 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>ScrollTimeline snapshotting</title> +<link rel="help" href="https://wicg.github.io/scroll-animations/#avoiding-cycles"> +<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 src="/resources/testdriver-actions.js"></script> +<script src="/web-animations/testcommon.js"></script> + +<style> + body { + height: 800px; + width: 800px; + } +</style> +<div id="log"></div> + +<script> +'use strict'; + +promise_test(async t => { + const scroller = document.scrollingElement; + const maxScroll = scroller.scrollHeight - scroller.clientHeight; + const timeline = new ScrollTimeline( + {scrollSource: scroller, timeRange: maxScroll}); + scroller.scrollTo(0, 0); + assert_equals(scroller.scrollTop, 0, "verify test pre-condition"); + + scroller.scrollBy({top:100, behavior:'smooth'}) + // Wait for the scroll to change. + const startScroll = scroller.scrollTop; + do { + await waitForNextFrame(); + } while(scroller.scrollTop == startScroll); + assert_times_equal(timeline.currentTime, scroller.scrollTop, + 'Scroll timeline current time corresponds to the scroll position.'); +}, 'ScrollTimeline current time is updated after programmatic animated scroll.'); + +</script> diff --git a/tests/wpt/web-platform-tests/tools/ci/ci_wptrunner_infrastructure.sh b/tests/wpt/web-platform-tests/tools/ci/ci_wptrunner_infrastructure.sh index f98385dd95d..89267b50cb6 100755 --- a/tests/wpt/web-platform-tests/tools/ci/ci_wptrunner_infrastructure.sh +++ b/tests/wpt/web-platform-tests/tools/ci/ci_wptrunner_infrastructure.sh @@ -6,19 +6,24 @@ WPT_ROOT=$SCRIPT_DIR/../.. cd $WPT_ROOT test_infrastructure() { - TERM=dumb ./wpt run --log-mach - --yes --manifest ~/meta/MANIFEST.json --metadata infrastructure/metadata/ --install-fonts $1 $PRODUCT infrastructure/ + PY3_FLAG="$2" + TERM=dumb ./wpt $PY3_FLAG run --log-mach - --yes --manifest ~/meta/MANIFEST.json --metadata infrastructure/metadata/ --install-fonts $1 $PRODUCT infrastructure/ } main() { - PRODUCTS=( "firefox" "chrome" ) + if [[ $# -eq 1 && "$1" = "--py3" ]]; then + PRODUCTS=( "chrome" ) + else + PRODUCTS=( "firefox" "chrome" ) + fi ./wpt manifest --rebuild -p ~/meta/MANIFEST.json for PRODUCT in "${PRODUCTS[@]}"; do if [[ "$PRODUCT" == "chrome" ]]; then - test_infrastructure "--binary=$(which google-chrome-unstable) --channel dev" + test_infrastructure "--binary=$(which google-chrome-unstable) --channel dev" "$1" else test_infrastructure "--binary=~/build/firefox/firefox" fi done } -main +main $1 diff --git a/tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml b/tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml index d2d76df13a7..3157fb6f273 100644 --- a/tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml +++ b/tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml @@ -454,3 +454,28 @@ tasks: schedule-if: run-job: - wptrunner_infrastructure + + - infrastructure/ tests (Python 3): + description: >- + Smoketests for wptrunner + vars: + channel: nightly + use: + - wpt-base + - trigger-pr + command: ./tools/ci/ci_wptrunner_infrastructure.sh --py3 + install: + - python3-pip + - libnss3-tools + - libappindicator1 + - fonts-liberation + options: + oom-killer: true + browser: + - chrome + channel: experimental + xvfb: true + hosts: false + schedule-if: + run-job: + - wptrunner_infrastructure diff --git a/tests/wpt/web-platform-tests/tools/ci/tc/tests/test_valid.py b/tests/wpt/web-platform-tests/tools/ci/tc/tests/test_valid.py index aa1ce20cd6d..85c015e521a 100644 --- a/tests/wpt/web-platform-tests/tools/ci/tc/tests/test_valid.py +++ b/tests/wpt/web-platform-tests/tools/ci/tc/tests/test_valid.py @@ -132,7 +132,8 @@ def test_verify_payload(): 'tools/wpt/ tests (Python 3.6)', 'tools/wpt/ tests (Python 3.8)', 'resources/ tests', - 'infrastructure/ tests'}), + 'infrastructure/ tests', + 'infrastructure/ tests (Python 3)'}), # More tests are affected in the actual PR but it shouldn't affect the scheduled tasks ("pr_event_tests_affected.json", True, {"layout-instability/clip-negative-bottom-margin.html", "layout-instability/composited-element-movement.html"}, diff --git a/tests/wpt/web-platform-tests/tools/lint/lint.py b/tests/wpt/web-platform-tests/tools/lint/lint.py index fad93662a44..74b3c8cf930 100644 --- a/tests/wpt/web-platform-tests/tools/lint/lint.py +++ b/tests/wpt/web-platform-tests/tools/lint/lint.py @@ -41,7 +41,12 @@ if MYPY: from typing import Type from typing import Union - Whitelist = Dict[Text, Dict[Text, Set[Optional[int]]]] + # The Ignorelist is a two level dictionary. The top level is indexed by + # error names (e.g. 'TRAILING WHITESPACE'). Each of those then has a map of + # file patterns (e.g. 'foo/*') to a set of specific line numbers for the + # exception. The line numbers are optional; if missing the entire file + # ignores the error. + Ignorelist = Dict[Text, Dict[Text, Set[Optional[int]]]] logger = None # type: Optional[logging.Logger] @@ -75,12 +80,12 @@ ERROR_MSG = """You must fix all errors; for details on how to fix them, see https://web-platform-tests.org/writing-tests/lint-tool.html However, instead of fixing a particular error, it's sometimes -OK to add a line to the lint.whitelist file in the root of the +OK to add a line to the lint.ignore file in the root of the web-platform-tests directory to make the lint tool ignore it. For example, to make the lint tool ignore all '%s' errors in the %s file, -you could add the following line to the lint.whitelist file. +you could add the following line to the lint.ignore file. %s: %s""" @@ -318,14 +323,17 @@ def check_css_globally_unique(repo_root, paths): return errors -def parse_whitelist(f): - # type: (IO[bytes]) -> Tuple[Whitelist, Set[Text]] +def parse_ignorelist(f): + # type: (IO[bytes]) -> Tuple[Ignorelist, Set[Text]] """ - Parse the whitelist file given by `f`, and return the parsed structure. + Parse the ignorelist file given by `f`, and return the parsed structure. + + :returns: a tuple of an Ignorelist and a set of files that are completely + skipped by the linter (i.e. have a '*' entry). """ - data = defaultdict(lambda:defaultdict(set)) # type: Whitelist - ignored_files = set() # type: Set[Text] + data = defaultdict(lambda:defaultdict(set)) # type: Ignorelist + skipped_files = set() # type: Set[Text] for line in f: line = line.strip() @@ -344,37 +352,37 @@ def parse_whitelist(f): file_match = os.path.normcase(file_match) if "*" in error_types: - ignored_files.add(file_match) + skipped_files.add(file_match) else: for error_type in error_types: data[error_type][file_match].add(line_number) - return data, ignored_files + return data, skipped_files -def filter_whitelist_errors(data, errors): - # type: (Whitelist, Sequence[rules.Error]) -> List[rules.Error] +def filter_ignorelist_errors(data, errors): + # type: (Ignorelist, Sequence[rules.Error]) -> List[rules.Error] """ - Filter out those errors that are whitelisted in `data`. + Filter out those errors that are ignored in `data`. """ if not errors: return [] - whitelisted = [False for item in range(len(errors))] + skipped = [False for item in range(len(errors))] for i, (error_type, msg, path, line) in enumerate(errors): normpath = os.path.normcase(path) - # Allow whitelisting all lint errors except the IGNORED PATH lint, - # which explains how to fix it correctly and shouldn't be ignored. + # Allow skipping all lint errors except the IGNORED PATH lint, + # which explains how to fix it correctly and shouldn't be skipped. if error_type in data and error_type != "IGNORED PATH": wl_files = data[error_type] for file_match, allowed_lines in iteritems(wl_files): if None in allowed_lines or line in allowed_lines: if fnmatch.fnmatchcase(normpath, file_match): - whitelisted[i] = True + skipped[i] = True - return [item for i, item in enumerate(errors) if not whitelisted[i]] + return [item for i, item in enumerate(errors) if not skipped[i]] regexps = [item() for item in # type: ignore @@ -805,7 +813,7 @@ def lint_paths(kwargs, wpt_root): force_all = False for path in changed_paths: path = path.replace(os.path.sep, "/") - if path == "lint.whitelist" or path.startswith("tools/lint/"): + if path == "lint.ignore" or path.startswith("tools/lint/"): force_all = True break paths = (list(changed_paths) if not force_all # type: ignore @@ -859,11 +867,11 @@ def lint(repo_root, paths, output_format, ignore_glob=str()): error_count = defaultdict(int) # type: Dict[Text, int] last = None - with open(os.path.join(repo_root, "lint.whitelist")) as f: - whitelist, ignored_files = parse_whitelist(f) + with open(os.path.join(repo_root, "lint.ignore")) as f: + ignorelist, skipped_files = parse_ignorelist(f) if ignore_glob: - ignored_files.add(ignore_glob) + skipped_files.add(ignore_glob) output_errors = {"json": output_errors_json, "markdown": output_errors_markdown, @@ -879,7 +887,7 @@ def lint(repo_root, paths, output_format, ignore_glob=str()): a tuple of the error type and the path otherwise """ - errors = filter_whitelist_errors(whitelist, errors) + errors = filter_ignorelist_errors(ignorelist, errors) if not errors: return None @@ -896,7 +904,7 @@ def lint(repo_root, paths, output_format, ignore_glob=str()): paths.remove(path) continue - if any(fnmatch.fnmatch(path, file_match) for file_match in ignored_files): + if any(fnmatch.fnmatch(path, file_match) for file_match in skipped_files): paths.remove(path) continue diff --git a/tests/wpt/web-platform-tests/tools/lint/tests/dummy/lint.whitelist b/tests/wpt/web-platform-tests/tools/lint/tests/dummy/lint.ignore index a763e4432e5..a763e4432e5 100644 --- a/tests/wpt/web-platform-tests/tools/lint/tests/dummy/lint.whitelist +++ b/tests/wpt/web-platform-tests/tools/lint/tests/dummy/lint.ignore diff --git a/tests/wpt/web-platform-tests/tools/lint/tests/test_lint.py b/tests/wpt/web-platform-tests/tools/lint/tests/test_lint.py index af2b7d3d4aa..43da2f9ff21 100644 --- a/tests/wpt/web-platform-tests/tools/lint/tests/test_lint.py +++ b/tests/wpt/web-platform-tests/tools/lint/tests/test_lint.py @@ -8,7 +8,7 @@ import six from ...localpaths import repo_root from .. import lint as lint_mod -from ..lint import filter_whitelist_errors, parse_whitelist, lint, create_parser +from ..lint import filter_ignorelist_errors, parse_ignorelist, lint, create_parser _dummy_repo = os.path.join(os.path.dirname(__file__), "dummy") @@ -17,8 +17,8 @@ def _mock_lint(name, **kwargs): return mock.patch(lint_mod.__name__ + "." + name, wraps=wrapped, **kwargs) -def test_filter_whitelist_errors(): - whitelist = { +def test_filter_ignorelist_errors(): + ignorelist = { 'CONSOLE': { 'svg/*': {12} }, @@ -26,34 +26,34 @@ def test_filter_whitelist_errors(): 'svg/*': {None} } } - # parse_whitelist normalises the case/path of the match string so need to do the same - whitelist = {e: {os.path.normcase(k): v for k, v in p.items()} - for e, p in whitelist.items()} - # paths passed into filter_whitelist_errors are always Unix style + # parse_ignorelist normalises the case/path of the match string so need to do the same + ignorelist = {e: {os.path.normcase(k): v for k, v in p.items()} + for e, p in ignorelist.items()} + # paths passed into filter_ignorelist_errors are always Unix style filteredfile = 'svg/test.html' unfilteredfile = 'html/test.html' # Tests for passing no errors - filtered = filter_whitelist_errors(whitelist, []) + filtered = filter_ignorelist_errors(ignorelist, []) assert filtered == [] - filtered = filter_whitelist_errors(whitelist, []) + filtered = filter_ignorelist_errors(ignorelist, []) assert filtered == [] # Tests for filtering on file and line number - filtered = filter_whitelist_errors(whitelist, [['CONSOLE', '', filteredfile, 12]]) + filtered = filter_ignorelist_errors(ignorelist, [['CONSOLE', '', filteredfile, 12]]) assert filtered == [] - filtered = filter_whitelist_errors(whitelist, [['CONSOLE', '', unfilteredfile, 12]]) + filtered = filter_ignorelist_errors(ignorelist, [['CONSOLE', '', unfilteredfile, 12]]) assert filtered == [['CONSOLE', '', unfilteredfile, 12]] - filtered = filter_whitelist_errors(whitelist, [['CONSOLE', '', filteredfile, 11]]) + filtered = filter_ignorelist_errors(ignorelist, [['CONSOLE', '', filteredfile, 11]]) assert filtered == [['CONSOLE', '', filteredfile, 11]] # Tests for filtering on just file - filtered = filter_whitelist_errors(whitelist, [['INDENT TABS', '', filteredfile, 12]]) + filtered = filter_ignorelist_errors(ignorelist, [['INDENT TABS', '', filteredfile, 12]]) assert filtered == [] - filtered = filter_whitelist_errors(whitelist, [['INDENT TABS', '', filteredfile, 11]]) + filtered = filter_ignorelist_errors(ignorelist, [['INDENT TABS', '', filteredfile, 11]]) assert filtered == [] - filtered = filter_whitelist_errors(whitelist, [['INDENT TABS', '', unfilteredfile, 11]]) + filtered = filter_ignorelist_errors(ignorelist, [['INDENT TABS', '', unfilteredfile, 11]]) assert filtered == [['INDENT TABS', '', unfilteredfile, 11]] -def test_parse_whitelist(): +def test_parse_ignorelist(): input_buffer = six.StringIO(""" # Comment CR AT EOL: svg/import/* @@ -100,10 +100,10 @@ CR AT EOL, INDENT TABS: html/test2.js: 42 } expected_data = {e: {os.path.normcase(k): v for k, v in p.items()} for e, p in expected_data.items()} - expected_ignored = {os.path.normcase(x) for x in {"*.pdf", "resources/*", "*.png"}} - data, ignored = parse_whitelist(input_buffer) + expected_skipped = {os.path.normcase(x) for x in {"*.pdf", "resources/*", "*.png"}} + data, skipped_files = parse_ignorelist(input_buffer) assert data == expected_data - assert ignored == expected_ignored + assert skipped_files == expected_skipped def test_lint_no_files(caplog): diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py index 9532bd03cb7..f60185eb25f 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py @@ -272,9 +272,6 @@ class FirefoxInstanceManager(object): if self.enable_webrender: env["MOZ_WEBRENDER"] = "1" env["MOZ_ACCELERATED"] = "1" - # Set MOZ_X_SYNC and GDK_SYNCHRONIZE for investigation; bug 1625250. - env["MOZ_X_SYNC"] = "1" - env["GDK_SYNCHRONIZE"] = "1" else: env["MOZ_WEBRENDER"] = "0" @@ -428,8 +425,11 @@ class OutputHandler(object): self.symbols_path = symbols_path if stackfix_dir: + # We hide errors because they cause disconcerting `CRITICAL` + # warnings in web platform test output. self.stack_fixer = get_stack_fixer_function(stackfix_dir, - self.symbols_path) + self.symbols_path, + hideErrors=True) else: self.stack_fixer = None self.asan = asan diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py index 8f828ff43ab..838a3ece325 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py @@ -1,5 +1,6 @@ import os import subprocess +import sys from six.moves.urllib.parse import urljoin from collections import defaultdict from six import iteritems, string_types @@ -102,6 +103,7 @@ class RunInfo(dict): if rev: self["revision"] = rev + self["python_version"] = sys.version_info.major self["product"] = product if debug is not None: self["debug"] = debug diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-offer.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-offer.html index 21ecf17fef6..b4702446613 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-offer.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-offer.html @@ -307,4 +307,22 @@ assert_equals(pc1.pendingRemoteDescription, null); await promise_rejects_dom(t, 'RTCError', p); }, 'setRemoteDescription(invalidOffer) from have-local-offer does not undo rollback'); + + promise_test(async t => { + const pc1 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc2.close()); + pc1.addTransceiver('video'); + const offer = await pc1.createOffer(); + await pc2.setRemoteDescription(offer); + assert_equals(pc2.getTransceivers().length, 1); + await pc2.setRemoteDescription(offer); + assert_equals(pc2.getTransceivers().length, 1); + await pc1.setLocalDescription(offer); + const answer = await pc2.createAnswer(); + await pc2.setLocalDescription(answer); + await pc1.setRemoteDescription(answer); + }, 'repeated sRD(offer) works'); + </script> diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html index 516cb57025b..a031a6015f4 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html @@ -282,7 +282,7 @@ const offer = await pc.createOffer(); await pc.setLocalDescription(offer); assert_not_equals(pc.getTransceivers()[0].sender.transport, null); - await pc.setRemoteDescription({type: "rollback"}); + await pc.setLocalDescription({type: "rollback"}); assert_equals(pc.getTransceivers().length, 1); assert_equals(pc.getTransceivers()[0].mid, null) assert_equals(pc.getTransceivers()[0].sender.transport, null); @@ -306,26 +306,48 @@ }; const stream1 = await getNoiseStream({audio: true}); t.add_cleanup(() => stream1.getTracks().forEach(track => track.stop())); + pc1.addTransceiver(stream1.getTracks()[0], stream1); + + const stream2 = await getNoiseStream({audio: true}); + t.add_cleanup(() => stream2.getTracks().forEach(track => track.stop())); + pc2.addTransceiver(stream2.getTracks()[0], stream2); + + await pc1.setLocalDescription(await pc1.createOffer()); + pc1.onnegotiationneeded = t.step_func(() => assert_true(false, "There should be no negotiationneeded event right now")); + await pc1.setRemoteDescription(await pc2.createOffer()); + await pc1.setLocalDescription(await pc1.createAnswer()); + await signalingstatechangeResolver.promise; + assert_array_equals(states, ['have-local-offer', 'stable', 'have-remote-offer', 'stable']); + await new Promise(r => pc1.onnegotiationneeded = r); + }, "when using addTransceiver, implicit rollback of a local offer should visit stable state, but not fire negotiationneeded until we settle in stable"); + + promise_test(async t => { + const pc1 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc2.close()); + + const states = []; + const signalingstatechangeResolver = new Resolver(); + pc1.onsignalingstatechange = () => { + states.push(pc1.signalingState); + signalingstatechangeResolver.resolve(); + }; + const stream1 = await getNoiseStream({audio: true}); + t.add_cleanup(() => stream1.getTracks().forEach(track => track.stop())); pc1.addTrack(stream1.getTracks()[0], stream1); - const stream2 = await getNoiseStream({video: true}); + const stream2 = await getNoiseStream({audio: true}); t.add_cleanup(() => stream2.getTracks().forEach(track => track.stop())); pc2.addTrack(stream2.getTracks()[0], stream2); await pc1.setLocalDescription(await pc1.createOffer()); - var onnegotiationneededCount = 0; - const negotiationneededResolver = new Resolver(); - pc1.onnegotiationneeded = () => { - onnegotiationneededCount += 1; - negotiationneededResolver.resolve(); - }; + pc1.onnegotiationneeded = t.step_func(() => assert_true(false, "There should be no negotiationneeded event in this test")); await pc1.setRemoteDescription(await pc2.createOffer()); await pc1.setLocalDescription(await pc1.createAnswer()); - await negotiationneededResolver.promise; - assert_equals(onnegotiationneededCount, 1); - await signalingstatechangeResolver.promise; assert_array_equals(states, ['have-local-offer', 'stable', 'have-remote-offer', 'stable']); - }, "implicit rollback of a local offer should visit stable state and fire negotiationneeded"); + await new Promise(r => t.step_timeout(r, 0)); + }, "when using addTrack, implicit rollback of a local offer should visit stable state, but not fire negotiationneeded"); promise_test(async t => { const pc1 = new RTCPeerConnection(); @@ -385,7 +407,7 @@ await pc2.setLocalDescription(await pc2.createOffer()); assert_equals(pc2.getTransceivers().length, 2); assert_not_equals(pc2.getTransceivers()[1].sender.transport, null); - await pc2.setRemoteDescription({type: "rollback"}); + await pc2.setLocalDescription({type: "rollback"}); assert_equals(pc2.getTransceivers().length, 2); // Rollback didn't touch audio transceiver and transport is intact. assert_not_equals(pc2.getTransceivers()[0].sender.transport, null); @@ -423,7 +445,7 @@ assert_equals(pc2.getTransceivers()[0].direction, "sendrecv"); await pc2.setLocalDescription(await pc2.createOffer()); assert_equals(pc2.getTransceivers()[0].direction, "sendrecv"); - await pc2.setRemoteDescription({type: "rollback"}); + await pc2.setLocalDescription({type: "rollback"}); assert_equals(pc2.getTransceivers().length, 1); // setLocalDescription didn't change direction. So direction remains "sendrecv" assert_equals(pc2.getTransceivers()[0].direction, "sendrecv"); diff --git a/tests/wpt/web-platform-tests/webxr/dom-overlay/ar_dom_overlay.https.html b/tests/wpt/web-platform-tests/webxr/dom-overlay/ar_dom_overlay.https.html index e6f7a9d455c..de0cb687449 100644 --- a/tests/wpt/web-platform-tests/webxr/dom-overlay/ar_dom_overlay.https.html +++ b/tests/wpt/web-platform-tests/webxr/dom-overlay/ar_dom_overlay.https.html @@ -137,7 +137,7 @@ let testInput = function(overlayElement, session, fakeDeviceController, t) { session.requestReferenceSpace('viewer').then(function(viewerSpace) { // Press the primary input button and then release it a short time later. debug('got viewerSpace'); - session.requestAnimationFrame((time, xrFrame) => { + requestSkipAnimationFrame(session, (time, xrFrame) => { debug('got rAF 1'); input_source.setOverlayPointerPosition(inner_a.offsetLeft + 1, inner_a.offsetTop + 1); @@ -202,7 +202,7 @@ let testCrossOriginContent = function(overlayElement, session, fakeDeviceControl fakeDeviceController.simulateInputSourceConnection(SCREEN_CONTROLLER); session.requestReferenceSpace('viewer').then(function(viewerSpace) { // Press the primary input button and then release it a short time later. - session.requestAnimationFrame((time, xrFrame) => { + requestSkipAnimationFrame(session, (time, xrFrame) => { debug('got rAF 1'); input_source.setOverlayPointerPosition(iframe.offsetLeft + 1, iframe.offsetTop + 1); diff --git a/tests/wpt/web-platform-tests/webxr/events_input_sources_change.https.html b/tests/wpt/web-platform-tests/webxr/events_input_sources_change.https.html index 107cc9b544e..7c784c34479 100644 --- a/tests/wpt/web-platform-tests/webxr/events_input_sources_change.https.html +++ b/tests/wpt/web-platform-tests/webxr/events_input_sources_change.https.html @@ -101,7 +101,7 @@ let testFunction = function(session, fakeDeviceController, t) { // Make our input source disappear after one frame, and wait an additional // frame for that disappearance to propogate. - session.requestAnimationFrame((time, xrFrame) => { + requestSkipAnimationFrame(session, (time, xrFrame) => { input_source.disconnect(); session.requestAnimationFrame((time, xrFrame) => {}); }); diff --git a/tests/wpt/web-platform-tests/webxr/events_referenceSpace_reset_immersive.https.html b/tests/wpt/web-platform-tests/webxr/events_referenceSpace_reset_immersive.https.html index 2da3788a39a..9643bf61c87 100644 --- a/tests/wpt/web-platform-tests/webxr/events_referenceSpace_reset_immersive.https.html +++ b/tests/wpt/web-platform-tests/webxr/events_referenceSpace_reset_immersive.https.html @@ -40,7 +40,7 @@ let testFunction = function(session, fakeDeviceController, t) { fakeDeviceController.simulateResetPose(); // The triggered resetPose event should arrive after the next Animation Frame - session.requestAnimationFrame(() => {}); + requestSkipAnimationFrame(session, () => {}); return resetPromise; }; diff --git a/tests/wpt/web-platform-tests/webxr/events_session_select.https.html b/tests/wpt/web-platform-tests/webxr/events_session_select.https.html index bc501b69349..f83d3c4f854 100644 --- a/tests/wpt/web-platform-tests/webxr/events_session_select.https.html +++ b/tests/wpt/web-platform-tests/webxr/events_session_select.https.html @@ -92,7 +92,7 @@ let testFunction = function(session, fakeDeviceController, t) { currentReferenceSpace = referenceSpace; // Press the primary input button and then release it a short time later. - session.requestAnimationFrame((time, xrFrame) => { + requestSkipAnimationFrame(session, (time, xrFrame) => { input_source.startSelection(); session.requestAnimationFrame((time, xrFrame) => { diff --git a/tests/wpt/web-platform-tests/webxr/events_session_select_subframe.https.html b/tests/wpt/web-platform-tests/webxr/events_session_select_subframe.https.html index 0e2c23424c0..96fa11713dd 100644 --- a/tests/wpt/web-platform-tests/webxr/events_session_select_subframe.https.html +++ b/tests/wpt/web-platform-tests/webxr/events_session_select_subframe.https.html @@ -51,7 +51,7 @@ let testFunction = function(session, fakeDeviceController, t) { let input_source = fakeDeviceController.simulateInputSourceConnection(VALID_CONTROLLER); // Press the primary input button and then release it a short time later. - session.requestAnimationFrame((time, xrFrame) => { + requestSkipAnimationFrame(session, (time, xrFrame) => { input_source.simulateSelect(); session.requestAnimationFrame((time, xrFrame) => { diff --git a/tests/wpt/web-platform-tests/webxr/events_session_squeeze.https.html b/tests/wpt/web-platform-tests/webxr/events_session_squeeze.https.html index 59e4e3f72c5..101f1dc7c88 100644 --- a/tests/wpt/web-platform-tests/webxr/events_session_squeeze.https.html +++ b/tests/wpt/web-platform-tests/webxr/events_session_squeeze.https.html @@ -114,7 +114,7 @@ let testFunction = function(session, fakeDeviceController, t) { currentReferenceSpace = referenceSpace; //Simulate a grip starting then release it a short time later. - session.requestAnimationFrame((time, xrFrame) => { + requestSkipAnimationFrame(session, (time, xrFrame) => { input_source.updateButtonState(pressed_grip_button); session.requestAnimationFrame((time, xrFrame) => { diff --git a/tests/wpt/web-platform-tests/webxr/gamepads-module/xrInputSource_gamepad_disconnect.https.html b/tests/wpt/web-platform-tests/webxr/gamepads-module/xrInputSource_gamepad_disconnect.https.html index 7b8ff4a59c8..f69f943b5b5 100644 --- a/tests/wpt/web-platform-tests/webxr/gamepads-module/xrInputSource_gamepad_disconnect.https.html +++ b/tests/wpt/web-platform-tests/webxr/gamepads-module/xrInputSource_gamepad_disconnect.https.html @@ -132,7 +132,7 @@ let testFunction = function(session, fakeDeviceController, t) { // 5. Waits for all of the input events to finish propagating, then ends the // session, at which point the controller should be disconnected. return new Promise((resolve) => { - session.requestAnimationFrame(() => { + requestSkipAnimationFrame(session, () => { input_source.setSupportedButtons([]); session.requestAnimationFrame(() => { input_source.setSupportedButtons(gamepadButtons); diff --git a/tests/wpt/web-platform-tests/webxr/gamepads-module/xrInputSource_gamepad_input_registered.https.html b/tests/wpt/web-platform-tests/webxr/gamepads-module/xrInputSource_gamepad_input_registered.https.html index 038e28dcffb..1ff9dcf3b40 100644 --- a/tests/wpt/web-platform-tests/webxr/gamepads-module/xrInputSource_gamepad_input_registered.https.html +++ b/tests/wpt/web-platform-tests/webxr/gamepads-module/xrInputSource_gamepad_input_registered.https.html @@ -69,7 +69,7 @@ let testFunction = function(session, fakeDeviceController, t) { // updated values make their way to the WebXR gamepad and that it does not // fire an inputsourceschange event). return new Promise((resolve) => { - session.requestAnimationFrame(() => { + requestSkipAnimationFrame(session, () => { // Make sure the exposed gamepad has the number of buttons and axes we // requested. // 3 Buttons: trigger, grip, touchpad diff --git a/tests/wpt/web-platform-tests/webxr/getInputPose_handedness.https.html b/tests/wpt/web-platform-tests/webxr/getInputPose_handedness.https.html index 5a310c6dd77..c5c13fd08f4 100644 --- a/tests/wpt/web-platform-tests/webxr/getInputPose_handedness.https.html +++ b/tests/wpt/web-platform-tests/webxr/getInputPose_handedness.https.html @@ -75,7 +75,7 @@ let testFunction = } // Handedness only updates during an XR frame. - session.requestAnimationFrame(CheckNone); + requestSkipAnimationFrame(session, CheckNone); }); xr_session_promise_test( diff --git a/tests/wpt/web-platform-tests/webxr/getInputPose_pointer.https.html b/tests/wpt/web-platform-tests/webxr/getInputPose_pointer.https.html index 9c2bf5217f8..30dbe4c5304 100644 --- a/tests/wpt/web-platform-tests/webxr/getInputPose_pointer.https.html +++ b/tests/wpt/web-platform-tests/webxr/getInputPose_pointer.https.html @@ -87,7 +87,7 @@ let testFunction = } // Can only request input poses in an xr frame. - session.requestAnimationFrame(CheckInvalidGrip); + requestSkipAnimationFrame(session, CheckInvalidGrip); }); }); diff --git a/tests/wpt/web-platform-tests/webxr/getViewerPose_emulatedPosition.https.html b/tests/wpt/web-platform-tests/webxr/getViewerPose_emulatedPosition.https.html index d3f83dad26a..acba79136a2 100644 --- a/tests/wpt/web-platform-tests/webxr/getViewerPose_emulatedPosition.https.html +++ b/tests/wpt/web-platform-tests/webxr/getViewerPose_emulatedPosition.https.html @@ -45,7 +45,7 @@ resolve(); } - session.requestAnimationFrame(CheckPositionNotEmulated); + requestSkipAnimationFrame(session, CheckPositionNotEmulated); })); }; diff --git a/tests/wpt/web-platform-tests/webxr/hit-test/ar_hittest_subscription_inputSources.https.html b/tests/wpt/web-platform-tests/webxr/hit-test/ar_hittest_subscription_inputSources.https.html index 7b609d5e3a7..d419055ab26 100644 --- a/tests/wpt/web-platform-tests/webxr/hit-test/ar_hittest_subscription_inputSources.https.html +++ b/tests/wpt/web-platform-tests/webxr/hit-test/ar_hittest_subscription_inputSources.https.html @@ -55,7 +55,7 @@ let testFunctionGenerator = function(ray, expectedPoses, inputFromPointer, nextF const input_source_controller = fakeDeviceController.simulateInputSourceConnection(screen_controller_init); - session.requestAnimationFrame((time, frame) => { + requestSkipAnimationFrame(session, (time, frame) => { t.step(() => { assert_equals(session.inputSources.length, 1); }); diff --git a/tests/wpt/web-platform-tests/webxr/hit-test/ar_hittest_subscription_transientInputSources.https.html b/tests/wpt/web-platform-tests/webxr/hit-test/ar_hittest_subscription_transientInputSources.https.html index 385bb667b31..e38e9c601b3 100644 --- a/tests/wpt/web-platform-tests/webxr/hit-test/ar_hittest_subscription_transientInputSources.https.html +++ b/tests/wpt/web-platform-tests/webxr/hit-test/ar_hittest_subscription_transientInputSources.https.html @@ -56,7 +56,7 @@ let testFunctionGenerator = function(ray, expectedPoses, inputFromPointer, nextF const input_source_controller = fakeDeviceController.simulateInputSourceConnection(screen_controller_init); - session.requestAnimationFrame((time, frame) => { + requestSkipAnimationFrame(session, (time, frame) => { debug('rAF 1'); t.step(() => { assert_equals(session.inputSources.length, 1); diff --git a/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js b/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js index fcee8930367..7c157518755 100644 --- a/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js +++ b/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js @@ -44,6 +44,18 @@ function xr_promise_test(name, func, properties) { }, name, properties); } +// A utility function for waiting one animation frame before running the callback +// +// This is only needed after calling FakeXRDevice methods outside of an animation frame +// +// This is so that we can paper over the potential race allowed by the "next animation frame" +// concept https://immersive-web.github.io/webxr-test-api/#xrsession-next-animation-frame +function requestSkipAnimationFrame(session, callback) { + session.requestAnimationFrame(() => { + session.requestAnimationFrame(callback); + }); +} + // A test function which runs through the common steps of requesting a session. // Calls the passed in test function with the session, the controller for the // device, and the test object. diff --git a/tests/wpt/web-platform-tests/webxr/xrBoundedReferenceSpace_updates.https.html b/tests/wpt/web-platform-tests/webxr/xrBoundedReferenceSpace_updates.https.html index 9043d59e3b2..3d504043665 100644 --- a/tests/wpt/web-platform-tests/webxr/xrBoundedReferenceSpace_updates.https.html +++ b/tests/wpt/web-platform-tests/webxr/xrBoundedReferenceSpace_updates.https.html @@ -49,7 +49,7 @@ let testFunction = function(session, fakeDeviceController, t) { // Now set the bounds explicitly and check again on the next frame. fakeDeviceController.setBoundsGeometry(VALID_BOUNDS); - session.requestAnimationFrame(onFrame); + requestSkipAnimationFrame(session, onFrame); }); }); }; diff --git a/tests/wpt/web-platform-tests/webxr/xrInputSource_add_remove.https.html b/tests/wpt/web-platform-tests/webxr/xrInputSource_add_remove.https.html index 33264ddd68a..7764017910d 100644 --- a/tests/wpt/web-platform-tests/webxr/xrInputSource_add_remove.https.html +++ b/tests/wpt/web-platform-tests/webxr/xrInputSource_add_remove.https.html @@ -21,7 +21,7 @@ let testFunction = (session, fakeDeviceController, t) => new Promise((resolve) = let input_source_1 = fakeDeviceController.simulateInputSourceConnection(RIGHT_CONTROLLER); - session.requestAnimationFrame((time, xrFrame) => { + requestSkipAnimationFrame(session, (time, xrFrame) => { let input_sources = session.inputSources; t.step( () => { diff --git a/tests/wpt/web-platform-tests/webxr/xrInputSource_emulatedPosition.https.html b/tests/wpt/web-platform-tests/webxr/xrInputSource_emulatedPosition.https.html index 7b0fda45087..2bc21ffe6c3 100644 --- a/tests/wpt/web-platform-tests/webxr/xrInputSource_emulatedPosition.https.html +++ b/tests/wpt/web-platform-tests/webxr/xrInputSource_emulatedPosition.https.html @@ -53,7 +53,7 @@ let testFunction = } // Can only request input poses in an xr frame. - session.requestAnimationFrame(CheckPositionNotEmulated); + requestSkipAnimationFrame(session, CheckPositionNotEmulated); }); }); diff --git a/tests/wpt/web-platform-tests/webxr/xrInputSource_profiles.https.html b/tests/wpt/web-platform-tests/webxr/xrInputSource_profiles.https.html index 32073c631f8..f55e682b675 100644 --- a/tests/wpt/web-platform-tests/webxr/xrInputSource_profiles.https.html +++ b/tests/wpt/web-platform-tests/webxr/xrInputSource_profiles.https.html @@ -22,7 +22,7 @@ let testFunction = function(session, fakeDeviceController, t) { // Input events and state changes need one frame to propagate, which is why we // are requesting an animation frame before checking the profiles list. return new Promise((resolve) => { - session.requestAnimationFrame(() => { + requestSkipAnimationFrame(session, () => { let profiles = session.inputSources[0].profiles; t.step(() => { assert_equals(profiles.length, 2); diff --git a/tests/wpt/web-platform-tests/webxr/xrInputSource_sameObject.https.html b/tests/wpt/web-platform-tests/webxr/xrInputSource_sameObject.https.html index 78240de2f90..305e5f9e0fc 100644 --- a/tests/wpt/web-platform-tests/webxr/xrInputSource_sameObject.https.html +++ b/tests/wpt/web-platform-tests/webxr/xrInputSource_sameObject.https.html @@ -18,7 +18,7 @@ let testFunction = function(session, fakeDeviceController, t) { profiles: ["foo", "bar"] }); - session.requestAnimationFrame((time, xrFrame) => { + requestSkipAnimationFrame(session, (time, xrFrame) => { let source = session.inputSources[0]; let targetRaySpace = source.targetRaySpace; let gripSpace = source.gripSpace; diff --git a/tests/wpt/web-platform-tests/webxr/xrPose_transform_sameObject.https.html b/tests/wpt/web-platform-tests/webxr/xrPose_transform_sameObject.https.html index 79eed4cdec4..8e2239cff16 100644 --- a/tests/wpt/web-platform-tests/webxr/xrPose_transform_sameObject.https.html +++ b/tests/wpt/web-platform-tests/webxr/xrPose_transform_sameObject.https.html @@ -19,7 +19,7 @@ let testFunction = function(session, fakeDeviceController, t) { }); session.requestReferenceSpace('local').then((referenceSpace) => { - session.requestAnimationFrame((time, xrFrame) => { + requestSkipAnimationFrame(session, (time, xrFrame) => { let source = session.inputSources[0]; let input_pose = xrFrame.getPose(source.targetRaySpace, referenceSpace); diff --git a/tests/wpt/web-platform-tests/webxr/xrReferenceSpace_originOffset.https.html b/tests/wpt/web-platform-tests/webxr/xrReferenceSpace_originOffset.https.html index 3d244b8ce29..f6929f27af0 100644 --- a/tests/wpt/web-platform-tests/webxr/xrReferenceSpace_originOffset.https.html +++ b/tests/wpt/web-platform-tests/webxr/xrReferenceSpace_originOffset.https.html @@ -126,7 +126,7 @@ let testFunction = } // Can only request input poses in an xr frame. - session.requestAnimationFrame(OnFrame); + requestSkipAnimationFrame(session, OnFrame); }); }); diff --git a/tests/wpt/web-platform-tests/webxr/xrReferenceSpace_originOffsetBounded.https.html b/tests/wpt/web-platform-tests/webxr/xrReferenceSpace_originOffsetBounded.https.html index c50aff2515b..7ce4acafd35 100644 --- a/tests/wpt/web-platform-tests/webxr/xrReferenceSpace_originOffsetBounded.https.html +++ b/tests/wpt/web-platform-tests/webxr/xrReferenceSpace_originOffsetBounded.https.html @@ -67,7 +67,7 @@ function testFunction(session, fakeDeviceController, t) { }); return new Promise((resolve, reject) => { - session.requestAnimationFrame((time, frame) => { + requestSkipAnimationFrame(session, (time, frame) => { let input_source = session.inputSources[0]; session.requestReferenceSpace('bounded-floor').then((referenceSpace) => { diff --git a/tests/wpt/web-platform-tests/webxr/xrSession_input_events_end.https.html b/tests/wpt/web-platform-tests/webxr/xrSession_input_events_end.https.html index a932aad2fad..636562dd6ec 100644 --- a/tests/wpt/web-platform-tests/webxr/xrSession_input_events_end.https.html +++ b/tests/wpt/web-platform-tests/webxr/xrSession_input_events_end.https.html @@ -42,7 +42,7 @@ let testFunction = function(session, fakeDeviceController, t, sessionObjects) { profiles: [], selectionClicked: true }); - session.requestAnimationFrame(() => {}); + requestSkipAnimationFrame(session, () => {}); } function sessionEndTest(endEvent, eventOrder) { diff --git a/tests/wpt/web-platform-tests/webxr/xrSession_sameObject.https.html b/tests/wpt/web-platform-tests/webxr/xrSession_sameObject.https.html index 837fa0a008d..66aeef81c50 100644 --- a/tests/wpt/web-platform-tests/webxr/xrSession_sameObject.https.html +++ b/tests/wpt/web-platform-tests/webxr/xrSession_sameObject.https.html @@ -18,7 +18,7 @@ let testFunction = function(session, fakeDeviceController, t) { profiles: ["foo", "bar"] }); - session.requestAnimationFrame((time, xrFrame) => { + requestSkipAnimationFrame(session, (time, xrFrame) => { let renderState = session.renderState; let sources = session.inputSources; diff --git a/tests/wpt/web-platform-tests/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html b/tests/wpt/web-platform-tests/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html index 3f33cf354b8..967291609c0 100644 --- a/tests/wpt/web-platform-tests/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html +++ b/tests/wpt/web-platform-tests/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html @@ -36,9 +36,7 @@ let testFunction = function(session, fakeDeviceController, t) { // Need to request one animation frame for the new stage transform to // propagate before we check that it's what we expect. - session.requestAnimationFrame(() => { - session.requestAnimationFrame(onFrame); - }); + requestSkipAnimationFrame(session, onFrame); }); } @@ -58,9 +56,7 @@ let testFunction = function(session, fakeDeviceController, t) { // Need to wait one frame for the removal to propagate before we check that // everything is at the expected emulated position. - session.requestAnimationFrame(() => { - session.requestAnimationFrame(onFirstFrame); - }); + requestSkipAnimationFrame(session, onFirstFrame); })); }; diff --git a/tests/wpt/web-platform-tests/xhr/resources/access-control-preflight-denied.py b/tests/wpt/web-platform-tests/xhr/resources/access-control-preflight-denied.py index 889ee6b0eca..e8010cc0ef7 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/access-control-preflight-denied.py +++ b/tests/wpt/web-platform-tests/xhr/resources/access-control-preflight-denied.py @@ -39,7 +39,7 @@ def main(request, response): resetState(token) response.content = "Request successfully blocked." else: - setState("Deny Ignored") + setState(token, "Deny Ignored") fail("The request was not denied.") elif state == "Deny Ignored": resetState(token) diff --git a/tests/wpt/webgl/meta/conformance2/rendering/draw-buffers.html.ini b/tests/wpt/webgl/meta/conformance2/rendering/draw-buffers.html.ini index 9c4a3ba41db..ea0b2809894 100644 --- a/tests/wpt/webgl/meta/conformance2/rendering/draw-buffers.html.ini +++ b/tests/wpt/webgl/meta/conformance2/rendering/draw-buffers.html.ini @@ -98,3 +98,9 @@ [WebGL test #47: attachment 2 should be 0,255,0,255\nat (0, 0) expected: 0,255,0,255 was 0,0,0,0] expected: FAIL + [WebGL test #49: attachment 4 should be 0,255,0,255\nat (0, 0) expected: 0,255,0,255 was 0,0,0,0] + expected: FAIL + + [WebGL test #52: attachment 7 should be 0,255,0,255\nat (0, 0) expected: 0,255,0,255 was 255,255,0,0] + expected: FAIL + |