aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2019-07-06 11:49:30 -0400
committerGitHub <noreply@github.com>2019-07-06 11:49:30 -0400
commit9939c1ee07496fe6ab6d30781fb6be127f31efc6 (patch)
tree3c7cac089801eed3a72b0ed70ed3c4d872223e24
parentba0628ae20cac54db22c820294f95859d0a99a97 (diff)
parentc8e806d0effbe6242dd9934ea9482e48a2d401cc (diff)
downloadservo-9939c1ee07496fe6ab6d30781fb6be127f31efc6.tar.gz
servo-9939c1ee07496fe6ab6d30781fb6be127f31efc6.zip
Auto merge of #23724 - servo-wpt-sync:wpt_update_06-07-2019, r=servo-wpt-sync
Sync WPT with upstream (06-07-2019) Automated downstream sync of changes from upstream as of 06-07-2019. [no-wpt-sync] <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23724) <!-- Reviewable:end -->
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini6
-rw-r--r--tests/wpt/metadata/MANIFEST.json402
-rw-r--r--tests/wpt/metadata/css/css-animations/responsive/column-rule-color-001.html.ini7
-rw-r--r--tests/wpt/metadata/css/css-animations/responsive/column-width-001.html.ini10
-rw-r--r--tests/wpt/metadata/css/css-paint-api/hidpi/canvas-transform.https.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html.ini2
-rw-r--r--tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini6
-rw-r--r--tests/wpt/metadata/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html.ini28
-rw-r--r--tests/wpt/metadata/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html.ini28
-rw-r--r--tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html.ini28
-rw-r--r--tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html.ini28
-rw-r--r--tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html.ini27
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini6
-rw-r--r--tests/wpt/metadata/fetch/content-type/script.window.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini2
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini34
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini34
-rw-r--r--tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini7
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini4
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini4
-rw-r--r--tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini3
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini6
-rw-r--r--tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini2
-rw-r--r--tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini1
-rw-r--r--tests/wpt/web-platform-tests/animation-worklet/worklet-animation-animator-name.https.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-animations/responsive/column-rule-color-001.html61
-rw-r--r--tests/wpt/web-platform-tests/css/css-animations/responsive/column-width-001.html76
-rw-r--r--tests/wpt/web-platform-tests/css/css-masking/parsing/mask-position-invalid.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-masking/parsing/mask-position-valid.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-paint-api/hidpi/canvas-transform-ref.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-paint-api/hidpi/canvas-transform.https.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-nested-ref.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-nested.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-ref.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/first-line-on-ancestor-block-ref.html5
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/first-line-on-ancestor-block.html16
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-out-of-flow-ref.html5
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-out-of-flow.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-004-ref.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/parsing/scale-parsing-valid.html4
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-direction-rtl.html77
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html111
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html106
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html112
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html107
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html17
-rw-r--r--tests/wpt/web-platform-tests/element-timing/buffer-before-onload.html33
-rw-r--r--tests/wpt/web-platform-tests/event-timing/bufferbeforeonload.html41
-rw-r--r--tests/wpt/web-platform-tests/event-timing/observethenonload.html19
-rw-r--r--tests/wpt/web-platform-tests/event-timing/onloadthenobserve-firstInput.html44
-rw-r--r--tests/wpt/web-platform-tests/event-timing/onloadthenobserve.html17
-rw-r--r--tests/wpt/web-platform-tests/event-timing/resources/crossiframe-childframe.html3
-rw-r--r--tests/wpt/web-platform-tests/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes-ref.html7
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes.html16
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/iframe-which-content-height-equals-400px.html4
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini8
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/testdriver/actions/actionsWithKeyPressed.html67
-rw-r--r--tests/wpt/web-platform-tests/interfaces/WebIDL.idl3
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webxr.idl9
-rw-r--r--tests/wpt/web-platform-tests/layout-instability/buffer-layout-shift.html7
-rw-r--r--tests/wpt/web-platform-tests/layout-instability/observe-layout-shift.html14
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-remove.tentative.window.js67
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.window.js6
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getFile.tentative.window.js6
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js12
-rw-r--r--tests/wpt/web-platform-tests/pointerevents/pointerevent_mouse_pointercapture_in_frame.html143
-rw-r--r--tests/wpt/web-platform-tests/pointerevents/pointerevent_pointercapture_in_frame.html160
-rw-r--r--tests/wpt/web-platform-tests/pointerevents/resources/pointerevent_pointercapture-iframe.html (renamed from tests/wpt/web-platform-tests/pointerevents/resources/pointerevent_mouse_pointercapture-iframe.html)7
-rw-r--r--tests/wpt/web-platform-tests/preload/subresource-integrity.html6
-rw-r--r--tests/wpt/web-platform-tests/resources/sriharness.js15
-rw-r--r--tests/wpt/web-platform-tests/subresource-integrity/image.pngbin0 -> 18299 bytes
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NFCWriter_push.https.html2
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCStats-helper.js8
-rw-r--r--tests/wpt/web-platform-tests/xhr/sync-xhr-and-window-onload.html25
93 files changed, 2115 insertions, 594 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
index 947e223fb28..3a3d15b8406 100644
--- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
@@ -14,6 +14,9 @@
[Revoke blob URL after creating Request, will fetch]
expected: FAIL
+ [Revoke blob URL after calling fetch, fetch should succeed]
+ expected: FAIL
+
[url-with-fetch.any.html]
[Untitled]
@@ -34,3 +37,6 @@
[Revoke blob URL after creating Request, will fetch]
expected: FAIL
+ [Revoke blob URL after calling fetch, fetch should succeed]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 720c7b25a00..5f6e6770eca 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -133615,6 +133615,18 @@
{}
]
],
+ "css/css-paint-api/hidpi/canvas-transform.https.html": [
+ [
+ "css/css-paint-api/hidpi/canvas-transform.https.html",
+ [
+ [
+ "/css/css-paint-api/hidpi/canvas-transform-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-paint-api/hidpi/device-pixel-ratio.https.html": [
[
"css/css-paint-api/hidpi/device-pixel-ratio.https.html",
@@ -135571,6 +135583,54 @@
{}
]
],
+ "css/css-pseudo/first-line-change-inline-color-nested.html": [
+ [
+ "css/css-pseudo/first-line-change-inline-color-nested.html",
+ [
+ [
+ "/css/css-pseudo/first-line-change-inline-color-nested-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-pseudo/first-line-change-inline-color.html": [
+ [
+ "css/css-pseudo/first-line-change-inline-color.html",
+ [
+ [
+ "/css/css-pseudo/first-line-change-inline-color-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-pseudo/first-line-on-ancestor-block.html": [
+ [
+ "css/css-pseudo/first-line-on-ancestor-block.html",
+ [
+ [
+ "/css/css-pseudo/first-line-on-ancestor-block-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-pseudo/first-line-with-out-of-flow.html": [
+ [
+ "css/css-pseudo/first-line-with-out-of-flow.html",
+ [
+ [
+ "/css/css-pseudo/first-line-with-out-of-flow-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-pseudo/marker-and-other-pseudo-elements.html": [
[
"css/css-pseudo/marker-and-other-pseudo-elements.html",
@@ -149807,6 +149867,42 @@
{}
]
],
+ "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html": [
+ [
+ "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html",
+ [
+ [
+ "/css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-004-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html": [
+ [
+ "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html",
+ [
+ [
+ "/css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-004-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html": [
+ [
+ "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html",
+ [
+ [
+ "/css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-004-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text/white-space/white-space-wrap-after-nowrap-001.html": [
[
"css/css-text/white-space/white-space-wrap-after-nowrap-001.html",
@@ -200533,6 +200629,18 @@
{}
]
],
+ "html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes.html": [
+ [
+ "html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes.html",
+ [
+ [
+ "/html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"html/semantics/embedded-content/the-iframe-element/iframe-with-base.html": [
[
"html/semantics/embedded-content/the-iframe-element/iframe-with-base.html",
@@ -250168,6 +250276,9 @@
"css/css-paint-api/geometry-with-float-size-ref.html": [
[]
],
+ "css/css-paint-api/hidpi/canvas-transform-ref.html": [
+ []
+ ],
"css/css-paint-api/hidpi/device-pixel-ratio-ref.html": [
[]
],
@@ -250390,6 +250501,18 @@
"css/css-pseudo/first-line-and-placeholder-ref.html": [
[]
],
+ "css/css-pseudo/first-line-change-inline-color-nested-ref.html": [
+ []
+ ],
+ "css/css-pseudo/first-line-change-inline-color-ref.html": [
+ []
+ ],
+ "css/css-pseudo/first-line-on-ancestor-block-ref.html": [
+ []
+ ],
+ "css/css-pseudo/first-line-with-out-of-flow-ref.html": [
+ []
+ ],
"css/css-pseudo/marker-and-other-pseudo-elements-ref.html": [
[]
],
@@ -253540,6 +253663,9 @@
"css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-003-ref.html": [
[]
],
+ "css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-004-ref.html": [
+ []
+ ],
"css/css-text/white-space/reference/white-space-wrap-after-nowrap-001-ref.html": [
[]
],
@@ -269302,6 +269428,9 @@
"html/semantics/embedded-content/the-iframe-element/cross_origin_grandchild.html": [
[]
],
+ "html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes-ref.html": [
+ []
+ ],
"html/semantics/embedded-content/the-iframe-element/iframe-with-base-ref.html": [
[]
],
@@ -269359,6 +269488,9 @@
"html/semantics/embedded-content/the-iframe-element/support/iframe-trying-to-navigate-itself.html": [
[]
],
+ "html/semantics/embedded-content/the-iframe-element/support/iframe-which-content-height-equals-400px.html": [
+ []
+ ],
"html/semantics/embedded-content/the-iframe-element/support/iframe_sandbox_001.htm": [
[]
],
@@ -271219,9 +271351,6 @@
"infrastructure/metadata/infrastructure/server/title.any.js.ini": [
[]
],
- "infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini": [
- []
- ],
"infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini": [
[]
],
@@ -273385,10 +273514,10 @@
"pointerevents/resources/pointerevent_fractional_coordinates-iframe.html": [
[]
],
- "pointerevents/resources/pointerevent_mouse_pointercapture-iframe.html": [
+ "pointerevents/resources/pointerevent_pointerId_scope-iframe.html": [
[]
],
- "pointerevents/resources/pointerevent_pointerId_scope-iframe.html": [
+ "pointerevents/resources/pointerevent_pointercapture-iframe.html": [
[]
],
"pointerevents/resources/pointerevent_pointerrawupdate_in_pointerlock-iframe.html": [
@@ -278149,6 +278278,9 @@
"subresource-integrity/ed25519-style.css.headers": [
[]
],
+ "subresource-integrity/image.png": [
+ []
+ ],
"subresource-integrity/script.js": [
[]
],
@@ -301768,6 +301900,12 @@
{}
]
],
+ "animation-worklet/worklet-animation-animator-name.https.html": [
+ [
+ "animation-worklet/worklet-animation-animator-name.https.html",
+ {}
+ ]
+ ],
"animation-worklet/worklet-animation-creation.https.html": [
[
"animation-worklet/worklet-animation-creation.https.html",
@@ -308493,6 +308631,18 @@
{}
]
],
+ "css/css-animations/responsive/column-rule-color-001.html": [
+ [
+ "css/css-animations/responsive/column-rule-color-001.html",
+ {}
+ ]
+ ],
+ "css/css-animations/responsive/column-width-001.html": [
+ [
+ "css/css-animations/responsive/column-width-001.html",
+ {}
+ ]
+ ],
"css/css-animations/style-animation-parsing.html": [
[
"css/css-animations/style-animation-parsing.html",
@@ -313257,6 +313407,18 @@
{}
]
],
+ "css/css-masking/parsing/mask-position-invalid.html": [
+ [
+ "css/css-masking/parsing/mask-position-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-masking/parsing/mask-position-valid.html": [
+ [
+ "css/css-masking/parsing/mask-position-valid.html",
+ {}
+ ]
+ ],
"css/css-multicol/abspos-in-multicol-with-spanner-crash.html": [
[
"css/css-multicol/abspos-in-multicol-with-spanner-crash.html",
@@ -322471,9 +322633,15 @@
{}
]
],
- "css/cssom-view/scrollIntoView-direction-rtl.html": [
+ "css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html": [
+ [
+ "css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html",
+ {}
+ ]
+ ],
+ "css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html": [
[
- "css/cssom-view/scrollIntoView-direction-rtl.html",
+ "css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html",
{}
]
],
@@ -322507,6 +322675,18 @@
{}
]
],
+ "css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html": [
+ [
+ "css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html",
+ {}
+ ]
+ ],
+ "css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html": [
+ [
+ "css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html",
+ {}
+ ]
+ ],
"css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html": [
[
"css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html",
@@ -357198,14 +357378,6 @@
{}
]
],
- "infrastructure/testdriver/actions/actionsWithKeyPressed.html": [
- [
- "infrastructure/testdriver/actions/actionsWithKeyPressed.html",
- {
- "testdriver": true
- }
- ]
- ],
"infrastructure/testdriver/actions/elementPosition.html": [
[
"infrastructure/testdriver/actions/elementPosition.html",
@@ -373743,14 +373915,6 @@
}
]
],
- "pointerevents/pointerevent_mouse_pointercapture_in_frame.html": [
- [
- "pointerevents/pointerevent_mouse_pointercapture_in_frame.html",
- {
- "testdriver": true
- }
- ]
- ],
"pointerevents/pointerevent_on_event_handlers.html": [
[
"pointerevents/pointerevent_on_event_handlers.html",
@@ -373765,6 +373929,14 @@
}
]
],
+ "pointerevents/pointerevent_pointercapture_in_frame.html": [
+ [
+ "pointerevents/pointerevent_pointercapture_in_frame.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"pointerevents/pointerevent_pointerenter_does_not_bubble.html": [
[
"pointerevents/pointerevent_pointerenter_does_not_bubble.html",
@@ -412985,6 +413157,12 @@
}
]
],
+ "xhr/sync-xhr-and-window-onload.html": [
+ [
+ "xhr/sync-xhr-and-window-onload.html",
+ {}
+ ]
+ ],
"xhr/sync-xhr-supported-by-feature-policy.html": [
[
"xhr/sync-xhr-supported-by-feature-policy.html",
@@ -441860,6 +442038,10 @@
"dba3aa8dc8dfa6f674477d9e71614b7b7288d9dd",
"testharness"
],
+ "animation-worklet/worklet-animation-animator-name.https.html": [
+ "bd886ccd02094c8b1eee1fb31a1700f940ba2cbd",
+ "testharness"
+ ],
"animation-worklet/worklet-animation-cancel-ref.html": [
"d44927374703ef2b38d3ed0c9570609b62baec65",
"support"
@@ -529420,6 +529602,14 @@
"fb74d7fa7d062d60153d47913df9eb2b0c7267c8",
"testharness"
],
+ "css/css-animations/responsive/column-rule-color-001.html": [
+ "9953db43545990d9f6e0941ee89f10dc83e46438",
+ "testharness"
+ ],
+ "css/css-animations/responsive/column-width-001.html": [
+ "7697eec324064dd6bd1fd75f16fdff5d3050315d",
+ "testharness"
+ ],
"css/css-animations/style-animation-parsing.html": [
"792fda33ed8b0bacf355e62066ec05d54cc5c729",
"testharness"
@@ -554160,6 +554350,14 @@
"bd14dfd1b5c9acb697dc4f7afc21e1fb656a377a",
"testharness"
],
+ "css/css-masking/parsing/mask-position-invalid.html": [
+ "c246a1e795eea6a9e31fe1155d55ceb8532d6032",
+ "testharness"
+ ],
+ "css/css-masking/parsing/mask-position-valid.html": [
+ "efdf55a0182ae701d459c1206b18ba74625e5f95",
+ "testharness"
+ ],
"css/css-masking/test-mask-ref.html": [
"938235acbd36309fb969c55f161239bcd5ab969e",
"support"
@@ -556728,6 +556926,14 @@
"65477e4b3bf369d511113cbe81d04531281edc4c",
"reftest"
],
+ "css/css-paint-api/hidpi/canvas-transform-ref.html": [
+ "48d46e8e56109a87d9bf2c637f016c7ad52c0a5f",
+ "support"
+ ],
+ "css/css-paint-api/hidpi/canvas-transform.https.html": [
+ "d160a8673c21d17e58ca20eb437c22cd76c97104",
+ "reftest"
+ ],
"css/css-paint-api/hidpi/device-pixel-ratio-ref.html": [
"205cf8963bf639f8aae23457fa9b71d16c9c2c90",
"support"
@@ -558048,10 +558254,42 @@
"2db3480feb5928c6a39fbf6084cf07bec0ba4767",
"reftest"
],
+ "css/css-pseudo/first-line-change-inline-color-nested-ref.html": [
+ "84becd9a78d186ba3c0e658746fd56aef8039b74",
+ "support"
+ ],
+ "css/css-pseudo/first-line-change-inline-color-nested.html": [
+ "4a58f1ea5b623ffa5acd2993be16de399cd24127",
+ "reftest"
+ ],
+ "css/css-pseudo/first-line-change-inline-color-ref.html": [
+ "84becd9a78d186ba3c0e658746fd56aef8039b74",
+ "support"
+ ],
+ "css/css-pseudo/first-line-change-inline-color.html": [
+ "2a5be916b01d5d12eec1a4e81d912d95c7036916",
+ "reftest"
+ ],
"css/css-pseudo/first-line-first-letter-insert-crash.html": [
"17f035dedf1ef8df71918a1eacb01e1f0b80d46b",
"testharness"
],
+ "css/css-pseudo/first-line-on-ancestor-block-ref.html": [
+ "7193bf25eb88c5443457480f7ce27782acd9473a",
+ "support"
+ ],
+ "css/css-pseudo/first-line-on-ancestor-block.html": [
+ "6b797107df80156b511b9dc58c5ee40d6114cfc4",
+ "reftest"
+ ],
+ "css/css-pseudo/first-line-with-out-of-flow-ref.html": [
+ "7193bf25eb88c5443457480f7ce27782acd9473a",
+ "support"
+ ],
+ "css/css-pseudo/first-line-with-out-of-flow.html": [
+ "798ecf8264e2ddb38257c6cb1174bcc069c6e6d1",
+ "reftest"
+ ],
"css/css-pseudo/idlharness.html": [
"4c113fc9091fb773cabd77f1419fac9a2e99650b",
"testharness"
@@ -570312,6 +570550,10 @@
"1b50b667c03adae2db1f985e847b0106f9c6ad07",
"support"
],
+ "css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-004-ref.html": [
+ "72e4642022af70b543990934c615471600b2bd46",
+ "support"
+ ],
"css/css-text/white-space/reference/white-space-wrap-after-nowrap-001-ref.html": [
"80b2260cbbe6122e90c297ab1f2cd83917712030",
"support"
@@ -570540,6 +570782,18 @@
"15e47a7adba3d4fc5534eab8811e3c91518aa771",
"reftest"
],
+ "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html": [
+ "becd4638eb068b26c00851390e393026796d7675",
+ "reftest"
+ ],
+ "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html": [
+ "f62e2e5c005d4043c02894eed87422fa6c59b824",
+ "reftest"
+ ],
+ "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html": [
+ "820012e6ca10dec9065f7c5869c47b065b426033",
+ "reftest"
+ ],
"css/css-text/white-space/white-space-wrap-after-nowrap-001.html": [
"a484f1cf9167e468063cf2205493b8e71a254470",
"reftest"
@@ -572185,7 +572439,7 @@
"testharness"
],
"css/css-transforms/parsing/scale-parsing-valid.html": [
- "b9afbc848a3b5ff3033d070b4f080245e0d822c5",
+ "2ae12222f1361b6b0016ce235fad92d03b3bff45",
"testharness"
],
"css/css-transforms/parsing/transform-box-invalid.html": [
@@ -589544,8 +589798,12 @@
"cc67ce76ed9d432656b37c9c81a20e86d1bafc8d",
"testharness"
],
- "css/cssom-view/scrollIntoView-direction-rtl.html": [
- "fea92d1da5700ee0b1888941737cec9fbf9e98be",
+ "css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html": [
+ "3ef9d62a3654c5ab2dd061e34799053daeefc3a4",
+ "testharness"
+ ],
+ "css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html": [
+ "49d5f5d8653260d7673268e5eb1e9491fed21f2b",
"testharness"
],
"css/cssom-view/scrollIntoView-scrollMargin.html": [
@@ -589568,8 +589826,16 @@
"7af5de5ff8aceb96867815354571314afd4cb07c",
"testharness"
],
+ "css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html": [
+ "3301141ee0115fc941240dc76b27d988032273ae",
+ "testharness"
+ ],
+ "css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html": [
+ "9242a49c0bca5b5a5f190c38f9eecac73f50844b",
+ "testharness"
+ ],
"css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html": [
- "56bcf214517d5220d53939fc25316ab5d6fe3da6",
+ "cec27f412c926ab087f2cd736e4c6a7d4efb4c99",
"testharness"
],
"css/cssom-view/scrollTop-display-change-ref.html": [
@@ -606753,7 +607019,7 @@
"testharness"
],
"element-timing/buffer-before-onload.html": [
- "88a641bbb666816da9a636ed43d23c205bf0e8f9",
+ "68eeeefe15fdc587cdf0d4382f90c33ee3230290",
"testharness"
],
"element-timing/cross-origin-element.sub.html": [
@@ -609041,7 +609307,7 @@
"support"
],
"event-timing/bufferbeforeonload.html": [
- "c91546ae41a499635573a2f7d7ea20b0283ca21f",
+ "c30c01aa96bb9bc835bb1ce93bff86f5e99789d7",
"testharness"
],
"event-timing/crossiframe.html": [
@@ -609057,15 +609323,15 @@
"manual"
],
"event-timing/observethenonload.html": [
- "e1c36e302108b1bd886130c7df38d8e536dc4473",
+ "4145eae0a59a5da2fc5fbca95ee2721fc3b58b2b",
"testharness"
],
"event-timing/onloadthenobserve-firstInput.html": [
- "1422ceaa95582200ba1250dcdd53aec502b59856",
+ "4efdfbbf006cdd8577b4d11b668974bfe20aaa84",
"testharness"
],
"event-timing/onloadthenobserve.html": [
- "e2f9c932e6f5122af68ff84fd9495cf6fc216314",
+ "d97228577a187ddf10f5513697d9b0424aab4588",
"testharness"
],
"event-timing/only-observe-firstInput.html": [
@@ -609077,7 +609343,7 @@
"testharness"
],
"event-timing/resources/crossiframe-childframe.html": [
- "7aa4ace73afad7878205736c02a81e863127bb43",
+ "ee9da6cad5411b477c3c11d6fc932ef132855bf7",
"support"
],
"event-timing/resources/event-timing-test-utils.js": [
@@ -611265,7 +611531,7 @@
"testharness"
],
"fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html": [
- "e599bf26f9445e9e96ee98e4bbab2895e2283fe2",
+ "bf42d0eaf685d2d1bcdb3b9a0276daf2aae2268f",
"testharness"
],
"fetch/corb/style-css-mislabeled-as-html-nosniff.sub.html": [
@@ -625480,6 +625746,14 @@
"d245bf0b96451b3419e0e69bda86fe4859c9cbfe",
"testharness"
],
+ "html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes-ref.html": [
+ "3758ea2cab4096beccb3722a1cc534b71c662a64",
+ "support"
+ ],
+ "html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes.html": [
+ "9d85aa543d2d1732b8534fcdfa62a42d11716586",
+ "reftest"
+ ],
"html/semantics/embedded-content/the-iframe-element/iframe-nosrc.html": [
"57189a0b884d3a55e4bb2ba1a1d3aa83066c0eb3",
"testharness"
@@ -625828,6 +626102,10 @@
"6755d295aa179992b4cf958ee2ad8456e729677c",
"support"
],
+ "html/semantics/embedded-content/the-iframe-element/support/iframe-which-content-height-equals-400px.html": [
+ "bb3dbd31182e91f43c3caa0cb8bb7ffbad485177",
+ "support"
+ ],
"html/semantics/embedded-content/the-iframe-element/support/iframe_sandbox_001.htm": [
"051ca5ecd78a17f499d3df76b0bd8f1b6a9dbade",
"support"
@@ -633284,10 +633562,6 @@
"cbae6b15410e13433c4a9fadd8c2a8cc5fbc4fdc",
"support"
],
- "infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini": [
- "c83e8ff9261b78084f75fb584a8b5236cc28c3fd",
- "support"
- ],
"infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini": [
"49e4a40016e0eb2304a5e6e61b19556818c4ef3d",
"support"
@@ -633488,10 +633762,6 @@
"ea7973a62e0ee9cdc874879fd844b2309e944e61",
"testharness"
],
- "infrastructure/testdriver/actions/actionsWithKeyPressed.html": [
- "74e939f5fde4773aade6ce4f7bbee573e39ae8ec",
- "testharness"
- ],
"infrastructure/testdriver/actions/elementPosition.html": [
"145852e7b51bd0cdc9e7b4ef5ebddcbf1c0235c5",
"testharness"
@@ -633629,7 +633899,7 @@
"support"
],
"interfaces/WebIDL.idl": [
- "aa8d5bad16a971b09d74914865f7db3115c7d836",
+ "a9157a955904c29b362dc1527f66c531ef6429ca",
"support"
],
"interfaces/accelerometer.idl": [
@@ -634141,7 +634411,7 @@
"support"
],
"interfaces/webxr.idl": [
- "c78683ef6bf6822b0320fe4c16bc9630a63884de",
+ "2c9eac510672513e611f565fc31d2c7d8a3820da",
"support"
],
"interfaces/worklets.idl": [
@@ -634613,11 +634883,11 @@
"testharness"
],
"layout-instability/buffer-layout-shift.html": [
- "c1d0dc6d6eb971f39c913a78423aad046dd18a04",
+ "5d2e69f1ff2ab2f673f432b3b69d678ff1d9a218",
"testharness"
],
"layout-instability/observe-layout-shift.html": [
- "25e4950f6a7d830097781923e80d82f130cf23a5",
+ "1aa429b6b68df3872f2f1e8dbd591d8a171361ba",
"testharness"
],
"layout-instability/resources/slow-image.py": [
@@ -639245,15 +639515,15 @@
"testharness"
],
"native-file-system/FileSystemBaseHandle-remove.tentative.window.js": [
- "5a8e67b8478caa022dccb10c14f64103e329e5c9",
+ "a4eb2871104f924347f9ec8791a6381313a54483",
"testharness"
],
"native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.window.js": [
- "0f8c1b13fa01d6fb5c88455eac86c969b4d04c0a",
+ "2064fc46f05f5e30c14f77c14c5751b411d1c5e0",
"testharness"
],
"native-file-system/FileSystemDirectoryHandle-getFile.tentative.window.js": [
- "0b27027f4eddb752b465ccfa5b3843689eb280ea",
+ "473cad4c9c36660584c07d7b53dfc68c7f734cb4",
"testharness"
],
"native-file-system/FileSystemWriter.tentative.window.js": [
@@ -639269,7 +639539,7 @@
"support"
],
"native-file-system/resources/test-helpers.js": [
- "e29927b85247d55d6dfd6d04838d3587158aadf2",
+ "56c93b597508a5be23da31c9a9cb89d3cb470aa7",
"support"
],
"navigation-timing/META.yml": [
@@ -647300,10 +647570,6 @@
"10b19f8474a95126302f824390302007a4f63fea",
"testharness"
],
- "pointerevents/pointerevent_mouse_pointercapture_in_frame.html": [
- "83b4c1becc48339f74948fd01bdf15dfd27f96c1",
- "testharness"
- ],
"pointerevents/pointerevent_multiple_primary_pointers_boundary_events-manual.html": [
"eb758c70738760d217656244733755da3ee5f238",
"manual"
@@ -647320,6 +647586,10 @@
"a645033a247437604d6b1c4614079c9193c28e9d",
"testharness"
],
+ "pointerevents/pointerevent_pointercapture_in_frame.html": [
+ "a4107fd707a2ec4cb40d22fcad786db0b42471d6",
+ "testharness"
+ ],
"pointerevents/pointerevent_pointerenter_does_not_bubble.html": [
"7d38de7446938de3715b19f4585d747a18912d77",
"testharness"
@@ -647572,14 +647842,14 @@
"5245a3f2e16bf13967187231db515433217912aa",
"support"
],
- "pointerevents/resources/pointerevent_mouse_pointercapture-iframe.html": [
- "817c6123cf96b0e966c04a48414725d794549c77",
- "support"
- ],
"pointerevents/resources/pointerevent_pointerId_scope-iframe.html": [
"ab33560b35216ea0976d1c037650122d9336ae39",
"support"
],
+ "pointerevents/resources/pointerevent_pointercapture-iframe.html": [
+ "100756626987a95b242214a47704e87d5d7c2dc9",
+ "support"
+ ],
"pointerevents/resources/pointerevent_pointerrawupdate_in_pointerlock-iframe.html": [
"505fc2cae40b80612fdd67ba98918aafad2f1b0a",
"support"
@@ -648073,7 +648343,7 @@
"testharness"
],
"preload/subresource-integrity.html": [
- "08c7854a9ecff0c6510d7ce7752de8e601e1530a",
+ "52ec0f62bef04a618e650acfb75513a7c79683e2",
"testharness"
],
"presentation-api/META.yml": [
@@ -658161,7 +658431,7 @@
"support"
],
"resources/sriharness.js": [
- "fe8ad2b4270c2f048a6a9eada153b1a1b2e90f1b",
+ "d30d483e3296979ddce16b6118170a3a6c696e80",
"support"
],
"resources/test/README.md": [
@@ -663992,6 +664262,10 @@
"d2997e562fadfd208d202ce3d60d11cd937ea779",
"testharness"
],
+ "subresource-integrity/image.png": [
+ "01c9666a8de9d5535615aff830810e5df4b2156f",
+ "support"
+ ],
"subresource-integrity/script.js": [
"bfca1efbf3fb10fc98dd39600966fc97817586ee",
"support"
@@ -677069,7 +677343,7 @@
"testharness"
],
"web-nfc/NFCWriter_push.https.html": [
- "5a14b4090afe7b7850a36129eb3f882ac1886267",
+ "0b804615930b12d1ac4d7bfc1b395e715de03778",
"testharness"
],
"web-nfc/NFCWriter_push_signal-manual.https.html": [
@@ -680257,7 +680531,7 @@
"testharness"
],
"webrtc/RTCStats-helper.js": [
- "e91b40b6854f1cc6c59f7d81bf06a40e6dc0d31f",
+ "5cd7d2c9e0e1f6c5c10afe529be8489dec4dd5ad",
"support"
],
"webrtc/RTCTrackEvent-constructor.html": [
@@ -688268,6 +688542,10 @@
"d23fbb8c66def47e31ad01aa7a311064ba8fddbd",
"testharness"
],
+ "xhr/sync-xhr-and-window-onload.html": [
+ "3ba9e7ab2e8c772cfe4673b61ad8b4a4582d851d",
+ "testharness"
+ ],
"xhr/sync-xhr-supported-by-feature-policy.html": [
"45588bf6af54b0136c72068544bc908378f286a2",
"testharness"
diff --git a/tests/wpt/metadata/css/css-animations/responsive/column-rule-color-001.html.ini b/tests/wpt/metadata/css/css-animations/responsive/column-rule-color-001.html.ini
new file mode 100644
index 00000000000..8d962de6580
--- /dev/null
+++ b/tests/wpt/metadata/css/css-animations/responsive/column-rule-color-001.html.ini
@@ -0,0 +1,7 @@
+[column-rule-color-001.html]
+ [column-rule-color responds to inherited changes]
+ expected: FAIL
+
+ [column-rule-color responds to currentColor changes]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-animations/responsive/column-width-001.html.ini b/tests/wpt/metadata/css/css-animations/responsive/column-width-001.html.ini
new file mode 100644
index 00000000000..94ad1f446a4
--- /dev/null
+++ b/tests/wpt/metadata/css/css-animations/responsive/column-width-001.html.ini
@@ -0,0 +1,10 @@
+[column-width-001.html]
+ [column-width responds to font-size changes]
+ expected: FAIL
+
+ [column-width clamps to 0px]
+ expected: FAIL
+
+ [column-width responds to inherited changes]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-paint-api/hidpi/canvas-transform.https.html.ini b/tests/wpt/metadata/css/css-paint-api/hidpi/canvas-transform.https.html.ini
new file mode 100644
index 00000000000..3950118e711
--- /dev/null
+++ b/tests/wpt/metadata/css/css-paint-api/hidpi/canvas-transform.https.html.ini
@@ -0,0 +1,2 @@
+[canvas-transform.https.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html.ini b/tests/wpt/metadata/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html.ini
new file mode 100644
index 00000000000..3316960bcb6
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html.ini
@@ -0,0 +1,2 @@
+[white-space-pre-wrap-trailing-spaces-005.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html.ini b/tests/wpt/metadata/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html.ini
new file mode 100644
index 00000000000..1e41a1d6e6b
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html.ini
@@ -0,0 +1,2 @@
+[white-space-pre-wrap-trailing-spaces-006.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini b/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini
index ee754ce4aa3..e1a609649d6 100644
--- a/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini
@@ -3,9 +3,3 @@
[scroll-behavior: smooth on DIV element]
expected: FAIL
- [Smooth scrolling while doing history navigation.]
- expected: FAIL
-
- [Instant scrolling while doing history navigation.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html.ini b/tests/wpt/metadata/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html.ini
new file mode 100644
index 00000000000..45087b59332
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html.ini
@@ -0,0 +1,28 @@
+[scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html]
+ [scrollIntoView({"block":"center","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"center","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"end"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"end"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"center","inline":"end"})]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html.ini b/tests/wpt/metadata/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html.ini
new file mode 100644
index 00000000000..33b162d7d1a
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html.ini
@@ -0,0 +1,28 @@
+[scrollIntoView-horizontal-tb-writing-mode.html]
+ [scrollIntoView({"block":"center","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"center","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"end"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"end"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"center","inline":"end"})]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html.ini b/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html.ini
new file mode 100644
index 00000000000..2144f1801a6
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html.ini
@@ -0,0 +1,28 @@
+[scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html]
+ [scrollIntoView({"block":"center","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"center","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"end"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"end"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"center","inline":"end"})]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html.ini b/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html.ini
new file mode 100644
index 00000000000..3a8911a2ff1
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html.ini
@@ -0,0 +1,28 @@
+[scrollIntoView-vertical-lr-writing-mode.html]
+ [scrollIntoView({"block":"center","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"center","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"end"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"end"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"center","inline":"end"})]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html.ini b/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html.ini
index 477a200ff86..f2391864b18 100644
--- a/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html.ini
@@ -26,3 +26,30 @@
[scrollIntoView({block: "end", inline: "end"})]
expected: FAIL
+ [scrollIntoView({"block":"center","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"center","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"end"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"end"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"center","inline":"end"})]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
index fc964dd4c81..c43efe3e325 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -321,12 +321,12 @@
[<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html */*;charset=gbk]
+ [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;x=" text/plain]
+ [<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: combined response Content-Type: text/html */*]
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 c7413d589dc..549976d3092 100644
--- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
@@ -62,3 +62,6 @@
[separate text/javascript;charset=windows-1252 text/javascript]
expected: FAIL
+ [separate text/javascript; charset=windows-1252 text/javascript]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
index 536384f36e1..b7052af5b5c 100644
--- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,6 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
- [X-Content-Type-Options%3A%20%2Cnosniff]
+ [X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff]
expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
new file mode 100644
index 00000000000..87b07c3e670
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_1.html]
+ [Multiple history traversals from the same task]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
new file mode 100644
index 00000000000..75d75b4cda2
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
@@ -0,0 +1,4 @@
+[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
new file mode 100644
index 00000000000..dc2e45516de
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_5.html]
+ [Multiple history traversals, last would be aborted]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini
index bf50d59df41..e02f179ec25 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini
@@ -1,5 +1,24 @@
[open-features-negative-innerwidth-innerheight.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`]
expected: FAIL
+ [features "innerheight=-404.5" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "innerwidth=-404.5" should NOT set "width=404"]
+ expected: TIMEOUT
+
+ [features "innerwidth=-404" should NOT set "width=404"]
+ expected: TIMEOUT
+
+ [features "innerheight=-404e1" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "innerheight=-404" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "innerwidth=-404e1" should NOT set "width=404"]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini
index e150c9d848f..23eefb8eaf9 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini
@@ -1,5 +1,24 @@
[open-features-negative-screenx-screeny.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `screenx`, `screeny`]
expected: FAIL
+ [features "screenx=-204" should NOT set "left=204"]
+ expected: TIMEOUT
+
+ [features "screeny=-204" should NOT set "top=204"]
+ expected: TIMEOUT
+
+ [features "screeny=-204.5" should NOT set "top=204"]
+ expected: TIMEOUT
+
+ [features "screeny=-0" should NOT set "top=204"]
+ expected: TIMEOUT
+
+ [features "screenx=-0" should NOT set "left=204"]
+ expected: TIMEOUT
+
+ [features "screenx=-204.5" should NOT set "left=204"]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
index ad8840fbb68..940516ddd33 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
@@ -1,5 +1,24 @@
[open-features-negative-top-left.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: negative values for `top`, `left`]
expected: FAIL
+ [features "top=-204" should NOT set "top=204"]
+ expected: TIMEOUT
+
+ [features "top=-204.5" should NOT set "top=204"]
+ expected: TIMEOUT
+
+ [features "left=-204" should NOT set "left=204"]
+ expected: TIMEOUT
+
+ [features "top=-0" should NOT set "top=204"]
+ expected: TIMEOUT
+
+ [features "left=-204.5" should NOT set "left=204"]
+ expected: TIMEOUT
+
+ [features "left=-0" should NOT set "left=204"]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
index d1ed9088b2b..9027336b453 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
@@ -1,5 +1,24 @@
[open-features-negative-width-height.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: negative values for `width`, `height`]
expected: FAIL
+ [features "height=-404" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "height=-404e1" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "height=-404.5" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "width=-404" should NOT set "width=404"]
+ expected: TIMEOUT
+
+ [features "width=-404e1" should NOT set "width=404"]
+ expected: TIMEOUT
+
+ [features "width=-404.5" should NOT set "width=404"]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
index a70e9dbad4d..4e44584b123 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
@@ -1,32 +1,48 @@
[open-features-non-integer-height.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `height`]
expected: FAIL
[features "height=405*3" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "height=405.32" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "height=405e1" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "height=405/5" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "height=405^4" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "height=405.5" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "height=405e-1" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "height=405 " should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "height=405LLl" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
+
+ [features "height=/404" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [top=0,left=0,width=401,: absence of feature "height" should be treated same as "height=0"]
+ expected: TIMEOUT
+
+ [top=0,left=0: absence of feature "height" should be treated same as "height=0"]
+ expected: TIMEOUT
+
+ [features "height=_404" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "height=L404" should NOT set "height=404"]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini
index 779531b4a98..fcaeae5336d 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini
@@ -1,32 +1,42 @@
[open-features-non-integer-innerheight.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerheight`]
expected: FAIL
[features "innerheight=405e-1" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerheight=405LLl" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerheight=405^4" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerheight=405e1" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerheight=405 " should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerheight=405/5" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerheight=405.32" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerheight=405.5" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerheight=405*3" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
+
+ [features "innerheight=_404" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "innerheight=L404" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "innerheight=/404" should NOT set "height=404"]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
index 7a1b258d52e..42327fedd27 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
@@ -1,32 +1,42 @@
[open-features-non-integer-innerwidth.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerwidth`]
expected: FAIL
[features "innerwidth=405e-1" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerwidth=405*3" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerwidth=405.5" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerwidth=405e1" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerwidth=405.32" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerwidth=405 " should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerwidth=405LLl" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerwidth=405/5" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerwidth=405^4" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
+
+ [features "innerwidth=/404" should NOT set "width=404"]
+ expected: TIMEOUT
+
+ [features "innerwidth=_404" should NOT set "width=404"]
+ expected: TIMEOUT
+
+ [features "innerwidth=L404" should NOT set "width=404"]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini
index caba4124f0b..a8e4fe06618 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini
@@ -1,32 +1,42 @@
[open-features-non-integer-left.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `left`]
expected: FAIL
[features "left=105e1" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "left=105 " should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "left=105/5" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "left=105e-1" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "left=105^4" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "left=105LLl" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "left=105.32" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "left=105*3" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "left=105.5" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
+
+ [features "left=L104" should NOT set "left=104"]
+ expected: TIMEOUT
+
+ [features "left=/104" should NOT set "left=104"]
+ expected: TIMEOUT
+
+ [features "left=_104" should NOT set "left=104"]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini
index 9ace8a4cbdb..64a08faf0e6 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini
@@ -1,32 +1,42 @@
[open-features-non-integer-screenx.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `screenx`]
expected: FAIL
[features "screenx=105.5" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "screenx=105e1" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "screenx=105 " should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "screenx=105*3" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "screenx=105e-1" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "screenx=105^4" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "screenx=105LLl" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "screenx=105/5" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "screenx=105.32" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
+
+ [features "screenx=_104" should NOT set "left=104"]
+ expected: TIMEOUT
+
+ [features "screenx=L104" should NOT set "left=104"]
+ expected: TIMEOUT
+
+ [features "screenx=/104" should NOT set "left=104"]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini
index a82bd0f981a..4f22ef4ef29 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini
@@ -1,32 +1,42 @@
[open-features-non-integer-screeny.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `screeny`]
expected: FAIL
[features "screeny=405^4" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "screeny=405e-1" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "screeny=405LLl" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "screeny=405e1" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "screeny=405 " should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "screeny=405/5" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "screeny=405*3" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "screeny=405.32" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "screeny=405.5" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
+
+ [features "screeny=_404" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "screeny=L404" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "screeny=/404" should NOT set "height=404"]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini
index 10f617db69e..8540f53d8d6 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini
@@ -1,32 +1,42 @@
[open-features-non-integer-top.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `top`]
expected: FAIL
[features "top=105/5" should set "top=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "top=105*3" should set "top=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "top=105LLl" should set "top=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "top=105e-1" should set "top=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "top=105.32" should set "top=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "top=105e1" should set "top=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "top=105 " should set "top=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "top=105^4" should set "top=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "top=105.5" should set "top=105"]
- expected: FAIL
+ expected: TIMEOUT
+
+ [features "top=/104" should NOT set "top=104"]
+ expected: TIMEOUT
+
+ [features "top=_104" should NOT set "top=104"]
+ expected: TIMEOUT
+
+ [features "top=L104" should NOT set "top=104"]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini
index 28f93ee71b5..9d841e61bc0 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini
@@ -1,32 +1,48 @@
[open-features-non-integer-width.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `width`]
expected: FAIL
[features "width=405^4" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "width=405.5" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "width=405e1" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "width=405 " should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "width=405.32" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "width=405LLl" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "width=405*3" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "width=405e-1" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "width=405/5" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
+
+ [top=0,left=0: absence of feature "width" should be treated same as "width=0"]
+ expected: TIMEOUT
+
+ [features "width=_404" should NOT set "width=404"]
+ expected: TIMEOUT
+
+ [top=0,left=0,height=401,: absence of feature "width" should be treated same as "width=0"]
+ expected: TIMEOUT
+
+ [features "width=/404" should NOT set "width=404"]
+ expected: TIMEOUT
+
+ [features "width=L404" should NOT set "width=404"]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini b/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini
deleted file mode 100644
index 9e522297c94..00000000000
--- a/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[toggleEvent.html]
- [Calling open twice on 'details' fires only one toggle event]
- expected: FAIL
-
- [Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
deleted file mode 100644
index a9677391662..00000000000
--- a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[DOMContentLoaded-defer.html]
- [The end: DOMContentLoaded and defer scripts]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
index 496bad988c6..034d9baebfa 100644
--- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
+++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
@@ -1,4 +1,5 @@
[promise-rejection-events.html]
+ expected: TIMEOUT
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
expected: FAIL
@@ -8,3 +9,6 @@
[no unhandledrejection/rejectionhandled: rejection handler attached synchronously to a promise created from createImageBitmap]
expected: FAIL
+ [rejectionhandled is dispatched from a queued task, and not immediately]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini b/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini
index 091a2791657..841d4050464 100644
--- a/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini
+++ b/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini
@@ -23,3 +23,6 @@
[domainLookupStart should be 0 in cross-origin request.]
expected: FAIL
+ [responseEnd should be greater than 0 in cross-origin request.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
index 2f3bb869b3d..ea84a790d53 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
@@ -62,3 +62,9 @@
[X SNR (21.440582444964107 dB) is not greater than or equal to 65.737. Got 21.440582444964107.]
expected: FAIL
+ [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t9.4836157560348511e-1\t9.5236867666244507e-1\t4.0071010589599609e-3\t4.2075103446311962e-3\t3.8985999999999999e-3\n\t[31\]\t9.2646563053131104e-1\t9.3139332532882690e-1\t4.9276947975158691e-3\t5.2906700783754857e-3\t3.8985999999999999e-3\n\t[32\]\t9.0087991952896118e-1\t9.0675884485244751e-1\t5.8789253234863281e-3\t6.4834496590358351e-3\t3.8985999999999999e-3\n\t[33\]\t8.7170630693435669e-1\t8.7856203317642212e-1\t6.8557262420654297e-3\t7.8033490899654511e-3\t3.8985999999999999e-3\n\t[34\]\t8.3906102180480957e-1\t8.4691369533538818e-1\t7.8526735305786133e-3\t9.2721059699818163e-3\t3.8985999999999999e-3\n\t...and 31037 more errors.\n\tMax AbsError of 9.8276454204897923e-1 at index of 39267.\n\t[39267\]\t-5.3834547930620147e-11\t-9.8276454210281372e-1\t9.8276454204897923e-1\t9.9999999994522137e-1\t3.8985999999999999e-3\n\tMax RelError of 3.3137802965303198e+0 at index of 1253.\n\t[1253\]\t-4.3022233992815018e-2\t-9.9732093513011932e-3\t3.3049024641513824e-2\t3.3137802965303198e+0\t3.8985999999999999e-3\n]
+ expected: FAIL
+
+ [X SNR (21.440582478679808 dB) is not greater than or equal to 65.737. Got 21.440582478679808.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
deleted file mode 100644
index 80f9a4f15b8..00000000000
--- a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[Worker-constructor.html]
- expected: ERROR
diff --git a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
index f584fce5df1..268949ced5c 100644
--- a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
+++ b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
@@ -1,5 +1,4 @@
[005.html]
- expected: ERROR
[dedicated worker in shared worker in dedicated worker]
expected: FAIL
diff --git a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-animator-name.https.html b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-animator-name.https.html
new file mode 100644
index 00000000000..bd886ccd020
--- /dev/null
+++ b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-animator-name.https.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+
+<title>Worklet Animation's animator name should be accessible via animatorName property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-animationworklet/">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="common.js"></script>
+
+<script id="test_animator" type="text/worklet">
+ class NoopAnimator {
+ animate(currentTime, effect) {}
+ }
+ registerAnimator('Tokyo', NoopAnimator);
+ registerAnimator('دزفول', NoopAnimator);
+</script>
+
+<body></body>
+
+<script>
+promise_test(async t => {
+ await runInAnimationWorklet(document.getElementById('test_animator').textContent);
+
+ // An ascii name and a non-ascii one.
+ for (let name of ['Tokyo', 'دزفول']) {
+ const animation = new WorkletAnimation(name, new KeyframeEffect(document.body, {}));
+ assert_equals(name, animation.animatorName);
+ }
+}, 'Verify that animatorName matches passed name');
+</script> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/css-animations/responsive/column-rule-color-001.html b/tests/wpt/web-platform-tests/css/css-animations/responsive/column-rule-color-001.html
new file mode 100644
index 00000000000..9953db43545
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-animations/responsive/column-rule-color-001.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Animations: column-rule-color animations respond to style changes</title>
+<link rel="help" href="https://drafts.csswg.org/css-multicol-1/#crc">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ .paused {
+ animation-duration: 4s;
+ animation-timing-function: linear;
+ animation-delay: -2s;
+ animation-play-state: paused;
+ }
+ #container {
+ color: rgb(80, 0, 0);
+ }
+ #first {
+ animation-name: first-anim;
+ color: rgb(60, 0, 0);
+ }
+ #second {
+ animation-name: second-anim;
+ }
+ @keyframes first-anim {
+ from { column-rule-color: currentColor; }
+ to { column-rule-color: rgb(0, 60, 0); }
+ }
+ @keyframes second-anim {
+ from { column-rule-color: inherit; }
+ to { column-rule-color: rgb(0, 0, 80); }
+ }
+</style>
+</head>
+<body>
+<div id="container">
+ <div id="first" class="paused"></div>
+ <div id="second" class="paused"></div>
+</div>
+<script>
+'use strict';
+var container = document.getElementById('container');
+
+test(() => {
+ const first = document.getElementById('first');
+ assert_equals(getComputedStyle(first).columnRuleColor, 'rgb(30, 30, 0)');
+ first.style.color = 'rgb(0, 0, 60)';
+ assert_equals(getComputedStyle(first).columnRuleColor, 'rgb(0, 30, 30)');
+}, 'column-rule-color responds to currentColor changes');
+
+test(() => {
+ const container = document.getElementById('container');
+ const second = document.getElementById('second');
+ assert_equals(getComputedStyle(second).columnRuleColor, 'rgb(40, 0, 40)');
+ container.style.columnRuleColor = 'rgb(0, 80, 0)';
+ assert_equals(getComputedStyle(second).columnRuleColor, 'rgb(0, 40, 40)');
+}, 'column-rule-color responds to inherited changes');
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-animations/responsive/column-width-001.html b/tests/wpt/web-platform-tests/css/css-animations/responsive/column-width-001.html
new file mode 100644
index 00000000000..7697eec3240
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-animations/responsive/column-width-001.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Animations: column-width animations respond to style changes</title>
+<link rel="help" href="https://drafts.csswg.org/css-multicol-1/#cw">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ .paused {
+ animation-duration: 4s;
+ animation-timing-function: linear;
+ animation-delay: -2s;
+ animation-play-state: paused;
+ }
+ #container {
+ column-width: 40px;
+ font-size: 10px;
+ }
+ #first {
+ animation-name: first-anim;
+ }
+ #second {
+ animation-name: second-anim;
+ }
+ #third {
+ animation-name: third-anim;
+ }
+ @keyframes first-anim {
+ from { column-width: 3em; }
+ to { column-width: 5em; }
+ }
+ @keyframes second-anim {
+ from { column-width: 40px; }
+ to { column-width: calc(40px - 2em); }
+ }
+ @keyframes third-anim {
+ from { column-width: 20px; }
+ to { column-width: inherit; }
+ }
+</style>
+</head>
+<body>
+<div id="container">
+ <div id="first" class="paused"></div>
+ <div id="second" class="paused"></div>
+ <div id="third" class="paused"></div>
+</div>
+<script>
+'use strict';
+var container = document.getElementById('container');
+
+test(() => {
+ const first = document.getElementById('first');
+ assert_equals(getComputedStyle(first).columnWidth, '40px');
+ first.style.fontSize = '20px';
+ assert_equals(getComputedStyle(first).columnWidth, '80px');
+}, 'column-width responds to font-size changes');
+
+test(() => {
+ const second = document.getElementById('second');
+ assert_equals(getComputedStyle(second).columnWidth, '30px');
+ second.style.fontSize = '90px';
+ assert_equals(getComputedStyle(second).columnWidth, '0px');
+}, 'column-width clamps to 0px');
+
+test(() => {
+ const container = document.getElementById('container');
+ const third = document.getElementById('third');
+ assert_equals(getComputedStyle(third).columnWidth, '30px');
+ container.style.columnWidth = 'auto';
+ assert_equals(getComputedStyle(third).columnWidth, 'auto');
+}, 'column-width responds to inherited changes');
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-masking/parsing/mask-position-invalid.html b/tests/wpt/web-platform-tests/css/css-masking/parsing/mask-position-invalid.html
new file mode 100644
index 00000000000..c246a1e795e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-masking/parsing/mask-position-invalid.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Masking Module Level 1: parsing mask-position with invalid values</title>
+<link rel="help" href="https://www.w3.org/TR/css-masking-1/#the-mask-position">
+<meta name="assert" content="mask-position supports only the '<position>#' grammar.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("mask-position", "auto");
+test_invalid_value("mask-position", "1px 2px 3px");
+test_invalid_value("mask-position", "left right");
+test_invalid_value("mask-position", "bottom 10%");
+test_invalid_value("mask-position", "bottom 10% top 20%");
+
+test_invalid_value("mask-position", "center left 1px");
+test_invalid_value("mask-position", "center top 2px");
+test_invalid_value("mask-position", "right 3% center");
+test_invalid_value("mask-position", "left 4px top");
+test_invalid_value("mask-position", "right top 5px");
+test_invalid_value("mask-position", "bottom 6% center");
+test_invalid_value("mask-position", "bottom 7% left");
+test_invalid_value("mask-position", "bottom right 8%");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-masking/parsing/mask-position-valid.html b/tests/wpt/web-platform-tests/css/css-masking/parsing/mask-position-valid.html
new file mode 100644
index 00000000000..efdf55a0182
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-masking/parsing/mask-position-valid.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Masking Module Level 1: parsing mask-position with valid values</title>
+<link rel="help" href="https://www.w3.org/TR/css-masking-1/#the-mask-position">
+<meta name="assert" content="mask-position supports the full '<position>#' grammar.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("mask-position", "10%", "10% center");
+test_valid_value("mask-position", "right 30% top 60px");
+test_valid_value("mask-position", "-20% -30px");
+test_valid_value("mask-position", "30px center");
+test_valid_value("mask-position", "40px top");
+test_valid_value("mask-position", "bottom 10% right 20%", "right 20% bottom 10%");
+test_valid_value("mask-position", "bottom right", "right bottom");
+test_valid_value("mask-position", "center 50px");
+test_valid_value("mask-position", "center bottom");
+test_valid_value("mask-position", "center left", "left center");
+test_valid_value("mask-position", "left", "left center");
+test_valid_value("mask-position", "left bottom");
+test_valid_value("mask-position", "right 40%");
+test_valid_value("mask-position", "top", "center top");
+test_valid_value("mask-position", "top center", "center top");
+test_valid_value("mask-position", "center", "center center");
+
+test_valid_value("mask-position", "bottom left, right 20%", "left bottom, right 20%");
+test_valid_value("mask-position", "top, center, left", "center top, center center, left center");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/hidpi/canvas-transform-ref.html b/tests/wpt/web-platform-tests/css/css-paint-api/hidpi/canvas-transform-ref.html
new file mode 100644
index 00000000000..48d46e8e561
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-paint-api/hidpi/canvas-transform-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<body>
+<canvas id ="canvas" width="540" height="550"></canvas>
+<script>
+var canvas = document.getElementById('canvas');
+canvas.style.width = (canvas.width / devicePixelRatio) + 'px';
+canvas.style.height = (canvas.height / devicePixelRatio) + 'px';
+var ctx = canvas.getContext("2d");
+ctx.scale(devicePixelRatio, devicePixelRatio);
+var fillW = 250;
+var fillH = 50;
+ctx.setTransform(devicePixelRatio, 0, 0, devicePixelRatio, 0, 100);
+ctx.beginPath();
+ctx.rect(0, 0, fillW, fillH);
+ctx.closePath();
+ctx.clip();
+ctx.fillStyle = 'green';
+ctx.fillRect(0, 0, fillW, fillH);
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/hidpi/canvas-transform.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/hidpi/canvas-transform.https.html
new file mode 100644
index 00000000000..d160a8673c2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-paint-api/hidpi/canvas-transform.https.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<link rel="help" href="https://drafts.css-houdini.org/css-paint-api/#dom-css-paintworklet">
+<link rel="match" href="canvas-transform-ref.html">
+<style>
+.container {
+ width: 270px;
+ height: 275px;
+}
+
+#canvas-geometry {
+ background-image: paint(geometry);
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<script src="/common/worklet-reftest.js"></script>
+<body>
+<div id="canvas-geometry" class="container"></div>
+
+<script id="code" type="text/worklet">
+// Regression test for crbug.com/970783. The canvas transform matrix should
+// account for the devicePixelRatio, such that the clip bounds can be
+// properly computed when applying clips.
+registerPaint('geometry', class {
+ paint(ctx, geom) {
+ var fillW = 250;
+ var fillH = 50;
+ ctx.setTransform(devicePixelRatio, 0, 0, devicePixelRatio, 0, 100);
+ ctx.beginPath();
+ ctx.rect(0, 0, fillW, fillH);
+ ctx.closePath();
+ ctx.clip();
+ ctx.fillStyle = 'green';
+ ctx.fillRect(0, 0, fillW, fillH);
+ }
+});
+</script>
+
+<script>
+ importWorkletAndTerminateTestAfterAsyncPaint(CSS.paintWorklet, document.getElementById('code').textContent);
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-nested-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-nested-ref.html
new file mode 100644
index 00000000000..84becd9a78d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-nested-ref.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html>
+<p style="color: blue">Blue <span style="color: green">This text should be green.</span> Blue</p>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-nested.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-nested.html
new file mode 100644
index 00000000000..4a58f1ea5b6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-nested.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#first-line-pseudo">
+<link rel="match" href="first-line-change-inline-color-nested-ref.html">
+<style>
+ #block { color: green; }
+ #block::first-line { color: blue; }
+ .green { color: green; }
+</style>
+<div id="block">
+ <div>
+ <p>Blue <span id="target"><span>This text should be green.</span></span> Blue</p>
+ </div>
+</div>
+<script>
+requestAnimationFrame(() => {
+ requestAnimationFrame(() => {
+ target.className = 'green';
+ document.documentElement.removeAttribute('class');
+ });
+});
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-ref.html
new file mode 100644
index 00000000000..84becd9a78d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-ref.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html>
+<p style="color: blue">Blue <span style="color: green">This text should be green.</span> Blue</p>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color.html
new file mode 100644
index 00000000000..2a5be916b01
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#first-line-pseudo">
+<link rel="match" href="first-line-change-inline-color-ref.html">
+<style>
+ #block { color: green; }
+ #block::first-line { color: blue; }
+ .green { color: green; }
+</style>
+<div id="block">
+ <div>
+ <p>Blue <span id="target">This text should be green.</span> Blue</p>
+ </div>
+</div>
+<script>
+requestAnimationFrame(() => {
+ requestAnimationFrame(() => {
+ target.className = 'green';
+ document.documentElement.removeAttribute('class');
+ });
+});
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-on-ancestor-block-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-on-ancestor-block-ref.html
new file mode 100644
index 00000000000..7193bf25eb8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-on-ancestor-block-ref.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<div>
+ <span style="color: green">This text should be green.</span><br>
+ <span style="color: blue">This text should be blue.</span>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-on-ancestor-block.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-on-ancestor-block.html
new file mode 100644
index 00000000000..6b797107df8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-on-ancestor-block.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#first-line-pseudo">
+<link rel="match" href="first-line-on-ancestor-block-ref.html">
+<style>
+ #block::first-line { color: green; }
+</style>
+<div id="block">
+ <div>
+ <div style="color: blue">
+ <div>
+ <span><span>This text should be green.</span></span><br>
+ This text should be blue.
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-out-of-flow-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-out-of-flow-ref.html
new file mode 100644
index 00000000000..7193bf25eb8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-out-of-flow-ref.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<div>
+ <span style="color: green">This text should be green.</span><br>
+ <span style="color: blue">This text should be blue.</span>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-out-of-flow.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-out-of-flow.html
new file mode 100644
index 00000000000..798ecf8264e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-out-of-flow.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#first-line-pseudo">
+<link rel="match" href="first-line-with-out-of-flow-ref.html">
+<style>
+ #block::first-line { color: green; }
+</style>
+<div id="block">
+ <div style="position: absolute"><br></div>
+ <div style="float: right"><br></div>
+ <div>
+ <div style="position: absolute"><br></div>
+ <div style="float: right"><br></div>
+ <div style="color: blue">
+ <div>
+ <span><span>This text should be green.</span></span><br>
+ This text should be blue.
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-004-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-004-ref.html
new file mode 100644
index 00000000000..72e4642022a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-004-ref.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>CSS test Reference</title>
+<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com" />
+
+<style>
+div {
+ font: 25px/1 Ahem;
+ color: green;
+}
+</style>
+
+<p>This test passes if there is a green square and no red.
+
+<div>XX<br>XX</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html
new file mode 100644
index 00000000000..becd4638eb0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>CSS Text test: hanging trailing spaces with white-space:pre-wrap</title>
+<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com" />
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-phase-2">
+<link rel="match" href="reference/white-space-pre-wrap-trailing-spaces-004-ref.html">
+<meta name="assert" content="Preserved white space at the end of the line is hanged when white-space is pre-wrap.">
+<style>
+div {
+ font: 25px/1 Ahem;
+ color: green;
+ background: red;
+
+ width: 2ch;
+ white-space: pre-wrap;
+}
+</style>
+
+<p>This test passes if there is a green square and no red.
+<div>XX<span> </span>XX</div>
+
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html
new file mode 100644
index 00000000000..f62e2e5c005
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>CSS Text test: hanging trailing spaces with white-space:pre-wrap</title>
+<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com" />
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-phase-2">
+<link rel="match" href="reference/white-space-pre-wrap-trailing-spaces-004-ref.html">
+<meta name="assert" content="Preserved white space at the end of the line is hanged when white-space is pre-wrap.">
+<style>
+div {
+ font: 10px/1 Ahem;
+}
+.ref {
+ position: absolute;
+ color: red;
+ z-index: -1;
+}
+.ref span { color: green; }
+.test {
+ color: green;
+
+ width: 5ch;
+ white-space: pre-wrap;
+}
+</style>
+
+<p>This test passes if there is a green square and no red.
+<div class="ref">XX<span>XXX</span><br>X<span>XX</span>X<span>X</span><br><span>XXXXX</span><br><span>XXXXX</span><br><span>XXXXX</span></div>
+<div class="test">XX<span> </span><span>X X </span></div>
+
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html
new file mode 100644
index 00000000000..820012e6ca1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>CSS Text test: hanging trailing spaces with white-space:pre-wrap</title>
+<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com" />
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-phase-2">
+<link rel="match" href="reference/white-space-pre-wrap-trailing-spaces-004-ref.html">
+<meta name="assert" content="Preserved white space at the end of the line is hanged when white-space is pre-wrap and any overflowing space is removed.">
+<style>
+div {
+ font: 25px/1 Ahem;
+}
+.ref {
+ position: absolute;
+ color: red;
+ z-index: -1;
+}
+.test span { background: red; }
+.test {
+ color: green;
+ width: 2ch;
+ white-space: pre-wrap;
+}
+.test span { background: green; }
+</style>
+
+<p>This test passes if there is a green square and no red.
+<div class="ref">X<span>X</span><br>XX</div>
+<div class="test">X<span>&#x0020;&#x0020;</span><span>&#x0020;XX</span></div>
+
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/parsing/scale-parsing-valid.html b/tests/wpt/web-platform-tests/css/css-transforms/parsing/scale-parsing-valid.html
index b9afbc848a3..2ae12222f13 100644
--- a/tests/wpt/web-platform-tests/css/css-transforms/parsing/scale-parsing-valid.html
+++ b/tests/wpt/web-platform-tests/css/css-transforms/parsing/scale-parsing-valid.html
@@ -16,9 +16,11 @@ test_valid_value("scale", "none");
test_valid_value("scale", "1");
+test_valid_value("scale", "100");
test_valid_value("scale", "100 100", "100");
-test_valid_value("scale", "100 200");
+test_valid_value("scale", "100 100 1");
+test_valid_value("scale", "100 200");
test_valid_value("scale", "100 200 1");
test_valid_value("scale", "100 200 300");
</script>
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-direction-rtl.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-direction-rtl.html
deleted file mode 100644
index fea92d1da57..00000000000
--- a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-direction-rtl.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html>
-<title>CSSOM View - scrollIntoView considers direction:rtl</title>
-<meta charset="utf-8">
-<link rel="author" title="Cathie Chen" href="mailto:cathiechen@igalia.com">
-<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview">
-<link rel="help" href="https://drafts.csswg.org/cssom-view/#scroll-an-element">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<style>
-.box {
- float: left;
- width: 200px;
- height: 200px;
-}
-#scroller {
- direction: rtl;
- overflow-x: scroll;
- width: 300px;
- height: 215px;
-}
-#container{
- width: 600px;
- height: 200px;
-}
-#target {
- background-color: #ff0;
-}
-</style>
-<body>
-<div id="scroller">
- <div id="container">
- <div class="row">
- <div class="box"></div>
- <div class="box" id="target"></div>
- <div class="box"></div>
- </div>
- </div>
-</div>
-
-<script>
-// This page is direction: rtl and scroller is direction: rtl.
-// So the the overflow direction is leftward, downward. The beginning edges are the top and right edges.
-// And the ending edges are the bottom and left edges.
-// Acording to the spec, x is min(0, max(x, element padding edge width - element scrolling area width)).
-// So x is nonpositive and decreases leftward.
-
-var target = document.getElementById("target");
-var scroller = document.getElementById("scroller");
-var box_width = target.offsetWidth;
-var scroller_width = scroller.offsetWidth;
-
-var leftEdge = -2*box_width + scroller_width;
-var center = -(3*box_width - scroller_width)/2;
-var rightEdge = - box_width;
-
-test(() => {
- scroller.scrollTo(0, 0);
- target.scrollIntoView({inline: "start"});
- assert_approx_equals(scroller.scrollLeft, rightEdge, 0.5, "start should be the right edge");
-}, `scrollIntoView({inline: "start"}), direction: rtl`);
-
-test(() => {
- scroller.scrollTo(0, 0);
- target.scrollIntoView({inline: "center"});
- assert_approx_equals(scroller.scrollLeft, center, 0.5, "should center the target");
-}, `scrollIntoView({inline: "center"}), direction: rtl`);
-
-test(() => {
- scroller.scrollTo(0, 0);
- target.scrollIntoView({inline: "end"});
- assert_approx_equals(scroller.scrollLeft, leftEdge, 0.5, "end should be the left edge");
-}, `scrollIntoView({inline: "end"}), direction: rtl`);
-</script>
-
-</body>
-</html>
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html
new file mode 100644
index 00000000000..3ef9d62a365
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html>
+<title>CSSOM View - scrollIntoView considers horizontal-tb and rtl direction</title>
+<meta charset="utf-8">
+<link rel="author" title="Cathie Chen" href="mailto:cathiechen@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview">
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#scroll-an-element">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<style>
+.box {
+ float: left;
+ width: 200px;
+ height: 200px;
+}
+#scroller {
+ direction: rtl;
+ overflow: scroll;
+ width: 300px;
+ height: 300px;
+}
+#container{
+ width: 600px;
+ height: 600px;
+}
+#target {
+ background-color: #ff0;
+}
+</style>
+<body>
+<div id="scroller">
+ <div id="container">
+ <!-- ROW-1 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box"></div>
+ <div class="box"></div>
+ </div>
+
+ <!-- ROW-2 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box" id="target"></div>
+ <div class="box"></div>
+ </div>
+
+ <!-- ROW-3 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box"></div>
+ <div class="box"></div>
+ </div>
+ </div>
+</div>
+
+<script>
+// In horizontal-tb mode and rtl direction, X corresponds to the inline axis
+// and is oriented leftward. Y corresponds to the block axis and is oriented
+// downward. So the beginning edges are the top and right edges and the ending
+// edges are the bottom and left edges.
+
+// According to the spec, x is min(0, max(x, element padding edge width - element scrolling area width)).
+// So x is nonpositive and decreases leftward.
+
+// This assumes that the horizontal scrollbar is on the bottom side
+// and the vertical scrollbar is on the left side.
+
+var target = document.getElementById("target");
+var scroller = document.getElementById("scroller");
+var scrollbar_width = scroller.offsetWidth - scroller.clientWidth;
+
+var scroller_width = scroller.offsetWidth;
+var scroller_height = scroller.offsetHeight;
+var box_width = target.offsetWidth;
+var box_height = target.offsetHeight;
+
+var expectedX = {
+ inlineStart: -box_width,
+ inlineCenter: -((3*box_width - scroller_width)/2) - scrollbar_width/2,
+ inlineEnd: -(2*box_width - scroller_width) - scrollbar_width,
+};
+
+var expectedY = {
+ blockStart: box_height,
+ blockCenter: (3*box_height - scroller_height)/2 + scrollbar_width/2,
+ blockEnd: 2*box_height - scroller_height + scrollbar_width,
+};
+
+[
+ [{block: "start", inline: "start"}, expectedX.inlineStart, expectedY.blockStart],
+ [{block: "start", inline: "center"}, expectedX.inlineCenter, expectedY.blockStart],
+ [{block: "start", inline: "end"}, expectedX.inlineEnd, expectedY.blockStart],
+ [{block: "center", inline: "start"}, expectedX.inlineStart, expectedY.blockCenter],
+ [{block: "center", inline: "center"}, expectedX.inlineCenter, expectedY.blockCenter],
+ [{block: "center", inline: "end"}, expectedX.inlineEnd, expectedY.blockCenter],
+ [{block: "end", inline: "start"}, expectedX.inlineStart, expectedY.blockEnd],
+ [{block: "end", inline: "center"}, expectedX.inlineCenter, expectedY.blockEnd],
+ [{block: "end", inline: "end"}, expectedX.inlineEnd, expectedY.blockEnd],
+].forEach(([input, expectedX, expectedY]) => {
+ test(() => {
+ scroller.scrollTo(0, 0);
+ target.scrollIntoView(input);
+ assert_approx_equals(scroller.scrollLeft, expectedX, 0.5, "scrollX");
+ assert_approx_equals(scroller.scrollTop, expectedY, 0.5, "scrollY");
+ }, `scrollIntoView(${JSON.stringify(input)})`);
+})
+
+</script>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html
new file mode 100644
index 00000000000..49d5f5d8653
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<title>CSSOM View - scrollIntoView considers horizontal-tb writing mode</title>
+<meta charset="utf-8">
+<link rel="author" title="Cathie Chen" href="mailto:cathiechen@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<style>
+.box {
+ float: left;
+ width: 200px;
+ height: 200px;
+}
+#scroller {
+ overflow: scroll;
+ width: 300px;
+ height: 300px;
+}
+#container{
+ width: 600px;
+ height: 600px;
+}
+#target {
+ background-color: #ff0;
+}
+</style>
+<body>
+<div id="scroller">
+ <div id="container">
+ <!-- ROW-1 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box"></div>
+ <div class="box"></div>
+ </div>
+
+ <!-- ROW-2 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box" id="target"></div>
+ <div class="box"></div>
+ </div>
+
+ <!-- ROW-3 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box"></div>
+ <div class="box"></div>
+ </div>
+ </div>
+</div>
+
+<script>
+// In horizontal-tb mode, X corresponds to the inline axis and is oriented
+// rightward. Y corresponds to the block axis and is oriented downward.
+// So the beginning edges are the top and left edges and the ending
+// edges are the bottom and right edges.
+
+// This assumes that the horizontal scrollbar is on the bottom side and
+// the vertical scrollbar is on the right side.
+
+var target = document.getElementById("target");
+var scroller = document.getElementById("scroller");
+var scrollbar_width = scroller.offsetWidth - scroller.clientWidth;
+
+var scroller_width = scroller.offsetWidth;
+var scroller_height = scroller.offsetHeight;
+var box_width = target.offsetWidth;
+var box_height = target.offsetHeight;
+
+var expectedX = {
+ inlineStart: box_width,
+ inlineCenter: (3*box_width - scroller_width)/2 + scrollbar_width/2,
+ inlineEnd: 2*box_width - scroller_width + scrollbar_width,
+ };
+
+var expectedY = {
+ blockStart: box_height,
+ blockCenter: (3*box_height - scroller_height)/2 + scrollbar_width/2,
+ blockEnd: 2*box_height - scroller_height + scrollbar_width,
+};
+
+[
+ [{block: "start", inline: "start"}, expectedX.inlineStart, expectedY.blockStart],
+ [{block: "start", inline: "center"}, expectedX.inlineCenter, expectedY.blockStart],
+ [{block: "start", inline: "end"}, expectedX.inlineEnd, expectedY.blockStart],
+ [{block: "center", inline: "start"}, expectedX.inlineStart, expectedY.blockCenter],
+ [{block: "center", inline: "center"}, expectedX.inlineCenter, expectedY.blockCenter],
+ [{block: "center", inline: "end"}, expectedX.inlineEnd, expectedY.blockCenter],
+ [{block: "end", inline: "start"}, expectedX.inlineStart, expectedY.blockEnd],
+ [{block: "end", inline: "center"}, expectedX.inlineCenter, expectedY.blockEnd],
+ [{block: "end", inline: "end"}, expectedX.inlineEnd, expectedY.blockEnd],
+].forEach(([input, expectedX, expectedY]) => {
+ test(() => {
+ scroller.scrollTo(0, 0);
+ target.scrollIntoView(input);
+ assert_approx_equals(scroller.scrollLeft, expectedX, 0.5, "scrollX");
+ assert_approx_equals(scroller.scrollTop, expectedY, 0.5, "scrollY");
+ }, `scrollIntoView(${JSON.stringify(input)})`);
+})
+
+</script>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html
new file mode 100644
index 00000000000..3301141ee01
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<title>CSSOM View - scrollIntoView considers vertical-lr and rtl direction</title>
+<meta charset="utf-8">
+<link rel="author" title="Cathie Chen" href="mailto:cathiechen@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview">
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#scroll-an-element">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<style>
+.box {
+ float: left;
+ width: 200px;
+ height: 200px;
+}
+#scroller {
+ writing-mode: vertical-lr;
+ direction: rtl;
+ overflow: scroll;
+ width: 300px;
+ height: 300px;
+}
+#container{
+ width: 600px;
+ height: 600px;
+}
+#target {
+ background-color: #ff0;
+}
+</style>
+<body>
+<div id="scroller">
+ <div id="container">
+ <!-- ROW-1 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box"></div>
+ <div class="box"></div>
+ </div>
+
+ <!-- ROW-2 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box" id="target"></div>
+ <div class="box"></div>
+ </div>
+
+ <!-- ROW-3 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box"></div>
+ <div class="box"></div>
+ </div>
+ </div>
+</div>
+
+<script>
+// In vertical-lr mode and rtl direction, X corresponds to the block axis
+// and is oriented rightward. Y corresponds to the inline axis and is oriented
+// upward. So the beginning edges are the bottom and left edges and the ending
+// edges are the top and right edges.
+
+// According to the spec, y be min(0, max(y, element padding edge height - element scrolling area height)).
+// So y is nonpositive and decreases upward.
+
+// This assumes that the horizontal scrollbar
+// is on the bottom side and the vertical scrollbar is on the right side.
+
+var target = document.getElementById("target");
+var scroller = document.getElementById("scroller");
+var scrollbar_width = scroller.offsetWidth - scroller.clientWidth;
+
+var scroller_width = scroller.offsetWidth;
+var scroller_height = scroller.offsetHeight;
+var box_width = target.offsetWidth;
+var box_height = target.offsetHeight;
+
+var expectedX = {
+ blockStart: box_width,
+ blockCenter: (3*box_width - scroller_width)/2 + scrollbar_width/2,
+ blockEnd: 2*box_width - scroller_width + scrollbar_width,
+};
+
+var expectedY = {
+ inlineStart: -box_height,
+ inlineCenter: -((3*box_height - scroller_height)/2) - scrollbar_width/2,
+ inlineEnd: -(2*box_height - scroller_height) - scrollbar_width,
+};
+
+[
+ [{block: "start", inline: "start"}, expectedX.blockStart, expectedY.inlineStart],
+ [{block: "start", inline: "center"}, expectedX.blockStart, expectedY.inlineCenter],
+ [{block: "start", inline: "end"}, expectedX.blockStart, expectedY.inlineEnd],
+ [{block: "center", inline: "start"}, expectedX.blockCenter, expectedY.inlineStart],
+ [{block: "center", inline: "center"}, expectedX.blockCenter, expectedY.inlineCenter],
+ [{block: "center", inline: "end"}, expectedX.blockCenter, expectedY.inlineEnd],
+ [{block: "end", inline: "start"}, expectedX.blockEnd, expectedY.inlineStart],
+ [{block: "end", inline: "center"}, expectedX.blockEnd, expectedY.inlineCenter],
+ [{block: "end", inline: "end"}, expectedX.blockEnd, expectedY.inlineEnd],
+].forEach(([input, expectedX, expectedY]) => {
+ test(() => {
+ scroller.scrollTo(0, 0);
+ target.scrollIntoView(input);
+ assert_approx_equals(scroller.scrollLeft, expectedX, 0.5, "scrollX");
+ assert_approx_equals(scroller.scrollTop, expectedY, 0.5, "scrollY");
+ }, `scrollIntoView(${JSON.stringify(input)})`);
+})
+
+</script>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html
new file mode 100644
index 00000000000..9242a49c0bc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html>
+<title>CSSOM View - scrollIntoView considers vertical-lr writing mode</title>
+<meta charset="utf-8">
+<link rel="author" title="Cathie Chen" href="mailto:cathiechen@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<style>
+.box {
+ float: left;
+ width: 200px;
+ height: 200px;
+}
+#scroller {
+ writing-mode: vertical-lr;
+ overflow: scroll;
+ width: 300px;
+ height: 300px;
+}
+#container{
+ width: 600px;
+ height: 600px;
+}
+#target {
+ background-color: #ff0;
+}
+</style>
+<body>
+<div id="scroller">
+ <div id="container">
+ <!-- ROW-1 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box"></div>
+ <div class="box"></div>
+ </div>
+
+ <!-- ROW-2 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box" id="target"></div>
+ <div class="box"></div>
+ </div>
+
+ <!-- ROW-3 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box"></div>
+ <div class="box"></div>
+ </div>
+ </div>
+</div>
+
+<script>
+// In vertical-lr mode, X corresponds to the block axis and is oriented
+// rightward. Y corresponds to the inline axis and is oriented downward.
+// So the beginning edges are the top and left edges and the ending
+// edges are the bottom and right edges.
+
+// This assumes that the horizontal scrollbar is on the bottom side and
+// the vertical scrollbar is on the right side.
+
+var target = document.getElementById("target");
+var scroller = document.getElementById("scroller");
+var scrollbar_width = scroller.offsetWidth - scroller.clientWidth;
+
+var scroller_width = scroller.offsetWidth;
+var scroller_height = scroller.offsetHeight;
+var box_width = target.offsetWidth;
+var box_height = target.offsetHeight;
+
+var expectedX = {
+ blockStart: box_width,
+ blockCenter: (3*box_width - scroller_width)/2 + (scrollbar_width/2),
+ blockEnd: (2*box_width) - scroller_width + scrollbar_width,
+};
+
+var expectedY = {
+ inlineStart: box_height,
+ inlineCenter: ((3*box_height - scroller_height)/2) + (scrollbar_width/2),
+ inlineEnd: ((2*box_height) - scroller_height) + scrollbar_width,
+};
+
+[
+ [{block: "start", inline: "start"}, expectedX.blockStart, expectedY.inlineStart],
+ [{block: "start", inline: "center"}, expectedX.blockStart, expectedY.inlineCenter],
+ [{block: "start", inline: "end"}, expectedX.blockStart, expectedY.inlineEnd],
+ [{block: "center", inline: "start"}, expectedX.blockCenter, expectedY.inlineStart],
+ [{block: "center", inline: "center"}, expectedX.blockCenter, expectedY.inlineCenter],
+ [{block: "center", inline: "end"}, expectedX.blockCenter, expectedY.inlineEnd],
+ [{block: "end", inline: "start"}, expectedX.blockEnd, expectedY.inlineStart],
+ [{block: "end", inline: "center"}, expectedX.blockEnd, expectedY.inlineCenter],
+ [{block: "end", inline: "end"}, expectedX.blockEnd, expectedY.inlineEnd],
+].forEach(([input, expectedX, expectedY]) => {
+ test(() => {
+ scroller.scrollTo(0, 0);
+ target.scrollIntoView(input);
+ assert_approx_equals(scroller.scrollLeft, expectedX, 0.5, "scrollX");
+ assert_approx_equals(scroller.scrollTop, expectedY, 0.5, "scrollY");
+ }, `scrollIntoView(${JSON.stringify(input)})`);
+})
+
+</script>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html
index 56bcf214517..cec27f412c9 100644
--- a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html
+++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html
@@ -55,7 +55,11 @@
<script>
// In vertical-rl mode, X corresponds to the block axis and is oriented
// leftward. Y corresponds to the inline axis and is oriented downward.
+// So the beginning edges are the top and right edges and the ending
+// edges are the bottom and left edges.
+
// This assumes that the horizontal scrollbar is on the bottom side.
+
var target = document.getElementById("target");
var scroller = document.getElementById("scroller");
var scrollbar_width = scroller.offsetWidth - scroller.clientWidth;
@@ -102,17 +106,6 @@ if(scroller.scrollLeft === 0) {
};
}
-// This formats dict as a string suitable as test name.
-// format_value() is provided by testharness.js,
-// which also preserves sign for -0.
-function format_dict(dict) {
- const props = [];
- for (let prop in dict) {
- props.push(`${prop}: ${format_value(dict[prop])}`);
- }
- return `{${props.join(", ")}}`;
-}
-
[
[{block: "start", inline: "start"}, expectedX.blockStart, expectedY.inlineStart],
[{block: "start", inline: "center"}, expectedX.blockStart, expectedY.inlineCenter],
@@ -129,7 +122,7 @@ function format_dict(dict) {
target.scrollIntoView(input);
assert_approx_equals(scroller.scrollLeft, expectedX, 0.5, "scrollX");
assert_approx_equals(scroller.scrollTop, expectedY, 0.5, "scrollY");
- }, `scrollIntoView(${format_dict(input)})`);
+ }, `scrollIntoView(${JSON.stringify(input)})`);
})
</script>
diff --git a/tests/wpt/web-platform-tests/element-timing/buffer-before-onload.html b/tests/wpt/web-platform-tests/element-timing/buffer-before-onload.html
index 88a641bbb66..68eeeefe15f 100644
--- a/tests/wpt/web-platform-tests/element-timing/buffer-before-onload.html
+++ b/tests/wpt/web-platform-tests/element-timing/buffer-before-onload.html
@@ -10,8 +10,7 @@
<script>
/*
In this test, a slow image is added to the frame to delay onload. The entry
- for the other image should be available before onload, and thus delivered to
- the performance timeline.
+ is available from the observer with the buffered flag set to true.
*/
async_test(function(t) {
if (!window.PerformanceElementTiming) {
@@ -23,18 +22,26 @@
img.setAttribute('elementtiming', 'my_image');
img.setAttribute('id', 'my_id');
document.body.appendChild(img);
- window.onload = t.step_func_done( () => {
- const entries = performance.getEntriesByType('element');
- assert_greater_than_equal(entries.length, 1);
- assert_equals(performance.getEntries().filter(e => e.identifier === 'my_image').length, 1);
- const entry = entries[0];
- const index = window.location.href.lastIndexOf('/');
- const pathname = window.location.href.substring(0, index) +
- '/resources/square20.jpg';
- checkElement(entry, pathname, 'my_image', 'my_id', beforeRender, img);
- checkNaturalSize(entry, 20, 20);
+
+ // this PerformanceObserver should be notified about the previously
+ // buffered element entry
+ new PerformanceObserver(function (entryList, observer) {
+ assert_equals(entryList.getEntries().length, 1);
+ entryList.getEntries().forEach(function(entry) {
+ assert_equals(entry.entryType, "element");
+ const index = window.location.href.lastIndexOf('/');
+ const pathname = window.location.href.substring(0, index) +
+ '/resources/square20.jpg';
+ checkElement(entry, pathname, 'my_image', 'my_id', beforeRender, img);
+ checkNaturalSize(entry, 20, 20);
+ observer.disconnect();
+ t.done();
+ });
+ }).observe({
+ type: "element",
+ buffered: true
});
- }, "Element Timing: image loads before onload.");
+ }, "Element Timing: image loads before onload available from buffered flag.");
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/event-timing/bufferbeforeonload.html b/tests/wpt/web-platform-tests/event-timing/bufferbeforeonload.html
index c91546ae41a..c30c01aa96b 100644
--- a/tests/wpt/web-platform-tests/event-timing/bufferbeforeonload.html
+++ b/tests/wpt/web-platform-tests/event-timing/bufferbeforeonload.html
@@ -27,9 +27,7 @@
firstClickEnd = performance.now();
}
- function validateEntries() {
- const entries = performance.getEntriesByName('mousedown', 'event');
-
+ function validateEntries(entries) {
const entriesBeforeOnload = entries.filter(
e => e.startTime < onloadStart);
assert_equals(entriesBeforeOnload.length, 1,
@@ -48,8 +46,8 @@
const entriesAfterOnload = entries.filter(
e => e.startTime >= onloadStart);
- assert_equals(entriesAfterOnload.length, 0,
- "Events after onload shouldn't be buffered.");
+ assert_equals(entriesAfterOnload.length, 1,
+ "Events after onload should still be buffered.");
}
/* Timeline:
@@ -66,24 +64,31 @@
async_test(function(t) {
clickTimeMin = performance.now();
clickAndBlockMain('button');
- // Use a dummy observer to know when both clicks have been dispatched.
- const observerPromise = new Promise((resolve, reject) => {
- let entryCount = 0;
- new PerformanceObserver(entryList => {
- entryCount += entryList.getEntries().filter(
- entry => entry.name === 'mousedown').length;
- if (entryCount >= 2)
- resolve();
- }).observe({ entryTypes: ['event'] });
- });
// Event handlers will be dispatched asynchronously, so this will be called
// before processing begins.
processingStartMin = performance.now();
+ const bufferedEntries = [];
on_event(window, 'load', e => {
onloadStart = performance.now();
- const clickPromise = clickAndBlockMain('button');
- Promise.all([observerPromise, clickPromise]).then(
- t.step_func_done(validateEntries));
+ // Register the observer after the page has been loaded
+ const observer = new PerformanceObserver(function (entryList, observer) {
+ entryList.getEntries().forEach(function(entry) {
+ assert_equals(entry.entryType, "event");
+ if (entry.name === 'mousedown') {
+ bufferedEntries.push(entry);
+ }
+ if (bufferedEntries.length == 2) {
+ validateEntries(bufferedEntries)
+ observer.disconnect();
+ t.done();
+ }
+ });
+ })
+ observer.observe({
+ type: "event",
+ buffered: true
+ });
+ clickAndBlockMain('button');
});
}, "Event Timing: click, onload.");
diff --git a/tests/wpt/web-platform-tests/event-timing/observethenonload.html b/tests/wpt/web-platform-tests/event-timing/observethenonload.html
index e1c36e30210..4145eae0a59 100644
--- a/tests/wpt/web-platform-tests/event-timing/observethenonload.html
+++ b/tests/wpt/web-platform-tests/event-timing/observethenonload.html
@@ -20,19 +20,6 @@
let onloadStart;
let observedEntries = [];
- function verifyBuffer(bufferedEntries) {
- assert_equals(bufferedEntries.length, 1,
- "Only events before onload should be buffered.");
- const entry = bufferedEntries[0];
- assert_greater_than(onloadStart, entry.startTime,
- "Onload should be later than entry's start time.");
- assert_greater_than(entry.processingStart, timeBeforeFirstClick,
- "The entry's processing start should be after timeBeforeFirstClick");
- assert_less_than(entry.processingStart, timeAfterFirstClick,
- "The entry's processing start should be before timeAfterFirstClick.");
- verifyClickEvent(entry, true);
- }
-
function verifyObserverEntries(observedEntries) {
const entriesAfterFirstClick = observedEntries.filter(
e => e.startTime > timeAfterFirstClick);
@@ -60,6 +47,9 @@
"entry2's processing start should be berfore timeAfterFirstClick.");
assert_greater_than(timeAfterFirstClick, entry2.startTime,
"timeAfterFirstClick should be later than entry2's start time.");
+ // This should happen before onLoad
+ assert_greater_than(onloadStart, entry2.startTime,
+ "Onload should be later than entry's start time.");
}
/* Timeline:
@@ -82,7 +72,7 @@
entry => entry.name === 'mousedown'));
if (observedEntries.length < 2) return;
resolve(observedEntries);
- }).observe({ entryTypes: ['event'] });
+ }).observe({ type: 'event' , buffered: true});
});
timeBeforeFirstClick = performance.now();
clickAndBlockMain('button').then( () => {
@@ -95,7 +85,6 @@
Promise.all([observerPromise, bufferPromise]).then((results) => {
timeAfterSecondClick = performance.now();
t.step(verifyObserverEntries.bind(null, results[0]));
- t.step(verifyBuffer.bind(null, performance.getEntriesByName('mousedown', 'event')));
t.done();
});
});
diff --git a/tests/wpt/web-platform-tests/event-timing/onloadthenobserve-firstInput.html b/tests/wpt/web-platform-tests/event-timing/onloadthenobserve-firstInput.html
index 1422ceaa955..4efdfbbf006 100644
--- a/tests/wpt/web-platform-tests/event-timing/onloadthenobserve-firstInput.html
+++ b/tests/wpt/web-platform-tests/event-timing/onloadthenobserve-firstInput.html
@@ -23,30 +23,38 @@
async_test(function(t) {
let numFirstInputObserved = 0;
let numEventsObserved = 0;
- new PerformanceObserver(t.step_func((entryList, obs) => {
- const observedEntries = entryList.getEntries().filter(
- entry => entry.name === 'mousedown');
- numEventsObserved += observedEntries.filter(entry =>
- entry.entryType == 'event').length;
- numFirstInputObserved += observedEntries.filter(entry =>
- entry.entryType == 'firstInput').length;
+ let observedEventEntries = [];
+
+ const event_observer_promise = new Promise((resolve, reject) => {
+ new PerformanceObserver(function(entryList) {
+ observedEventEntries = entryList.getEntries().filter(
+ entry => entry.name === 'mousedown');
+ numEventsObserved += observedEventEntries.length;
if (numEventsObserved >= 2) {
- assert_equals(performance.getEntriesByType('event').length, 0,
- "There should be no buffered event entries.");
- assert_equals(performance.getEntriesByType('firstInput').length, 1,
- "There should be a buffered firstInput entry.");
- // There should be 2 event entries and one firstInput entry.
+ // There should be 2 event entries.
assert_equals(numEventsObserved, 2,
"There should be 2 observed event entries.");
- assert_equals(numFirstInputObserved, 1,
- "There should be only 1 observed firstInput entry.");
- t.done();
+ resolve();
}
- })).observe({ entryTypes: ['event', 'firstInput'] });
- on_event(window, 'load', () => {
- clickAndBlockMain('button').then(() => {
+ }).observe({ type: 'event' , buffered: true});
+ });
+
+ const first_input_observer_promise = new Promise((resolve, reject) => {
+ new PerformanceObserver(function(entryList) {
+ assert_equals(entryList.getEntries().length, 1);
+ resolve();
+ }).observe({ type: 'firstInput' , buffered: true});
+ });
+
+ on_event(window, 'load', function(e) {
+ const click_promise = clickAndBlockMain('button').then(() => {
clickAndBlockMain('button');
});
+ Promise.all(
+ [event_observer_promise, first_input_observer_promise, click_promise]
+ ).then(() => {
+ t.done();
+ });
});
},
"Event Timing: check firstInput after onload, observer, click, click."
diff --git a/tests/wpt/web-platform-tests/event-timing/onloadthenobserve.html b/tests/wpt/web-platform-tests/event-timing/onloadthenobserve.html
index e2f9c932e6f..d97228577a1 100644
--- a/tests/wpt/web-platform-tests/event-timing/onloadthenobserve.html
+++ b/tests/wpt/web-platform-tests/event-timing/onloadthenobserve.html
@@ -17,16 +17,9 @@ registration are lost
let observerStart;
let processingStartMin;
- function verifyBufferAndObserverEntries(observedEntries) {
- // Verify buffer entries
- const bufferedEntries = performance.getEntriesByName('mousedown', 'event');
- const bufferedEntriesBeforeObserver = bufferedEntries.filter(e => e.startTime <
- observerStart);
- assert_equals(bufferedEntries.length, 0,
- "Long latency events after onload should not be buffered."
- );
-
- // Verify observer entries
+ function verifyObserverEntries(observedEntries) {
+ // Verify observer entries. Should not include first click since we didn't
+ // buffered to true.
assert_equals(observedEntries.length, 1, "Long latency task after observer start should be observed.");
const entry = observedEntries[0];
verifyClickEvent(entry);
@@ -45,8 +38,8 @@ registration are lost
callbackTime = performance.now();
const observedEntries = entryList.getEntries().filter(
entry => entry.name === 'mousedown');
- verifyBufferAndObserverEntries(observedEntries);
- })).observe({ entryTypes: ['event'] });
+ verifyObserverEntries(observedEntries);
+ })).observe({ type: 'event'});
observerStart = performance.now();
}
diff --git a/tests/wpt/web-platform-tests/event-timing/resources/crossiframe-childframe.html b/tests/wpt/web-platform-tests/event-timing/resources/crossiframe-childframe.html
index 7aa4ace73af..ee9da6cad54 100644
--- a/tests/wpt/web-platform-tests/event-timing/resources/crossiframe-childframe.html
+++ b/tests/wpt/web-platform-tests/event-timing/resources/crossiframe-childframe.html
@@ -2,7 +2,6 @@
<html>
<script src=event-timing-test-utils.js></script>
<button id='button_child_frame'>Generate a 'click' event</button>
-<img src=slow-image.py>
<script>
const clickTimeMin = performance.now();
clickAndBlockMain('button_child_frame');
@@ -10,7 +9,7 @@
const observerPromise = new Promise((resolve, reject) => {
new PerformanceObserver((entryList) => {
resolve(entryList.getEntries().filter(entry => entry.name === 'mousedown'));
- }).observe({ entryTypes: ['event'] });
+ }).observe({ type:'event', buffered: true });
});
window.addEventListener('load', e => {
observerPromise.then((observedEntries) => {
diff --git a/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html b/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html
index e599bf26f94..bf42d0eaf68 100644
--- a/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html
+++ b/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html
@@ -58,6 +58,7 @@ protected_mime_types = [
"application/x-protobuf",
"application/x-www-form-urlencoded",
"application/zip",
+ "multipart/byteranges",
"text/event-stream",
// TODO(lukasza): https://crbug.com/944162: Add application/pdf and
// text/csv to the list of content types tested here (after
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes-ref.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes-ref.html
new file mode 100644
index 00000000000..3758ea2cab4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<title>iframe with scrolling attr equals yes</title>
+<link rel="author" title="Jinfeng Ma" href="mailto:majinfeng1@xiaomi.org">
+
+<p>Test passes if you can see the scrollbars of the iframe displayed below.</p>
+<iframe src="support/iframe-which-content-height-equals-400px.html" scrolling="yes" width="200px" height="100px">
+</iframe>
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes.html
new file mode 100644
index 00000000000..9d85aa543d2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<title>modify iframe scrolling attr to yes</title>
+<link rel="author" title="Jinfeng Ma" href="mailto:majinfeng1@xiaomi.org">
+<link rel="help" href="https://www.w3.org/TR/html401/present/frames.html#adef-scrolling">
+<link rel="match" href="iframe-modify-scrolling-attr-to-yes-ref.html">
+
+<p>Test passes if you can see the scrollbars of the iframe displayed below.</p>
+<iframe src="support/iframe-which-content-height-equals-400px.html" scrolling="no" width="200px" height="100px">
+</iframe>
+
+<script>
+ let iframe = document.querySelector("iframe");
+ iframe.onload = function () {
+ iframe.scrolling = 'yes';
+ };
+</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/iframe-which-content-height-equals-400px.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/iframe-which-content-height-equals-400px.html
new file mode 100644
index 00000000000..bb3dbd31182
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/iframe-which-content-height-equals-400px.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html>
+<body style="width: 200px; height: 400px">
+iframe content
+</body> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini
deleted file mode 100644
index c83e8ff9261..00000000000
--- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[actionsWithKeyPressed.html]
- expected:
- if product == "safari": ERROR
-
- [TestDriver actions: actions with key pressed]
- expected:
- if product == "firefox": FAIL
- if os == "mac" and product == "chrome": FAIL
diff --git a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/actionsWithKeyPressed.html b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/actionsWithKeyPressed.html
deleted file mode 100644
index 74e939f5fde..00000000000
--- a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/actionsWithKeyPressed.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>TestDriver actions: actions with key pressed</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-actions.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-
-<style>
-div#test1, div#test2 {
- position: fixed;
- top: 0;
- left: 0;
- width: 100px;
- height: 100px;
- background-color: blue;
-}
-
-div#test2 {
- position: fixed;
- top: 100px;
- left: 0;
- width: 100px;
- height: 100px;
- background-color: green;
-}
-</style>
-
-<div id="test1">
-</div>
-
-<div id="test2">
-</div>
-
-<script>
-let keys = [];
-
-async_test(t => {
- let test1 = document.getElementById("test1");
- let test2 = document.getElementById("test2");
- document.getElementById("test1").addEventListener("click",
- e => {keys.push(e.getModifierState("Control"))});
- document.getElementById("test2").addEventListener("click",
- e => {keys.push(e.getModifierState("Control"))});
-
- let actions = new test_driver.Actions()
- .keyDown("\uE009")
- .addTick()
- .pointerMove(0, 0, {origin: test1})
- .pointerDown()
- .pointerUp()
- .pointerMove(0, 0, {origin: test2})
- .pointerDown()
- .pointerUp()
- .addTick()
- .keyUp("\uE009")
- .addTick()
- .pointerMove(0, 0, {origin: test1})
- .pointerDown()
- .pointerUp();
-
- actions.send()
- .then(t.step_func_done(() => assert_array_equals(keys, [true, true, false])))
- .catch(e => t.step_func(() => assert_unreached("Actions sequence failed " + e)));
-});
-</script>
diff --git a/tests/wpt/web-platform-tests/interfaces/WebIDL.idl b/tests/wpt/web-platform-tests/interfaces/WebIDL.idl
index aa8d5bad16a..a9157a95590 100644
--- a/tests/wpt/web-platform-tests/interfaces/WebIDL.idl
+++ b/tests/wpt/web-platform-tests/interfaces/WebIDL.idl
@@ -10,7 +10,8 @@ typedef (Int8Array or Int16Array or Int32Array or
typedef (ArrayBufferView or ArrayBuffer) BufferSource;
[
Exposed=(Window,Worker),
- Constructor(optional DOMString message = "", optional DOMString name = "Error")
+ Constructor(optional DOMString message = "", optional DOMString name = "Error"),
+ Serializable
]
interface DOMException { // but see below note about ECMAScript binding
readonly attribute DOMString name;
diff --git a/tests/wpt/web-platform-tests/interfaces/webxr.idl b/tests/wpt/web-platform-tests/interfaces/webxr.idl
index c78683ef6bf..2c9eac51067 100644
--- a/tests/wpt/web-platform-tests/interfaces/webxr.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webxr.idl
@@ -10,7 +10,7 @@ partial interface Navigator {
[SecureContext, Exposed=Window] interface XR : EventTarget {
// Methods
Promise<void> supportsSession(XRSessionMode mode);
- Promise<XRSession> requestSession(XRSessionMode mode);
+ Promise<XRSession> requestSession(XRSessionMode mode, optional XRSessionInit options);
// Events
attribute EventHandler ondevicechange;
@@ -22,6 +22,11 @@ enum XRSessionMode {
"immersive-ar"
};
+dictionary XRSessionInit {
+ sequence<DOMString> requiredFeatures;
+ sequence<DOMString> optionalFeatures;
+};
+
enum XREnvironmentBlendMode {
"opaque",
"additive",
@@ -239,13 +244,11 @@ dictionary XRSessionEventInit : EventInit {
interface XRInputSourceEvent : Event {
[SameObject] readonly attribute XRFrame frame;
[SameObject] readonly attribute XRInputSource inputSource;
- [SameObject] readonly attribute long? buttonIndex;
};
dictionary XRInputSourceEventInit : EventInit {
required XRFrame frame;
required XRInputSource inputSource;
- long? buttonIndex = null;
};
[SecureContext, Exposed=Window, Constructor(DOMString type, XRInputSourcesChangeEventInit eventInitDict)]
diff --git a/tests/wpt/web-platform-tests/layout-instability/buffer-layout-shift.html b/tests/wpt/web-platform-tests/layout-instability/buffer-layout-shift.html
index c1d0dc6d6eb..5d2e69f1ff2 100644
--- a/tests/wpt/web-platform-tests/layout-instability/buffer-layout-shift.html
+++ b/tests/wpt/web-platform-tests/layout-instability/buffer-layout-shift.html
@@ -30,8 +30,11 @@
assert_greater_than_equal(entry.startTime, startTime)
assert_less_than_equal(entry.startTime, endTime)
assert_equals(entry.duration, 0.0);
- // The layout shift value should be: 300 * (100 + 60) / viewport size.
- assert_equals(entry.value, 300 * (100 + 60) /
+ const maxDimension = Math.max(document.documentElement.clientWidth,
+ document.documentElement.clientHeight);
+ // The layout shift value should be:
+ // 300 * (100 + 60) * (60 / maxDimension) / viewport size.
+ assert_equals(entry.value, 300 * (100 + 60) * (60 / maxDimension) /
(document.documentElement.clientWidth * document.documentElement.clientHeight));
t.done();
}
diff --git a/tests/wpt/web-platform-tests/layout-instability/observe-layout-shift.html b/tests/wpt/web-platform-tests/layout-instability/observe-layout-shift.html
index 25e4950f6a7..1aa429b6b68 100644
--- a/tests/wpt/web-platform-tests/layout-instability/observe-layout-shift.html
+++ b/tests/wpt/web-platform-tests/layout-instability/observe-layout-shift.html
@@ -51,8 +51,11 @@
assert_greater_than_equal(entry.startTime, startTime)
assert_less_than_equal(entry.startTime, endTime)
assert_equals(entry.duration, 0.0);
- // The layout shift value should be: 300 * (100 + 60) / viewport size.
- assert_equals(entry.value, 300 * (100 + 60) /
+ const maxDimension = Math.max(document.documentElement.clientWidth,
+ document.documentElement.clientHeight);
+ // The layout shift value should be:
+ // 300 * (100 + 60) * (60 / maxDimension) / viewport size.
+ assert_equals(entry.value, 300 * (100 + 60) * (60 / maxDimension) /
(document.documentElement.clientWidth * document.documentElement.clientHeight));
})
);
@@ -75,8 +78,11 @@
assert_greater_than_equal(entry.startTime, startTime)
assert_less_than_equal(entry.startTime, endTime)
assert_equals(entry.duration, 0.0);
- // The layout shift value should be: 300 * (100 + 60) / viewport size.
- assert_equals(entry.value, 300 * (100 + 60) /
+ const maxDimension = Math.max(document.documentElement.clientWidth,
+ document.documentElement.clientHeight);
+ // The layout shift value should be:
+ // 300 * (100 + 60) * (60 / maxDimension) / viewport size.
+ assert_equals(entry.value, 300 * (100 + 60) * (60 / maxDimension) /
(document.documentElement.clientWidth * document.documentElement.clientHeight));
// We should see that there was a click input entry
assert_equals(entry.hadRecentInput, true);
diff --git a/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-remove.tentative.window.js b/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-remove.tentative.window.js
index 5a8e67b8478..a4eb2871104 100644
--- a/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-remove.tentative.window.js
+++ b/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-remove.tentative.window.js
@@ -3,39 +3,74 @@ promise_test(async t => cleanupSandboxedFileSystem(),
'Cleanup to setup test environment');
promise_test(async t => {
- const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- const handle = await createFileWithContents(t, 'file-to-remove', '12345', dir);
- await createFileWithContents(t, 'file-to-keep', 'abc');
- await handle.remove();
+ const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const handle = await createFileWithContents(t, 'file-to-remove', '12345', root);
+ await createFileWithContents(t, 'file-to-keep', 'abc', root);
+ await root.removeEntry('file-to-remove');
- assert_array_equals(await getSortedDirectoryEntries(dir), ['file-to-keep']);
+ assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']);
await promise_rejects(t, 'NotFoundError', getFileContents(handle));
-}, 'remove() to remove a file');
+}, 'removeEntry() to remove a file');
promise_test(async t => {
- const handle = await createFileWithContents(t, 'file-to-remove', '12345');
- await handle.remove();
+ const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const handle = await createFileWithContents(t, 'file-to-remove', '12345', root);
+ await root.removeEntry('file-to-remove');
- await promise_rejects(t, 'NotFoundError', handle.remove());
-}, 'remove() on an already removed file should fail');
+ await promise_rejects(t, 'NotFoundError', root.removeEntry('file-to-remove'));
+}, 'removeEntry() on an already removed file should fail');
promise_test(async t => {
const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
const dir = await root.getDirectory('dir-to-remove', { create: true });
- await createFileWithContents(t, 'file-to-keep', 'abc');
- await dir.remove();
+ await createFileWithContents(t, 'file-to-keep', 'abc', root);
+ await root.removeEntry('dir-to-remove');
assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']);
await promise_rejects(t, 'NotFoundError', getSortedDirectoryEntries(dir));
-}, 'remove() to remove an empty directory');
+}, 'removeEntry() to remove an empty directory');
promise_test(async t => {
const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
const dir = await root.getDirectory('dir-to-remove', { create: true });
- t.add_cleanup(() => dir.removeRecursively());
+ t.add_cleanup(() => root.removeEntry('dir-to-remove', { recursive: true }));
await createEmptyFile(t, 'file-in-dir', dir);
- await promise_rejects(t, 'InvalidModificationError', dir.remove());
+ await promise_rejects(t, 'InvalidModificationError', root.removeEntry('dir-to-remove'));
assert_array_equals(await getSortedDirectoryEntries(root), ['dir-to-remove/']);
assert_array_equals(await getSortedDirectoryEntries(dir), ['file-in-dir']);
-}, 'remove() on a non-empty directory should fail');
+}, 'removeEntry() on a non-empty directory should fail');
+
+promise_test(async t => {
+ const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const dir = await createDirectory(t, 'dir', root);
+ await promise_rejects(t, 'NotFoundError', dir.removeEntry(""));
+}, 'removeEntry() with empty name should fail');
+
+promise_test(async t => {
+ const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const dir = await createDirectory(t, 'dir', root);
+ await promise_rejects(t, 'SecurityError', dir.removeEntry(kCurrentDirectory));
+}, `removeEntry() with "${kCurrentDirectory}" name should fail`);
+
+promise_test(async t => {
+ const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const dir = await createDirectory(t, 'dir', root);
+ await promise_rejects(t, 'SecurityError', dir.removeEntry(kParentDirectory));
+}, `removeEntry() with "${kParentDirectory}" name should fail`);
+
+promise_test(async t => {
+ const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+
+ const dir_name = 'dir-name';
+ const dir = await createDirectory(t, dir_name, root);
+
+ const file_name = 'file-name';
+ await createEmptyFile(t, file_name, dir);
+
+ for (let i = 0; i < kPathSeparators.length; ++i) {
+ const path_with_separator = `${dir_name}${kPathSeparators[i]}${file_name}`;
+ await promise_rejects(t, 'SecurityError', root.removeEntry(path_with_separator),
+ `removeEntry() must reject names containing "${kPathSeparators[i]}"`);
+ }
+}, 'removeEntry() with a path separator should fail.');
diff --git a/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.window.js b/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.window.js
index 0f8c1b13fa0..2064fc46f05 100644
--- a/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.window.js
+++ b/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.window.js
@@ -10,7 +10,7 @@ promise_test(async t => {
promise_test(async t => {
const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
const handle = await root.getDirectory('non-existing-dir', { create: true });
- t.add_cleanup(() => handle.removeRecursively());
+ t.add_cleanup(() => root.removeEntry('non-existing-dir', { recursive: true }));
assert_false(handle.isFile);
assert_true(handle.isDirectory);
@@ -22,7 +22,7 @@ promise_test(async t => {
promise_test(async t => {
const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
const existing_handle = await root.getDirectory('dir-with-contents', { create: true });
- t.add_cleanup(() => existing_handle.removeRecursively());
+ t.add_cleanup(() => root.removeEntry('dir-with-contents', { recursive: true }));
const file_handle = await createEmptyFile(t, 'test-file', existing_handle);
const handle = await root.getDirectory('dir-with-contents', { create: false });
@@ -36,7 +36,7 @@ promise_test(async t => {
promise_test(async t => {
const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
const existing_handle = await root.getDirectory('dir-with-contents', { create: true });
- t.add_cleanup(() => existing_handle.removeRecursively());
+ t.add_cleanup(() => root.removeEntry('dir-with-contents', { recursive: true }));
const file_handle = await existing_handle.getFile('test-file', { create: true });
const handle = await root.getDirectory('dir-with-contents', { create: true });
diff --git a/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getFile.tentative.window.js b/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getFile.tentative.window.js
index 0b27027f4ed..473cad4c9c3 100644
--- a/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getFile.tentative.window.js
+++ b/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getFile.tentative.window.js
@@ -10,7 +10,7 @@ promise_test(async t => {
promise_test(async t => {
const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
const handle = await dir.getFile('non-existing-file', { create: true });
- t.add_cleanup(() => handle.remove());
+ t.add_cleanup(() => dir.removeEntry('non-existing-file'));
assert_true(handle.isFile);
assert_false(handle.isDirectory);
@@ -48,7 +48,7 @@ promise_test(async t => {
promise_test(async t => {
const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
const dir_handle = await dir.getDirectory('dir-name', { create: true });
- t.add_cleanup(() => dir_handle.removeRecursively());
+ t.add_cleanup(() => dir.removeEntry('dir-name', { recursive: true }));
await promise_rejects(t, 'TypeMismatchError', dir.getFile('dir-name'));
}, 'getFile(create=false) when a directory already exists with the same name');
@@ -56,7 +56,7 @@ promise_test(async t => {
promise_test(async t => {
const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
const dir_handle = await dir.getDirectory('dir-name', { create: true });
- t.add_cleanup(() => dir_handle.removeRecursively());
+ t.add_cleanup(() => dir.removeEntry('dir-name', { recursive: true }));
await promise_rejects(t, 'TypeMismatchError', dir.getFile('dir-name', { create: true }));
}, 'getFile(create=true) when a directory already exists with the same name');
diff --git a/tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js b/tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js
index e29927b8524..56c93b59750 100644
--- a/tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js
+++ b/tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js
@@ -15,12 +15,8 @@ if (navigator.userAgent.includes("Windows NT")) {
async function cleanupSandboxedFileSystem() {
const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- for await (let entry of dir.getEntries()) {
- if (entry.isDirectory)
- await entry.removeRecursively();
- else
- await entry.remove();
- }
+ for await (let entry of dir.getEntries())
+ dir.removeEntry(entry.name, { recursive: entry.isDirectory });
}
async function getFileSize(handle) {
@@ -60,7 +56,7 @@ async function createDirectory(test, name, parent) {
const new_dir_handle = await parent_dir_handle.getDirectory(name, { create: true });
test.add_cleanup(async () => {
try {
- await new_dir_handle.removeRecursively();
+ await parent_dir_handle.removeEntry(name, { recursive: true });
} catch (e) {
// Ignore any errors when removing directories, as tests might
// have already removed the directory.
@@ -74,7 +70,7 @@ async function createEmptyFile(test, name, parent) {
const handle = await dir.getFile(name, { create: true });
test.add_cleanup(async () => {
try {
- await handle.remove();
+ await dir.removeEntry(name);
} catch (e) {
// Ignore any errors when removing files, as tests might already remove the file.
}
diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_mouse_pointercapture_in_frame.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_mouse_pointercapture_in_frame.html
deleted file mode 100644
index 83b4c1becc4..00000000000
--- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_mouse_pointercapture_in_frame.html
+++ /dev/null
@@ -1,143 +0,0 @@
-<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>
-<style>
-iframe {
- width: 300px;
- height: 300px;
- top: 100px;
- left: 100px;
- border: 0;
- position: absolute;
- background: green;
-}
-#outerFrame {
- width: 500px;
- height: 500px;
- background: blue;
-}
-</style>
-<body id="outerFrame body" onload="run()">
-<div id='outerFrame'>
-<iframe id='innerFrameElement' src="resources/pointerevent_mouse_pointercapture-iframe.html"></iframe>
-</div>
-</body>
-<script>
-var receivedEventList = [];
-function handleEvent(event) {
- receivedEventList.push(event.target.id + ' received ' + event.type);
-
- if (event.type == 'pointerdown') {
- if (document.setPointerCaptureOnPointerDown) {
- event.target.setPointerCapture(event.pointerId);
- }
- }
-
- if (event.type == "pointermove") {
- if (document.releasePointerCaptureOnFirstMove && event.target.hasPointerCapture(event.pointerId))
- event.target.releasePointerCapture(event.pointerId);
- }
-};
-
-document.testEventList = ['pointerup', 'pointerdown', 'pointermove', 'gotpointercapture', 'lostpointercapture'];
-document.testEventList.forEach(function(eventName) {
- document.getElementById('outerFrame').addEventListener(eventName, handleEvent);
-});
-
-document.setPointerCaptureOnPointerDown = false;
-document.releasePointerCaptureOnFirstMove = false;
-
-function run() {
- promise_test (async() => {
- document.setPointerCaptureOnPointerDown = true;
- receivedEventList = [];
- expectedEventList = ["innerFrame received pointermove",
- "innerFrame received pointerdown",
- "innerFrame received gotpointercapture",
- "innerFrame received pointermove",
- "innerFrame received pointermove",
- "innerFrame received pointerup",
- "innerFrame received lostpointercapture"];
- await new test_driver.Actions()
- .pointerMove(200, 200)
- .pointerDown()
- .pointerMove(150, 150)
- .pointerMove(50, 50)
- .pointerUp()
- .send();
- assert_array_equals(receivedEventList, expectedEventList, "Received events: " + receivedEventList);
- document.setPointerCaptureOnPointerDown = false;
- }, "Test pointer capture event route across the same-origin frame: Mouse down at inner frame and set pointer capture.");
-
-
- promise_test (async() => {
- document.setPointerCaptureOnPointerDown = true;
- receivedEventList = [];
- expectedEventList = ["outerFrame received pointermove",
- "outerFrame received pointerdown",
- "outerFrame received gotpointercapture",
- "outerFrame received pointermove",
- "outerFrame received pointerup",
- "outerFrame received lostpointercapture"];
- await new test_driver.Actions()
- .pointerMove(25, 25)
- .pointerDown()
- .pointerMove(200, 200)
- .pointerUp()
- .send();
- assert_array_equals(receivedEventList, expectedEventList, "Received events: " + receivedEventList);
- document.setPointerCaptureOnPointerDown = false;
- }, "Test pointer capture event route across the same-origin frame: Mouse down at outer frame body and set pointer capture.");
-
-
- promise_test (async() => {
- document.setPointerCaptureOnPointerDown = true;
- document.releasePointerCaptureOnFirstMove = true;
- receivedEventList = [];
- expectedEventList = ["innerFrame received pointermove",
- "innerFrame received pointerdown",
- "innerFrame received gotpointercapture",
- "innerFrame received pointermove",
- "innerFrame received lostpointercapture",
- "innerFrameDocument received pointermove",
- "innerFrameDocument received pointerup",];
- await new test_driver.Actions()
- .pointerMove(200, 200)
- .pointerDown()
- .pointerMove(150, 150)
- .pointerMove(50, 50)
- .pointerUp()
- .send();
- assert_array_equals(receivedEventList, expectedEventList, "Received events: " + receivedEventList);
- document.releasePointerCaptureOnFirstMove = false;
- document.setPointerCaptureOnPointerDown = false;
- }, "Test pointer capture event route across the same-origin frame: Mouse down with set capture at inner frame, then release on next mouse move.");
-
-
- promise_test (async() => {
- document.setPointerCaptureOnPointerDown = true;
- document.releasePointerCaptureOnFirstMove = true;
- receivedEventList = [];
- expectedEventList = ["outerFrame received pointermove",
- "outerFrame received pointerdown",
- "outerFrame received gotpointercapture",
- "outerFrame received pointermove",
- "outerFrame received lostpointercapture",
- "innerFrame received pointermove",
- "innerFrame received pointerup"];
- await new test_driver.Actions()
- .pointerMove(50, 50)
- .pointerDown()
- .pointerMove(200, 200)
- .pointerMove(250, 250)
- .pointerUp()
- .send();
- assert_array_equals(receivedEventList, expectedEventList, "Received events: " + receivedEventList);
- document.releasePointerCaptureOnFirstMove = false;
- document.setPointerCaptureOnPointerDown = false;
- }, "Test pointercapture event route across the same-origin frame: Mouse down with set capture at outer frame, then release on next mouse move.");
-}
-</script>
-
diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_pointercapture_in_frame.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_pointercapture_in_frame.html
new file mode 100644
index 00000000000..a4107fd707a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_pointercapture_in_frame.html
@@ -0,0 +1,160 @@
+<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 type="text/javascript" src="pointerevent_support.js"></script>
+<style>
+iframe {
+ width: 300px;
+ height: 300px;
+ top: 100px;
+ left: 100px;
+ border: 0;
+ position: absolute;
+ background: green;
+}
+#outerFrame {
+ width: 500px;
+ height: 500px;
+ background: blue;
+}
+body {
+ touch-action:none;
+}
+</style>
+<body id="outerFrame body" onload="run()">
+<div id='outerFrame'>
+<iframe id='innerFrameElement' src="resources/pointerevent_pointercapture-iframe.html"></iframe>
+</div>
+</body>
+<script>
+var receivedEventList = [];
+var start_logging = false;
+function handleEvent(event) {
+ if (event.type == 'pointerdown') {
+ start_logging = true;
+ if (document.setPointerCaptureOnPointerDown) {
+ event.target.setPointerCapture(event.pointerId);
+ }
+ }
+
+ if (event.type == "pointermove") {
+ if (document.releasePointerCaptureOnFirstMove && event.target.hasPointerCapture(event.pointerId))
+ event.target.releasePointerCapture(event.pointerId);
+ }
+ if (start_logging)
+ receivedEventList.push(event.target.id + ' received ' + event.type);
+};
+
+document.testEventList = ['pointerup', 'pointerdown', 'pointermove', 'gotpointercapture', 'lostpointercapture'];
+document.testEventList.forEach(function(eventName) {
+ document.getElementById('outerFrame').addEventListener(eventName, handleEvent);
+});
+
+function Reset() {
+ document.setPointerCaptureOnPointerDown = false;
+ document.releasePointerCaptureOnFirstMove = false;
+ receivedEventList = [];
+ start_logging = false;
+}
+
+function run() {
+ ALL_POINTERS.forEach(function(pointerType) {
+ promise_test (async() => {
+ Reset();
+ document.setPointerCaptureOnPointerDown = true;
+ expectedEventList = ["innerFrame received pointerdown",
+ "innerFrame received gotpointercapture",
+ "innerFrame received pointermove",
+ "innerFrame received pointermove",
+ "innerFrame received pointerup",
+ "innerFrame received lostpointercapture"];
+ var pointerId = pointerType + "Pointer1";
+ await new test_driver.Actions()
+ .addPointer(pointerId, pointerType)
+ .pointerMove(200, 200)
+ .pointerDown()
+ .pointerMove(150, 150)
+ .pointerMove(50, 50)
+ .pointerUp()
+ .send();
+ assert_array_equals(receivedEventList, expectedEventList, "Received events: " + receivedEventList);
+ document.setPointerCaptureOnPointerDown = false;
+ }, "Test " + pointerType + "pointer capture in same-origin frame: Pointer down at inner frame and set pointer capture.");
+
+ promise_test (async() => {
+ Reset();
+ document.setPointerCaptureOnPointerDown = true;
+ expectedEventList = ["outerFrame received pointerdown",
+ "outerFrame received gotpointercapture",
+ "outerFrame received pointermove",
+ "outerFrame received pointerup",
+ "outerFrame received lostpointercapture"];
+ var pointerId = pointerType + "Pointer1";
+ await new test_driver.Actions()
+ .addPointer(pointerId, pointerType)
+ .pointerMove(25, 25)
+ .pointerDown()
+ .pointerMove(200, 200)
+ .pointerUp()
+ .send();
+ assert_array_equals(receivedEventList, expectedEventList, "Received events: " + receivedEventList);
+ document.setPointerCaptureOnPointerDown = false;
+ }, "Test " + pointerType + "pointer capture in same-origin frame: Pointer down at outer frame body and set pointer capture.");
+
+
+ promise_test (async() => {
+ Reset();
+ document.setPointerCaptureOnPointerDown = true;
+ document.releasePointerCaptureOnFirstMove = true;
+ // Mouse event has the frame capture, so after pointer capture released, events are
+ // dispatched to innerFrameDocument.
+ expectedEventList = ["innerFrame received pointerdown",
+ "innerFrame received gotpointercapture",
+ "innerFrame received pointermove",
+ "innerFrame received lostpointercapture",
+ (pointerType == "touch" ? "outerFrame": "innerFrameDocument") + " received pointermove",
+ (pointerType == "touch" ? "outerFrame": "innerFrameDocument") + " received pointerup",];
+ var pointerId = pointerType + "Pointer1";
+ await new test_driver.Actions()
+ .addPointer(pointerId, pointerType)
+ .pointerMove(200, 200)
+ .pointerDown()
+ .pointerMove(150, 150)
+ .pointerMove(50, 50)
+ .pointerUp()
+ .send();
+ assert_array_equals(receivedEventList, expectedEventList, "Received events: " + receivedEventList);
+ document.releasePointerCaptureOnFirstMove = false;
+ document.setPointerCaptureOnPointerDown = false;
+ }, "Test " + pointerType + "pointer capture in same-origin frame: Pointerdown with set capture at inner frame, then release on next pointermove.");
+
+
+ promise_test (async() => {
+ Reset();
+ document.setPointerCaptureOnPointerDown = true;
+ document.releasePointerCaptureOnFirstMove = true;
+ expectedEventList = ["outerFrame received pointerdown",
+ "outerFrame received gotpointercapture",
+ "outerFrame received pointermove",
+ "outerFrame received lostpointercapture",
+ "innerFrame received pointermove",
+ "innerFrame received pointerup"];
+ var pointerId = pointerType + "Pointer1";
+ await new test_driver.Actions()
+ .addPointer(pointerId, pointerType)
+ .pointerMove(50, 50)
+ .pointerDown()
+ .pointerMove(200, 200)
+ .pointerMove(250, 250)
+ .pointerUp()
+ .send();
+ assert_array_equals(receivedEventList, expectedEventList, "Received events: " + receivedEventList);
+ document.releasePointerCaptureOnFirstMove = false;
+ document.setPointerCaptureOnPointerDown = false;
+ }, "Test " + pointerType + "pointer capture in same-origin frame: Pointerdown with set capture at outer frame, then release on next pointermove.");
+ });
+}
+</script>
+
diff --git a/tests/wpt/web-platform-tests/pointerevents/resources/pointerevent_mouse_pointercapture-iframe.html b/tests/wpt/web-platform-tests/pointerevents/resources/pointerevent_pointercapture-iframe.html
index 817c6123cf9..10075662698 100644
--- a/tests/wpt/web-platform-tests/pointerevents/resources/pointerevent_mouse_pointercapture-iframe.html
+++ b/tests/wpt/web-platform-tests/pointerevents/resources/pointerevent_pointercapture-iframe.html
@@ -1,4 +1,9 @@
<html id='innerFrameDocument'>
+<style>
+body {
+ touch-action:none;
+}
+</style>
<body id='innerFrame' style='height:500px; width: 500px; padding: 0; margin: 0;'>
<script>
top.document.testEventList.forEach(function(eventName) {
@@ -6,4 +11,4 @@
});
</script>
</body>
-</html> \ No newline at end of file
+</html>
diff --git a/tests/wpt/web-platform-tests/preload/subresource-integrity.html b/tests/wpt/web-platform-tests/preload/subresource-integrity.html
index 08c7854a9ec..52ec0f62bef 100644
--- a/tests/wpt/web-platform-tests/preload/subresource-integrity.html
+++ b/tests/wpt/web-platform-tests/preload/subresource-integrity.html
@@ -27,6 +27,12 @@
sha384: 'sha384-wDAWxH4tOWBwAwHfBn9B7XuNmFxHTMeigAMwn0iVQ0zq3FtmYMLxihcGnU64CwcX',
sha512: 'sha512-9wXDjd6Wq3H6nPAhI9zOvG7mJkUr03MTxaO+8ztTKnfJif42laL93Be/IF6YYZHHF4esitVYxiwpY2HSZX4l6w=='
},
+ {
+ destination: 'image', ext: '.png', supports_sri: false,
+ sha256: 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=',
+ sha384: 'sha384-OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb',
+ sha512: 'sha512-z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg=='
+ },
// TODO(domfarolino): Add more destinations.
];
diff --git a/tests/wpt/web-platform-tests/resources/sriharness.js b/tests/wpt/web-platform-tests/resources/sriharness.js
index fe8ad2b4270..d30d483e329 100644
--- a/tests/wpt/web-platform-tests/resources/sriharness.js
+++ b/tests/wpt/web-platform-tests/resources/sriharness.js
@@ -34,6 +34,13 @@ SRIScriptTest.prototype.execute = function() {
document.body.appendChild(e);
};
+function set_extra_attributes(element, attrs) {
+ // Apply the rest of the attributes, if any.
+ for (const [attr_name, attr_val] of Object.entries(attrs)) {
+ element[attr_name] = attr_val;
+ }
+}
+
function buildElementFromDestination(resource_url, destination, attrs) {
// Assert: |destination| is a valid destination.
let element;
@@ -45,26 +52,24 @@ function buildElementFromDestination(resource_url, destination, attrs) {
switch (destination) {
case "script":
element = document.createElement(destination);
+ set_extra_attributes(element, attrs);
element.src = resource_url;
break;
case "style":
element = document.createElement('link');
+ set_extra_attributes(element, attrs);
element.rel = 'stylesheet';
element.href = resource_url;
break;
case "image":
element = document.createElement('img');
+ set_extra_attributes(element, attrs);
element.src = resource_url;
break;
default:
assert_unreached("INVALID DESTINATION");
}
- // Apply the rest of the attributes, if any.
- for (const [attr_name, attr_val] of Object.entries(attrs)) {
- element[attr_name] = attr_val;
- }
-
return element;
}
diff --git a/tests/wpt/web-platform-tests/subresource-integrity/image.png b/tests/wpt/web-platform-tests/subresource-integrity/image.png
new file mode 100644
index 00000000000..01c9666a8de
--- /dev/null
+++ b/tests/wpt/web-platform-tests/subresource-integrity/image.png
Binary files differ
diff --git a/tests/wpt/web-platform-tests/web-nfc/NFCWriter_push.https.html b/tests/wpt/web-platform-tests/web-nfc/NFCWriter_push.https.html
index 5a14b4090af..0b804615930 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NFCWriter_push.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NFCWriter_push.https.html
@@ -132,7 +132,7 @@ promise_test(t => {
const promises = [];
invalid_signals.forEach(invalid_signal => {
promises.push(
- promise_rejects(t, 'TypeError', writer.push(test_text_data, { signal: invalid_signal })));
+ promise_rejects(t, new TypeError(), writer.push(test_text_data, { signal: invalid_signal })));
});
return Promise.all(promises);
}, "NFCWriter.push should fail if signal is not an AbortSignal.");
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCStats-helper.js b/tests/wpt/web-platform-tests/webrtc/RTCStats-helper.js
index e91b40b6854..5cd7d2c9e0e 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCStats-helper.js
+++ b/tests/wpt/web-platform-tests/webrtc/RTCStats-helper.js
@@ -547,15 +547,17 @@ function validateMediaStreamTrackStats(statsReport, stats) {
assert_optional_unsigned_int_field(stats, 'partialFramesLost');
assert_optional_unsigned_int_field(stats, 'fullFramesLost');
} else {
- assert_number_field(stats, 'audioLevel');
- assert_optional_number_field(stats, 'totalAudioEnergy');
+ if (stats['remoteSource']) {
+ assert_number_field(stats, 'audioLevel');
+ assert_optional_number_field(stats, 'totalAudioEnergy');
+ assert_optional_number_field(stats, 'totalSamplesDuration');
+ }
assert_optional_boolean_field(stats, 'voiceActivityFlag');
assert_optional_number_field(stats, 'echoReturnLoss');
assert_optional_number_field(stats, 'echoReturnLossEnhancement');
assert_optional_unsigned_int_field(stats, 'totalSamplesSent');
assert_optional_unsigned_int_field(stats, 'totalSamplesReceived');
- assert_optional_number_field(stats, 'totalSamplesDuration');
assert_optional_unsigned_int_field(stats, 'concealedSamples');
assert_optional_unsigned_int_field(stats, 'concealmentEvents');
assert_optional_number_field(stats, 'jitterBufferDelay');
diff --git a/tests/wpt/web-platform-tests/xhr/sync-xhr-and-window-onload.html b/tests/wpt/web-platform-tests/xhr/sync-xhr-and-window-onload.html
new file mode 100644
index 00000000000..3ba9e7ab2e8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/xhr/sync-xhr-and-window-onload.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+async_test((t) => {
+ let onloadIsCalled = false;
+ window.addEventListener('load', () => {
+ onloadIsCalled = true;
+ }, {once: true});
+ document.addEventListener('readystatechange', t.step_func(() => {
+ if (document.readyState !== 'complete') {
+ return;
+ }
+ const xhr = new XMLHttpRequest();
+ xhr.open('GET', 'resources/pass.txt', false /* async */);
+ xhr.send();
+ assert_false(onloadIsCalled);
+ // The load event eventually arrives.
+ window.addEventListener('load', t.step_func_done(() => {
+ }), {once: 'true'});
+ }));
+}, 'sync XHR should not fire window.onload synchronously');
+</script>
+</body>