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