aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWPT Sync Bot <josh+wptsync@joshmatthews.net>2020-03-31 08:18:29 +0000
committerWPT Sync Bot <josh+wptsync@joshmatthews.net>2020-03-31 11:02:10 +0000
commit1dbfe69c918db53a15d90a9432a2ac54b36190d2 (patch)
treec5f420b966caa39e148db1af251fa48df50fb99f
parentf9e7c6b9dc65fc178ef5e7e516bd777ef3bb5052 (diff)
downloadservo-1dbfe69c918db53a15d90a9432a2ac54b36190d2.tar.gz
servo-1dbfe69c918db53a15d90a9432a2ac54b36190d2.zip
Update web-platform-tests to revision 5721f7843f406054b8e02b0e33ff8e733830cc3d
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/css-animations/animation-base-response-003.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/css-flexbox/flex-flow-percentage-margins-no-available-space-assert.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/css-flexbox/flex-minimum-size-001.html.ini (renamed from tests/wpt/metadata/css/css-flexbox/flex-minimum-size-002.html.ini)2
-rw-r--r--tests/wpt/metadata-layout-2020/css/css-flexbox/flexbox-with-multi-column-property.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/css-flexbox/flexitem-stretch-image.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/css-flexbox/flexitem-stretch-range.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/css-flexbox/negative-overflow.html.ini31
-rw-r--r--tests/wpt/metadata-layout-2020/css/css-fonts/generic-family-keywords-001.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/css-fonts/generic-family-keywords-002.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/css-transitions/transition-base-response-003.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/custom-elements/reactions/HTMLMediaElement.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini13
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini5
-rw-r--r--tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini (renamed from tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini)2
-rw-r--r--tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini (renamed from tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini)2
-rw-r--r--tests/wpt/metadata-layout-2020/html/dom/idlharness.worker.js.ini490
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/scripting-1/the-script-element/execution-timing/077.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audioparam-interface/cancel-scheduled-values.html.ini13
-rw-r--r--tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-delaynode-interface/maxdelay-rounding.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/webxr/ar-module/idlharness.https.window.js.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/workers/semantics/multiple-workers/005.html.ini1
-rw-r--r--tests/wpt/metadata/MANIFEST.json366
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-animations/animation-base-response-003.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-flexbox/flex-flow-auto-margins-no-available-space-assert.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-flexbox/flex-flow-percentage-margins-no-available-space-assert.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-flexbox/flex-minimum-size-001.html.ini13
-rw-r--r--tests/wpt/metadata/css/css-flexbox/flexbox-with-multi-column-property.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-flexbox/flexitem-stretch-image.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-flexbox/flexitem-stretch-range.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-flexbox/negative-overflow.html.ini31
-rw-r--r--tests/wpt/metadata/css/css-fonts/generic-family-keywords-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-fonts/generic-family-keywords-002.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-transitions/transition-base-response-003.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini4
-rw-r--r--tests/wpt/metadata/custom-elements/reactions/HTMLMediaElement.html.ini2
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini13
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini5
-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/dom/idlharness.worker.js.ini24
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/execution-timing/077.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini3
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini3
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/cancel-scheduled-values.html.ini13
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/maxdelay-rounding.html.ini4
-rw-r--r--tests/wpt/metadata/webxr/ar-module/idlharness.https.window.js.ini4
-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-with-scroll-timeline-and-display-none.https.html8
-rw-r--r--tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-ref.html6
-rw-r--r--tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-root-scroller-ref.html8
-rw-r--r--tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-root-scroller.https.html19
-rw-r--r--tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline.https.html16
-rw-r--r--tests/wpt/web-platform-tests/badging/badge-error.https.html36
-rw-r--r--tests/wpt/web-platform-tests/badging/badge-success.https.html62
-rw-r--r--tests/wpt/web-platform-tests/css/css-animations/animation-base-response-003.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/flex-flow-percentage-margins-no-available-space-assert.html (renamed from tests/wpt/web-platform-tests/css/css-flexbox/flex-flow-auto-margins-no-available-space-assert.html)4
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/flex-minimum-size-001.html (renamed from tests/wpt/web-platform-tests/css/css-flexbox/flex-minimum-size-002.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/flexbox-with-multi-column-property.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/flexitem-stretch-image.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/flexitem-stretch-range.html16
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/multiline-min-max.html151
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/negative-overflow.html98
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/percentage-heights-011.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/reference/flexbox-with-multi-column-property-ref.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/reference/flexitem-stretch-range-ref.html9
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/support/100x100-blue.pngbin0 -> 92 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/generic-family-keywords-001.html54
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/generic-family-keywords-002.html44
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/support/font-family-keywords.js17
-rw-r--r--tests/wpt/web-platform-tests/css/css-page/inheritance.html12
-rw-r--r--tests/wpt/web-platform-tests/css/css-page/parsing/page-computed.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-page/parsing/page-invalid.html12
-rw-r--r--tests/wpt/web-platform-tests/css/css-page/parsing/page-valid.html11
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/parsing/contain-intrinsic-size-computed.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/parsing/contain-intrinsic-size-invalid.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/parsing/contain-intrinsic-size-valid.html16
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-percent-replaced-007.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-percent-replaced-008.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-percent-replaced-dynamic-007.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-percent-replaced-dynamic-008.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-base-response-003.html28
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/font-family-serialization-001.html44
-rw-r--r--tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-dedicated-worker.https.html1
-rw-r--r--tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-document.https.html1
-rw-r--r--tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-shared-worker.https.html1
-rw-r--r--tests/wpt/web-platform-tests/html/user-activation/activation-api-click.tentative.html34
-rw-r--r--tests/wpt/web-platform-tests/html/user-activation/activation-api-iframe-no-activate.tentative.html58
-rw-r--r--tests/wpt/web-platform-tests/html/user-activation/activation-api-iframe.tentative.html52
-rw-r--r--tests/wpt/web-platform-tests/html/user-activation/activation-api-setTimeout.tentative.html36
-rw-r--r--tests/wpt/web-platform-tests/html/user-activation/basic.html30
-rw-r--r--tests/wpt/web-platform-tests/html/user-activation/chained-setTimeout.tentative.html64
-rw-r--r--tests/wpt/web-platform-tests/html/user-activation/consumption-crossorigin.sub.tentative.html131
-rw-r--r--tests/wpt/web-platform-tests/html/user-activation/consumption-sameorigin.tentative.html127
-rw-r--r--tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-crossorigin.sub.tentative.html53
-rw-r--r--tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-sameorigin.tentative.html53
-rw-r--r--tests/wpt/web-platform-tests/html/user-activation/resources/consumption-crossorigin-child.sub.html29
-rw-r--r--tests/wpt/web-platform-tests/html/user-activation/resources/consumption-sameorigin-child.html29
-rw-r--r--tests/wpt/web-platform-tests/interfaces/image-capture.idl42
-rw-r--r--tests/wpt/web-platform-tests/interfaces/video-raf.idl7
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webxr-ar-module.idl10
-rw-r--r--tests/wpt/web-platform-tests/lint.whitelist7
-rw-r--r--tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-002.html12
-rw-r--r--tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-text-input.html23
-rw-r--r--tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-typographic-pseudo.html32
-rw-r--r--tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-with-rtl.html30
-rw-r--r--tests/wpt/web-platform-tests/resource-timing/idlharness.any.js1
-rw-r--r--tests/wpt/web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/getAnimations.html6
-rw-r--r--tests/wpt/web-platform-tests/web-animations/testcommon.js6
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events-replacement.html4
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/cancel-scheduled-values.html123
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-delaynode-interface/maxdelay-rounding.html78
124 files changed, 2800 insertions, 354 deletions
diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini
new file mode 100644
index 00000000000..baa9f1a7541
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini
@@ -0,0 +1,4 @@
+[hit-test-floats-005.html]
+ [Miss clipped float]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/css/css-animations/animation-base-response-003.html.ini b/tests/wpt/metadata-layout-2020/css/css-animations/animation-base-response-003.html.ini
new file mode 100644
index 00000000000..261190d6a21
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/css-animations/animation-base-response-003.html.ini
@@ -0,0 +1,4 @@
+[animation-base-response-003.html]
+ [Identical elements are all responsive to font-size animation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/flex-flow-percentage-margins-no-available-space-assert.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/flex-flow-percentage-margins-no-available-space-assert.html.ini
new file mode 100644
index 00000000000..5c7a587b84e
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/flex-flow-percentage-margins-no-available-space-assert.html.ini
@@ -0,0 +1,2 @@
+[flex-flow-percentage-margins-no-available-space-assert.html]
+ expected: CRASH
diff --git a/tests/wpt/metadata/css/css-flexbox/flex-minimum-size-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/flex-minimum-size-001.html.ini
index d473487df51..c0483aa5ee9 100644
--- a/tests/wpt/metadata/css/css-flexbox/flex-minimum-size-002.html.ini
+++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/flex-minimum-size-001.html.ini
@@ -1,4 +1,4 @@
-[flex-minimum-size-002.html]
+[flex-minimum-size-001.html]
[.flexbox, .inline-flexbox 1]
expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/flexbox-with-multi-column-property.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/flexbox-with-multi-column-property.html.ini
new file mode 100644
index 00000000000..1a5d16bcfb2
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/flexbox-with-multi-column-property.html.ini
@@ -0,0 +1,2 @@
+[flexbox-with-multi-column-property.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/flexitem-stretch-image.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/flexitem-stretch-image.html.ini
new file mode 100644
index 00000000000..598d542c576
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/flexitem-stretch-image.html.ini
@@ -0,0 +1,4 @@
+[flexitem-stretch-image.html]
+ [.flexbox 1]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/flexitem-stretch-range.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/flexitem-stretch-range.html.ini
new file mode 100644
index 00000000000..e5010b774b5
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/flexitem-stretch-range.html.ini
@@ -0,0 +1,2 @@
+[flexitem-stretch-range.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/negative-overflow.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/negative-overflow.html.ini
new file mode 100644
index 00000000000..fd7a93bb1dc
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/negative-overflow.html.ini
@@ -0,0 +1,31 @@
+[negative-overflow.html]
+ [.flexbox 10]
+ expected: FAIL
+
+ [.flexbox 11]
+ expected: FAIL
+
+ [.flexbox 5]
+ expected: FAIL
+
+ [.flexbox 6]
+ expected: FAIL
+
+ [.flexbox 7]
+ expected: FAIL
+
+ [.flexbox 1]
+ expected: FAIL
+
+ [.flexbox 2]
+ expected: FAIL
+
+ [.flexbox 3]
+ expected: FAIL
+
+ [.flexbox 8]
+ expected: FAIL
+
+ [.flexbox 9]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/css/css-fonts/generic-family-keywords-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-fonts/generic-family-keywords-001.html.ini
new file mode 100644
index 00000000000..77d5720a911
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/css-fonts/generic-family-keywords-001.html.ini
@@ -0,0 +1,2 @@
+[generic-family-keywords-001.html]
+ expected: ERROR
diff --git a/tests/wpt/metadata-layout-2020/css/css-fonts/generic-family-keywords-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-fonts/generic-family-keywords-002.html.ini
new file mode 100644
index 00000000000..74f8887074c
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/css-fonts/generic-family-keywords-002.html.ini
@@ -0,0 +1,2 @@
+[generic-family-keywords-002.html]
+ expected: ERROR
diff --git a/tests/wpt/metadata-layout-2020/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini b/tests/wpt/metadata-layout-2020/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
index e35a452a186..70a00a101f6 100644
--- a/tests/wpt/metadata-layout-2020/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
+++ b/tests/wpt/metadata-layout-2020/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
@@ -1,2 +1,2 @@
[no-transition-from-ua-to-blocking-stylesheet.html]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/css-transitions/transition-base-response-003.html.ini b/tests/wpt/metadata-layout-2020/css/css-transitions/transition-base-response-003.html.ini
new file mode 100644
index 00000000000..28a4e5febe6
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/css-transitions/transition-base-response-003.html.ini
@@ -0,0 +1,4 @@
+[transition-base-response-003.html]
+ [Identical elements are all responsive to font-size transition]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini
new file mode 100644
index 00000000000..4c79907309b
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini
@@ -0,0 +1,4 @@
+[CaretPosition-001.html]
+ [Element at (400, 100)]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini
index 23c61ede1a1..c131078eace 100644
--- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini
+++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini
@@ -17,6 +17,3 @@
[test the top of layer]
expected: FAIL
- [test some point of the element: top left corner]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
new file mode 100644
index 00000000000..e181af5397f
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
@@ -0,0 +1,4 @@
+[elementsFromPoint-invalid-cases.html]
+ [The root element is the last element returned for otherwise empty queries within the viewport]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/custom-elements/reactions/HTMLMediaElement.html.ini b/tests/wpt/metadata-layout-2020/custom-elements/reactions/HTMLMediaElement.html.ini
new file mode 100644
index 00000000000..2ca05f57bb0
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/custom-elements/reactions/HTMLMediaElement.html.ini
@@ -0,0 +1,2 @@
+[HTMLMediaElement.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini
index e21e03bd937..b6d82b3d857 100644
--- a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini
@@ -312,27 +312,18 @@
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
expected: NOTRUN
- [<iframe>: separate response Content-Type: text/html */*]
- expected: FAIL
-
[<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*]
- expected: FAIL
-
- [<iframe>: separate response Content-Type: text/html;" text/plain]
- expected: FAIL
-
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
+ [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini
index e90ead91b2e..d4ba399b762 100644
--- a/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,9 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
- [X-Content-Type-Options%3A%20%2Cnosniff]
- expected: FAIL
-
- [Content-Type-Options%3A%20nosniff]
+ [X-Content-Type-Options%3A%20'NosniFF']
expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
new file mode 100644
index 00000000000..87b07c3e670
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_1.html]
+ [Multiple history traversals from the same task]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
index 51f8272a6de..75d75b4cda2 100644
--- a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
@@ -1,4 +1,4 @@
-[traverse_the_history_3.html]
+[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_3.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
index 51f8272a6de..dc2e45516de 100644
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
@@ -1,4 +1,4 @@
-[traverse_the_history_3.html]
+[traverse_the_history_5.html]
[Multiple history traversals, last would be aborted]
expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/html/dom/idlharness.worker.js.ini b/tests/wpt/metadata-layout-2020/html/dom/idlharness.worker.js.ini
new file mode 100644
index 00000000000..4b1a8fa9a3e
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/dom/idlharness.worker.js.ini
@@ -0,0 +1,490 @@
+[idlharness.worker.html]
+ [OffscreenCanvasRenderingContext2D interface: attribute globalAlpha]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: self must inherit property "onmessageerror" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation measureText(DOMString)]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: existence and properties of interface object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingEnabled]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute shadowOffsetX]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute shadowOffsetY]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute strokeStyle]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation fillText(DOMString, unrestricted double, unrestricted double, optional unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface object length]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation clearRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation getLineDash()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute globalCompositeOperation]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation getImageData(long, long, long, long)]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: self must inherit property "onlanguagechange" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation fill(optional CanvasFillRule)]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: self must inherit property "createImageBitmap(ImageBitmapSource, long, long, long, long, optional ImageBitmapOptions)" with the proper type]
+ expected: FAIL
+
+ [WorkerNavigator interface: attribute languages]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation isPointInPath(unrestricted double, unrestricted double, optional CanvasFillRule)]
+ expected: FAIL
+
+ [SharedWorker interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation restore()]
+ expected: FAIL
+
+ [SharedWorker interface: attribute port]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute shadowColor]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation isPointInPath(Path2D, unrestricted double, unrestricted double, optional CanvasFillRule)]
+ expected: FAIL
+
+ [Path2D interface: existence and properties of interface object]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: calling requestAnimationFrame(FrameRequestCallback) on self with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation beginPath()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute lineWidth]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: calling createImageBitmap(ImageBitmapSource, optional ImageBitmapOptions) on self with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation fill(Path2D, optional CanvasFillRule)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute filter]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: attribute name]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation isPointInStroke(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvas interface: operation convertToBlob(optional ImageEncodeOptions)]
+ expected: FAIL
+
+ [OffscreenCanvas interface: existence and properties of interface object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [WorkerNavigator interface: self.navigator must inherit property "onLine" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation translate(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [Path2D interface: operation moveTo(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvas interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation stroke(Path2D)]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf\]\] method of interface prototype object - setting to a new value via __proto__ should throw a TypeError]
+ expected: FAIL
+
+ [Path2D interface object name]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: operation createImageBitmap(ImageBitmapSource, long, long, long, long, optional ImageBitmapOptions)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: self must inherit property "onrejectionhandled" with the proper type]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: self must inherit property "cancelAnimationFrame(unsigned long)" with the proper type]
+ expected: FAIL
+
+ [PromiseRejectionEvent interface: attribute promise]
+ expected: FAIL
+
+ [SharedWorker interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation resetTransform()]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: attribute canvas]
+ expected: FAIL
+
+ [OffscreenCanvas interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingQuality]
+ expected: FAIL
+
+ [Path2D interface object length]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation lineTo(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [Path2D interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation clip(Path2D, optional CanvasFillRule)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [Path2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute lineCap]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation scale(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvas interface: attribute width]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf\]\] method of interface prototype object - setting to a new value via Reflect.setPrototypeOf should return false]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation stroke()]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: attribute onunhandledrejection]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute lineJoin]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [WebSocket interface: attribute extensions]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: attribute onmessageerror]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute direction]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute shadowBlur]
+ expected: FAIL
+
+ [Path2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SharedWorker interface: attribute onerror]
+ expected: FAIL
+
+ [OffscreenCanvas interface: attribute height]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [SharedWorker interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface object name]
+ expected: FAIL
+
+ [WorkerNavigator interface: attribute onLine]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute miterLimit]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation strokeRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: existence and properties of interface object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation commit()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation getTransform()]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: self must inherit property "onoffline" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute lineDashOffset]
+ expected: FAIL
+
+ [WorkerNavigator interface: self.navigator must inherit property "hardwareConcurrency" with the proper type]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface object name]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: self must inherit property "name" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvas interface: operation getContext(OffscreenRenderingContextId, optional any)]
+ expected: FAIL
+
+ [History interface: existence and properties of interface object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createImageData(long, long)]
+ expected: FAIL
+
+ [SharedWorker interface object length]
+ expected: FAIL
+
+ [Path2D interface: operation lineTo(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: attribute onrejectionhandled]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createImageData(ImageData)]
+ expected: FAIL
+
+ [SharedWorker interface: existence and properties of interface object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute font]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation putImageData(ImageData, long, long, long, long, long, long)]
+ expected: FAIL
+
+ [Path2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, optional boolean)]
+ expected: FAIL
+
+ [WorkerNavigator interface: member taintEnabled]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: calling cancelAnimationFrame(unsigned long) on self with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation moveTo(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvas interface object length]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation strokeText(DOMString, unrestricted double, unrestricted double, optional unrestricted double)]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [Path2D interface: operation closePath()]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: attribute onoffline]
+ expected: FAIL
+
+ [Path2D interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createLinearGradient(double, double, double, double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createPattern(CanvasImageSource, DOMString)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation transform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation rotate(unrestricted double)]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf\]\] method of interface prototype object - setting to a new value via Object.setPrototypeOf should throw a TypeError]
+ expected: FAIL
+
+ [CanvasPattern interface: operation setTransform(optional DOMMatrix2DInit)]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: attribute ononline]
+ expected: FAIL
+
+ [ImageBitmap interface: operation close()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation setLineDash(sequence<unrestricted double>)]
+ expected: FAIL
+
+ [Path2D interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: self must inherit property "ononline" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createRadialGradient(double, double, double, double, double, double)]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: attribute onlanguagechange]
+ expected: FAIL
+
+ [OffscreenCanvas interface object name]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: calling createImageBitmap(ImageBitmapSource, long, long, long, long, optional ImageBitmapOptions) on self with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: self must inherit property "onunhandledrejection" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation setTransform(optional DOMMatrix2DInit)]
+ expected: FAIL
+
+ [Path2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, optional boolean)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, optional boolean)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute textBaseline]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation isPointInStroke(Path2D, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvas interface: operation transferToImageBitmap()]
+ expected: FAIL
+
+ [WorkerNavigator interface: attribute hardwareConcurrency]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation closePath()]
+ expected: FAIL
+
+ [Path2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, optional boolean)]
+ expected: FAIL
+
+ [WorkerNavigator interface: self.navigator must not have property "taintEnabled"]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: self must inherit property "requestAnimationFrame(FrameRequestCallback)" with the proper type]
+ expected: FAIL
+
+ [SharedWorker interface object name]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute textAlign]
+ expected: FAIL
+
+ [Path2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute fillStyle]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute canvas]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation putImageData(ImageData, long, long)]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface object length]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: operation cancelAnimationFrame(unsigned long)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation save()]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: operation requestAnimationFrame(FrameRequestCallback)]
+ expected: FAIL
+
+ [Path2D interface: operation addPath(Path2D, optional DOMMatrix2DInit)]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: self must inherit property "createImageBitmap(ImageBitmapSource, optional ImageBitmapOptions)" with the proper type]
+ expected: FAIL
+
+ [WebSocket interface: new WebSocket("ws://foo") must inherit property "extensions" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvas interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation clip(optional CanvasFillRule)]
+ expected: FAIL
+
+ [WorkerNavigator interface: self.navigator must inherit property "languages" with the proper type]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: operation createImageBitmap(ImageBitmapSource, optional ImageBitmapOptions)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: operation transferFromImageBitmap(ImageBitmap?)]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/scripting-1/the-script-element/execution-timing/077.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/scripting-1/the-script-element/execution-timing/077.html.ini
deleted file mode 100644
index bcd2fd0eab8..00000000000
--- a/tests/wpt/metadata-layout-2020/html/semantics/scripting-1/the-script-element/execution-timing/077.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[077.html]
- [ adding several types of scripts through the DOM and removing some of them confuses scheduler ]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
index b136f9c43cf..b085132aab1 100644
--- a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
+++ b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
@@ -32,3 +32,6 @@
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 42278 more errors.\n\tMax AbsError of 1.9986916780471802e+0 at index of 31225.\n\t[31225\]\t9.9994289875030518e-1\t-9.9874877929687500e-1\t1.9986916780471802e+0\t2.0011956154322119e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 14112.\n\t[14112\]\t-9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL
+ [X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44042 more errors.\n\tMax AbsError of 1.9999977350234985e+0 at index of 36821.\n\t[36821\]\t9.9999773502349854e-1\t-1.0000000000000000e+0\t1.9999977350234985e+0\t1.9999977350234985e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 19404.\n\t[19404\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
index b9eb4a767f7..8a196d02954 100644
--- a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
+++ b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
@@ -59,3 +59,6 @@
[X SNR (45.01863788337742 dB) is not greater than or equal to 85.58. Got 45.01863788337742.]
expected: FAIL
+ [X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t5.1025573125871170e-22\t5.6332010030746460e-1\t5.6332010030746460e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\t[31081\]\t4.5610863715308471e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31080.\n]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audioparam-interface/cancel-scheduled-values.html.ini b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audioparam-interface/cancel-scheduled-values.html.ini
new file mode 100644
index 00000000000..709bec32e7d
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audioparam-interface/cancel-scheduled-values.html.ini
@@ -0,0 +1,13 @@
+[cancel-scheduled-values.html]
+ [< [cancel1\] 2 out of 11 assertions were failed.]
+ expected: FAIL
+
+ [X output[3000:\]: Expected 3 for all values but found 5000 unexpected values: \n\tIndex\tActual\n\t[0\]\t0\n\t[1\]\t-0.001000046730041504\n\t[2\]\t-0.001999974250793457\n\t[3\]\t-0.003000020980834961\n\t...and 4996 more errors.]
+ expected: FAIL
+
+ [# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.]
+ expected: FAIL
+
+ [X output[2000:2999\]: Expected 1.5 for all values but found 1000 unexpected values: \n\tIndex\tActual\n\t[0\]\t1\n\t[1\]\t0.9989999532699585\n\t[2\]\t0.9980000257492065\n\t[3\]\t0.996999979019165\n\t...and 996 more errors.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-delaynode-interface/maxdelay-rounding.html.ini b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-delaynode-interface/maxdelay-rounding.html.ini
new file mode 100644
index 00000000000..2d91b4b6edd
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-delaynode-interface/maxdelay-rounding.html.ini
@@ -0,0 +1,4 @@
+[maxdelay-rounding.html]
+ [Executing "maxdelay-rounding"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/webxr/ar-module/idlharness.https.window.js.ini b/tests/wpt/metadata-layout-2020/webxr/ar-module/idlharness.https.window.js.ini
new file mode 100644
index 00000000000..b8c2535d84f
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/webxr/ar-module/idlharness.https.window.js.ini
@@ -0,0 +1,4 @@
+[idlharness.https.window.html]
+ [XRSession interface: attribute interactionMode]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/workers/semantics/multiple-workers/005.html.ini b/tests/wpt/metadata-layout-2020/workers/semantics/multiple-workers/005.html.ini
index 268949ced5c..f584fce5df1 100644
--- a/tests/wpt/metadata-layout-2020/workers/semantics/multiple-workers/005.html.ini
+++ b/tests/wpt/metadata-layout-2020/workers/semantics/multiple-workers/005.html.ini
@@ -1,4 +1,5 @@
[005.html]
+ expected: ERROR
[dedicated worker in shared worker in dedicated worker]
expected: FAIL
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 6880486989b..d697373667e 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -24018,7 +24018,7 @@
]
],
"worklet-animation-with-scroll-timeline-and-display-none.https.html": [
- "7dea4609b942c9b3fa00313ca9c1e4e56b83a537",
+ "ceb5f2d788306ef2d2fa5cab6ad76ffba9ec2d4b",
[
null,
[
@@ -24044,7 +24044,7 @@
]
],
"worklet-animation-with-scroll-timeline-root-scroller.https.html": [
- "be577dcc50f2cd462455bac1361bf4fab8b8a5ec",
+ "2b2a38396a2f7fa5ad63b6a8ac0d38630904ec07",
[
null,
[
@@ -24057,7 +24057,7 @@
]
],
"worklet-animation-with-scroll-timeline.https.html": [
- "7006f8f84a695924c1d341f2725c05b4676c10e1",
+ "35eaddcd8e906263c31792ab06c28daebd30b20b",
[
null,
[
@@ -133456,6 +133456,19 @@
{}
]
],
+ "flexbox-with-multi-column-property.html": [
+ "5b11b0f9fd245a451e289229c4ed3e6e183dd40b",
+ [
+ null,
+ [
+ [
+ "/css/css-flexbox/reference/flexbox-with-multi-column-property-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"flexbox_absolute-atomic.html": [
"dae6b3e43ea71f3795508dd0ca4b243d4510c383",
[
@@ -136095,6 +136108,19 @@
{}
]
],
+ "flexitem-stretch-range.html": [
+ "43ecc81d52ddfbcf3d42ad2ed10577e851822636",
+ [
+ null,
+ [
+ [
+ "/css/css-flexbox/reference/flexitem-stretch-range-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"floated-flexitem.html": [
"e2050034f48cb51eb7eeb75acb97ed72d5755a2f",
[
@@ -161413,6 +161439,32 @@
{}
]
],
+ "intrinsic-percent-replaced-007.html": [
+ "f862bb9dc064089a3aa926d23c26a22c129a80cd",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "intrinsic-percent-replaced-008.html": [
+ "d0099530c3aa3b5146647e9fd1ac9eb1327973ef",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"intrinsic-percent-replaced-dynamic-001.html": [
"1128ffa1759f26011c0639d8b5f498322c6396ac",
[
@@ -161491,6 +161543,32 @@
{}
]
],
+ "intrinsic-percent-replaced-dynamic-007.html": [
+ "72d3b23dca6e8444518e83aa060e509b23f9d1b3",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "intrinsic-percent-replaced-dynamic-008.html": [
+ "9a3361a5e2926885e355c837981c0f4b535dc512",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"ortho-writing-mode-001.html": [
"9342802645faa7b57a12ce4b8ef17d755fcaface",
[
@@ -239948,11 +240026,11 @@
[]
],
"worklet-animation-with-scroll-timeline-ref.html": [
- "fe92232d9afa24f78e9cc7cc3bae341ba2a471bc",
+ "1316d69a42da9c508cbdd7e1477ef37da72a07a2",
[]
],
"worklet-animation-with-scroll-timeline-root-scroller-ref.html": [
- "5810e1738c1d5927223037e97a7a14a52c405a5e",
+ "917b044841c1d709e5fe938abda23fdd4b2966da",
[]
]
},
@@ -285049,6 +285127,10 @@
"ace792e456c12f40e52ae50d51d05fd6a449a628",
[]
],
+ "flexbox-with-multi-column-property-ref.html": [
+ "fbb8fcda3e10a4660b132da37a8894cecec317d0",
+ []
+ ],
"flexbox_quirks_body-ref.html": [
"164784fbd30859888b63069d9813eb5a104eb999",
[]
@@ -285057,6 +285139,10 @@
"0a8869a1452962b4895e60d8cebe987b55499666",
[]
],
+ "flexitem-stretch-range-ref.html": [
+ "e941a157be0f93da78dfdaedf2c2d701b1bf31f8",
+ []
+ ],
"floated-flexitem-ref.html": [
"ae0cd2e9608cfee74f8e269e588642229f5f8bf6",
[]
@@ -285143,6 +285229,10 @@
[]
],
"support": {
+ "100x100-blue.png": [
+ "f578ae72533c7746c8a4d2f6eef32a8137ee1f4b",
+ []
+ ],
"100x100-green.png": [
"25b76c3c6f216793a36b1f29287dafd993898c67",
[]
@@ -286091,6 +286181,10 @@
"51112efc7cab5b20a86bae9e4c2aebd68a5230b0",
[]
],
+ "font-family-keywords.js": [
+ "fc5b723e6875c8abe4905a23b8ab631db9934dfd",
+ []
+ ],
"font-weight-bolder-001-ref.png": [
"42675efe43e614e824ae500ce6cbd511a22f7a8e",
[]
@@ -325529,6 +325623,14 @@
"caf23f4daddd7e6c7118280f4a8c390e9819e92b",
[]
],
+ "consumption-crossorigin-child.sub.html": [
+ "c9f37ac8efd90e6055e8af6d4ef99248ed378883",
+ []
+ ],
+ "consumption-sameorigin-child.html": [
+ "9e421fc0f1ed098a500c9c64be7cd892dce3d2be",
+ []
+ ],
"propagation-crossorigin-child.sub.html": [
"3cdd6886da2a875e3a9ead3f68dda09df4c0c0da",
[]
@@ -327062,7 +327164,7 @@
[]
],
"image-capture.idl": [
- "148bd7bb4cd0bd58162da962a5b230dc53116303",
+ "094f3f5cafe87a1f8dbbb004842715d8f552d0b4",
[]
],
"input-events.idl": [
@@ -327318,7 +327420,7 @@
[]
],
"video-raf.idl": [
- "4584050093f71bafacb23c21f8fc3696cb4a4a1b",
+ "df4aa4c33decc5e94b7a31442df8d470a61f0f00",
[]
],
"visual-viewport.idl": [
@@ -327410,7 +327512,7 @@
[]
],
"webxr-ar-module.idl": [
- "c5899d657b297261125902773e854c18bdf0df2a",
+ "2a525d2da89c215057407002b6ecdd08c8472f9c",
[]
],
"webxr-gamepads-module.idl": [
@@ -327603,7 +327705,7 @@
]
},
"lint.whitelist": [
- "7c282eefeabda7c3ce73e40f794123710219cf36",
+ "bd5a5d5c172161beac501f42bd50dcaafd552019",
[]
],
"loading": {
@@ -344156,7 +344258,7 @@
]
},
"testcommon.js": [
- "811fe784c2635546c8bd1d6befc276d1cfbfad9a",
+ "1eb24f658c2348171b386f36dcc1b824ad236fbc",
[]
],
"timing-model": {
@@ -367701,6 +367803,20 @@
]
},
"badging": {
+ "badge-error.https.html": [
+ "3da5cf61e8332a22addccbb4ee664fb03a0c62e0",
+ [
+ null,
+ {}
+ ]
+ ],
+ "badge-success.https.html": [
+ "6a25962e7b978729c57bea2b563178ec3b434fb1",
+ [
+ null,
+ {}
+ ]
+ ],
"idlharness.https.any.js": [
"65688bb878cb9343f60f0c07a7fd8c95dedd99fc",
[
@@ -378728,6 +378844,13 @@
{}
]
],
+ "animation-base-response-003.html": [
+ "d6e6da7309c3c5b741f2f64266a547a3643d43b2",
+ [
+ null,
+ {}
+ ]
+ ],
"animation-before-initial-box-construction-001.html": [
"558c5ea18699f3856c7d34b976f920b1fd7fd5b0",
[
@@ -381060,8 +381183,8 @@
{}
]
],
- "flex-flow-auto-margins-no-available-space-assert.html": [
- "0b7799f20523f571927a28ef7a13a2b388ca1e09",
+ "flex-flow-percentage-margins-no-available-space-assert.html": [
+ "086c4f5dd711fb45b2739dbf74794f81d8e88d95",
[
null,
{}
@@ -381095,7 +381218,7 @@
{}
]
],
- "flex-minimum-size-002.html": [
+ "flex-minimum-size-001.html": [
"c2eea80ca5b79818f6b7a9a36ab1ff64826b5218",
[
null,
@@ -381130,6 +381253,13 @@
{}
]
],
+ "flexitem-stretch-image.html": [
+ "dd0f8d4f76f1f3dbaf67629315c8e39d73f01df3",
+ [
+ null,
+ {}
+ ]
+ ],
"getcomputedstyle": {
"flexbox_computedstyle_align-content-center.html": [
"cd7ed7ae2d7bc7f23a14d754a86cc2b63979a7bf",
@@ -381720,6 +381850,20 @@
{}
]
],
+ "multiline-min-max.html": [
+ "8a8bb0a539b42ccd5b8b90cecc6ea47ba19be0a4",
+ [
+ null,
+ {}
+ ]
+ ],
+ "negative-overflow.html": [
+ "82f5bdbc1569580d5c07b26e402da189287bd870",
+ [
+ null,
+ {}
+ ]
+ ],
"order_value.html": [
"ca9af99b939f77835933ccc76de5185b656f5977",
[
@@ -381939,6 +382083,13 @@
{}
]
],
+ "percentage-heights-011.html": [
+ "fda9c9b4f306adbfc8cd0eeb06f700ad2a5e60a9",
+ [
+ null,
+ {}
+ ]
+ ],
"percentage-padding-001.html": [
"8bba5d60f5cae1b93df70c1973a473f163020a51",
[
@@ -382144,7 +382295,14 @@
]
],
"generic-family-keywords-001.html": [
- "aa9fb5a6a03bb330d35669f903a1ee7c0f138e18",
+ "bd39bac3ff8b3cda7e7eb60c75b0b5e6589f6110",
+ [
+ null,
+ {}
+ ]
+ ],
+ "generic-family-keywords-002.html": [
+ "7399860b03c6cd69dc48750b884221177112373b",
[
null,
{}
@@ -387261,6 +387419,13 @@
}
},
"css-page": {
+ "inheritance.html": [
+ "565287bce50fa46fdc17cf438ff9eeb2862106a7",
+ [
+ null,
+ {}
+ ]
+ ],
"page-rule-declarations-000.html": [
"cbe53855a0a6869dfc49d5997bba7584b04dcbdd",
[
@@ -387281,7 +387446,30 @@
null,
{}
]
- ]
+ ],
+ "parsing": {
+ "page-computed.html": [
+ "0accba057487570e6a1a1e990c66cd72d0c17155",
+ [
+ null,
+ {}
+ ]
+ ],
+ "page-invalid.html": [
+ "7af7ccb9a30ddb5018e06cc230836e017e83c614",
+ [
+ null,
+ {}
+ ]
+ ],
+ "page-valid.html": [
+ "a4c31f5766ab89373511cc336e64d0de29224167",
+ [
+ null,
+ {}
+ ]
+ ]
+ }
},
"css-paint-api": {
"idlharness.html": [
@@ -390138,6 +390326,31 @@
]
]
},
+ "aspect-ratio": {
+ "parsing": {
+ "contain-intrinsic-size-computed.html": [
+ "3cd562fb9ce10a0f5c82b4884046c91e2b9428b0",
+ [
+ null,
+ {}
+ ]
+ ],
+ "contain-intrinsic-size-invalid.html": [
+ "523ba7269c76777cd314edeb195b5465bbccef4d",
+ [
+ null,
+ {}
+ ]
+ ],
+ "contain-intrinsic-size-valid.html": [
+ "d9341d8c15b0a4f7fac268d24b08109484cafe20",
+ [
+ null,
+ {}
+ ]
+ ]
+ }
+ },
"aspect-ratio-affects-container-width-when-height-changes.html": [
"0dbbb2f9404da7cfa89f2e75af3ca06cfbe4be7e",
[
@@ -394561,6 +394774,13 @@
{}
]
],
+ "transition-base-response-003.html": [
+ "045da5dbdebca628d10846ee96cb6d9ffede2cfe",
+ [
+ null,
+ {}
+ ]
+ ],
"transition-delay-001.html": [
"921525ea72d2e1e28d2321c1594085deaf2330f0",
[
@@ -399042,6 +399262,13 @@
{}
]
],
+ "font-family-serialization-001.html": [
+ "6c59b985c4fd5483b4c3f186e2917a20b428ee5b",
+ [
+ null,
+ {}
+ ]
+ ],
"font-shorthand-serialization.html": [
"29082f83eaf75a0831e5175b8b1217c4ecf4ebcd",
[
@@ -426361,17 +426588,21 @@
]
],
"cache-storage-reporting-dedicated-worker.https.html": [
- "468861a9df60fc790e10515d3d01fd9fbd818266",
+ "9493a64b39c71a255f90c7d93c1a526d80afdebd",
[
null,
- {}
+ {
+ "timeout": "long"
+ }
]
],
"cache-storage-reporting-document.https.html": [
- "a6a2c355cb2287c6792c13e5a29e5e654ea00d3f",
+ "d5ae757facfc5742a1bbb134dbd67bd6fbdeb4df",
[
null,
- {}
+ {
+ "timeout": "long"
+ }
]
],
"cache-storage-reporting-service-worker.https.html": [
@@ -426384,10 +426615,12 @@
]
],
"cache-storage-reporting-shared-worker.https.html": [
- "2cbdb21ee12d2bd971284d2a54e42d4bbf2a041d",
+ "0b13de8657f93aeba0980831f98e378b753f4c83",
[
null,
- {}
+ {
+ "timeout": "long"
+ }
]
],
"coep-frame-javascript.https.html": [
@@ -441134,8 +441367,8 @@
}
},
"user-activation": {
- "activation-api-click.tentative.html": [
- "2178863fbd2a3e101df69ef1a79e420327d7e96c",
+ "basic.html": [
+ "fe8cebc1089e6a5b15eb24ec0e3a9b2eb284c796",
[
null,
{
@@ -441143,8 +441376,8 @@
}
]
],
- "activation-api-iframe-no-activate.tentative.html": [
- "46fd129459c5beb0cb10eb1df40d6764c3dbc98c",
+ "chained-setTimeout.tentative.html": [
+ "133f137eed6f42c6160556eb08efc8290026f1ec",
[
null,
{
@@ -441152,8 +441385,8 @@
}
]
],
- "activation-api-iframe.tentative.html": [
- "91fac9b246c6752bf33b036f6cab7bb1b9022e6c",
+ "consumption-crossorigin.sub.tentative.html": [
+ "01e4d35a43edca555e6ded7e8f35870299a76d44",
[
null,
{
@@ -441161,8 +441394,8 @@
}
]
],
- "activation-api-setTimeout.tentative.html": [
- "a8eba38c60eeef7396c2725d26ea3c6e6609be7a",
+ "consumption-sameorigin.tentative.html": [
+ "140642c97dd9dc0e7f2a267a93684b4e869b9c93",
[
null,
{
@@ -441186,6 +441419,24 @@
{}
]
],
+ "navigation-state-reset-crossorigin.sub.tentative.html": [
+ "5839836a0d897d93e491c50f9d16c379161aa169",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
+ "navigation-state-reset-sameorigin.tentative.html": [
+ "144d7d4bf50a6f97279be54fb7a2d03b74263abd",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"propagation-crossorigin.sub.tentative.html": [
"a2f578f53b92a3595d3dbba15460d28f1d4f0960",
[
@@ -445665,7 +445916,7 @@
]
],
"frac-linethickness-002.html": [
- "6cb1b8b4351dbf1f7afcbee3986fa8c7aee71810",
+ "0a1d7efef6c6a41bc6601594ce52860aa96969e3",
[
null,
{}
@@ -462895,6 +463146,20 @@
{}
]
],
+ "fcp-text-input.html": [
+ "6a0cd86881fd8f7ebeee2d79dc173c063e8bc181",
+ [
+ null,
+ {}
+ ]
+ ],
+ "fcp-typographic-pseudo.html": [
+ "5ec62b7d59d40abc1ba44803c00737059d02f7a2",
+ [
+ null,
+ {}
+ ]
+ ],
"fcp-video-frame.html": [
"fff38cd2c811937cac38c605e94402eab1e4e977",
[
@@ -462915,6 +463180,13 @@
null,
{}
]
+ ],
+ "fcp-with-rtl.html": [
+ "0915b0083da1e3c0dfcdda49e826442c13b50979",
+ [
+ null,
+ {}
+ ]
]
},
"first-contentful-bg-image.html": [
@@ -476581,7 +476853,7 @@
]
],
"idlharness.any.js": [
- "a7542f191c10ea7b42110b5fc80e7abf43174bb5",
+ "aa860d3dd16a712fb3e81b5393c5ca2f3dccfde7",
[
"resource-timing/idlharness.any.html",
{
@@ -476593,8 +476865,13 @@
[
"script",
"/resources/idlharness.js"
+ ],
+ [
+ "timeout",
+ "long"
]
- ]
+ ],
+ "timeout": "long"
}
],
[
@@ -476608,8 +476885,13 @@
[
"script",
"/resources/idlharness.js"
+ ],
+ [
+ "timeout",
+ "long"
]
- ]
+ ],
+ "timeout": "long"
}
]
],
@@ -496471,7 +496753,7 @@
},
"DocumentOrShadowRoot": {
"getAnimations.html": [
- "67addc05476fba7107fcc97b6783180093daf96f",
+ "9bcc042a8fed318be44d09fd2436cd97ba9c4086",
[
null,
{}
@@ -496739,7 +497021,7 @@
]
],
"update-and-send-events-replacement.html": [
- "fced6ead657cc7a37110b156efe79b4d6cf63ccb",
+ "04389a9e2705e006686c53ac0897e0047cb61b90",
[
null,
{}
@@ -498461,6 +498743,13 @@
{}
]
],
+ "cancel-scheduled-values.html": [
+ "0174922fe8a1a9afc4c504a21482767f88a81aeb",
+ [
+ null,
+ {}
+ ]
+ ],
"event-insertion.html": [
"2eef895c8e8750bc25c45ba67c8c67c60e2f17bc",
[
@@ -499105,6 +499394,13 @@
{}
]
],
+ "maxdelay-rounding.html": [
+ "84d9f181389cb879fd97cbb2e3bb6740bcc89b2f",
+ [
+ null,
+ {}
+ ]
+ ],
"no-dezippering.html": [
"7857cf16aa0574bf1974186d327fd7dd9fb99403",
[
diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini
new file mode 100644
index 00000000000..baa9f1a7541
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini
@@ -0,0 +1,4 @@
+[hit-test-floats-005.html]
+ [Miss clipped float]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-animations/animation-base-response-003.html.ini b/tests/wpt/metadata/css/css-animations/animation-base-response-003.html.ini
new file mode 100644
index 00000000000..261190d6a21
--- /dev/null
+++ b/tests/wpt/metadata/css/css-animations/animation-base-response-003.html.ini
@@ -0,0 +1,4 @@
+[animation-base-response-003.html]
+ [Identical elements are all responsive to font-size animation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-flexbox/flex-flow-auto-margins-no-available-space-assert.html.ini b/tests/wpt/metadata/css/css-flexbox/flex-flow-auto-margins-no-available-space-assert.html.ini
deleted file mode 100644
index f6d455bb56e..00000000000
--- a/tests/wpt/metadata/css/css-flexbox/flex-flow-auto-margins-no-available-space-assert.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-flow-auto-margins-no-available-space-assert.html]
- expected: CRASH
diff --git a/tests/wpt/metadata/css/css-flexbox/flex-flow-percentage-margins-no-available-space-assert.html.ini b/tests/wpt/metadata/css/css-flexbox/flex-flow-percentage-margins-no-available-space-assert.html.ini
new file mode 100644
index 00000000000..5c7a587b84e
--- /dev/null
+++ b/tests/wpt/metadata/css/css-flexbox/flex-flow-percentage-margins-no-available-space-assert.html.ini
@@ -0,0 +1,2 @@
+[flex-flow-percentage-margins-no-available-space-assert.html]
+ expected: CRASH
diff --git a/tests/wpt/metadata/css/css-flexbox/flex-minimum-size-001.html.ini b/tests/wpt/metadata/css/css-flexbox/flex-minimum-size-001.html.ini
new file mode 100644
index 00000000000..c0483aa5ee9
--- /dev/null
+++ b/tests/wpt/metadata/css/css-flexbox/flex-minimum-size-001.html.ini
@@ -0,0 +1,13 @@
+[flex-minimum-size-001.html]
+ [.flexbox, .inline-flexbox 1]
+ expected: FAIL
+
+ [.flexbox, .inline-flexbox 6]
+ expected: FAIL
+
+ [.flexbox, .inline-flexbox 5]
+ expected: FAIL
+
+ [.flexbox, .inline-flexbox 4]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-flexbox/flexbox-with-multi-column-property.html.ini b/tests/wpt/metadata/css/css-flexbox/flexbox-with-multi-column-property.html.ini
new file mode 100644
index 00000000000..1a5d16bcfb2
--- /dev/null
+++ b/tests/wpt/metadata/css/css-flexbox/flexbox-with-multi-column-property.html.ini
@@ -0,0 +1,2 @@
+[flexbox-with-multi-column-property.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-flexbox/flexitem-stretch-image.html.ini b/tests/wpt/metadata/css/css-flexbox/flexitem-stretch-image.html.ini
new file mode 100644
index 00000000000..598d542c576
--- /dev/null
+++ b/tests/wpt/metadata/css/css-flexbox/flexitem-stretch-image.html.ini
@@ -0,0 +1,4 @@
+[flexitem-stretch-image.html]
+ [.flexbox 1]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-flexbox/flexitem-stretch-range.html.ini b/tests/wpt/metadata/css/css-flexbox/flexitem-stretch-range.html.ini
new file mode 100644
index 00000000000..e5010b774b5
--- /dev/null
+++ b/tests/wpt/metadata/css/css-flexbox/flexitem-stretch-range.html.ini
@@ -0,0 +1,2 @@
+[flexitem-stretch-range.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-flexbox/negative-overflow.html.ini b/tests/wpt/metadata/css/css-flexbox/negative-overflow.html.ini
new file mode 100644
index 00000000000..fd7a93bb1dc
--- /dev/null
+++ b/tests/wpt/metadata/css/css-flexbox/negative-overflow.html.ini
@@ -0,0 +1,31 @@
+[negative-overflow.html]
+ [.flexbox 10]
+ expected: FAIL
+
+ [.flexbox 11]
+ expected: FAIL
+
+ [.flexbox 5]
+ expected: FAIL
+
+ [.flexbox 6]
+ expected: FAIL
+
+ [.flexbox 7]
+ expected: FAIL
+
+ [.flexbox 1]
+ expected: FAIL
+
+ [.flexbox 2]
+ expected: FAIL
+
+ [.flexbox 3]
+ expected: FAIL
+
+ [.flexbox 8]
+ expected: FAIL
+
+ [.flexbox 9]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/generic-family-keywords-001.html.ini b/tests/wpt/metadata/css/css-fonts/generic-family-keywords-001.html.ini
new file mode 100644
index 00000000000..77d5720a911
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/generic-family-keywords-001.html.ini
@@ -0,0 +1,2 @@
+[generic-family-keywords-001.html]
+ expected: ERROR
diff --git a/tests/wpt/metadata/css/css-fonts/generic-family-keywords-002.html.ini b/tests/wpt/metadata/css/css-fonts/generic-family-keywords-002.html.ini
new file mode 100644
index 00000000000..74f8887074c
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/generic-family-keywords-002.html.ini
@@ -0,0 +1,2 @@
+[generic-family-keywords-002.html]
+ expected: ERROR
diff --git a/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini b/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
index e35a452a186..70a00a101f6 100644
--- a/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
@@ -1,2 +1,2 @@
[no-transition-from-ua-to-blocking-stylesheet.html]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transitions/transition-base-response-003.html.ini b/tests/wpt/metadata/css/css-transitions/transition-base-response-003.html.ini
new file mode 100644
index 00000000000..28a4e5febe6
--- /dev/null
+++ b/tests/wpt/metadata/css/css-transitions/transition-base-response-003.html.ini
@@ -0,0 +1,4 @@
+[transition-base-response-003.html]
+ [Identical elements are all responsive to font-size transition]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini
new file mode 100644
index 00000000000..4c79907309b
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini
@@ -0,0 +1,4 @@
+[CaretPosition-001.html]
+ [Element at (400, 100)]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
index 5733d536fd3..85e94926cb3 100644
--- a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
@@ -21,6 +21,3 @@
[test the top of layer]
expected: FAIL
- [test some point of the element: top left corner]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
new file mode 100644
index 00000000000..e181af5397f
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
@@ -0,0 +1,4 @@
+[elementsFromPoint-invalid-cases.html]
+ [The root element is the last element returned for otherwise empty queries within the viewport]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/custom-elements/reactions/HTMLMediaElement.html.ini b/tests/wpt/metadata/custom-elements/reactions/HTMLMediaElement.html.ini
new file mode 100644
index 00000000000..2ca05f57bb0
--- /dev/null
+++ b/tests/wpt/metadata/custom-elements/reactions/HTMLMediaElement.html.ini
@@ -0,0 +1,2 @@
+[HTMLMediaElement.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
index 2a8d9b969e8..564c771e1b5 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -312,27 +312,18 @@
[fetch(): separate response Content-Type: text/plain ]
expected: NOTRUN
- [<iframe>: separate response Content-Type: text/html */*]
- expected: FAIL
-
[<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*]
- expected: FAIL
-
- [<iframe>: separate response Content-Type: text/html;" text/plain]
- expected: FAIL
-
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
+ [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
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 1c62485a210..aa6eb8f6085 100644
--- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,9 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL
- [X-Content-Type-Options%3A%20%2Cnosniff]
- expected: FAIL
-
- [Content-Type-Options%3A%20nosniff]
+ [X-Content-Type-Options%3A%20'NosniFF']
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/dom/idlharness.worker.js.ini b/tests/wpt/metadata/html/dom/idlharness.worker.js.ini
index 2ee6b8974f7..c90719b22b7 100644
--- a/tests/wpt/metadata/html/dom/idlharness.worker.js.ini
+++ b/tests/wpt/metadata/html/dom/idlharness.worker.js.ini
@@ -131,9 +131,6 @@
[OffscreenCanvasRenderingContext2D interface: operation stroke(Path2D)]
expected: FAIL
- [ImageBitmap interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
[Path2D interface object name]
expected: FAIL
@@ -212,9 +209,6 @@
[OffscreenCanvasRenderingContext2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
expected: FAIL
- [ImageBitmap interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
[WebSocket interface: attribute extensions]
expected: FAIL
@@ -248,9 +242,6 @@
[OffscreenCanvas interface: attribute height]
expected: FAIL
- [ImageBitmap interface object name]
- expected: FAIL
-
[OffscreenCanvasRenderingContext2D interface: operation setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
expected: FAIL
@@ -302,9 +293,6 @@
[OffscreenCanvasRenderingContext2D interface: operation createImageData(long, long)]
expected: FAIL
- [ImageBitmap interface: existence and properties of interface prototype object]
- expected: FAIL
-
[SharedWorker interface object length]
expected: FAIL
@@ -353,9 +341,6 @@
[OffscreenCanvasRenderingContext2D interface: operation createPattern(CanvasImageSource, DOMString)]
expected: FAIL
- [ImageBitmap interface: existence and properties of interface object]
- expected: FAIL
-
[OffscreenCanvasRenderingContext2D interface: operation transform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
expected: FAIL
@@ -425,9 +410,6 @@
[OffscreenCanvasRenderingContext2D interface: operation setLineDash([object Object\])]
expected: FAIL
- [ImageBitmap interface: attribute width]
- expected: FAIL
-
[SharedWorker interface: attribute port]
expected: FAIL
@@ -494,15 +476,9 @@
[OffscreenCanvas interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL
- [ImageBitmap interface: attribute height]
- expected: FAIL
-
[WorkerNavigator interface: self.navigator must inherit property "languages" with the proper type]
expected: FAIL
- [ImageBitmap interface object length]
- expected: FAIL
-
[OffscreenCanvasRenderingContext2D interface: operation fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/execution-timing/077.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/execution-timing/077.html.ini
deleted file mode 100644
index bcd2fd0eab8..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/execution-timing/077.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[077.html]
- [ adding several types of scripts through the DOM and removing some of them confuses scheduler ]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
index 2876deaba63..6db75a34235 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
@@ -101,3 +101,6 @@
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 42278 more errors.\n\tMax AbsError of 1.9986916780471802e+0 at index of 31225.\n\t[31225\]\t9.9994289875030518e-1\t-9.9874877929687500e-1\t1.9986916780471802e+0\t2.0011956154322119e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 14112.\n\t[14112\]\t-9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL
+ [X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44042 more errors.\n\tMax AbsError of 1.9999977350234985e+0 at index of 36821.\n\t[36821\]\t9.9999773502349854e-1\t-1.0000000000000000e+0\t1.9999977350234985e+0\t1.9999977350234985e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 19404.\n\t[19404\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
index 769ea75a0f0..4dbc16848f7 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
@@ -290,3 +290,6 @@
[X SNR (45.01863788337742 dB) is not greater than or equal to 85.58. Got 45.01863788337742.]
expected: FAIL
+ [X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t5.1025573125871170e-22\t5.6332010030746460e-1\t5.6332010030746460e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\t[31081\]\t4.5610863715308471e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31080.\n]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/cancel-scheduled-values.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/cancel-scheduled-values.html.ini
new file mode 100644
index 00000000000..709bec32e7d
--- /dev/null
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/cancel-scheduled-values.html.ini
@@ -0,0 +1,13 @@
+[cancel-scheduled-values.html]
+ [< [cancel1\] 2 out of 11 assertions were failed.]
+ expected: FAIL
+
+ [X output[3000:\]: Expected 3 for all values but found 5000 unexpected values: \n\tIndex\tActual\n\t[0\]\t0\n\t[1\]\t-0.001000046730041504\n\t[2\]\t-0.001999974250793457\n\t[3\]\t-0.003000020980834961\n\t...and 4996 more errors.]
+ expected: FAIL
+
+ [# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.]
+ expected: FAIL
+
+ [X output[2000:2999\]: Expected 1.5 for all values but found 1000 unexpected values: \n\tIndex\tActual\n\t[0\]\t1\n\t[1\]\t0.9989999532699585\n\t[2\]\t0.9980000257492065\n\t[3\]\t0.996999979019165\n\t...and 996 more errors.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/maxdelay-rounding.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/maxdelay-rounding.html.ini
new file mode 100644
index 00000000000..2d91b4b6edd
--- /dev/null
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/maxdelay-rounding.html.ini
@@ -0,0 +1,4 @@
+[maxdelay-rounding.html]
+ [Executing "maxdelay-rounding"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webxr/ar-module/idlharness.https.window.js.ini b/tests/wpt/metadata/webxr/ar-module/idlharness.https.window.js.ini
new file mode 100644
index 00000000000..b8c2535d84f
--- /dev/null
+++ b/tests/wpt/metadata/webxr/ar-module/idlharness.https.window.js.ini
@@ -0,0 +1,4 @@
+[idlharness.https.window.html]
+ [XRSession interface: attribute interactionMode]
+ expected: FAIL
+
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 268949ced5c..f584fce5df1 100644
--- a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
+++ b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
@@ -1,4 +1,5 @@
[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-with-scroll-timeline-and-display-none.https.html b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-and-display-none.https.html
index 7dea4609b94..ceb5f2d7883 100644
--- a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-and-display-none.https.html
+++ b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-and-display-none.https.html
@@ -21,7 +21,13 @@
background-color: red;
}
+ /* Hide scrollbars to avoid unnecessary visual issues related to them */
+ #scroller::-webkit-scrollbar {
+ display: none;
+ }
+
#scroller {
+ scrollbar-width: none;
overflow: auto;
height: 100px;
width: 100px;
@@ -75,4 +81,4 @@
});
});
});
-</script>
+</script> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-ref.html b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-ref.html
index fe92232d9af..1316d69a42d 100644
--- a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-ref.html
+++ b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-ref.html
@@ -16,7 +16,13 @@
background-color: red;
}
+ /* Hide scrollbars to avoid unnecessary visual issues related to them */
+ #scroller::-webkit-scrollbar {
+ display: none;
+ }
+
#scroller {
+ scrollbar-width: none;
overflow: auto;
height: 100px;
width: 100px;
diff --git a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-root-scroller-ref.html b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-root-scroller-ref.html
index 5810e1738c1..917b044841c 100644
--- a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-root-scroller-ref.html
+++ b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-root-scroller-ref.html
@@ -1,7 +1,13 @@
<!DOCTYPE html>
<title>Reference for Scroll timeline with WorkletAnimation using the root scroller</title>
<style>
+ /* Hide scrollbars to avoid unnecessary visual issues related to them */
+ html::-webkit-scrollbar {
+ display: none;
+ }
+
html {
+ scrollbar-width: none;
min-height: 100%;
min-width: 100%;
padding-bottom: 100px;
@@ -34,4 +40,4 @@
const maxScroll = scroller.scrollHeight - scroller.clientHeight;
scroller.scrollTop = 0.5 * maxScroll;
});
-</script>
+</script> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-root-scroller.https.html b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-root-scroller.https.html
index be577dcc50f..2b2a38396a2 100644
--- a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-root-scroller.https.html
+++ b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-root-scroller.https.html
@@ -1,7 +1,8 @@
<html class="reftest-wait">
<title>Scroll timeline with WorkletAnimation using the root scroller</title>
<link rel="help" href="https://drafts.css-houdini.org/css-animationworklet/">
-<meta name="assert" content="Worklet animation correctly updates values when using the root scroller as the source for the ScrollTimeline">
+<meta name="assert"
+ content="Worklet animation correctly updates values when using the root scroller as the source for the ScrollTimeline">
<link rel="match" href="worklet-animation-with-scroll-timeline-root-scroller-ref.html">
<script src="/web-animations/testcommon.js"></script>
@@ -9,7 +10,13 @@
<script src="common.js"></script>
<style>
+ /* Hide scrollbars to avoid unnecessary visual issues related to them */
+ html::-webkit-scrollbar {
+ display: none;
+ }
+
html {
+ scrollbar-width: none;
min-height: 100%;
min-width: 100%;
padding-bottom: 100px;
@@ -33,15 +40,15 @@
<div id="covered"></div>
<script>
- registerPassthroughAnimator().then(()=>{
+ registerPassthroughAnimator().then(() => {
const box = document.getElementById('box');
const effect = new KeyframeEffect(box,
[
- {transform: 'translateY(0)', opacity: 1},
- {transform: 'translateY(200px)', opacity: 0}
+ { transform: 'translateY(0)', opacity: 1 },
+ { transform: 'translateY(200px)', opacity: 0 }
], {
- duration: 1000,
- }
+ duration: 1000,
+ }
);
const scroller = document.scrollingElement;
diff --git a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline.https.html b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline.https.html
index 7006f8f84a6..35eaddcd8e9 100644
--- a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline.https.html
+++ b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline.https.html
@@ -21,7 +21,13 @@
background-color: red;
}
+ /* Hide scrollbars to avoid unnecessary visual issues related to them */
+ #scroller::-webkit-scrollbar {
+ display: none;
+ }
+
#scroller {
+ scrollbar-width: none;
overflow: auto;
height: 100px;
width: 100px;
@@ -45,11 +51,11 @@
const box = document.getElementById('box');
const effect = new KeyframeEffect(box,
[
- { transform: 'translateY(0)', opacity: 1},
- { transform: 'translateY(200px)', opacity: 0}
+ { transform: 'translateY(0)', opacity: 1 },
+ { transform: 'translateY(200px)', opacity: 0 }
], {
- duration: 1000,
- }
+ duration: 1000,
+ }
);
const scroller = document.getElementById('scroller');
@@ -65,4 +71,4 @@
takeScreenshot();
});
});
-</script>
+</script> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/badging/badge-error.https.html b/tests/wpt/web-platform-tests/badging/badge-error.https.html
new file mode 100644
index 00000000000..3da5cf61e83
--- /dev/null
+++ b/tests/wpt/web-platform-tests/badging/badge-error.https.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<title>Badging: Unsupported values</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+
+promise_test(t => {
+ return promise_rejects_js(t, TypeError, navigator.setAppBadge(-1));
+}, "Negative value not allowed");
+
+promise_test(t => {
+ return promise_rejects_js(t, TypeError, navigator.setAppBadge(
+ Number.MAX_SAFE_INTEGER + 1));
+}, "Value too large (2^53)");
+
+promise_test(t => {
+ return promise_rejects_js(t, TypeError, navigator.setAppBadge(Infinity));
+}, "Positive infinity");
+
+promise_test(t => {
+ return promise_rejects_js(t, TypeError, navigator.setAppBadge(-Infinity));
+}, "Negative infinity");
+
+promise_test(t => {
+ return promise_rejects_js(t, TypeError, navigator.setAppBadge(NaN));
+}, "NaN");
+
+promise_test(t => {
+ return promise_rejects_js(t, TypeError, navigator.setAppBadge("Foo"));
+}, 'Cannot convert to long: "Foo"');
+
+promise_test(t => {
+ return promise_rejects_js(t, TypeError, navigator.setAppBadge({}));
+}, "Cannot convert to long: object");
+
+</script>
diff --git a/tests/wpt/web-platform-tests/badging/badge-success.https.html b/tests/wpt/web-platform-tests/badging/badge-success.https.html
new file mode 100644
index 00000000000..6a25962e7b9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/badging/badge-success.https.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<title>Badging: Supported values</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+
+promise_test(async t => {
+ const result = await navigator.setAppBadge();
+ assert_equals(result, undefined);
+}, "No parameter should show a flag with no numeric value.");
+
+promise_test(async t => {
+ const result = await navigator.setAppBadge(undefined);
+ assert_equals(result, undefined);
+}, "undefined should show a flag with no numeric value.");
+
+promise_test(async t => {
+ const result = await navigator.setAppBadge(1);
+ assert_equals(result, undefined);
+}, "An integer value of 3 should show the badge vale 3.");
+
+promise_test(async t => {
+ const result = await navigator.setAppBadge(10.6);
+ assert_equals(result, undefined);
+}, "Non-whole number should round down to nearest integer (10).");
+
+promise_test(async t => {
+ const result = await navigator.setAppBadge(Number.MAX_SAFE_INTEGER);
+ assert_equals(result, undefined);
+}, "Maximum allowed value (2^53 - 1) should display saturated value: '99+'.");
+
+promise_test(async t => {
+ const result = await navigator.setAppBadge(0);
+ assert_equals(result, undefined);
+}, "Set to zero should clear the badge.");
+
+promise_test(async t => {
+ const result = await navigator.clearAppBadge();
+ assert_equals(result, undefined);
+}, "Should clear the badge.");
+
+promise_test(async t => {
+ const result = await navigator.setAppBadge(null);
+ assert_equals(result, undefined);
+}, "Setting to null should clear the badge.");
+
+promise_test(async t => {
+ const result = await navigator.setAppBadge(false);
+ assert_equals(result, undefined);
+}, "Setting to false should clear the badge.");
+
+promise_test(async t => {
+ const result = await navigator.setAppBadge(true);
+ assert_equals(result, undefined);
+}, "Setting to true should display a value of 1.");
+
+promise_test(async t => {
+ const result = await navigator.setAppBadge("3");
+ assert_equals(result, undefined);
+}, "Setting to the string '3' should display a value of 3.");
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-animations/animation-base-response-003.html b/tests/wpt/web-platform-tests/css/css-animations/animation-base-response-003.html
new file mode 100644
index 00000000000..d6e6da7309c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-animations/animation-base-response-003.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<title>Tests that identical elements in the base style responds to font-size animation</title>
+<link rel="help" href="https://drafts.csswg.org/css-animations/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ @keyframes font_size_animation {
+ from { font-size: 10px; }
+ to { font-size: 20px; }
+ }
+ div {
+ font-size: 1px;
+ min-width: 1em;
+ animation: font_size_animation steps(2, end) 1000s -500s;
+ }
+</style>
+<div></div>
+<div></div>
+<div></div>
+<script>
+test(() => {
+ let divs = document.querySelectorAll('div');
+ for (let div of divs)
+ assert_equals(getComputedStyle(div).getPropertyValue('min-width'), '15px');
+}, 'Identical elements are all responsive to font-size animation');
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/flex-flow-auto-margins-no-available-space-assert.html b/tests/wpt/web-platform-tests/css/css-flexbox/flex-flow-percentage-margins-no-available-space-assert.html
index 0b7799f2052..086c4f5dd71 100644
--- a/tests/wpt/web-platform-tests/css/css-flexbox/flex-flow-auto-margins-no-available-space-assert.html
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/flex-flow-percentage-margins-no-available-space-assert.html
@@ -1,7 +1,7 @@
<!DOCTYPE html>
-<title>CSS Flexbox: flex-flow auto margin with no available space</title>
+<title>CSS Flexbox: flex-flow percentage margin with no available space</title>
<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#flex-shrink-property">
-<link rel="help" href="https://crbug.com/380201">
+<link rel="issue" href="https://bugs.chromium.org/p/chromium/issues/detail?id=380201">
<meta name="assert" content="This test checks that a flexbox doesn't shrink below border/padding
when stretching children with no available space.">
<style>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/flex-minimum-size-002.html b/tests/wpt/web-platform-tests/css/css-flexbox/flex-minimum-size-001.html
index c2eea80ca5b..c2eea80ca5b 100644
--- a/tests/wpt/web-platform-tests/css/css-flexbox/flex-minimum-size-002.html
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/flex-minimum-size-001.html
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/flexbox-with-multi-column-property.html b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox-with-multi-column-property.html
new file mode 100644
index 00000000000..5b11b0f9fd2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox-with-multi-column-property.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<title>CSS Flexbox: column-* properties are ignored.</title>
+<link rel="stylesheet" href="support/flexbox.css">
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-containers">
+<link rel="help" href="https://drafts.csswg.org/css-multicol-1/#propdef-column-count">
+<link rel="match" href="reference/flexbox-with-multi-column-property-ref.html">
+<meta name="assert" content="This test ensures that column-* properties (in the Multicol module) have no effect on a flex container."/>
+<style>
+.flexbox, .inline-flexbox {
+ column-count: 2;
+ column-gap: 100px;
+ width: 20em;
+}
+</style>
+<div class="flexbox">
+AAAAAAAAAA BBBBBBBBBB CCCCCCCCCC DDDDDDDDDD
+</div>
+
+<div class="inline-flexbox">
+AAAAAAAAAA BBBBBBBBBB CCCCCCCCCC DDDDDDDDDD
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/flexitem-stretch-image.html b/tests/wpt/web-platform-tests/css/css-flexbox/flexitem-stretch-image.html
new file mode 100644
index 00000000000..dd0f8d4f76f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/flexitem-stretch-image.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<title>CSS Flexbox: image stretch</title>
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-property">
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#min-size-auto">
+<link href="support/flexbox.css" rel="stylesheet">
+<meta name="assert" content="This test ensures that flexbox stretches a given image
+to fit the size of flexitem according to flex values.">
+<style>
+.flexbox {
+ width: 600px;
+ display: flex;
+ background-color: #aaa;
+ position: relative;
+ min-height: 10px;
+}
+.flexbox > * {
+ margin: 0;
+ border: 0;
+ padding: 0;
+ min-width: 0;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<body onload="checkLayout('.flexbox')">
+<div id=log></div>
+
+<div class="flexbox">
+ <img data-expected-display="block" data-expected-width="345" style="flex: 1 0 auto;" src="support/100x100-blue.png">
+ <img data-expected-display="block" data-expected-width="255" data-expected-height="100" style="flex: 1 0 auto;" src="support/10x10-green.png">
+</div>
+
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/flexitem-stretch-range.html b/tests/wpt/web-platform-tests/css/css-flexbox/flexitem-stretch-range.html
new file mode 100644
index 00000000000..43ecc81d52d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/flexitem-stretch-range.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html>
+<title>CSS Flexbox: range stretch</title>
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-property">
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#min-size-auto">
+<link rel="match" href="reference/flexitem-stretch-range-ref.html">
+<link href="support/flexbox.css" rel="stylesheet">
+<meta name="assert" content="This test ensures that the thumb should be centered vertically
+when stretching a range input.">
+<body>
+<p>When stretching a range input, the thumb should be centered vertically.</p>
+<div class="flexbox" style="height: 200px;">
+ <input type="range" style="flex: 1; margin: 0;">
+</div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/multiline-min-max.html b/tests/wpt/web-platform-tests/css/css-flexbox/multiline-min-max.html
new file mode 100644
index 00000000000..8a8bb0a539b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/multiline-min-max.html
@@ -0,0 +1,151 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>CSS Flexbox: multiline flexbox and line breaks.</title>
+<link rel="stylesheet" href="support/flexbox.css" >
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#algo-main-item">
+<meta name="assert" content="This test ensures that multiline flexbox uses min/max constraints when finding line breaks."/>
+<style>
+.flexbox {
+ width: 600px;
+ background-color: grey;
+ border: 5px solid black;
+ height: 20px;
+ position: relative;
+}
+.flexbox > div {
+ height: 10px;
+}
+.children-border-box > div {
+ box-sizing: border-box;
+}
+
+.flexbox :nth-child(1) {
+ background-color: blue;
+}
+.flexbox :nth-child(2) {
+ background-color: yellow;
+}
+.flexbox :nth-child(3) {
+ background-color: salmon;
+}
+.flexbox :nth-child(4) {
+ background-color: lime;
+}
+.flexbox :nth-child(5) {
+ background-color: red;
+}
+.flexbox :nth-child(6) {
+ background-color: orange;
+}
+.flexbox :nth-child(7) {
+ background-color: purple;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+</head>
+<body onload="checkLayout('.flexbox')">
+<div id=log></div>
+
+<div class="flexbox wrap">
+ <div class="flex-one" style="min-width: 400px" data-expected-width="400" data-offset-x="0" data-offset-y="0"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="400" data-offset-y="0"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="500" data-offset-y="0"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="0" data-offset-y="10"></div>
+</div>
+
+<div class="flexbox wrap">
+ <div class="flex-one" style="min-width: 400px; padding-left: 10px;" data-expected-width="500" data-offset-x="0" data-offset-y="0"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="500" data-offset-y="0"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="0" data-offset-y="10"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="100" data-offset-y="10"></div>
+</div>
+
+<div class="flexbox wrap">
+ <div class="flex-one" style="min-width: 400px; border-left: 10px solid red;" data-expected-width="500" data-offset-x="0" data-offset-y="0"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="500" data-offset-y="0"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="0" data-offset-y="10"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="100" data-offset-y="10"></div>
+</div>
+
+<div class="flexbox wrap">
+ <div class="flex-one" style="min-width: 400px; margin-left: 10px;" data-expected-width="490" data-offset-x="10" data-offset-y="0"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="500" data-offset-y="0"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="0" data-offset-y="10"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="100" data-offset-y="10"></div>
+</div>
+
+<div class="flexbox wrap">
+ <div style="flex: 1 1 600px; flex: 1 1 600px; max-width: 300px;" data-expected-width="300" data-offset-x="0" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="100" data-offset-x="300" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="100" data-offset-x="400" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="100" data-offset-x="500" data-offset-y="0"></div>
+</div>
+
+<div class="flexbox wrap">
+ <div style="flex: 1 1 600px; flex: 1 1 600px; max-width: 300px; padding-left: 10px;" data-expected-width="310" data-offset-x="0" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="145" data-offset-x="310" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="145" data-offset-x="455" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="600" data-offset-x="0" data-offset-y="10"></div>
+</div>
+
+<div class="flexbox wrap">
+ <div style="flex: 1 1 600px; flex: 1 1 600px; max-width: 300px; border-left: 10px solid red;" data-expected-width="310" data-offset-x="0" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="145" data-offset-x="310" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="145" data-offset-x="455" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="600" data-offset-x="0" data-offset-y="10"></div>
+</div>
+
+<div class="flexbox wrap">
+ <div style="flex: 1 1 600px; flex: 1 1 600px; max-width: 300px; margin-left: 10px;" data-expected-width="300" data-offset-x="10" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="145" data-offset-x="310" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="145" data-offset-x="455" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="600" data-offset-x="0" data-offset-y="10"></div>
+</div>
+
+<div class="flexbox wrap children-border-box">
+ <div class="flex-one" style="min-width: 400px; padding-left: 10px;" data-expected-width="400" data-offset-x="0" data-offset-y="0"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="400" data-offset-y="0"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="500" data-offset-y="0"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="0" data-offset-y="10"></div>
+</div>
+
+<div class="flexbox wrap children-border-box">
+ <div class="flex-one" style="min-width: 400px; border-left: 10px solid red;" data-expected-width="400" data-offset-x="0" data-offset-y="0"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="400" data-offset-y="0"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="500" data-offset-y="0"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="0" data-offset-y="10"></div>
+</div>
+
+<div class="flexbox wrap children-border-box">
+ <div class="flex-one" style="min-width: 400px; margin-left: 10px;" data-expected-width="490" data-offset-x="10" data-offset-y="0"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="500" data-offset-y="0"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="0" data-offset-y="10"></div>
+ <div class="flex-none" style="width: 100px" data-expected-width="100" data-offset-x="100" data-offset-y="10"></div>
+</div>
+
+<div class="flexbox wrap children-border-box">
+ <div style="flex: 1 1 600px; flex: 1 1 600px; max-width: 300px; padding-left: 10px;" data-expected-width="300" data-offset-x="0" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="100" data-offset-x="300" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="100" data-offset-x="400" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="100" data-offset-x="500" data-offset-y="0"></div>
+</div>
+
+<div class="flexbox wrap children-border-box">
+ <div style="flex: 1 1 600px; flex: 1 1 600px; max-width: 300px; border-left: 10px solid red;" data-expected-width="300" data-offset-x="0" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="100" data-offset-x="300" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="100" data-offset-x="400" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="100" data-offset-x="500" data-offset-y="0"></div>
+</div>
+
+<div class="flexbox wrap children-border-box">
+ <div style="flex: 1 1 600px; flex: 1 1 600px; max-width: 300px; margin-left: 10px;" data-expected-width="300" data-offset-x="10" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="145" data-offset-x="310" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="145" data-offset-x="455" data-offset-y="0"></div>
+ <div class="flex-one-one-auto" style="width: 100px" data-expected-width="600" data-offset-x="0" data-offset-y="10"></div>
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/negative-overflow.html b/tests/wpt/web-platform-tests/css/css-flexbox/negative-overflow.html
new file mode 100644
index 00000000000..82f5bdbc156
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/negative-overflow.html
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>CSS Flexbox: align-items: center/flex-end and bottom padding.</title>
+<link rel="stylesheet" href="support/flexbox.css" >
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#align-items-property">
+<meta name="assert" content="This test ensures that flexbox containers with 'align-items: center|flex-end' and 'overflow: auto/scroll' have no extra bottom padding."/>
+<style>
+.flexbox {
+ overflow: auto;
+ height: 50px;
+ width: 50px;
+ background-color: red;
+ position: relative;
+}
+
+.vertical-padding {
+ padding-top: 5px;
+ padding-bottom: 10px;
+ background-color: lime;
+}
+
+.vertical-border {
+ border-top: 2px solid black;
+ border-bottom: 8px solid lightblue;
+}
+
+.flexbox > div {
+ width: 100%;
+ height: 100px;
+ background-color: green;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<script>
+window.onload = function() {
+ checkLayout('.flexbox');
+
+ // Make failures more obvious by showing the red background that should have been clipped.
+ Array.prototype.forEach.call(document.querySelectorAll(".flexbox"), function(element) {
+ element.scrollTop = 1000;
+ });
+};
+</script>
+</head>
+<body>
+<div id=log></div>
+
+<div class="flexbox align-items-flex-end" data-expected-scroll-height="50">
+ <div></div>
+</div>
+
+<div class="flexbox align-items-flex-end" data-expected-scroll-height="150">
+ <div></div>
+ <div style="position: absolute; left: 0; top: 50px;"></div>
+</div>
+
+<div class="flexbox align-items-center" data-expected-scroll-height="75">
+ <div></div>
+</div>
+
+<div class="flexbox" data-expected-scroll-height="100">
+ <div></div>
+</div>
+
+<div class="flexbox wrap-reverse" data-expected-scroll-height="50">
+ <div></div>
+ <div></div>
+</div>
+
+<div class="flexbox align-items-flex-end vertical-padding" data-expected-scroll-height="65">
+ <div></div>
+</div>
+
+<div class="flexbox align-items-flex-end vertical-padding vertical-border" data-expected-scroll-height="65">
+ <div></div>
+</div>
+
+<div class="flexbox align-items-center vertical-padding" data-expected-scroll-height="90">
+ <div></div>
+</div>
+
+<div class="flexbox vertical-padding" data-expected-scroll-height="115">
+ <div></div>
+</div>
+
+<div class="flexbox vertical-padding vertical-border" data-expected-scroll-height="115">
+ <div></div>
+</div>
+
+<div class="flexbox wrap-reverse vertical-padding" data-expected-scroll-height="65">
+ <div></div>
+ <div></div>
+</div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/percentage-heights-011.html b/tests/wpt/web-platform-tests/css/css-flexbox/percentage-heights-011.html
new file mode 100644
index 00000000000..fda9c9b4f30
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/percentage-heights-011.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>CSS Flexbox: percentage height of flex item</title>
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-property">
+<link href="support/flexbox.css" rel="stylesheet">
+<meta name="assert" content="This test checks that the height of flexitems work properly
+with percentage value and 'overflow-y' auto.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<script>
+window.onload = function()
+{
+ var outer = document.getElementById("outer");
+ outer.style.height = "300px";
+ outer.offsetLeft;
+ outer.style.height = "100px";
+ checkLayout('#outer');
+};
+</script>
+</head>
+<body>
+<div id=log></div>
+<div id="outer" data-expected-height="100">
+ <div class="flexbox" data-expected-height="100" style="height: 100%">
+ <div class="flex-one" data-expected-height="100" style="overflow-y: auto; height: 100%">
+ <div data-expected-height="100" style="height: 100%">
+ <div data-expected-height="100" style="width: 100px; height: 100px; background-color: green"></div>
+ </div>
+ </div>
+ </div>
+</div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/reference/flexbox-with-multi-column-property-ref.html b/tests/wpt/web-platform-tests/css/css-flexbox/reference/flexbox-with-multi-column-property-ref.html
new file mode 100644
index 00000000000..fbb8fcda3e1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/reference/flexbox-with-multi-column-property-ref.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link href="resources/flexbox.css" rel="stylesheet">
+<style>
+.flexbox, .inline-flexbox {
+ width: 20em;
+ font-kerning: none;
+}
+</style>
+<div class="flexbox">
+AAAAAAAAAA BBBBBBBBBB CCCCCCCCCC DDDDDDDDDD
+</div>
+
+<div class="inline-flexbox">
+AAAAAAAAAA BBBBBBBBBB CCCCCCCCCC DDDDDDDDDD
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/reference/flexitem-stretch-range-ref.html b/tests/wpt/web-platform-tests/css/css-flexbox/reference/flexitem-stretch-range-ref.html
new file mode 100644
index 00000000000..e941a157be0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/reference/flexitem-stretch-range-ref.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+<body>
+<p>When stretching a range input, the thumb should be centered vertically.</p>
+<div style="height: 200px;">
+ <input type="range" style="width: 100%; height: 100%; margin: 0;">
+</div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/support/100x100-blue.png b/tests/wpt/web-platform-tests/css/css-flexbox/support/100x100-blue.png
new file mode 100644
index 00000000000..f578ae72533
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/support/100x100-blue.png
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/generic-family-keywords-001.html b/tests/wpt/web-platform-tests/css/css-fonts/generic-family-keywords-001.html
index aa9fb5a6a03..bd39bac3ff8 100644
--- a/tests/wpt/web-platform-tests/css/css-fonts/generic-family-keywords-001.html
+++ b/tests/wpt/web-platform-tests/css/css-fonts/generic-family-keywords-001.html
@@ -1,36 +1,56 @@
<!DOCTYPE html>
-<title>CSS Test: Test generic family keywords do not match @font-face</title>
+<title>CSS Test: Test generic family keywords matching for @font-face</title>
<link rel="help" href="https://drafts.csswg.org/css-fonts-4/#family-name-syntax">
<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.com">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
+<script src="/css/css-fonts/support/font-family-keywords.js"></script>
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css"/>
<style>
div {
font-size: 10px;
}
+#ahem {
+ font-family: Ahem;
+}
</style>
-<template id="fonts">
+<body>
+ <div><span id="ahem">00000</span></div>
+ <div><span id="test">00000</span></div>
+<script>
+ setup({ explicit_done: true });
+ window.addEventListener("load", () => { document.fonts.ready.then(runTests); });
+ function runTests() {
+ let ahem = document.getElementById('ahem');
+ let ahem_expected_width = ahem.offsetWidth;
+ kGenericFontFamilyKeywords.forEach(keyword => {
+ test(() => {
+ let element = document.getElementById('test');
+ element.setAttribute("style", `font-family: ${keyword};`);
+ let expected_width = element.offsetWidth;
+
+ // Insert the @font-face rules for quoted and unquoted keywords.
+ document.documentElement.insertAdjacentHTML('beforeend', `
<style>
@font-face {
- font-family: system-ui;
+ font-family: ${keyword};
src: local(Ahem), url('/fonts/Ahem.ttf');
}
</style>
-</template>
-<body onload="onLoad()">
- <div><span id="system-ui" style="font-family: system-ui">00000</span></div>
-<script>
-function onLoad() {
- test(() => {
- let element = document.getElementById('system-ui');
- let expected_width = element.offsetWidth;
+<style>
+@font-face {
+ font-family: "${keyword}";
+ src: local(Ahem), url('/fonts/Ahem.ttf');
+}
+</style>`);
- // Insert the @font-face rule.
- let template = document.getElementById('fonts');
- document.documentElement.appendChild(template.content.cloneNode(true));
+ assert_equals(element.offsetWidth, expected_width, `unquoted ${keyword} does not match @font-face rule`);
- assert_equals(element.offsetWidth, expected_width);
- });
-};
+ element.setAttribute("style", `font-family: "${keyword}";`);
+ assert_equals(element.offsetWidth, ahem_expected_width, `quoted ${keyword} matches @font-face rule`);
+ }, `@font-face matching for quoted and unquoted ${keyword}`);
+ });
+ done();
+ }
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/generic-family-keywords-002.html b/tests/wpt/web-platform-tests/css/css-fonts/generic-family-keywords-002.html
new file mode 100644
index 00000000000..7399860b03c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/generic-family-keywords-002.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <title>Generic font family: -webkit-* treated as &lt;font-family&gt;</title>
+ <link rel="help" href="https://drafts.csswg.org/css-fonts-4/#generic-font-families">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/css/css-fonts/support/font-family-keywords.js"></script>
+ <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"/>
+ <style>
+ div {
+ font-size: 10px;
+ }
+ #ahem {
+ font-family: Ahem;
+ }
+ </style>
+ </head>
+ <body>
+ <div><span id="ahem">00000</span></div>
+ <div><span id="test">00000</span></div>
+ </body>
+<script>
+ setup({ explicit_done: true });
+ window.addEventListener("load", () => { document.fonts.ready.then(runTests); });
+ function SetFontFamilyAndMeasure(fontFamilyValue) {
+ var element = document.getElementById('test');
+ element.setAttribute("style", `font-family: ${fontFamilyValue}, Ahem;`);
+ return element.offsetWidth;
+ }
+ function runTests() {
+ let ahem = document.getElementById('ahem');
+ let ahem_expected_width = ahem.offsetWidth;
+ let families = kGenericFontFamilyKeywords.map(keyword => `-webkit-${keyword}`).concat(kWebKitPrefixKeywords);
+ families.forEach(name => {
+ test(function() {
+ assert_equals(SetFontFamilyAndMeasure(name), ahem_expected_width);
+ }, `font-family: ${name} treated as <font-family>, not <generic-name>`);
+ });
+ done();
+ }
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/support/font-family-keywords.js b/tests/wpt/web-platform-tests/css/css-fonts/support/font-family-keywords.js
new file mode 100644
index 00000000000..fc5b723e687
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/support/font-family-keywords.js
@@ -0,0 +1,17 @@
+var kGenericFontFamilyKeywords = ["serif",
+ "sans-serif",
+ "cursive",
+ "fantasy",
+ "monospace",
+ "system",
+ "emoji",
+ "math",
+ "fangsong",
+ "ui-serif",
+ "ui-sans-serif",
+ "ui-monospace",
+ "ui-rounded"];
+
+var kWebKitPrefixKeywords = ["-webkit-body",
+ "-webkit-standard",
+ "-webkit-pictograph"];
diff --git a/tests/wpt/web-platform-tests/css/css-page/inheritance.html b/tests/wpt/web-platform-tests/css/css-page/inheritance.html
new file mode 100644
index 00000000000..565287bce50
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-page/inheritance.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-page-3/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/inheritance-testcommon.js"></script>
+<div id="container">
+ <div id="target"></div>
+</div>
+<script>
+ assert_not_inherited("page", "auto", "koko");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-page/parsing/page-computed.html b/tests/wpt/web-platform-tests/css/css-page/parsing/page-computed.html
new file mode 100644
index 00000000000..0accba05748
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-page/parsing/page-computed.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-page-3/#using-named-pages">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+<div id="target"></div>
+<script>
+ test_computed_value("page", "auto");
+ test_computed_value("page", "AUTO", "auto");
+ test_computed_value("page", "blablabla");
+ test_computed_value("page", "BLABLABLA");
+ test_computed_value("page", "table");
+ test_computed_value("page", "TABLE");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-page/parsing/page-invalid.html b/tests/wpt/web-platform-tests/css/css-page/parsing/page-invalid.html
new file mode 100644
index 00000000000..7af7ccb9a30
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-page/parsing/page-invalid.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-page-3/#using-named-pages">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+<script>
+ test_invalid_value("page", "not valid");
+ test_invalid_value("page", "not,valid");
+ test_invalid_value("page", "123px");
+ test_invalid_value("page", "calc(10%+1px)");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-page/parsing/page-valid.html b/tests/wpt/web-platform-tests/css/css-page/parsing/page-valid.html
new file mode 100644
index 00000000000..a4c31f5766a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-page/parsing/page-valid.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-page-3/#using-named-pages">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+<script>
+ test_valid_value("page", "auto");
+ test_valid_value("page", "table");
+ test_valid_value("page", "xyzabc");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/parsing/contain-intrinsic-size-computed.html b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/parsing/contain-intrinsic-size-computed.html
new file mode 100644
index 00000000000..3cd562fb9ce
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/parsing/contain-intrinsic-size-computed.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<title>CSS aspect-ratio Test: aspect-ratio with computed values</title>
+<link rel="author" title="Google LLC" href="https://www.google.com/">
+<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#aspect-ratio">
+<meta name="assert" content="aspect-ratio supports the full grammar '[auto | <ratio>]'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+
+<div id=target></div>
+<div id=scratch></div>
+<script>
+
+test_computed_value("aspect-ratio", "auto");
+test_computed_value("aspect-ratio", "1 / 1");
+test_computed_value("aspect-ratio", "16 / 9");
+test_computed_value("aspect-ratio", "16/9", "16 / 9");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/parsing/contain-intrinsic-size-invalid.html b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/parsing/contain-intrinsic-size-invalid.html
new file mode 100644
index 00000000000..523ba7269c7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/parsing/contain-intrinsic-size-invalid.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<title>CSS aspect-ratio Test: aspect-ratio with invalid values</title>
+<link rel="author" title="Google LLC" href="https://www.google.com/">
+<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#aspect-ratio">
+<meta name="assert" content="aspect-ratio supports the full grammar '[auto | <ratio>]'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+
+<script>
+test_invalid_value("aspect-ratio", "auto / 5");
+test_invalid_value("aspect-ratio", "auto / 16");
+test_invalid_value("aspect-ratio", "16 9");
+test_invalid_value("aspect-ratio", "16px / 9px");
+test_invalid_value("aspect-ratio", "0 / 9");
+test_invalid_value("aspect-ratio", "16 / 0");
+test_invalid_value("aspect-ratio", "0 / 0");
+test_invalid_value("aspect-ratio", "16 / -9");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/parsing/contain-intrinsic-size-valid.html b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/parsing/contain-intrinsic-size-valid.html
new file mode 100644
index 00000000000..d9341d8c15b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/parsing/contain-intrinsic-size-valid.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<title>CSS aspect-ratio Test: aspect-ratio with valid values</title>
+<link rel="author" title="Google LLC" href="https://www.google.com/">
+<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#aspect-ratio">
+<meta name="assert" content="aspect-ratio supports the full grammar '[auto | <ratio>]'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+
+<script>
+test_valid_value("aspect-ratio", "auto");
+test_valid_value("aspect-ratio", "16 / 9");
+test_valid_value("aspect-ratio", "16/9", "16 / 9");
+test_valid_value("aspect-ratio", "16 /9", "16 / 9");
+test_valid_value("aspect-ratio", "16/ 9", "16 / 9");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-percent-replaced-007.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-percent-replaced-007.html
new file mode 100644
index 00000000000..f862bb9dc06
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-percent-replaced-007.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-sizing-3/#intrinsic-sizes">
+<meta name="assert" content="Checks that a replaced element, with an aspect ratio, converts a percent height into an intrinsic width." />
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<style>
+#container { position: relative; height: 200px; }
+#abs { position: absolute; top: 0; bottom: 100px; background: green; }
+canvas { height: 100%; }
+</style>
+<p>Test passes if there is a filled green square.</p>
+<div id=container>
+ <div id=abs>
+ <canvas width=10 height=10></canvas>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-percent-replaced-008.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-percent-replaced-008.html
new file mode 100644
index 00000000000..d0099530c3a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-percent-replaced-008.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-sizing-3/#intrinsic-sizes">
+<meta name="assert" content="Checks that a replaced element, with an aspect ratio, converts a percent height into an intrinsic width." />
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<style>
+#container { position: relative; width: 200px; height: 200px; }
+#abs { writing-mode: vertical-lr; position: absolute; left: 0; right: 100px; background: green; }
+canvas { width: 100%; }
+</style>
+<p>Test passes if there is a filled green square.</p>
+<div id=container>
+ <div id=abs>
+ <canvas width=10 height=10></canvas>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-percent-replaced-dynamic-007.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-percent-replaced-dynamic-007.html
new file mode 100644
index 00000000000..72d3b23dca6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-percent-replaced-dynamic-007.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-sizing-3/#intrinsic">
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<meta name="assert" content="This test checks that a dynamic change in the height of an element calculates the intrinsic min/max size correctly when a replaced element is present."/>
+<p>Test passes if there is a filled green square.</p>
+<div style="position: relative; width: 100px; height: 200px;">
+ <div id="target" style="position: absolute; top:0; bottom: 0; background: green;">
+ <canvas width="1" height="1" style="height: 100%;"></canvas>
+ </div>
+</div>
+<script>
+ document.body.offsetTop;
+ document.getElementById('target').style.bottom = '100px';
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-percent-replaced-dynamic-008.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-percent-replaced-dynamic-008.html
new file mode 100644
index 00000000000..9a3361a5e29
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-percent-replaced-dynamic-008.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-sizing-3/#intrinsic">
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<meta name="assert" content="This test checks that a dynamic change in the height of an element calculates the intrinsic min/max size correctly when a replaced element is present."/>
+<p>Test passes if there is a filled green square.</p>
+<div style="position: relative; width: 200px; height: 200px;">
+ <div id="target" style="writing-mode: vertical-lr; position: absolute; left: 0; right: 0; background: green;">
+ <canvas width="1" height="1" style="width: 100%;"></canvas>
+ </div>
+</div>
+<script>
+ document.body.offsetTop;
+ document.getElementById('target').style.right = '100px';
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-base-response-003.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-base-response-003.html
new file mode 100644
index 00000000000..045da5dbdeb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-base-response-003.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<title>Tests that identical elements in the base style responds to font-size transition</title>
+<link rel="help" href="https://drafts.csswg.org/css-animations/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ div {
+ font-size: 10px;
+ min-width: 1em;
+ transition: font-size steps(2, start) 10s;
+ }
+ .change {
+ font-size: 20px;
+ }
+</style>
+<div></div>
+<div></div>
+<div></div>
+<script>
+test(() => {
+ let divs = document.querySelectorAll('div');
+ for (let div of divs) {
+ let unused = getComputedStyle(div).getPropertyValue('min-width');
+ div.className = 'change';
+ assert_equals(getComputedStyle(div).getPropertyValue('min-width'), '15px');
+ }
+}, 'Identical elements are all responsive to font-size transition');
+</script>
diff --git a/tests/wpt/web-platform-tests/css/cssom/font-family-serialization-001.html b/tests/wpt/web-platform-tests/css/cssom/font-family-serialization-001.html
new file mode 100644
index 00000000000..6c59b985c4f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom/font-family-serialization-001.html
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML>
+<html>
+<meta charset="utf-8">
+<title>Serialization of font-family</title>
+<link rel="help" href="https://drafts.csswg.org/cssom/#serialize-a-css-declaration-block">
+<link rel="help" href="https://drafts.csswg.org/css-fonts-4/#font-family-prop">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/css-fonts/support/font-family-keywords.js"></script>
+<div id="target"></div>
+<script>
+ function SetFontFamilyAndSerialize(fontFamilyValue) {
+ var target = document.getElementById('target');
+ target.setAttribute("style", `font-family: ${fontFamilyValue}`);
+ return window.getComputedStyle(target).getPropertyValue('font-family');
+ }
+ test(function() {
+ kGenericFontFamilyKeywords.forEach(keyword => {
+ assert_equals(SetFontFamilyAndSerialize(keyword), keyword);
+ });
+ }, "Serialization of <generic-family>");
+
+ test(function() {
+ kGenericFontFamilyKeywords.forEach(keyword => {
+ var quoted_keyword = `"${keyword}"`;
+ assert_equals(SetFontFamilyAndSerialize(quoted_keyword), quoted_keyword);
+ });
+ }, "Serialization of quoted \"<generic-family>\"");
+
+ test(function() {
+ kGenericFontFamilyKeywords.forEach(keyword => {
+ var prefixed_keyword = `-webkit-${keyword}`;
+ assert_equals(SetFontFamilyAndSerialize(prefixed_keyword), prefixed_keyword);
+ });
+ }, "Serialization of prefixed -webkit-<generic-family>");
+
+ test(function() {
+ kWebKitPrefixKeywords.forEach(keyword => {
+ assert_equals(SetFontFamilyAndSerialize(keyword), keyword);
+ });
+ }, `Serialization of ${kWebKitPrefixKeywords}`);
+
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-dedicated-worker.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-dedicated-worker.https.html
index 468861a9df6..9493a64b39c 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-dedicated-worker.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-dedicated-worker.https.html
@@ -4,6 +4,7 @@
<title>
Check COEP report are send for CacheStorage requests in DedicatedWorker
</title>
+ <meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-document.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-document.https.html
index a6a2c355cb2..d5ae757facf 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-document.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-document.https.html
@@ -4,6 +4,7 @@
<title>
Check COEP report are send for CacheStorage requests in Document.
</title>
+ <meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-shared-worker.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-shared-worker.https.html
index 2cbdb21ee12..0b13de8657f 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-shared-worker.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-shared-worker.https.html
@@ -4,6 +4,7 @@
<title>
Check COEP report are send for CacheStorage requests in DedicatedWorker
</title>
+ <meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
diff --git a/tests/wpt/web-platform-tests/html/user-activation/activation-api-click.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/activation-api-click.tentative.html
deleted file mode 100644
index 2178863fbd2..00000000000
--- a/tests/wpt/web-platform-tests/html/user-activation/activation-api-click.tentative.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<!--
- Tentative due to:
- https://github.com/whatwg/html/issues/1983
--->
-<html>
-<head>
-<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>
-</head>
-<body>
- <h1>Clicking on document sets user activation</h1>
- <p>Click anywhere in the document.</p>
- <script>
- async_test(function(t) {
- assert_false(navigator.userActivation.hasBeenActive);
- assert_false(navigator.userActivation.isActive);
- window.addEventListener("click", t.step_func_done(event => {
- assert_true(navigator.userActivation.hasBeenActive);
- assert_true(navigator.userActivation.isActive);
-
- // Opening a window should consume the activation.
- var win = window.open('404.html');
- win.close();
- assert_true(navigator.userActivation.hasBeenActive);
- assert_false(navigator.userActivation.isActive);
- }));
- test_driver.click(document.body);
- }, "Values adjust on activity");
- </script>
-</body>
-</html>
diff --git a/tests/wpt/web-platform-tests/html/user-activation/activation-api-iframe-no-activate.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/activation-api-iframe-no-activate.tentative.html
deleted file mode 100644
index 46fd129459c..00000000000
--- a/tests/wpt/web-platform-tests/html/user-activation/activation-api-iframe-no-activate.tentative.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html>
-<!--
- Tentative due to:
- https://github.com/whatwg/html/issues/1983
--->
-<html>
-<head>
-<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>
-</head>
-<body>
- <h1>Clicking in parent frame does not propagate state to child</h1>
- <ol id="instructions">
- <li>Click this instruction text.
- </ol>
- <iframe id="child" width="200" height="200"
- src="resources/child-one.html">
- </iframe>
- <script>
- async_test(function(t) {
- var child = document.getElementById("child");
- assert_false(navigator.userActivation.isActive);
- assert_false(navigator.userActivation.hasBeenActive);
- window.addEventListener("message", t.step_func(event => {
- var msg = JSON.parse(event.data);
- if (msg.type == 'child-one-loaded') {
- // Child's states should be false after load.
- assert_false(msg.isActive);
- assert_false(msg.hasBeenActive);
-
- // Click in parent document.
- test_driver.click(document.getElementById('instructions'));
- } else if (msg.type == 'child-one-report') {
- // Only the transient state in child should be false after consumption below.
- assert_false(msg.isActive);
- assert_true(msg.hasBeenActive);
- t.done();
- }
- }));
- window.addEventListener("click", t.step_func(event => {
- assert_true(navigator.userActivation.isActive);
- assert_true(navigator.userActivation.hasBeenActive);
-
- // Opening a window should consume the activation.
- var win = window.open('404.html');
- win.close();
- assert_false(navigator.userActivation.isActive);
- assert_true(navigator.userActivation.hasBeenActive);
-
- // Ask child to report its state.
- child.contentWindow.postMessage(JSON.stringify({"type": "report"}), '*');
- }));
- }, "Values adjust on activity");
- </script>
-</body>
-</html>
diff --git a/tests/wpt/web-platform-tests/html/user-activation/activation-api-iframe.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/activation-api-iframe.tentative.html
deleted file mode 100644
index 91fac9b246c..00000000000
--- a/tests/wpt/web-platform-tests/html/user-activation/activation-api-iframe.tentative.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html>
-<!--
- Tentative due to:
- https://github.com/whatwg/html/issues/1983
--->
-<html>
-<head>
-<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>
-</head>
-<body>
- <h1>Clicking in iframe has activation state in child</h1>
- <ol id="instructions">
- <li>Click inside the yellow area.
- </ol>
- <iframe id="child" width="200" height="200"
- src="resources/child-one.html">
- </iframe>
- <script>
- async_test(function(t) {
- var child = document.getElementById("child");
- assert_false(navigator.userActivation.isActive);
- assert_false(navigator.userActivation.hasBeenActive);
- window.addEventListener("message", t.step_func(event => {
- var msg = JSON.parse(event.data);
- if (msg.type == 'child-one-loaded') {
- // values have false after load
- assert_false(msg.isActive);
- assert_false(msg.hasBeenActive);
- test_driver.click(child);
- } else if (msg.type == 'child-one-clicked') {
- // values have activation state on click
- assert_true(navigator.userActivation.isActive);
- assert_true(navigator.userActivation.hasBeenActive);
- assert_true(msg.isActive);
- assert_true(msg.hasBeenActive);
- child.src = "resources/child-two.html";
- } else if (msg.type == 'child-two-loaded') {
- // values are reset after navigation
- assert_true(navigator.userActivation.isActive);
- assert_true(navigator.userActivation.hasBeenActive);
- assert_false(msg.isActive);
- assert_false(msg.hasBeenActive);
- t.done();
- }
- }));
- }, "Values adjust on activity");
- </script>
-</body>
-</html>
diff --git a/tests/wpt/web-platform-tests/html/user-activation/activation-api-setTimeout.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/activation-api-setTimeout.tentative.html
deleted file mode 100644
index a8eba38c60e..00000000000
--- a/tests/wpt/web-platform-tests/html/user-activation/activation-api-setTimeout.tentative.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html>
-<!--
- Tentative due to:
- https://github.com/whatwg/html/issues/1983
--->
-<html>
-<head>
-<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>
-</head>
-<body>
- <h1>Clicking on document sets user activation even after setTimeout</h1>
- <p>Click anywhere in the document.</p>
- <script>
- async_test(function(t) {
- assert_false(navigator.userActivation.hasBeenActive);
- assert_false(navigator.userActivation.isActive);
- window.addEventListener("click", event => {
- t.step_timeout(() => {
- assert_true(navigator.userActivation.hasBeenActive);
- assert_true(navigator.userActivation.isActive);
-
- // Opening a window should consume the activation.
- window.open('404.html');
- assert_true(navigator.userActivation.hasBeenActive);
- assert_false(navigator.userActivation.isActive);
- t.done();
- }, 0);
- });
- test_driver.click(document.body);
- }, "Values adjust on activity");
- </script>
-</body>
-</html>
diff --git a/tests/wpt/web-platform-tests/html/user-activation/basic.html b/tests/wpt/web-platform-tests/html/user-activation/basic.html
new file mode 100644
index 00000000000..fe8cebc1089
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/user-activation/basic.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <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>
+</head>
+<body>
+ <h1>Basic user activation test</h1>
+ <p>Tests that a popup is allowed with user activation.</p>
+ <ol id="instructions">
+ <li>Click anywhere in the document.
+ </ol></body>
+ <script>
+ let test_w_click = async_test("Popup with click");
+
+ window.addEventListener("click", () => {
+ test_w_click.step(() => {
+ let win = window.open();
+ assert_true(!!win);
+ win.close();
+ });
+ test_w_click.done();
+ });
+
+ test_driver.click(document.body);
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/html/user-activation/chained-setTimeout.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/chained-setTimeout.tentative.html
new file mode 100644
index 00000000000..133f137eed6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/user-activation/chained-setTimeout.tentative.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<!--
+ Tentative due to:
+ https://github.com/whatwg/html/issues/1983
+-->
+<html>
+<head>
+ <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>
+ const max_call_depth = 3;
+ let initial_async_tests = {};
+ let final_async_tests = {};
+
+ function testInitialStates(depth) {
+ assert_true(1 <= depth && depth <= max_call_depth);
+
+ initial_async_tests[depth].step_timeout(() => {
+ assert_false(navigator.userActivation.isActive);
+ assert_false(navigator.userActivation.hasBeenActive);
+ initial_async_tests[depth].done();
+
+ if (depth < max_call_depth)
+ testInitialStates(depth+1);
+ }, 10);
+ }
+
+ function testFinalStates(depth) {
+ assert_true(1 <= depth && depth <= max_call_depth);
+
+ final_async_tests[depth].step_timeout(() => {
+ assert_true(navigator.userActivation.isActive);
+ assert_true(navigator.userActivation.hasBeenActive);
+ final_async_tests[depth].done();
+
+ if (depth < max_call_depth)
+ testFinalStates(depth+1);
+ }, 10)
+ }
+
+ function run() {
+ for (let i = 1; i <= max_call_depth; i++) {
+ initial_async_tests[i] = async_test("Call-depth=" + i + " initial state");
+ final_async_tests[i] = async_test("Call-depth=" + i + " final state");
+ }
+
+ testInitialStates(1);
+
+ window.addEventListener("click", event => {
+ testFinalStates(1);
+ });
+ test_driver.click(document.body);
+ }
+ </script>
+</head>
+<body onload="run()">
+ <h1>User activation state in chained setTimeout calls</h1>
+ <p>Tests that user activation state is visible in arbitrary call depth of setTimeout.</p>
+ <ol id="instructions">
+ <li>Click anywhere in the document.
+ </ol></body>
+</html>
diff --git a/tests/wpt/web-platform-tests/html/user-activation/consumption-crossorigin.sub.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/consumption-crossorigin.sub.tentative.html
new file mode 100644
index 00000000000..01e4d35a43e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/user-activation/consumption-crossorigin.sub.tentative.html
@@ -0,0 +1,131 @@
+<!DOCTYPE html>
+<!--
+ Tentative due to:
+ https://github.com/whatwg/html/issues/1983
+-->
+<html>
+<head>
+ <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>
+ // Frame layout:
+ // top=origin0:this-file [
+ // child1=origin1:child-one.html,
+ // child-xo=origin2:consumption-crossorigin-child.html [
+ // gchild=origin3:child-two.html
+ // ]
+ // ]
+ let test_parent_initial = async_test("Parent frame initial state");
+ let test_parent_final = async_test("Parent frame final state");
+
+ let test_child1_initial = async_test("Child1 frame initial state");
+ let test_child1_final = async_test("Child1 frame final state");
+
+ let test_child_xo_initial = async_test("Child2 frame initial state");
+ let test_child_xo_final = async_test("Child2 frame final state");
+
+ let test_gchild_initial = async_test("Grandchild frame initial state");
+ let test_gchild_final = async_test("Grand child frame final state");
+
+ let num_children_to_load = 3;
+ let num_children_to_report = 3;
+
+ function finishLoadPhase() {
+ test_parent_initial.step(() => {
+ assert_true(num_children_to_load == 0);
+ assert_false(navigator.userActivation.isActive);
+ assert_false(navigator.userActivation.hasBeenActive);
+ });
+ test_parent_initial.done();
+
+ test_driver.click(document.getElementById("child1"));
+ // The click at "child-xo" happens after receiving "child-one-clicked" msg.
+ }
+
+ function finishReportPhase() {
+ test_parent_final.step(() => {
+ assert_true(num_children_to_report == 0);
+ assert_false(navigator.userActivation.isActive);
+ assert_true(navigator.userActivation.hasBeenActive);
+ });
+ test_parent_final.done();
+ // End of all tests.
+ }
+
+ window.addEventListener("message", event => {
+ var msg = JSON.parse(event.data);
+
+ if (msg.type == 'child-one-loaded') {
+ test_child1_initial.step(() => {
+ assert_false(msg.isActive);
+ assert_false(msg.hasBeenActive);
+ });
+ test_child1_initial.done();
+ } else if (msg.type == 'child-crossorigin-loaded') {
+ test_child_xo_initial.step(() => {
+ assert_false(msg.isActive);
+ assert_false(msg.hasBeenActive);
+ });
+ test_child_xo_initial.done();
+ } else if (msg.type == 'child-two-loaded') {
+ test_gchild_initial.step(() => {
+ assert_false(msg.isActive);
+ assert_false(msg.hasBeenActive);
+ });
+ test_gchild_initial.done();
+ } else if (msg.type == 'child-one-clicked') {
+ test_driver.click(document.getElementById("child-xo"));
+ } else if (msg.type == 'child-one-report') {
+ test_child1_final.step(() => {
+ assert_false(msg.isActive);
+ assert_true(msg.hasBeenActive);
+ });
+ test_child1_final.done();
+ } else if (msg.type == 'child-crossorigin-report') {
+ // This msg was triggered by a user click followed by a window.open().
+ test_child_xo_final.step(() => {
+ assert_false(msg.isActive);
+ assert_true(msg.hasBeenActive);
+ });
+ test_child_xo_final.done();
+
+ // Ask remaining frames to report states.
+ let ask_report = JSON.stringify({"type": "report"});
+ frames[0].postMessage(ask_report, "*");
+ frames[1].frames[0].postMessage(ask_report, "*");
+ } else if (msg.type == 'child-two-report') {
+ test_gchild_final.step(() => {
+ assert_false(msg.isActive);
+ assert_false(msg.hasBeenActive);
+ });
+ test_gchild_final.done();
+ }
+
+ // Phase switching.
+ if (msg.type.endsWith("-loaded")) {
+ if (--num_children_to_load == 0)
+ finishLoadPhase();
+ } else if (msg.type.endsWith("-report")) {
+ if (--num_children_to_report == 0)
+ finishReportPhase();
+ }
+ });
+ </script>
+</head>
+<body>
+ <h1>User activation consumption across cross-origin frame boundary</h1>
+ <p>Tests that user activation consumption resets the transient states in all cross-origin frames.</p>
+ <ol id="instructions">
+ <li>Click anywhere on the yellow area.
+ <li>Click anywhere on the green area (child frame).
+ </ol>
+ <iframe id="child1" width="300px" height="40px"
+ src="http://{{domains[www1]}}:{{ports[http][0]}}/html/user-activation/resources/child-one.html">
+ </iframe>
+ <iframe id="child-xo" width="300px" height="140px"
+ src="http://{{domains[www2]}}:{{ports[http][0]}}/html/user-activation/resources/consumption-crossorigin-child.sub.html">
+ </iframe>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/html/user-activation/consumption-sameorigin.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/consumption-sameorigin.tentative.html
new file mode 100644
index 00000000000..140642c97dd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/user-activation/consumption-sameorigin.tentative.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html>
+<!--
+ Tentative due to:
+ https://github.com/whatwg/html/issues/1983
+-->
+<html>
+<head>
+ <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>
+ // Frame layout:
+ // top=this-file [
+ // child1=child-one.html,
+ // child-so=consumption-sameorigin-child.html [
+ // gchild=child-two.html
+ // ]
+ // ]
+ let test_parent_initial = async_test("Parent frame initial state");
+ let test_parent_final = async_test("Parent frame final state");
+
+ let test_child1_initial = async_test("Child1 frame initial state");
+ let test_child1_final = async_test("Child1 frame final state");
+
+ let test_child_so_initial = async_test("Child2 frame initial state");
+ let test_child_so_final = async_test("Child2 frame final state");
+
+ let test_gchild_initial = async_test("Grandchild frame initial state");
+ let test_gchild_final = async_test("Grand child frame final state");
+
+ let num_children_to_load = 3;
+ let num_children_to_report = 3;
+
+ function finishLoadPhase() {
+ test_parent_initial.step(() => {
+ assert_true(num_children_to_load == 0);
+ assert_false(navigator.userActivation.isActive);
+ assert_false(navigator.userActivation.hasBeenActive);
+ });
+ test_parent_initial.done();
+
+ test_driver.click(document.getElementById("child-so"));
+ }
+
+ function finishReportPhase() {
+ test_parent_final.step(() => {
+ assert_true(num_children_to_report == 0);
+ assert_false(navigator.userActivation.isActive);
+ assert_true(navigator.userActivation.hasBeenActive);
+ });
+ test_parent_final.done();
+ // End of all tests.
+ }
+
+ window.addEventListener("message", event => {
+ var msg = JSON.parse(event.data);
+
+ if (msg.type == 'child-one-loaded') {
+ test_child1_initial.step(() => {
+ assert_false(msg.isActive);
+ assert_false(msg.hasBeenActive);
+ });
+ test_child1_initial.done();
+ } else if (msg.type == 'child-sameorigin-loaded') {
+ test_child_so_initial.step(() => {
+ assert_false(msg.isActive);
+ assert_false(msg.hasBeenActive);
+ });
+ test_child_so_initial.done();
+ } else if (msg.type == 'child-two-loaded') {
+ test_gchild_initial.step(() => {
+ assert_false(msg.isActive);
+ assert_false(msg.hasBeenActive);
+ });
+ test_gchild_initial.done();
+ } else if (msg.type == 'child-one-report') {
+ test_child1_final.step(() => {
+ assert_false(msg.isActive);
+ assert_true(msg.hasBeenActive);
+ });
+ test_child1_final.done();
+ } else if (msg.type == 'child-sameorigin-report') {
+ // This msg was triggered by a user click followed by a window.open().
+ test_child_so_final.step(() => {
+ assert_false(msg.isActive);
+ assert_true(msg.hasBeenActive);
+ });
+ test_child_so_final.done();
+
+ // Ask remaining frames to report states.
+ let ask_report = JSON.stringify({"type": "report"});
+ frames[0].postMessage(ask_report, "*");
+ frames[1].frames[0].postMessage(ask_report, "*");
+ } else if (msg.type == 'child-two-report') {
+ test_gchild_final.step(() => {
+ assert_false(msg.isActive);
+ assert_true(msg.hasBeenActive);
+ });
+ test_gchild_final.done();
+ }
+
+ // Phase switching.
+ if (msg.type.endsWith("-loaded")) {
+ if (--num_children_to_load == 0)
+ finishLoadPhase();
+ } else if (msg.type.endsWith("-report")) {
+ if (--num_children_to_report == 0)
+ finishReportPhase();
+ }
+ });
+ </script>
+</head>
+<body>
+ <h1>User activation consumption across same-origin frame boundary</h1>
+ <p>Tests that user activation consumption resets the transient states in all same-origin frames.</p>
+ <ol id="instructions">
+ <li>Click anywhere on the green area (child frame).
+ </ol>
+ <iframe id="child1" width="300px" height="40px"
+ src="resources/child-one.html">
+ </iframe>
+ <iframe id="child-so" width="300px" height="140px"
+ src="resources/consumption-sameorigin-child.html">
+ </iframe>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-crossorigin.sub.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-crossorigin.sub.tentative.html
new file mode 100644
index 00000000000..5839836a0d8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-crossorigin.sub.tentative.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<!--
+ Tentative due to:
+ https://github.com/whatwg/html/issues/1983
+-->
+<html>
+<head>
+<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>
+</head>
+<body>
+ <h1>Post-navigation activation state in child</h1>
+ <p>Tests that navigating a cross-origin child frame resets its activation states.</p>
+ <ol id="instructions">
+ <li>Click inside the yellow area.
+ </ol>
+ <iframe id="child" width="200" height="50"
+ src="http://{{domains[www1]}}:{{ports[http][0]}}/html/user-activation/resources/child-one.html">
+ </iframe>
+ <script>
+ async_test(function(t) {
+ var child = document.getElementById("child");
+ window.addEventListener("message", t.step_func(event => {
+ var msg = JSON.parse(event.data);
+ if (msg.type == 'child-one-loaded') {
+ assert_false(navigator.userActivation.isActive);
+ assert_false(navigator.userActivation.hasBeenActive);
+ assert_false(msg.isActive);
+ assert_false(msg.hasBeenActive);
+
+ test_driver.click(child);
+ } else if (msg.type == 'child-one-clicked') {
+ assert_true(navigator.userActivation.isActive);
+ assert_true(navigator.userActivation.hasBeenActive);
+ assert_true(msg.isActive);
+ assert_true(msg.hasBeenActive);
+
+ child.src = "http://{{domains[www2]}}:{{ports[http][0]}}/html/user-activation/resources/child-two.html";
+ } else if (msg.type == 'child-two-loaded') {
+ assert_true(navigator.userActivation.isActive);
+ assert_true(navigator.userActivation.hasBeenActive);
+ assert_false(msg.isActive);
+ assert_false(msg.hasBeenActive);
+
+ t.done();
+ }
+ }));
+ }, "Post-navigation state reset.");
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-sameorigin.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-sameorigin.tentative.html
new file mode 100644
index 00000000000..144d7d4bf50
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/user-activation/navigation-state-reset-sameorigin.tentative.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<!--
+ Tentative due to:
+ https://github.com/whatwg/html/issues/1983
+-->
+<html>
+<head>
+<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>
+</head>
+<body>
+ <h1>Post-navigation activation state in child</h1>
+ <p>Tests that navigating a same-origin child frame resets its activation states.</p>
+ <ol id="instructions">
+ <li>Click inside the yellow area.
+ </ol>
+ <iframe id="child" width="200" height="50"
+ src="resources/child-one.html">
+ </iframe>
+ <script>
+ async_test(function(t) {
+ var child = document.getElementById("child");
+ window.addEventListener("message", t.step_func(event => {
+ var msg = JSON.parse(event.data);
+ if (msg.type == 'child-one-loaded') {
+ assert_false(navigator.userActivation.isActive);
+ assert_false(navigator.userActivation.hasBeenActive);
+ assert_false(msg.isActive);
+ assert_false(msg.hasBeenActive);
+
+ test_driver.click(child);
+ } else if (msg.type == 'child-one-clicked') {
+ assert_true(navigator.userActivation.isActive);
+ assert_true(navigator.userActivation.hasBeenActive);
+ assert_true(msg.isActive);
+ assert_true(msg.hasBeenActive);
+
+ child.src = "resources/child-two.html";
+ } else if (msg.type == 'child-two-loaded') {
+ assert_true(navigator.userActivation.isActive);
+ assert_true(navigator.userActivation.hasBeenActive);
+ assert_false(msg.isActive);
+ assert_false(msg.hasBeenActive);
+
+ t.done();
+ }
+ }));
+ }, "Post-navigation state reset.");
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/html/user-activation/resources/consumption-crossorigin-child.sub.html b/tests/wpt/web-platform-tests/html/user-activation/resources/consumption-crossorigin-child.sub.html
new file mode 100644
index 00000000000..c9f37ac8efd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/user-activation/resources/consumption-crossorigin-child.sub.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <script>
+ window.top.postMessage(JSON.stringify({
+ "type": "child-crossorigin-loaded",
+ "isActive": navigator.userActivation.isActive,
+ "hasBeenActive": navigator.userActivation.hasBeenActive
+ }), "*");
+
+ window.addEventListener("click", event => {
+ window.open().close();
+
+ window.top.postMessage(JSON.stringify({
+ "type": "child-crossorigin-report",
+ "isActive": navigator.userActivation.isActive,
+ "hasBeenActive": navigator.userActivation.hasBeenActive
+ }), "*");
+ });
+ </script>
+</head>
+<body style="background: lightgreen;">
+ <!-- The midpoint of this frame should be outside the grandchild frame. -->
+ <div style="height: 75px;">Cross-origin child frame</div>
+ <iframe id="child2" width="270px" height="30px"
+ src="http://{{domains[www]}}:{{ports[http][0]}}/html/user-activation/resources/child-two.html">
+ </iframe>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/html/user-activation/resources/consumption-sameorigin-child.html b/tests/wpt/web-platform-tests/html/user-activation/resources/consumption-sameorigin-child.html
new file mode 100644
index 00000000000..9e421fc0f1e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/user-activation/resources/consumption-sameorigin-child.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <script>
+ window.top.postMessage(JSON.stringify({
+ "type": "child-sameorigin-loaded",
+ "isActive": navigator.userActivation.isActive,
+ "hasBeenActive": navigator.userActivation.hasBeenActive
+ }), "*");
+
+ window.addEventListener("click", event => {
+ window.open().close();
+
+ window.top.postMessage(JSON.stringify({
+ "type": "child-sameorigin-report",
+ "isActive": navigator.userActivation.isActive,
+ "hasBeenActive": navigator.userActivation.hasBeenActive
+ }), "*");
+ });
+ </script>
+</head>
+<body style="background: lightgreen;">
+ <!-- The midpoint of this frame should be outside the grandchild frame. -->
+ <div style="height: 75px;">Same-origin child frame</div>
+ <iframe id="child2" width="270px" height="30px"
+ src="child-two.html">
+ </iframe>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/interfaces/image-capture.idl b/tests/wpt/web-platform-tests/interfaces/image-capture.idl
index 148bd7bb4cd..094f3f5cafe 100644
--- a/tests/wpt/web-platform-tests/interfaces/image-capture.idl
+++ b/tests/wpt/web-platform-tests/interfaces/image-capture.idl
@@ -93,27 +93,27 @@ partial dictionary MediaTrackCapabilities {
};
partial dictionary MediaTrackConstraintSet {
- ConstrainDOMString whiteBalanceMode;
- ConstrainDOMString exposureMode;
- ConstrainDOMString focusMode;
- ConstrainPoint2D pointsOfInterest;
-
- ConstrainDouble exposureCompensation;
- ConstrainDouble exposureTime;
- ConstrainDouble colorTemperature;
- ConstrainDouble iso;
-
- ConstrainDouble brightness;
- ConstrainDouble contrast;
- ConstrainDouble saturation;
- ConstrainDouble sharpness;
-
- ConstrainDouble focusDistance;
- ConstrainDouble pan;
- ConstrainDouble tilt;
- ConstrainDouble zoom;
-
- ConstrainBoolean torch;
+ ConstrainDOMString whiteBalanceMode;
+ ConstrainDOMString exposureMode;
+ ConstrainDOMString focusMode;
+ ConstrainPoint2D pointsOfInterest;
+
+ ConstrainDouble exposureCompensation;
+ ConstrainDouble exposureTime;
+ ConstrainDouble colorTemperature;
+ ConstrainDouble iso;
+
+ ConstrainDouble brightness;
+ ConstrainDouble contrast;
+ ConstrainDouble saturation;
+ ConstrainDouble sharpness;
+
+ ConstrainDouble focusDistance;
+ (boolean or ConstrainDouble) pan;
+ (boolean or ConstrainDouble) tilt;
+ (boolean or ConstrainDouble) zoom;
+
+ ConstrainBoolean torch;
};
partial dictionary MediaTrackSettings {
diff --git a/tests/wpt/web-platform-tests/interfaces/video-raf.idl b/tests/wpt/web-platform-tests/interfaces/video-raf.idl
index 4584050093f..df4aa4c33de 100644
--- a/tests/wpt/web-platform-tests/interfaces/video-raf.idl
+++ b/tests/wpt/web-platform-tests/interfaces/video-raf.idl
@@ -4,15 +4,16 @@
// Source: HTMLVideoElement.requestAnimationFrame() (https://wicg.github.io/video-raf/)
dictionary VideoFrameMetadata {
- required DOMHighResTimeStamp presentedTime;
+ required DOMHighResTimeStamp presentationTime;
required DOMHighResTimeStamp expectedDisplayTime;
required unsigned long width;
required unsigned long height;
+ required double mediaTime;
- double presentationTimestamp;
+ required unsigned long presentedFrames;
double processingDuration;
- unsigned long presentedFrames;
+
DOMHighResTimeStamp captureTime;
DOMHighResTimeStamp receiveTime;
unsigned long rtpTimestamp;
diff --git a/tests/wpt/web-platform-tests/interfaces/webxr-ar-module.idl b/tests/wpt/web-platform-tests/interfaces/webxr-ar-module.idl
index c5899d657b2..2a525d2da89 100644
--- a/tests/wpt/web-platform-tests/interfaces/webxr-ar-module.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webxr-ar-module.idl
@@ -13,3 +13,13 @@ partial interface XRSession {
// Attributes
readonly attribute XREnvironmentBlendMode environmentBlendMode;
};
+
+enum XRInteractionMode {
+ "screen-space",
+ "world-space",
+};
+
+partial interface XRSession {
+ // Attributes
+ readonly attribute XRInteractionMode interactionMode;
+};
diff --git a/tests/wpt/web-platform-tests/lint.whitelist b/tests/wpt/web-platform-tests/lint.whitelist
index 7c282eefeab..bd5a5d5c172 100644
--- a/tests/wpt/web-platform-tests/lint.whitelist
+++ b/tests/wpt/web-platform-tests/lint.whitelist
@@ -606,6 +606,13 @@ CSS-COLLIDING-SUPPORT-NAME: css/css-display/support/util.js
CSS-COLLIDING-SUPPORT-NAME: css/CSS2/normal-flow/support/replaced-min-max-1.png
CSS-COLLIDING-SUPPORT-NAME: css/vendor-imports/mozilla/mozilla-central-reftests/ui3/support/replaced-min-max-1.png
+CSS-COLLIDING-TEST-NAME: css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-invalid.html
+CSS-COLLIDING-TEST-NAME: css/css-sizing/aspect-ratio/parsing/contain-intrinsic-size-invalid.html
+CSS-COLLIDING-TEST-NAME: css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-computed.html
+CSS-COLLIDING-TEST-NAME: css/css-sizing/aspect-ratio/parsing/contain-intrinsic-size-computed.html
+CSS-COLLIDING-TEST-NAME: css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-valid.html
+CSS-COLLIDING-TEST-NAME: css/css-sizing/aspect-ratio/parsing/contain-intrinsic-size-valid.html
+
# CSS tests that used to be at the top level and weren't subject to lints
MISSING-LINK: css/css-fonts/matching/fixed-stretch-style-over-weight.html
SUPPORT-WRONG-DIR: css/css-fonts/matching/font-matching.css
diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-002.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-002.html
index 6cb1b8b4351..0a1d7efef6c 100644
--- a/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-002.html
+++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-002.html
@@ -56,6 +56,12 @@
assert_approx_equals(LineThickness("namedspace"), defaultRuleThickness, epsilon);
}, "Named space");
+ test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
+ /* Calc() expressions are invalid in MathML Core. */
+ assert_approx_equals(LineThickness("calc"), defaultRuleThickness, epsilon);
+ }, "Calc() expression");
+
done();
}
</script>
@@ -85,5 +91,11 @@
<mspace width="20px" height="10px" style="background: cyan"></mspace>
</mfrac>
</math>
+ <math>
+ <mfrac id="calc" linethickness="calc(20px)">
+ <mspace width="20px" height="10px" style="background: blue"></mspace>
+ <mspace width="20px" height="10px" style="background: cyan"></mspace>
+ </mfrac>
+ </math>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-text-input.html b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-text-input.html
new file mode 100644
index 00000000000..6a0cd86881f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-text-input.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<head>
+<title>Performance Paint Timing Test: FCP due for non-empty text input</title>
+</head>
+<body>
+<script src="../resources/utils.js"></script>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<input id="input" type="text" />
+<script>
+ promise_test(async t => {
+ assert_precondition(window.PerformancePaintTiming, "Paint Timing isn't supported.");
+ await new Promise(r => window.addEventListener('load', r));
+ await assertNoFirstContentfulPaint();
+ const input = document.getElementById('input');
+ input.setAttribute('value', ' ');
+ await assertNoFirstContentfulPaint();
+ input.setAttribute('value', 'value');
+ await assertFirstContentfulPaint();
+ }, 'Text input should become contentful when its value is non-empty');
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-typographic-pseudo.html b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-typographic-pseudo.html
new file mode 100644
index 00000000000..5ec62b7d59d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-typographic-pseudo.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<head>
+<title>Performance Paint Timing Test: FCP should not fire when all text is hidden due to typographic pseudo-elements</title>
+<style>
+ #main {
+ position: relative;
+ width: 100px;
+ height: 100px;
+ }
+
+ #main *::first-letter {
+ opacity: 0;
+ }
+
+ /* contentful class is defined in test_fcp script. */
+ #main.contentful *::first-letter {
+ opacity: 1;
+ }
+</style>
+</head>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../resources/utils.js"></script>
+<div id="main">
+ <div>A</div>
+</div>
+<script>
+ test_fcp("First contentful paint fires only when some of the text is visible, considering ::first-letter.")
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-with-rtl.html b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-with-rtl.html
new file mode 100644
index 00000000000..0915b0083da
--- /dev/null
+++ b/tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-with-rtl.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<head>
+<title>Performance Paint Timing Test: FCP due to direction change</title>
+<style>
+ #text {
+ right: -100px;
+ position: absolute;
+ }
+
+ body {
+ direction: rtl;
+ }
+</style>
+</head>
+<body direction="RTL">
+<script src="../resources/utils.js"></script>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="text">TEXT</div>
+<script>
+ promise_test(async t => {
+ assert_precondition(window.PerformancePaintTiming, "Paint Timing isn't supported.");
+ await new Promise(r => window.addEventListener('load', r));
+ await assertNoFirstContentfulPaint();
+ document.body.style.direction = 'ltr'
+ await assertFirstContentfulPaint();
+ }, 'FCP should fire when coordinates are negative, if within document scrollable area');
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/resource-timing/idlharness.any.js b/tests/wpt/web-platform-tests/resource-timing/idlharness.any.js
index a7542f191c1..aa860d3dd16 100644
--- a/tests/wpt/web-platform-tests/resource-timing/idlharness.any.js
+++ b/tests/wpt/web-platform-tests/resource-timing/idlharness.any.js
@@ -1,5 +1,6 @@
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js
+// META: timeout=long
'use strict';
diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/getAnimations.html b/tests/wpt/web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/getAnimations.html
index 67addc05476..9bcc042a8fe 100644
--- a/tests/wpt/web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/getAnimations.html
+++ b/tests/wpt/web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/getAnimations.html
@@ -68,7 +68,7 @@ test(t => {
promise_test(async t => {
const iframe = document.createElement('iframe');
- insertFrameAndAwaitLoad(t, iframe, document)
+ await insertFrameAndAwaitLoad(t, iframe, document)
const div = createDiv(t, iframe.contentDocument)
const effect = new KeyframeEffect(div, null, 100 * MS_PER_SEC);
@@ -88,8 +88,8 @@ promise_test(async t => {
const iframe1 = document.createElement('iframe');
const iframe2 = document.createElement('iframe');
- insertFrameAndAwaitLoad(t, iframe1, document);
- insertFrameAndAwaitLoad(t, iframe2, document);
+ await insertFrameAndAwaitLoad(t, iframe1, document);
+ await insertFrameAndAwaitLoad(t, iframe2, document);
const div_frame1 = createDiv(t, iframe1.contentDocument)
const div_main_frame = createDiv(t)
diff --git a/tests/wpt/web-platform-tests/web-animations/testcommon.js b/tests/wpt/web-platform-tests/web-animations/testcommon.js
index 811fe784c26..1eb24f658c2 100644
--- a/tests/wpt/web-platform-tests/web-animations/testcommon.js
+++ b/tests/wpt/web-platform-tests/web-animations/testcommon.js
@@ -180,12 +180,12 @@ function waitForNextFrame() {
});
}
-async function insertFrameAndAwaitLoad(test, iframe, document) {
+async function insertFrameAndAwaitLoad(test, iframe, doc) {
const eventWatcher = new EventWatcher(test, iframe, ['load']);
const event_promise = eventWatcher.wait_for('load');
- document.body.appendChild(iframe);
- test.add_cleanup(() => { document.body.removeChild(iframe); });
+ doc.body.appendChild(iframe);
+ test.add_cleanup(() => { doc.body.removeChild(iframe); });
await event_promise;
}
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events-replacement.html b/tests/wpt/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events-replacement.html
index fced6ead657..04389a9e270 100644
--- a/tests/wpt/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events-replacement.html
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events-replacement.html
@@ -989,14 +989,14 @@ promise_test(async t => {
promise_test(async t => {
const outerIframe = document.createElement('iframe');
- insertFrameAndAwaitLoad(t, outerIframe, document);
outerIframe.width = 10;
outerIframe.height = 10;
+ await insertFrameAndAwaitLoad(t, outerIframe, document);
const innerIframe = document.createElement('iframe');
- insertFrameAndAwaitLoad(t, innerIframe, outerIframe.contentDocument);
innerIframe.width = 10;
innerIframe.height = 10;
+ await insertFrameAndAwaitLoad(t, innerIframe, outerIframe.contentDocument);
const div = createDiv(t, innerIframe.contentDocument);
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/cancel-scheduled-values.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/cancel-scheduled-values.html
new file mode 100644
index 00000000000..0174922fe8a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/cancel-scheduled-values.html
@@ -0,0 +1,123 @@
+<!doctype html>
+<html>
+ <head>
+ <title>
+ cancelScheduledValues
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ </head>
+ <body>
+ <script>
+ let sampleRate = 8000;
+ let renderFrames = 8000;
+
+ let audit = Audit.createTaskRunner();
+
+ audit.define(
+ {label: 'cancel1', description: 'cancel setValueCurve'},
+ (task, should) => {
+ let context = new OfflineAudioContext({
+ numberOfChannels: 1,
+ length: renderFrames,
+ sampleRate: sampleRate
+ });
+
+ let src = new ConstantSourceNode(context);
+ let gain = new GainNode(context);
+ src.connect(gain).connect(context.destination);
+
+ // Initial time and value for first automation (setValue)
+ let time0 = 0;
+ let value0 = 0.5;
+
+ // Time and duration of the setValueCurve. We'll also schedule a
+ // setValue at the same time.
+ let value1 = 1.5;
+ let curveStartTime = 0.25;
+ let curveDuration = 0.25;
+
+ // Time at which to cancel events
+ let cancelTime = 0.3;
+
+ // Time and value for event added after cancelScheduledValues has
+ // been called.
+ let time2 = curveStartTime + curveDuration / 2;
+ let value2 = 3;
+
+ // Self-consistency checks for the test.
+ should(cancelTime, 'cancelTime is after curve start')
+ .beGreaterThan(curveStartTime);
+ should(cancelTime, 'cancelTime is before curve ends')
+ .beLessThan(curveStartTime + curveDuration);
+
+ // These assertions are just to show what's happening
+ should(
+ () => gain.gain.setValueAtTime(value0, time0),
+ `gain.gain.setValueAtTime(${value0}, ${time0})`)
+ .notThrow();
+ // setValue at the sime time as the curve, to test that this event
+ // wasn't rmeoved.
+ should(
+ () => gain.gain.setValueAtTime(value1, curveStartTime),
+ `gain.gain.setValueAtTime(${value1}, ${curveStartTime})`)
+ .notThrow();
+
+ should(
+ () => gain.gain.setValueCurveAtTime(
+ [1, -1], curveStartTime, curveDuration),
+ `gain.gain.setValueCurveAtTime(..., ${curveStartTime}, ${
+ curveDuration})`)
+ .notThrow();
+
+ // An event after the curve to verify this is removed.
+ should(
+ () => gain.gain.setValueAtTime(
+ 99, curveStartTime + curveDuration),
+ `gain.gain.setValueAtTime(99, ${
+ curveStartTime + curveDuration})`)
+ .notThrow();
+
+ // Cancel events now.
+ should(
+ () => gain.gain.cancelScheduledValues(cancelTime),
+ `gain.gain.cancelScheduledValues(${cancelTime})`)
+ .notThrow();
+
+ // Simple check that the setValueCurve is gone, by scheduling
+ // something in the middle of the (now deleted) event
+ should(
+ () => gain.gain.setValueAtTime(value2, time2),
+ `gain.gain.setValueAtTime(${value2}, ${time2})`)
+ .notThrow();
+
+ src.start();
+ context.startRendering()
+ .then(buffer => {
+ let audio = buffer.getChannelData(0);
+
+ // After canceling events, verify that the outputs have the
+ // desired values.
+ let curveFrame = curveStartTime * context.sampleRate;
+ should(
+ audio.slice(0, curveFrame), `output[0:${curveFrame - 1}]`)
+ .beConstantValueOf(value0);
+
+ let time2Frame = time2 * context.sampleRate;
+ should(
+ audio.slice(curveFrame, time2Frame),
+ `output[${curveFrame}:${time2Frame - 1}]`)
+ .beConstantValueOf(value1);
+
+ should(audio.slice(time2Frame), `output[${time2Frame}:]`)
+ .beConstantValueOf(value2);
+ })
+ .then(() => task.done());
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-delaynode-interface/maxdelay-rounding.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-delaynode-interface/maxdelay-rounding.html
new file mode 100644
index 00000000000..84d9f181389
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-delaynode-interface/maxdelay-rounding.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ Test DelayNode when maxDelayTime requires rounding
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ let sampleRate = 44100;
+ let inputLengthSeconds = 1;
+ let renderLengthSeconds = 2;
+
+ // Delay for one second plus 0.4 of a sample frame, to test that
+ // DelayNode is properly rounding up when calculating its buffer
+ // size (crbug.com/1065110).
+ let delayTimeSeconds = 1 + 0.4 / sampleRate;
+
+ let audit = Audit.createTaskRunner();
+
+ audit.define(
+ {
+ label: 'maxdelay-rounding',
+ description: 'Test DelayNode when maxDelayTime requires rounding',
+ },
+ (task, should) => {
+ let context = new OfflineAudioContext({
+ numberOfChannels: 1,
+ length: sampleRate * renderLengthSeconds,
+ sampleRate: sampleRate,
+ });
+
+ // Create a constant source to use as input.
+ let src = new ConstantSourceNode(context);
+
+ // Create a DelayNode to delay for delayTimeSeconds.
+ let delay = new DelayNode(context, {
+ maxDelayTime: delayTimeSeconds,
+ delayTime: delayTimeSeconds,
+ });
+
+ src.connect(delay).connect(context.destination);
+
+ src.start();
+ context.startRendering()
+ .then(renderedBuffer => {
+ let renderedData = renderedBuffer.getChannelData(0);
+
+ // The first delayTimeSeconds of output should be silent.
+ let expectedSilentFrames = Math.floor(
+ delayTimeSeconds * sampleRate);
+
+ should(
+ renderedData.slice(0, expectedSilentFrames),
+ `output[0:${expectedSilentFrames - 1}]`)
+ .beConstantValueOf(0);
+
+ // The rest should be non-silent: that is, there should
+ // be at least one non-zero sample. (Any reasonable
+ // interpolation algorithm will make all these samples
+ // non-zero, but I don't think that's guaranteed by the
+ // spec, so we use a conservative test for now.)
+ should(
+ renderedData.slice(expectedSilentFrames),
+ `output[${expectedSilentFrames}:]`)
+ .notBeConstantValueOf(0);
+ })
+ .then(() => task.done());
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>