aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-charset.window.js.ini4
-rw-r--r--tests/wpt/metadata/MANIFEST.json172
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini (renamed from tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini)2
-rw-r--r--tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini3
-rw-r--r--tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini3
-rw-r--r--tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-color/animation/opacity-animation-ending-correctly-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini22
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-005.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-007.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini106
-rw-r--r--tests/wpt/metadata/css/css-transitions/properties-value-inherit-001.html.ini109
-rw-r--r--tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/MediaQueryListEvent.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-table.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/content-length/parsing.window.js.ini2
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini6
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-load-as-html.xhtml.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini6
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/form-submit-button-click.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/navigate-to-about-blank-while-initial-load-pending.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-setter.html.ini4
-rw-r--r--tests/wpt/metadata/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini2
-rw-r--r--tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html.ini3
-rw-r--r--tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini3
-rw-r--r--tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/update-the-rendering.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini1
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/text-plain.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini3
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini5
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini3
-rw-r--r--tests/wpt/metadata/resource-timing/content-type-parsing.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html.ini1
-rw-r--r--tests/wpt/metadata/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini2
-rw-r--r--tests/wpt/metadata/webmessaging/with-ports/017.html.ini4
-rw-r--r--tests/wpt/metadata/webmessaging/without-ports/018.html.ini (renamed from tests/wpt/metadata/webmessaging/with-ports/018.html.ini)0
-rw-r--r--tests/wpt/metadata/webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html.ini4
-rw-r--r--tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-059.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-color-function.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-function.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-color-function.html12
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-style-first-letter-ref.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-style-first-letter.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-weight-first-letter-ref.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-weight-first-letter.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-nesting/nest-containing-forgiving-ref.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-nesting/nest-containing-forgiving.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-properties-values-api/animation/custom-property-animation-list-type-mismatch.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/content-visibility-auto-shared-element-ref.html11
-rw-r--r--tests/wpt/web-platform-tests/editing/data/delete.js43
-rw-r--r--tests/wpt/web-platform-tests/editing/data/forwarddelete.js43
-rw-r--r--tests/wpt/web-platform-tests/editing/data/multitest.js83
-rw-r--r--tests/wpt/web-platform-tests/editing/other/typing-around-link-element-after-joining-paragraphs.html194
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py22
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py28
-rw-r--r--tests/wpt/web-platform-tests/loading/early-hints/preload-fetch.h2.window.js10
-rw-r--r--tests/wpt/web-platform-tests/loading/early-hints/resources/early-hints-helpers.sub.js2
-rw-r--r--tests/wpt/web-platform-tests/loading/early-hints/resources/early-hints-test-loader.h2.py6
-rw-r--r--tests/wpt/web-platform-tests/loading/early-hints/resources/empty.json1
-rw-r--r--tests/wpt/web-platform-tests/loading/early-hints/resources/empty.json.headers4
-rw-r--r--tests/wpt/web-platform-tests/loading/early-hints/resources/preload-fetch.html18
-rw-r--r--tests/wpt/web-platform-tests/navigation-api/navigate-event/same-url-replace-cross-document.html23
-rw-r--r--tests/wpt/web-platform-tests/navigation-api/navigate-event/same-url-replace-same-document.html23
-rw-r--r--tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-with-percent-delay.tentative.html91
-rw-r--r--tests/wpt/web-platform-tests/scroll-animations/css/view-timeline-with-delay-and-range.tentative.html93
-rw-r--r--tests/wpt/web-platform-tests/tools/webtransport/h3/webtransport_h3_server.py8
-rw-r--r--tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin-insecure.sub.window.js109
-rw-r--r--tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.js (renamed from tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/resources/requestStorageAccessForOrigin-iframe.html2
-rw-r--r--tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/resources/requestStorageAccessForOrigin-iframe.https.html9
84 files changed, 1223 insertions, 272 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-charset.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-charset.window.js.ini
deleted file mode 100644
index 08ab7bd35cd..00000000000
--- a/tests/wpt/metadata/FileAPI/url/url-charset.window.js.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[url-charset.window.html]
- expected: TIMEOUT
- [Blob charset should override any auto-detected charset.]
- expected: TIMEOUT
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 6ca91ece0fc..b0304a0937e 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -140010,6 +140010,19 @@
{}
]
],
+ "single-line-column-flex-fragmentation-059.html": [
+ "ff91f373ec756ac8c101629a7199d75a600d8a96",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"single-line-row-flex-fragmentation-001.html": [
"379327a4aff584192f076d3f9d8f3ead232c0f5c",
[
@@ -176569,7 +176582,7 @@
]
],
"font-synthesis-style-first-letter.html": [
- "32f037bdb721dc3315787d37dce5c66b7cf1e37c",
+ "1296baf05f9c430cda6c52e5a63e813c79862b9a",
[
null,
[
@@ -176621,7 +176634,7 @@
]
],
"font-synthesis-weight-first-letter.html": [
- "52865540a791189e0adf89fb17f8b43fb830334b",
+ "3d60b2a22847e1b99f1ee53d27c231a41bbc60da",
[
null,
[
@@ -206862,6 +206875,19 @@
{}
]
],
+ "nest-containing-forgiving.html": [
+ "d399142f7efb998db7ff8dffae0770c5bcea0cc2",
+ [
+ null,
+ [
+ [
+ "/css/css-nesting/nest-containing-forgiving-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"nesting-basic.html": [
"6bc727a73195122f6f2abca1a07a289c99376f5c",
[
@@ -371061,7 +371087,7 @@
[]
],
"font-synthesis-style-first-letter-ref.html": [
- "f1abcb7bb3f4681ecfc2b135dc5ca6dd6b6b9896",
+ "c4f9b175de79052ad0f29df3be07a33c1072f245",
[]
],
"font-synthesis-style-first-line-ref.html": [
@@ -371077,7 +371103,7 @@
[]
],
"font-synthesis-weight-first-letter-ref.html": [
- "7ec42f07b7c2bfbd329534bc8401acb5ee33d5f2",
+ "fd29f4134d67d22b6e344dcc7ec8315a32dac2e5",
[]
],
"font-synthesis-weight-first-line-ref.html": [
@@ -383166,6 +383192,10 @@
"006216b60e71d2d1af9c3d6c9fc81ea4c53f1d1d",
[]
],
+ "nest-containing-forgiving-ref.html": [
+ "36b07c92b6fdcbb9bca66a4292bd871af7e7d696",
+ []
+ ],
"nesting-basic-ref.html": [
"c2f7c669497d363e868cb96d2c2bb1ee315fff49",
[]
@@ -395425,7 +395455,7 @@
[]
],
"content-visibility-auto-shared-element-ref.html": [
- "5c3fb1616d6e01276eced88d3a97b784ba1deb59",
+ "f4a34967ec066c67b5f8b486b7079411a9adb884",
[]
],
"content-with-clip-max-texture-size-ref.html": [
@@ -402031,7 +402061,7 @@
[]
],
"delete.js": [
- "c1f48a74b2010bd44ff71a33f9f9f4b4cbb5caac",
+ "94611e65767647353f4864f65c7ee0ece93f375d",
[]
],
"fontname.js": [
@@ -402051,7 +402081,7 @@
[]
],
"forwarddelete.js": [
- "832ba608a04587feeb85308f23f6b530b3e65b79",
+ "524d43274e51f0ec2b870c4bf9b4bc64334ec104",
[]
],
"hilitecolor.js": [
@@ -402123,7 +402153,7 @@
[]
],
"multitest.js": [
- "89f5eebdb666c896e0c549bf0683894d0b64e8f8",
+ "118ae4b3a41f753433b76fabaa17e22a28ae6059",
[]
],
"outdent.js": [
@@ -410306,11 +410336,11 @@
[]
],
"gentestutils.py": [
- "2517568a5a83c9e8539a7c93e69aaf8a085504f4",
+ "59fa9e73e51bc19c5c1bcc827684e078ee132058",
[]
],
"gentestutilsunion.py": [
- "4c65d688c25f27d6d29f4732f1f250323385a945",
+ "3afb54de477e6fbfff4bf5790376153128b79741",
[]
],
"name2dir-canvas.yaml": [
@@ -424162,11 +424192,11 @@
[]
],
"early-hints-helpers.sub.js": [
- "3991e8fe9da479dd0f5b4cea537542ba948a8540",
+ "faf6119cf1edd5454aaabd643ffe40d33c589463",
[]
],
"early-hints-test-loader.h2.py": [
- "aa9188c6dbc3920055095421bc880ec5595b0bbb",
+ "bb987209c50f41f260cc7e5d43901c8777ee8779",
[]
],
"empty-corp-absent.js": [
@@ -424185,6 +424215,14 @@
"1738466bcb3225df2ec2dc7f58459784ce426a84",
[]
],
+ "empty.json": [
+ "0967ef424bce6791893e9a57bb952f80fd536e93",
+ []
+ ],
+ "empty.json.headers": [
+ "1738466bcb3225df2ec2dc7f58459784ce426a84",
+ []
+ ],
"example.pdf": [
"7bad251ba7e08efc9c383d88518367a6f204cdd6",
[]
@@ -424245,6 +424283,10 @@
"daea33160ae4e7b7bd074fb1849f1ba40ce8e715",
[]
],
+ "preload-fetch.html": [
+ "2e90f76af143fce7f05eb77bb71f00e0d880ff88",
+ []
+ ],
"preload-finished-before-final-response.h2.py": [
"d0b12408d9cff01352380cec5727145dbed6dded",
[]
@@ -444734,7 +444776,7 @@
[]
],
"webtransport_h3_server.py": [
- "d3031b4c0c2f531f97720249a0596f04c8c63d75",
+ "4b49c90d816adf577147c7263e90c2cc05170160",
[]
]
},
@@ -445868,7 +445910,11 @@
"tentative": {
"resources": {
"requestStorageAccessForOrigin-iframe.html": [
- "3e2f6d5b6288993714f3ee56ae89631e03d563b9",
+ "43d16705c8515b48685420c8d14925af90afb62a",
+ []
+ ],
+ "requestStorageAccessForOrigin-iframe.https.html": [
+ "db03b25e14d7883a89cac79746c11b280ec24dae",
[]
]
}
@@ -490959,7 +491005,7 @@
]
],
"color-computed-color-function.html": [
- "e610754c644a4e9f32a7adceffd49690c23157e7",
+ "530a605bc9292f061dca5a053eb61f77349534ee",
[
null,
{}
@@ -491036,7 +491082,7 @@
]
],
"color-invalid-color-function.html": [
- "75d9ff7c21764bb1e011e0f93bfbf46d4b08e5c5",
+ "51f393747c19a257045b2d9f7537ef6c8ff85b11",
[
null,
{}
@@ -491113,7 +491159,7 @@
]
],
"color-valid-color-function.html": [
- "79e0bde059013de349faf36852f15f7177c67a29",
+ "1eb7c744b2aceea1234801706babdba155e35c9f",
[
null,
{}
@@ -503216,6 +503262,13 @@
{}
]
],
+ "custom-property-animation-list-type-mismatch.html": [
+ "95757445ae79121893e02d3f37153e197ac4fbd3",
+ [
+ null,
+ {}
+ ]
+ ],
"custom-property-animation-non-inherited-used-by-standard-property.html": [
"11d3f6740d950b8f86536515242869e468e1a1c3",
[
@@ -529303,6 +529356,23 @@
}
]
],
+ "typing-around-link-element-after-joining-paragraphs.html": [
+ "4934530c9b842dfe9e1259c0d7541427279eb2f2",
+ [
+ "editing/other/typing-around-link-element-after-joining-paragraphs.html?action=Backspace",
+ {
+ "testdriver": true,
+ "timeout": "long"
+ }
+ ],
+ [
+ "editing/other/typing-around-link-element-after-joining-paragraphs.html?action=Delete",
+ {
+ "testdriver": true,
+ "timeout": "long"
+ }
+ ]
+ ],
"typing-around-link-element-at-collapsed-selection.tentative.html": [
"2b2e304aba47e4b1ffb4679209afb32debcf94cc",
[
@@ -616364,6 +616434,20 @@
}
]
],
+ "preload-fetch.h2.window.js": [
+ "121913ed3175d552acf83ba3cb4b19e54b51d75a",
+ [
+ "loading/early-hints/preload-fetch.h2.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/early-hints-helpers.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
"preload-finished-before-final-response.h2.window.js": [
"c63239be1f59426b35760c26ef47453c9248c59b",
[
@@ -622704,6 +622788,20 @@
{}
]
],
+ "same-url-replace-cross-document.html": [
+ "0a976cd51fdcb3205d2a71cc9dc1a9853e417eee",
+ [
+ null,
+ {}
+ ]
+ ],
+ "same-url-replace-same-document.html": [
+ "839c687934238d594013ec6ca009532df440d269",
+ [
+ null,
+ {}
+ ]
+ ],
"signal-abort-detach-in-onnavigate.html": [
"467ea88899323bbf47e9a12fd3a03ee577963a43",
[
@@ -647141,6 +647239,13 @@
{}
]
],
+ "scroll-timeline-with-percent-delay.tentative.html": [
+ "4f2e1761de29d80c8377926f734e0cfbfe831a8c",
+ [
+ null,
+ {}
+ ]
+ ],
"timeline-range-name-offset-in-keyframes.tentative.html": [
"993046c5f2b8d3eb62dcda1adb33ad7a82137524",
[
@@ -647252,6 +647357,13 @@
null,
{}
]
+ ],
+ "view-timeline-with-delay-and-range.tentative.html": [
+ "40548bf5cd4548c105872d1066a05e5848c4bfce",
+ [
+ null,
+ {}
+ ]
]
},
"scroll-timelines": {
@@ -664572,10 +664684,32 @@
},
"top-level-storage-access-api": {
"tentative": {
- "requestStorageAccessForOrigin.sub.window.js": [
+ "requestStorageAccessForOrigin-insecure.sub.window.js": [
+ "b4bcb2cd34074a6d6d182fef470df88590bb7ca6",
+ [
+ "top-level-storage-access-api/tentative/requestStorageAccessForOrigin-insecure.sub.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/storage-access-api/helpers.js"
+ ],
+ [
+ "script",
+ "/resources/testdriver.js"
+ ],
+ [
+ "script",
+ "/resources/testdriver-vendor.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "requestStorageAccessForOrigin.sub.https.window.js": [
"f7dd478a7078673643d91fece6f64bf0148c7ec6",
[
- "top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.window.html",
+ "top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.html",
{
"script_metadata": [
[
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-003.html.ini
index 13bd6abf376..665ec4646cb 100644
--- a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini
+++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini
@@ -1,3 +1,3 @@
-[hit-test-floats-004.html]
+[hit-test-floats-003.html]
[Miss float below something else]
expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini
index ee34bc91078..51432362d66 100644
--- a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini
+++ b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini
@@ -1,6 +1,3 @@
[block-in-inline-hittest-002.html]
[elementsFromPoint]
expected: FAIL
-
- [elementFromPoint]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini
deleted file mode 100644
index 3e5096beef3..00000000000
--- a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[block-in-inline-hittest-float-002.html]
- [block-in-inline-hittest-float-002]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini
index cdd8b55f192..f9e216a8cfc 100644
--- a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini
+++ b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini
@@ -1,3 +1,6 @@
[block-in-inline-hittest-relpos-zindex.html]
[position: relative; z-index: -1;]
expected: FAIL
+
+ [block-in-inline-hittest-relpos-zindex]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-color/animation/opacity-animation-ending-correctly-001.html.ini b/tests/wpt/metadata/css/css-color/animation/opacity-animation-ending-correctly-001.html.ini
new file mode 100644
index 00000000000..304b1579ca4
--- /dev/null
+++ b/tests/wpt/metadata/css/css-color/animation/opacity-animation-ending-correctly-001.html.ini
@@ -0,0 +1,2 @@
+[opacity-animation-ending-correctly-001.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
index b95c45ebe80..1507cf615a4 100644
--- a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
@@ -194,9 +194,6 @@
[Matching font-style: 'oblique -21deg' should prefer 'oblique -10deg' over 'italic']
expected: FAIL
- [Matching font-style: 'oblique -21deg' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg']
- expected: FAIL
-
[Matching font-style: 'oblique 21deg' should prefer 'oblique -50deg -20deg' over 'oblique -40deg -30deg']
expected: FAIL
@@ -206,9 +203,6 @@
[Matching font-style: 'oblique -21deg' should prefer 'italic' over 'oblique 0deg']
expected: FAIL
- [Matching font-style: 'oblique 10deg' should prefer 'oblique 40deg 50deg' over 'italic']
- expected: FAIL
-
[Matching font-style: 'italic' should prefer 'italic' over 'oblique 20deg']
expected: FAIL
@@ -272,9 +266,6 @@
[Matching font-weight: '500' should prefer '500' over '450 460']
expected: FAIL
- [Matching font-style: 'oblique 20deg' should prefer 'oblique 0deg' over 'oblique -50deg -20deg']
- expected: FAIL
-
[Matching font-style: 'oblique 0deg' should prefer 'oblique 0deg' over 'oblique 5deg']
expected: FAIL
@@ -311,17 +302,20 @@
[Matching font-stretch: '90%' should prefer '60% 70%' over '110% 140%']
expected: FAIL
- [Matching font-style: 'oblique -21deg' should prefer 'oblique -60deg -40deg' over 'oblique -10deg']
- expected: FAIL
-
[Matching font-style: 'oblique 21deg' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg']
expected: FAIL
[Matching font-style: 'oblique 21deg' should prefer 'oblique 40deg 50deg' over 'oblique 20deg']
expected: FAIL
- [Matching font-style: 'oblique 10deg' should prefer 'oblique 15deg 20deg' over 'oblique 30deg 60deg']
+ [Matching font-style: 'oblique -21deg' should prefer 'oblique 0deg' over 'oblique 30deg 60deg']
expected: FAIL
- [Matching font-style: 'oblique -21deg' should prefer 'oblique 0deg' over 'oblique 30deg 60deg']
+ [Matching font-style: 'normal' should prefer 'oblique 20deg 30deg' over 'oblique -50deg -20deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -10deg' should prefer 'oblique -60deg -30deg' over 'oblique -50deg -40deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -20deg' should prefer 'oblique 0deg' over 'oblique 30deg 60deg']
expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-005.html.ini b/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-005.html.ini
deleted file mode 100644
index b9463b3ee1e..00000000000
--- a/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-005.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[trailing-other-space-separators-break-spaces-005.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-007.html.ini b/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-007.html.ini
deleted file mode 100644
index 98f844212dd..00000000000
--- a/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-007.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[trailing-other-space-separators-break-spaces-007.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini
index 102a1161a2d..027bd2fcf75 100644
--- a/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini
@@ -53,158 +53,152 @@
[background-position length(px) / events]
expected: FAIL
- [padding-bottom length(ex) / values]
- expected: FAIL
-
- [padding-bottom length(mm) / values]
- expected: FAIL
-
- [padding-bottom length(cm) / values]
+ [color color(rgba) / values]
expected: FAIL
- [padding-bottom length(in) / values]
+ [text-shadow shadow(shadow) / values]
expected: FAIL
- [padding-left length(pt) / values]
+ [font-size length(pt) / values]
expected: FAIL
- [padding-left length(pc) / values]
+ [font-size length(pc) / values]
expected: FAIL
- [padding-left length(px) / values]
+ [font-size length(px) / values]
expected: FAIL
- [padding-left length(em) / values]
+ [font-size length(em) / values]
expected: FAIL
- [padding-left length(ex) / values]
+ [font-size length(ex) / values]
expected: FAIL
- [padding-left length(mm) / values]
+ [font-size length(mm) / values]
expected: FAIL
- [padding-left length(cm) / values]
+ [font-size length(cm) / values]
expected: FAIL
- [padding-left length(in) / values]
+ [font-size length(in) / values]
expected: FAIL
- [padding-right length(pt) / values]
+ [font-size percentage(%) / values]
expected: FAIL
- [padding-right length(pc) / values]
+ [font-weight font-weight(keyword) / values]
expected: FAIL
- [padding-right length(px) / values]
+ [font-weight font-weight(numeric) / values]
expected: FAIL
- [padding-right length(em) / values]
+ [line-height number(integer) / values]
expected: FAIL
- [padding-right length(ex) / values]
+ [line-height number(decimal) / values]
expected: FAIL
- [padding-right length(mm) / values]
+ [line-height length(pt) / values]
expected: FAIL
- [padding-right length(cm) / values]
+ [line-height length(pc) / values]
expected: FAIL
- [padding-right length(in) / values]
+ [line-height length(px) / values]
expected: FAIL
- [padding-top length(pt) / values]
+ [line-height length(em) / values]
expected: FAIL
- [padding-top length(pc) / values]
+ [line-height length(ex) / values]
expected: FAIL
- [padding-top length(px) / values]
+ [line-height length(mm) / values]
expected: FAIL
- [padding-top length(em) / values]
+ [line-height length(cm) / values]
expected: FAIL
- [padding-top length(ex) / values]
+ [line-height length(in) / values]
expected: FAIL
- [padding-top length(mm) / values]
+ [line-height percentage(%) / values]
expected: FAIL
- [padding-top length(cm) / values]
+ [letter-spacing length(pt) / values]
expected: FAIL
- [padding-top length(in) / values]
+ [letter-spacing length(pc) / values]
expected: FAIL
- [margin-bottom length(pt) / values]
+ [letter-spacing length(px) / values]
expected: FAIL
- [margin-bottom length(pc) / values]
+ [letter-spacing length(em) / values]
expected: FAIL
- [margin-bottom length(px) / values]
+ [letter-spacing length(ex) / values]
expected: FAIL
- [margin-bottom length(em) / values]
+ [letter-spacing length(mm) / values]
expected: FAIL
- [margin-bottom length(ex) / values]
+ [letter-spacing length(cm) / values]
expected: FAIL
- [margin-bottom length(mm) / values]
+ [letter-spacing length(in) / values]
expected: FAIL
- [margin-bottom length(cm) / values]
+ [word-spacing length(pt) / values]
expected: FAIL
- [margin-bottom length(in) / values]
+ [word-spacing length(pc) / values]
expected: FAIL
- [margin-left length(pt) / values]
+ [word-spacing length(px) / values]
expected: FAIL
- [margin-left length(pc) / values]
+ [word-spacing length(em) / values]
expected: FAIL
- [margin-left length(px) / values]
+ [word-spacing length(ex) / values]
expected: FAIL
- [margin-left length(em) / values]
+ [word-spacing length(mm) / values]
expected: FAIL
- [margin-left length(ex) / values]
+ [word-spacing length(cm) / values]
expected: FAIL
- [margin-left length(mm) / values]
+ [word-spacing length(in) / values]
expected: FAIL
- [margin-left length(cm) / values]
+ [word-spacing percentage(%) / values]
expected: FAIL
- [margin-left length(in) / values]
+ [text-indent length(pt) / values]
expected: FAIL
- [margin-right length(pt) / values]
+ [text-indent length(pc) / values]
expected: FAIL
- [margin-right length(pc) / values]
+ [text-indent length(px) / values]
expected: FAIL
- [margin-right length(px) / values]
+ [text-indent length(em) / values]
expected: FAIL
- [margin-right length(em) / values]
+ [text-indent length(ex) / values]
expected: FAIL
- [margin-right length(ex) / values]
+ [text-indent length(mm) / values]
expected: FAIL
- [margin-right length(mm) / values]
+ [text-indent length(cm) / values]
expected: FAIL
- [color color(rgba) / values]
+ [text-indent length(in) / values]
expected: FAIL
- [text-shadow shadow(shadow) / values]
+ [text-indent percentage(%) / values]
expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-001.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-001.html.ini
index 22199e399b4..8484f4b2b02 100644
--- a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-001.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-001.html.ini
@@ -356,125 +356,152 @@
[margin-right length(mm) / events]
expected: FAIL
- [background-color color(rgba) / events]
+ [color color(rgba) / events]
expected: FAIL
- [border-top-width length(pt) / events]
+ [font-size length(pt) / events]
expected: FAIL
- [border-top-width length(pc) / events]
+ [font-size length(pc) / events]
expected: FAIL
- [border-top-width length(px) / events]
+ [font-size length(px) / events]
expected: FAIL
- [border-top-width length(em) / events]
+ [font-size length(em) / events]
expected: FAIL
- [border-top-width length(ex) / events]
+ [font-size length(ex) / events]
expected: FAIL
- [border-top-width length(mm) / events]
+ [font-size length(mm) / events]
expected: FAIL
- [border-top-width length(cm) / events]
+ [font-size length(cm) / events]
expected: FAIL
- [border-top-width length(in) / events]
+ [font-size length(in) / events]
expected: FAIL
- [border-right-width length(pt) / events]
+ [font-size percentage(%) / events]
expected: FAIL
- [border-right-width length(pc) / events]
+ [font-weight font-weight(keyword) / events]
expected: FAIL
- [border-right-width length(px) / events]
+ [font-weight font-weight(numeric) / events]
expected: FAIL
- [border-right-width length(em) / events]
+ [line-height number(integer) / events]
expected: FAIL
- [border-right-width length(ex) / events]
+ [line-height number(decimal) / events]
expected: FAIL
- [border-right-width length(mm) / events]
+ [line-height length(pt) / events]
expected: FAIL
- [border-right-width length(cm) / events]
+ [line-height length(pc) / events]
expected: FAIL
- [border-right-width length(in) / events]
+ [line-height length(px) / events]
expected: FAIL
- [border-bottom-width length(pt) / events]
+ [line-height length(em) / events]
expected: FAIL
- [border-bottom-width length(pc) / events]
+ [line-height length(ex) / events]
expected: FAIL
- [border-bottom-width length(px) / events]
+ [line-height length(mm) / events]
expected: FAIL
- [border-bottom-width length(em) / events]
+ [line-height length(cm) / events]
expected: FAIL
- [border-bottom-width length(ex) / events]
+ [line-height length(in) / events]
expected: FAIL
- [border-bottom-width length(mm) / events]
+ [line-height percentage(%) / events]
expected: FAIL
- [border-bottom-width length(cm) / events]
+ [letter-spacing length(pt) / events]
expected: FAIL
- [border-bottom-width length(in) / events]
+ [letter-spacing length(pc) / events]
expected: FAIL
- [border-left-width length(pt) / events]
+ [letter-spacing length(px) / events]
expected: FAIL
- [border-left-width length(pc) / events]
+ [letter-spacing length(em) / events]
expected: FAIL
- [border-left-width length(px) / events]
+ [letter-spacing length(ex) / events]
expected: FAIL
- [border-left-width length(em) / events]
+ [letter-spacing length(mm) / events]
expected: FAIL
- [border-left-width length(ex) / events]
+ [letter-spacing length(cm) / events]
expected: FAIL
- [border-left-width length(mm) / events]
+ [letter-spacing length(in) / events]
expected: FAIL
- [border-left-width length(cm) / events]
+ [word-spacing length(pt) / events]
expected: FAIL
- [border-left-width length(in) / events]
+ [word-spacing length(pc) / events]
expected: FAIL
- [border-top-color color(rgba) / events]
+ [word-spacing length(px) / events]
expected: FAIL
- [border-right-color color(rgba) / events]
+ [word-spacing length(em) / events]
expected: FAIL
- [border-bottom-color color(rgba) / events]
+ [word-spacing length(ex) / events]
expected: FAIL
- [border-left-color color(rgba) / events]
+ [word-spacing length(mm) / events]
expected: FAIL
- [padding-bottom length(pt) / events]
+ [word-spacing length(cm) / events]
expected: FAIL
- [padding-bottom length(pc) / events]
+ [word-spacing length(in) / events]
expected: FAIL
- [padding-bottom length(px) / events]
+ [word-spacing percentage(%) / events]
expected: FAIL
- [padding-bottom length(em) / events]
+ [text-indent length(pt) / events]
+ expected: FAIL
+
+ [text-indent length(pc) / events]
+ expected: FAIL
+
+ [text-indent length(px) / events]
+ expected: FAIL
+
+ [text-indent length(em) / events]
+ expected: FAIL
+
+ [text-indent length(ex) / events]
+ expected: FAIL
+
+ [text-indent length(mm) / events]
+ expected: FAIL
+
+ [text-indent length(cm) / events]
+ expected: FAIL
+
+ [text-indent length(in) / events]
+ expected: FAIL
+
+ [text-indent percentage(%) / events]
+ expected: FAIL
+
+ [text-shadow shadow(shadow) / events]
expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini
deleted file mode 100644
index f18b8d2fcf9..00000000000
--- a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[CaretPosition-001.html]
- [Element at (400, 100)]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/MediaQueryListEvent.html.ini b/tests/wpt/metadata/css/cssom-view/MediaQueryListEvent.html.ini
new file mode 100644
index 00000000000..18789696fd2
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/MediaQueryListEvent.html.ini
@@ -0,0 +1,3 @@
+[MediaQueryListEvent.html]
+ [argument of onchange]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini
new file mode 100644
index 00000000000..72b09371038
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini
@@ -0,0 +1,3 @@
+[elementFromPoint-001.html]
+ [CSSOM View - 5 - extensions to the Document interface]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini
new file mode 100644
index 00000000000..cf67b5d03dd
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini
@@ -0,0 +1,3 @@
+[elementFromPoint-dynamic-anon-box.html]
+ [Link should be clickable after hiding a scrollbox with an anonymous table inside]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini
new file mode 100644
index 00000000000..b905fe70fcb
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini
@@ -0,0 +1,3 @@
+[elementFromPoint-ellipsis-in-inline-box.html]
+ [elementFromPoint-ellipsis-in-inline-box]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-table.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-table.html.ini
new file mode 100644
index 00000000000..db065588308
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-table.html.ini
@@ -0,0 +1,3 @@
+[elementFromPoint-float-in-table.html]
+ [float-in-div]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini
index df64baf81ee..cb46964f2de 100644
--- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini
@@ -16,3 +16,6 @@
[<li>Image Inside 2</li>]
expected: FAIL
+
+ [<li>Image Inside 1</li>]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini
deleted file mode 100644
index a6bca7ac372..00000000000
--- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[elementFromPoint-visibility-hidden-resizer.html]
- [elementFromPoint on resizer area of an element with visibility:hidden]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
index 898f39c4330..ceb43099040 100644
--- a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
@@ -17,6 +17,3 @@
[test some point of the element: bottom right corner]
expected: FAIL
-
- [test the top of layer]
- expected: FAIL
diff --git a/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini b/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini
index fc21a631bdd..e8237fbb8f9 100644
--- a/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini
@@ -77,5 +77,5 @@
[Input: "Content-Length: ". Expected: 42.]
expected: FAIL
- [Input: "Content-Length: 30". Expected: 30.]
+ [Input: "Content-Length: 42,42". Expected: 42.]
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 c8ad97ec3cc..ba47e36f3af 100644
--- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -8,11 +8,5 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
- [X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff]
- expected: FAIL
-
[X-Content-Type-Options%3A%20%2Cnosniff]
expected: FAIL
-
- [X-Content-Type-Options%3A%20%22nosniFF%22]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini
index 856bb1c9901..dc1144214ef 100644
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini
@@ -1,10 +1,9 @@
[iframe-src-aboutblank-navigate-immediately.html]
- expected: TIMEOUT
[Navigating to a different document with window.open]
expected: FAIL
[Navigating to a different document with form submission]
- expected: TIMEOUT
+ expected: FAIL
[Navigating to a different document with link click]
expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-load-as-html.xhtml.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-load-as-html.xhtml.ini
deleted file mode 100644
index 3956f08d5bb..00000000000
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-load-as-html.xhtml.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[javascript-url-load-as-html.xhtml]
- expected: TIMEOUT
- [javascript: URL navigation to a string must create a HTML document using the correct properties]
- expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini
index 8ae58f9f1e2..4b89cb499f8 100644
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini
@@ -13,9 +13,3 @@
[0080 00FF 0100 set in href="" targeting a frame and clicked]
expected: FAIL
-
- [D83D DE0D set in href="" targeting a frame and clicked]
- expected: FAIL
-
- [DE0D 0041 set in href="" targeting a frame and clicked]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini
index 27889a98fb5..24d2f8ac554 100644
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini
@@ -1,6 +1,3 @@
[navigate-to-unparseable-url.html]
[location.href setter throws a SyntaxError DOMException for unparseable URLs]
expected: FAIL
-
- [<a> tag navigate fails for unparseable URLs]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini
new file mode 100644
index 00000000000..60a4fa51f8a
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini
@@ -0,0 +1,3 @@
+[a-click.html]
+ [aElement.click() before the load event must NOT replace]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/form-submit-button-click.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/form-submit-button-click.html.ini
index 6c777ea167c..e84cccbbd1f 100644
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/form-submit-button-click.html.ini
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/form-submit-button-click.html.ini
@@ -1,4 +1,3 @@
[form-submit-button-click.html]
- expected: TIMEOUT
[Replace before load, triggered by submitButton.click()]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
deleted file mode 100644
index ba0aed26689..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[traverse_the_history_1.html]
- [Multiple history traversals from the same task]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
new file mode 100644
index 00000000000..7a5fcb79165
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
@@ -0,0 +1,3 @@
+[traverse_the_history_5.html]
+ [Multiple history traversals, last would be aborted]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/navigate-to-about-blank-while-initial-load-pending.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/navigate-to-about-blank-while-initial-load-pending.html.ini
deleted file mode 100644
index de713daa8a0..00000000000
--- a/tests/wpt/metadata/html/browsers/the-window-object/navigate-to-about-blank-while-initial-load-pending.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[navigate-to-about-blank-while-initial-load-pending.html]
- [Navigating to about:blank while window.open initial load pending.]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-setter.html.ini b/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-setter.html.ini
deleted file mode 100644
index 64c79a60c4a..00000000000
--- a/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-setter.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[opener-setter.html]
- expected: TIMEOUT
- [Auxiliary browsing context created via `window.open` and setting `window.opener` to `test` should report `test`]
- expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini b/tests/wpt/metadata/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini
index 5cdcce07c65..2a54f2f8814 100644
--- a/tests/wpt/metadata/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini
+++ b/tests/wpt/metadata/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini
@@ -1,2 +1,2 @@
[canvas.2d.disconnected.html]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html.ini
index 830aeb8ae48..fdc27d37788 100644
--- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html.ini
+++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html.ini
@@ -1,7 +1,6 @@
[autofocus-dialog.html]
- expected: TIMEOUT
[<dialog> can contain autofocus, without stopping page autofocus content from working]
expected: FAIL
[<dialog>-contained autofocus element gets focused when the dialog is shown]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
index 8acae84e1e4..d169bd2e9fa 100644
--- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
+++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
@@ -1,5 +1,4 @@
[supported-elements.html]
- expected: TIMEOUT
[Contenteditable element should support autofocus]
expected: FAIL
@@ -10,7 +9,7 @@
expected: FAIL
[Area element should support autofocus]
- expected: TIMEOUT
+ expected: FAIL
[Host element with delegatesFocus should support autofocus]
expected: FAIL
diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/update-the-rendering.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/update-the-rendering.html.ini
index 9b27c5c1957..add66c12f92 100644
--- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/update-the-rendering.html.ini
+++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/update-the-rendering.html.ini
@@ -1,7 +1,6 @@
[update-the-rendering.html]
- expected: TIMEOUT
["Flush autofocus candidates" should be happen after the first animation frame callbacks, and before a resize event in the next iteration of window event loop.]
expected: TIMEOUT
["Flush autofocus candidates" should be happen before a scroll event and animation frame callbacks]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
index 7f5e282e3e2..2d3fbf0f308 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
@@ -1,5 +1,5 @@
[iframe_sandbox_popups_escaping-1.html]
type: testharness
- expected: CRASH
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
index 6fcdfb95246..fe55ddae3f1 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
@@ -1,5 +1,4 @@
[iframe_sandbox_popups_escaping-3.html]
type: testharness
- expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
index ff6467094b8..d5fd800f09d 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
@@ -1,3 +1,4 @@
[iframe_sandbox_popups_nonescaping-3.html]
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: FAIL
+ expected: NOTRUN
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini
index d8c5caa4863..4eaef655d86 100644
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini
@@ -175,3 +175,6 @@
[multipart/form-data: 0x00 in value (normal form)]
expected: FAIL
+
+ [multipart/form-data: Basic test (formdata event)]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/text-plain.window.js.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/text-plain.window.js.ini
index df084f97f3f..f523b37700a 100644
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/text-plain.window.js.ini
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/text-plain.window.js.ini
@@ -5,9 +5,6 @@
[text/plain: Basic File test (normal form)]
expected: FAIL
- [text/plain: Basic File test (formdata event)]
- expected: FAIL
-
[text/plain: 0x00 in name (normal form)]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini b/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini
index 071b4378add..cc18f512574 100644
--- a/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini
+++ b/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini
@@ -11,3 +11,6 @@
[Check that rel=noopener with target=_parent does a normal load]
expected: FAIL
+
+ [Check that rel=noopener with target=_self does a normal load]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini
index 31bfd644df0..8bcf3a07de4 100644
--- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini
+++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini
@@ -1,9 +1,10 @@
[promise-job-entry.html]
+ expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
expected: FAIL
[Rejection handler on pending-then-rejected promise]
- expected: FAIL
+ expected: TIMEOUT
[Sanity check: this all works as expected with no promises involved]
expected: FAIL
@@ -15,4 +16,4 @@
expected: FAIL
[Fulfillment handler on pending-then-fulfilled promise]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
index 1d71471b73c..4a48dd15a9d 100644
--- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
+++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
@@ -1,7 +1,6 @@
[promise-rejection-events.html]
- expected: TIMEOUT
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
- expected: TIMEOUT
+ expected: FAIL
[unhandledrejection: from createImageBitmap which is UA triggered]
expected: FAIL
diff --git a/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini b/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini
index 6f3a829d16a..f7bc47e5724 100644
--- a/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini
+++ b/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini
@@ -40,10 +40,10 @@
expected: FAIL
[content-type 13 : text/plain,*/*;charset=gbk]
- expected: FAIL
+ expected: TIMEOUT
[content-type 14 : text/html,*/*;charset=gbk]
- expected: TIMEOUT
+ expected: NOTRUN
[content-type 15 : text/html;x=",text/plain]
expected: NOTRUN
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html.ini
index b7537329068..eed03df37f3 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html.ini
@@ -1,5 +1,4 @@
[audiocontext-not-fully-active.html]
- expected: TIMEOUT
[frame in navigated remote-site frame]
expected: FAIL
diff --git a/tests/wpt/metadata/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini b/tests/wpt/metadata/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini
index 39d039a0132..04c2032c723 100644
--- a/tests/wpt/metadata/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini
+++ b/tests/wpt/metadata/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini
@@ -1,5 +1,5 @@
[cross-partition.https.tentative.html]
- expected: CRASH
+ expected: TIMEOUT
[BroadcastChannel messages aren't received from a cross-partition iframe]
expected: FAIL
diff --git a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini
new file mode 100644
index 00000000000..c7946fc91b4
--- /dev/null
+++ b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini
@@ -0,0 +1,4 @@
+[017.html]
+ expected: TIMEOUT
+ [origin of the script that invoked the method, about:blank]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata/webmessaging/without-ports/018.html.ini
index b7b36c1d3a4..b7b36c1d3a4 100644
--- a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini
+++ b/tests/wpt/metadata/webmessaging/without-ports/018.html.ini
diff --git a/tests/wpt/metadata/webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html.ini b/tests/wpt/metadata/webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html.ini
deleted file mode 100644
index aa6c9e5b826..00000000000
--- a/tests/wpt/metadata/webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html]
- expected: TIMEOUT
- [StorageKey: test 3P about:blank window opened from a 3P iframe]
- expected: TIMEOUT
diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-059.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-059.html
new file mode 100644
index 00000000000..ff91f373ec7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/single-line-column-flex-fragmentation-059.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1410949">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:2; column-fill:auto; gap:0; width:100px; height:100px; background:red;">
+ <div>
+ <div style="display:flex; flex-flow:column; height:100%;">
+ <div style="overflow:clip; background:green;">
+ <div style="height:10px;"></div>
+ <div style="break-inside:avoid; height:100px;"></div>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-color-function.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-color-function.html
index e610754c644..530a605bc92 100644
--- a/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-color-function.html
+++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-computed-color-function.html
@@ -31,12 +31,6 @@ for (const colorSpace of [ "srgb", "srgb-linear", "a98-rgb", "rec2020", "prophot
test_computed_value("color", `color(${colorSpace} 0 0 0 / -10%)`, `color(${colorSpace} 0 0 0 / 0)`);
test_computed_value("color", `color(${colorSpace} 0 0 0 / 110%)`, `color(${colorSpace} 0 0 0)`);
test_computed_value("color", `color(${colorSpace} 0 0 0 / 300%)`, `color(${colorSpace} 0 0 0)`);
- test_computed_value("color", `color(${colorSpace} 50% -200)`, `color(${colorSpace} 0.5 -200 0)`);
- test_computed_value("color", `color(${colorSpace} 50%)`, `color(${colorSpace} 0.5 0 0)`);
- test_computed_value("color", `color(${colorSpace})`, `color(${colorSpace} 0 0 0)`);
- test_computed_value("color", `color(${colorSpace} 50% -200 / 0.5)`, `color(${colorSpace} 0.5 -200 0 / 0.5)`);
- test_computed_value("color", `color(${colorSpace} 50% / 0.5)`, `color(${colorSpace} 0.5 0 0 / 0.5)`);
- test_computed_value("color", `color(${colorSpace} / 0.5)`, `color(${colorSpace} 0 0 0 / 0.5)`);
test_computed_value("color", `color(${colorSpace} 200 200 200)`, `color(${colorSpace} 200 200 200)`);
test_computed_value("color", `color(${colorSpace} 200 200 200 / 200)`, `color(${colorSpace} 200 200 200)`);
test_computed_value("color", `color(${colorSpace} -200 -200 -200)`, `color(${colorSpace} -200 -200 -200)`);
@@ -71,12 +65,6 @@ for (const colorSpace of [ "xyz", "xyz-d50", "xyz-d65" ]) {
test_computed_value("color", `color(${colorSpace} 0 0 0 / -10%)`, `color(${resultColorSpace} 0 0 0 / 0)`);
test_computed_value("color", `color(${colorSpace} 0 0 0 / 110%)`, `color(${resultColorSpace} 0 0 0)`);
test_computed_value("color", `color(${colorSpace} 0 0 0 / 300%)`, `color(${resultColorSpace} 0 0 0)`);
- test_computed_value("color", `color(${colorSpace} 1 1)`, `color(${resultColorSpace} 1 1 0)`);
- test_computed_value("color", `color(${colorSpace} 1)`, `color(${resultColorSpace} 1 0 0)`);
- test_computed_value("color", `color(${colorSpace})`, `color(${resultColorSpace} 0 0 0)`);
- test_computed_value("color", `color(${colorSpace} 1 1 / .5)`, `color(${resultColorSpace} 1 1 0 / 0.5)`);
- test_computed_value("color", `color(${colorSpace} 1 / 0.5)`, `color(${resultColorSpace} 1 0 0 / 0.5)`);
- test_computed_value("color", `color(${colorSpace} / 50%)`, `color(${resultColorSpace} 0 0 0 / 0.5)`);
test_computed_value("color", `color(${colorSpace} calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))`, `color(${resultColorSpace} 1.5 -0.5 0.5 / 0.5)`);
test_computed_value("color", `color(${colorSpace} none none none / none)`, `color(${resultColorSpace} none none none / none)`);
@@ -276,9 +264,6 @@ test_computed_value("color", "color(srgb 1 1 1 / 0.5)", "color(srgb 1 1 1 / 0.5)
test_computed_value("color", "color(srgb 1 1 1 / 0)", "color(srgb 1 1 1 / 0)", "[sRGB white with 0 alpha]");
test_computed_value("color", "color(srgb 1 1 1 / 50%)", "color(srgb 1 1 1 / 0.5)", "[sRGB white with 50% alpha]");
test_computed_value("color", "color(srgb 1 1 1 / 0%)", "color(srgb 1 1 1 / 0)", "[sRGB white with 0% alpha]");
-test_computed_value("color", "color(srgb 1 1)", "color(srgb 1 1 0)", "[One missing component is 0]");
-test_computed_value("color", "color(srgb 1)", "color(srgb 1 0 0)", "[Two missing components are 0]");
-test_computed_value("color", "color(srgb)", "color(srgb 0 0 0)", "[All components missing]");
test_computed_value("color", "color(display-p3 0.6 0.7 0.8)", "color(display-p3 0.6 0.7 0.8)", "[Display P3 color]");
test_computed_value("color", "color(dIspLaY-P3 0.6 0.7 0.8)", "color(display-p3 0.6 0.7 0.8)", "[Different case for Display P3]");
diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-function.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-function.html
index 75d9ff7c217..51f393747c1 100644
--- a/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-function.html
+++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-function.html
@@ -20,6 +20,13 @@ for (const colorSpace of [ "srgb", "srgb-linear", "a98-rgb", "rec2020", "prophot
test_invalid_value("color", `color(${colorSpace} 0% 0 0deg)`);
test_invalid_value("color", `color(${colorSpace} 0% 0% 0deg)`);
test_invalid_value("color", `color(${colorSpace} 40% 0 0deg)`);
+ // Missing parameters should not parse
+ test_invalid_value("color", `color(${colorSpace} 50% -200)`);
+ test_invalid_value("color", `color(${colorSpace} 50%)`);
+ test_invalid_value("color", `color(${colorSpace})`);
+ test_invalid_value("color", `color(${colorSpace} 50% -200 / 0.5)`);
+ test_invalid_value("color", `color(${colorSpace} 50% / 0.5)`);
+ test_invalid_value("color", `color(${colorSpace} / 0.5)`);
}
for (const colorSpace of [ "xyz", "xyz-d50", "xyz-d65" ]) {
@@ -30,6 +37,13 @@ for (const colorSpace of [ "xyz", "xyz-d50", "xyz-d65" ]) {
test_invalid_value("color", `color(${colorSpace} 0% 0 0deg)`);
test_invalid_value("color", `color(${colorSpace} 0% 0% 0deg)`);
test_invalid_value("color", `color(${colorSpace} 40% 0 0deg)`);
+ // Missing parameters should not parse
+ test_invalid_value("color", `color(${colorSpace} 1 1)`);
+ test_invalid_value("color", `color(${colorSpace} 1)`);
+ test_invalid_value("color", `color(${colorSpace})`);
+ test_invalid_value("color", `color(${colorSpace} 1 1 / .5)`);
+ test_invalid_value("color", `color(${colorSpace} 1 / 0.5)`);
+ test_invalid_value("color", `color(${colorSpace} / 50%)`);
}
test_invalid_value("color", "color()"); // Empty
diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-color-function.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-color-function.html
index 79e0bde0590..1eb7c744b2a 100644
--- a/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-color-function.html
+++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-valid-color-function.html
@@ -26,12 +26,6 @@ for (const colorSpace of [ "srgb", "srgb-linear", "a98-rgb", "rec2020", "prophot
test_valid_value("color", `color(${colorSpace} 0 0 0 / -10%)`, `color(${colorSpace} 0 0 0 / 0)`);
test_valid_value("color", `color(${colorSpace} 0 0 0 / 110%)`, `color(${colorSpace} 0 0 0)`);
test_valid_value("color", `color(${colorSpace} 0 0 0 / 300%)`, `color(${colorSpace} 0 0 0)`);
- test_valid_value("color", `color(${colorSpace} 50% -200)`, `color(${colorSpace} 0.5 -200 0)`);
- test_valid_value("color", `color(${colorSpace} 50%)`, `color(${colorSpace} 0.5 0 0)`);
- test_valid_value("color", `color(${colorSpace})`, `color(${colorSpace} 0 0 0)`);
- test_valid_value("color", `color(${colorSpace} 50% -200 / 0.5)`, `color(${colorSpace} 0.5 -200 0 / 0.5)`);
- test_valid_value("color", `color(${colorSpace} 50% / 0.5)`, `color(${colorSpace} 0.5 0 0 / 0.5)`);
- test_valid_value("color", `color(${colorSpace} / 0.5)`, `color(${colorSpace} 0 0 0 / 0.5)`);
test_valid_value("color", `color(${colorSpace} 200 200 200)`, `color(${colorSpace} 200 200 200)`);
test_valid_value("color", `color(${colorSpace} 200 200 200 / 200)`, `color(${colorSpace} 200 200 200)`);
test_valid_value("color", `color(${colorSpace} -200 -200 -200)`, `color(${colorSpace} -200 -200 -200)`);
@@ -66,12 +60,6 @@ for (const colorSpace of [ "xyz", "xyz-d50", "xyz-d65" ]) {
test_valid_value("color", `color(${colorSpace} 0 0 0 / -10%)`, `color(${resultColorSpace} 0 0 0 / 0)`);
test_valid_value("color", `color(${colorSpace} 0 0 0 / 110%)`, `color(${resultColorSpace} 0 0 0)`);
test_valid_value("color", `color(${colorSpace} 0 0 0 / 300%)`, `color(${resultColorSpace} 0 0 0)`);
- test_valid_value("color", `color(${colorSpace} 1 1)`, `color(${resultColorSpace} 1 1 0)`);
- test_valid_value("color", `color(${colorSpace} 1)`, `color(${resultColorSpace} 1 0 0)`);
- test_valid_value("color", `color(${colorSpace})`, `color(${resultColorSpace} 0 0 0)`);
- test_valid_value("color", `color(${colorSpace} 1 1 / .5)`, `color(${resultColorSpace} 1 1 0 / 0.5)`);
- test_valid_value("color", `color(${colorSpace} 1 / 0.5)`, `color(${resultColorSpace} 1 0 0 / 0.5)`);
- test_valid_value("color", `color(${colorSpace} / 50%)`, `color(${resultColorSpace} 0 0 0 / 0.5)`);
test_valid_value("color", `color(${colorSpace} calc(0.5 + 1) calc(0.5 - 1) calc(0.5) / calc(-0.5 + 1))`, `color(${resultColorSpace} 1.5 -0.5 0.5 / 0.5)`);
test_valid_value("color", `color(${colorSpace} none none none / none)`, `color(${resultColorSpace} none none none / none)`);
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-style-first-letter-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-style-first-letter-ref.html
index f1abcb7bb3f..c4f9b175de7 100644
--- a/tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-style-first-letter-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-style-first-letter-ref.html
@@ -10,6 +10,7 @@
.test {
font-family: "Lato-Medium";
font-size: 3em;
+ font-kerning: none;
}
</style>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-style-first-letter.html b/tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-style-first-letter.html
index 32f037bdb72..1296baf05f9 100644
--- a/tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-style-first-letter.html
+++ b/tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-style-first-letter.html
@@ -16,6 +16,7 @@
.test {
font-family: "Lato-Medium";
font-size: 3em;
+ font-kerning: none;
}
p.nosynth::first-letter {
font-style: italic;
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-weight-first-letter-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-weight-first-letter-ref.html
index 7ec42f07b7c..fd29f4134d6 100644
--- a/tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-weight-first-letter-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-weight-first-letter-ref.html
@@ -10,6 +10,7 @@
.test {
font-family: "Lato-Medium";
font-size: 3em;
+ font-kerning: none;
}
</style>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-weight-first-letter.html b/tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-weight-first-letter.html
index 52865540a79..3d60b2a2284 100644
--- a/tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-weight-first-letter.html
+++ b/tests/wpt/web-platform-tests/css/css-fonts/font-synthesis-weight-first-letter.html
@@ -16,6 +16,7 @@
.test {
font-family: "Lato-Medium";
font-size: 3em;
+ font-kerning: none;
}
p.nosynth::first-letter {
font-weight: bold;
diff --git a/tests/wpt/web-platform-tests/css/css-nesting/nest-containing-forgiving-ref.html b/tests/wpt/web-platform-tests/css/css-nesting/nest-containing-forgiving-ref.html
new file mode 100644
index 00000000000..36b07c92b6f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-nesting/nest-containing-forgiving-ref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<title>Nest-containing in forgiving parsing</title>
+<style>
+ .test {
+ background-color: green;
+ width: 100px;
+ height: 100px;
+ display: grid;
+ }
+
+ body * + * {
+ margin-top: 8px;
+ }
+</style>
+<body>
+ <p>Tests pass if <strong>block is green</strong></p>
+ <div class="test"></div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-nesting/nest-containing-forgiving.html b/tests/wpt/web-platform-tests/css/css-nesting/nest-containing-forgiving.html
new file mode 100644
index 00000000000..d399142f7ef
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-nesting/nest-containing-forgiving.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<title>Nest-containing in forgiving parsing</title>
+<link rel="author" title="Steinar H. Gunderson" href="mailto:sesse@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-nesting-1/">
+<link rel="match" href="nest-containing-forgiving-ref.html">
+<style>
+ .test {
+ background-color: red;
+ width: 100px;
+ height: 100px;
+ display: grid;
+ }
+
+ .does-not-exist {
+ :is(.test-1, !&) {
+ background-color: green;
+ }
+ }
+
+ body * + * {
+ margin-top: 8px;
+ }
+</style>
+<body>
+ <p>Tests pass if <strong>block is green</strong></p>
+ <div class="test test-1"></div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/animation/custom-property-animation-list-type-mismatch.html b/tests/wpt/web-platform-tests/css/css-properties-values-api/animation/custom-property-animation-list-type-mismatch.html
new file mode 100644
index 00000000000..95757445ae7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/animation/custom-property-animation-list-type-mismatch.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.css-houdini.org/css-properties-values-api-1">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../resources/utils.js"></script>
+<div id="target"></div>
+<script>
+
+animation_test({
+ syntax: "<number>+ | <transform-list>",
+ inherits: false,
+ initialValue: "translateX(100px)"
+}, {
+ keyframes: ["200"],
+ expected: "200"
+}, 'Animating a custom property allowing multiple list types with two mismatching types');
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/content-visibility-auto-shared-element-ref.html b/tests/wpt/web-platform-tests/css/css-view-transitions/content-visibility-auto-shared-element-ref.html
index 5c3fb1616d6..f4a34967ec0 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/content-visibility-auto-shared-element-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/content-visibility-auto-shared-element-ref.html
@@ -19,13 +19,16 @@ body { background: pink }
border: 1px solid black;
box-sizing: border-box;
}
-.hidden {
+.vis-hidden {
visibility: hidden;
}
+.cv-hidden {
+ content-visibility: hidden;
+}
</style>
<div class=flex>
- <div class="box hidden">ancestor c-v</div>
- <div class=box>self c-v</div>
- <div class=box>descendant c-v</div>
+ <div class="box vis-hidden">ancestor c-v</div>
+ <div class="box cv-hidden">self c-v</div>
+ <div class="box cv-hidden">descendant c-v</div>
</div>
diff --git a/tests/wpt/web-platform-tests/editing/data/delete.js b/tests/wpt/web-platform-tests/editing/data/delete.js
index c1f48a74b20..94611e65767 100644
--- a/tests/wpt/web-platform-tests/editing/data/delete.js
+++ b/tests/wpt/web-platform-tests/editing/data/delete.js
@@ -2868,4 +2868,47 @@ var browserTests = [
"<p><font face=\"monospace\">foo[]</font><font face=\"sans-serif\">bar</font></p>",
[true,true,true],
{"fontName":[false,false,"sans-serif",false,false,"monospace"]}],
+
+// After joining blocks, caret should be end of the deepest left block end for
+// making the following input will be styled with the style there.
+["<p><span style=\"color:rgb(0, 0, 255)\">foo</span></p><p><span style=\"color:rgb(255, 0, 0)\">[]bar</span></p>",
+ [["styleWithCSS","false"],["delete",""]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true],
+ {"foreColor":[false,false,"rgb(255, 0, 0)",false,false,"rgb(0, 0, 255)"]}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo</span><br></p><p><span style=\"color:rgb(255, 0, 0)\">[]bar</span></p>",
+ [["styleWithCSS","false"],["delete",""]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true],
+ {"foreColor":[false,false,"rgb(255, 0, 0)",false,false,"rgb(0, 0, 255)"]}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo<br></span></p><p><span style=\"color:rgb(255, 0, 0)\">[]bar</span></p>",
+ [["styleWithCSS","false"],["delete",""]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true],
+ {"foreColor":[false,false,"rgb(255, 0, 0)",false,false,"rgb(0, 0, 255)"]}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo</span></p><span style=\"color:rgb(255, 0, 0)\">[]bar</span>",
+ [["styleWithCSS","false"],["delete",""]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true],
+ {"foreColor":[false,false,"rgb(255, 0, 0)",false,false,"rgb(0, 0, 255)"]}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo</span><br></p><span style=\"color:rgb(255, 0, 0)\">[]bar</span>",
+ [["styleWithCSS","false"],["delete",""]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true],
+ {"foreColor":[false,false,"rgb(255, 0, 0)",false,false,"rgb(0, 0, 255)"]}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo<br></span></p><span style=\"color:rgb(255, 0, 0)\">[]bar</span>",
+ [["styleWithCSS","false"],["delete",""]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true],
+ {"foreColor":[false,false,"rgb(255, 0, 0)",false,false,"rgb(0, 0, 255)"]}],
+["<span style=\"color:rgb(0, 0, 255)\">foo</span><br><p><span style=\"color:rgb(255, 0, 0)\">[]bar</span></p>",
+ [["styleWithCSS","false"],["delete",""]],
+ "<span style=\"color:rgb(0, 0, 255)\">foo[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span>",
+ [true,true],
+ {"foreColor":[false,false,"rgb(255, 0, 0)",false,false,"rgb(0, 0, 255)"]}],
+["<span style=\"color:rgb(0, 0, 255)\">foo<br></span><p><span style=\"color:rgb(255, 0, 0)\">[]bar</span></p>",
+ [["styleWithCSS","false"],["delete",""]],
+ "<span style=\"color:rgb(0, 0, 255)\">foo[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span>",
+ [true,true],
+ {"foreColor":[false,false,"rgb(255, 0, 0)",false,false,"rgb(0, 0, 255)"]}],
]
diff --git a/tests/wpt/web-platform-tests/editing/data/forwarddelete.js b/tests/wpt/web-platform-tests/editing/data/forwarddelete.js
index 832ba608a04..524d43274e5 100644
--- a/tests/wpt/web-platform-tests/editing/data/forwarddelete.js
+++ b/tests/wpt/web-platform-tests/editing/data/forwarddelete.js
@@ -2748,4 +2748,47 @@ var browserTests = [
"<p><font face=\"monospace\">foo[]</font><font face=\"sans-serif\">bar</font></p>",
[true,true,true],
{"fontName":[false,false,"monospace",false,false,"monospace"]}],
+
+// After joining blocks, caret should be end of the deepest left block end for
+// making the following input will be styled with the style there.
+["<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span></p><p><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [["styleWithCSS","false"],["forwarddelete",""]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true],
+ {"foreColor":[false,false,"rgb(0, 0, 255)",false,false,"rgb(0, 0, 255)"]}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span><br></p><p><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [["styleWithCSS","false"],["forwarddelete",""]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true],
+ {"foreColor":[false,false,"rgb(0, 0, 255)",false,false,"rgb(0, 0, 255)"]}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo[]<br></span></p><p><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [["styleWithCSS","false"],["forwarddelete",""]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true],
+ {"foreColor":[false,false,"rgb(0, 0, 255)",false,false,"rgb(0, 0, 255)"]}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span></p><span style=\"color:rgb(255, 0, 0)\">bar</span>",
+ [["styleWithCSS","false"],["forwarddelete",""]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true],
+ {"foreColor":[false,false,"rgb(0, 0, 255)",false,false,"rgb(0, 0, 255)"]}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span><br></p><span style=\"color:rgb(255, 0, 0)\">bar</span>",
+ [["styleWithCSS","false"],["forwarddelete",""]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true],
+ {"foreColor":[false,false,"rgb(0, 0, 255)",false,false,"rgb(0, 0, 255)"]}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo[]<br></span></p><span style=\"color:rgb(255, 0, 0)\">bar</span>",
+ [["styleWithCSS","false"],["forwarddelete",""]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true],
+ {"foreColor":[false,false,"rgb(0, 0, 255)",false,false,"rgb(0, 0, 255)"]}],
+["<span style=\"color:rgb(0, 0, 255)\">foo[]</span><br><p><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [["styleWithCSS","false"],["forwarddelete",""]],
+ "<span style=\"color:rgb(0, 0, 255)\">foo[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span>",
+ [true,true],
+ {"foreColor":[false,false,"rgb(0, 0, 255)",false,false,"rgb(0, 0, 255)"]}],
+["<span style=\"color:rgb(0, 0, 255)\">foo[]<br></span><p><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [["styleWithCSS","false"],["forwarddelete",""]],
+ "<span style=\"color:rgb(0, 0, 255)\">foo[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span>",
+ [true,true],
+ {"foreColor":[false,false,"rgb(0, 0, 255)",false,false,"rgb(0, 0, 255)"]}],
]
diff --git a/tests/wpt/web-platform-tests/editing/data/multitest.js b/tests/wpt/web-platform-tests/editing/data/multitest.js
index 89f5eebdb66..118ae4b3a41 100644
--- a/tests/wpt/web-platform-tests/editing/data/multitest.js
+++ b/tests/wpt/web-platform-tests/editing/data/multitest.js
@@ -2934,4 +2934,87 @@ var browserTests = [
"abc<font style=\"background-color:rgb(0, 221, 221)\" size=\"7\" face=\"monospace\" color=\"#ff0000\">[d]</font>ef"],
[true,true,true,true,true,true],
{}],
+
+// Typed text after joining paragraphs should be inserted into the previous text node.
+["<p><span style=\"color:rgb(0, 0, 255)\">foo</span></p><p><span style=\"color:rgb(255, 0, 0)\">[]bar</span></p>",
+ [["styleWithCSS","false"],["delete",""],["insertText","A"]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">fooA[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true,true],
+ {}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo</span><br></p><p><span style=\"color:rgb(255, 0, 0)\">[]bar</span></p>",
+ [["styleWithCSS","false"],["delete",""],["insertText","A"]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">fooA[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true,true],
+ {}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo<br></span></p><p><span style=\"color:rgb(255, 0, 0)\">[]bar</span></p>",
+ [["styleWithCSS","false"],["delete",""],["insertText","A"]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">fooA[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true,true],
+ {}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo</span></p><span style=\"color:rgb(255, 0, 0)\">[]bar</span>",
+ [["styleWithCSS","false"],["delete",""],["insertText","A"]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">fooA[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true,true],
+ {}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo</span><br></p><span style=\"color:rgb(255, 0, 0)\">[]bar</span>",
+ [["styleWithCSS","false"],["delete",""],["insertText","A"]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">fooA[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true,true],
+ {}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo<br></span></p><span style=\"color:rgb(255, 0, 0)\">[]bar</span>",
+ [["styleWithCSS","false"],["delete",""],["insertText","A"]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">fooA[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true,true],
+ {}],
+["<span style=\"color:rgb(0, 0, 255)\">foo</span><br><p><span style=\"color:rgb(255, 0, 0)\">[]bar</span></p>",
+ [["styleWithCSS","false"],["delete",""],["insertText","A"]],
+ "<span style=\"color:rgb(0, 0, 255)\">fooA[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span>",
+ [true,true,true],
+ {}],
+["<span style=\"color:rgb(0, 0, 255)\">foo<br></span><p><span style=\"color:rgb(255, 0, 0)\">[]bar</span></p>",
+ [["styleWithCSS","false"],["delete",""],["insertText","A"]],
+ "<span style=\"color:rgb(0, 0, 255)\">fooA[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span>",
+ [true,true,true],
+ {}],
+
+["<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span></p><p><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [["styleWithCSS","false"],["forwarddelete",""],["insertText","A"]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">fooA[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true,true],
+ {}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span><br></p><p><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [["styleWithCSS","false"],["forwarddelete",""],["insertText","A"]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">fooA[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true,true],
+ {}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo[]<br></span></p><p><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [["styleWithCSS","false"],["forwarddelete",""],["insertText","A"]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">fooA[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true,true],
+ {}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span></p><span style=\"color:rgb(255, 0, 0)\">bar</span>",
+ [["styleWithCSS","false"],["forwarddelete",""],["insertText","A"]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">fooA[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true,true],
+ {}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo[]</span><br></p><span style=\"color:rgb(255, 0, 0)\">bar</span>",
+ [["styleWithCSS","false"],["forwarddelete",""],["insertText","A"]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">fooA[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true,true],
+ {}],
+["<p><span style=\"color:rgb(0, 0, 255)\">foo[]<br></span></p><span style=\"color:rgb(255, 0, 0)\">bar</span>",
+ [["styleWithCSS","false"],["forwarddelete",""],["insertText","A"]],
+ "<p><span style=\"color:rgb(0, 0, 255)\">fooA[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [true,true,true],
+ {}],
+["<span style=\"color:rgb(0, 0, 255)\">foo[]</span><br><p><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [["styleWithCSS","false"],["forwarddelete",""],["insertText","A"]],
+ "<span style=\"color:rgb(0, 0, 255)\">fooA[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span>",
+ [true,true,true],
+ {}],
+["<span style=\"color:rgb(0, 0, 255)\">foo[]<br></span><p><span style=\"color:rgb(255, 0, 0)\">bar</span></p>",
+ [["styleWithCSS","false"],["forwarddelete",""],["insertText","A"]],
+ "<span style=\"color:rgb(0, 0, 255)\">fooA[]</span><span style=\"color:rgb(255, 0, 0)\">bar</span>",
+ [true,true,true],
+ {}],
]
diff --git a/tests/wpt/web-platform-tests/editing/other/typing-around-link-element-after-joining-paragraphs.html b/tests/wpt/web-platform-tests/editing/other/typing-around-link-element-after-joining-paragraphs.html
new file mode 100644
index 00000000000..4934530c9b8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/editing/other/typing-around-link-element-after-joining-paragraphs.html
@@ -0,0 +1,194 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf-8">
+<meta name="timeout" content="long">
+<meta name="variant" content="?action=Backspace">
+<meta name="variant" content="?action=Delete">
+<title>Typing after joining paragraph shouldn't be inserted into the link</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 src="/resources/testdriver-actions.js"></script>
+<script src="../include/editor-test-utils.js"></script>
+</head>
+<body>
+<div contenteditable></div>
+<script>
+"use strict";
+
+const params = new URLSearchParams(location.search.substring(1));
+const backspace = params.get("action") == "Backspace";
+const bracketsForBackspace = backspace ? "[]" : "";
+const bracketsForDelete = backspace ? "" : "[]";
+
+const editingHost = document.querySelector("div[contenteditable]");
+const utils = new EditorTestUtils(editingHost);
+
+function addPromiseTest(aTest) {
+ promise_test(async () => {
+ editingHost.focus();
+ utils.setupEditingHost(aTest.innerHTML);
+ await (backspace ? utils.sendBackspaceKey() : utils.sendDeleteKey());
+ await utils.sendKey("X", utils.kShiftKey);
+ await utils.sendKey("Y", utils.kShiftKey);
+ utils.normalizeStyleAttributeValues();
+ if (Array.isArray(aTest.expectedResult)) {
+ assert_in_array(editingHost.innerHTML, aTest.expectedResult);
+ } else {
+ assert_equals(editingHost.innerHTML, aTest.expectedResult);
+ }
+ }, `${backspace ? "Backspace" : "Delete"} in "${aTest.innerHTML}"`);
+}
+
+addPromiseTest({
+ innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo${
+ bracketsForDelete
+ }</a></p><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`,
+ expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY<span style="color:rgb(255, 0, 0)">bar</span></p>`
+});
+addPromiseTest({
+ innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo${
+ bracketsForDelete
+ }</a><br></p><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`,
+ expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY<span style="color:rgb(255, 0, 0)">bar</span></p>`
+});
+addPromiseTest({
+ innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo${
+ bracketsForDelete
+ }<br></a></p><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`,
+ expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY<span style="color:rgb(255, 0, 0)">bar</span></p>`
+});
+addPromiseTest({
+ innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo${
+ bracketsForDelete
+ }</a></p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span>`,
+ expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY<span style="color:rgb(255, 0, 0)">bar</span></p>`
+});
+addPromiseTest({
+ innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo${
+ bracketsForDelete
+ }</a><br></p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span>`,
+ expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY<span style="color:rgb(255, 0, 0)">bar</span></p>`
+});
+addPromiseTest({
+ innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo${
+ bracketsForDelete
+ }<br></a></p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span>`,
+ expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY<span style="color:rgb(255, 0, 0)">bar</span></p>`
+});
+addPromiseTest({
+ innerHTML: `<a href="about:blank" style="color:rgb(0, 0, 255)">foo${
+ bracketsForDelete
+ }</a><br><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`,
+ expectedResult: `<a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY<span style="color:rgb(255, 0, 0)">bar</span>`,
+});
+addPromiseTest({
+ innerHTML: `<a href="about:blank" style="color:rgb(0, 0, 255)">foo${
+ bracketsForDelete
+ }<br></a><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`,
+ expectedResult: `<a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY<span style="color:rgb(255, 0, 0)">bar</span>`,
+});
+
+// Should clear only the link style.
+addPromiseTest({
+ innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo${
+ bracketsForDelete
+ }</b></a></p><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`,
+ expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo</b></a><b>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`,
+});
+addPromiseTest({
+ innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo${
+ bracketsForDelete
+ }</b></a><br></p><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`,
+ expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo</b></a><b>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`,
+});
+addPromiseTest({
+ innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo${
+ bracketsForDelete
+ }</b><br></a></p><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`,
+ expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo</b></a><b>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`,
+});
+addPromiseTest({
+ innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo${
+ bracketsForDelete
+ }</b></a></p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span>`,
+ expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo</b></a><b>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`,
+});
+addPromiseTest({
+ innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo${
+ bracketsForDelete
+ }</b></a><br></p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span>`,
+ expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo</b></a><b>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`,
+});
+addPromiseTest({
+ innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo${
+ bracketsForDelete
+ }</b><br></a></p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span>`,
+ expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo</b></a><b>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`,
+});
+addPromiseTest({
+ innerHTML: `<a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo${
+ bracketsForDelete
+ }</b></a><br><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`,
+ expectedResult: `<a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo</b></a><b>XY</b><span style="color:rgb(255, 0, 0)">bar</span>`,
+});
+addPromiseTest({
+ innerHTML: `<a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo${
+ bracketsForDelete
+ }</b><br></a><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`,
+ expectedResult: `<a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo</b></a><b>XY</b><span style="color:rgb(255, 0, 0)">bar</span>`,
+});
+
+addPromiseTest({
+ innerHTML: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo${
+ bracketsForDelete
+ }</a></b></p><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`,
+ expectedResult: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`,
+});
+addPromiseTest({
+ innerHTML: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo${
+ bracketsForDelete
+ }</a></b><br></p><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`,
+ expectedResult: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`,
+});
+addPromiseTest({
+ innerHTML: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo${
+ bracketsForDelete
+ }<br></a></b></p><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`,
+ expectedResult: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`,
+});
+addPromiseTest({
+ innerHTML: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo${
+ bracketsForDelete
+ }</a></b></p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span>`,
+ expectedResult: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`,
+});
+addPromiseTest({
+ innerHTML: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo${
+ bracketsForDelete
+ }</a></b><br></p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span>`,
+ expectedResult: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`,
+});
+addPromiseTest({
+ innerHTML: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo${
+ bracketsForDelete
+ }<br></a></b></p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span>`,
+ expectedResult: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`,
+});
+addPromiseTest({
+ innerHTML: `<b><a href="about:blank" style="color:rgb(0, 0, 255)">foo${
+ bracketsForDelete
+ }</a></b><br><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`,
+ expectedResult: `<b><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY</b><span style="color:rgb(255, 0, 0)">bar</span>`,
+});
+addPromiseTest({
+ innerHTML: `<b><a href="about:blank" style="color:rgb(0, 0, 255)">foo${
+ bracketsForDelete
+ }<br></a></b><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`,
+ expectedResult: `<b><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY</b><span style="color:rgb(255, 0, 0)">bar</span>`,
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py
index 2517568a5a8..59fa9e73e51 100644
--- a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py
+++ b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py
@@ -31,9 +31,9 @@
from typing import List, Mapping
import re
-import codecs
import importlib
import os
+import pathlib
import sys
try:
@@ -287,16 +287,16 @@ def _generate_test(test: Mapping[str, str], templates: Mapping[str, str],
test_path += '-manual'
if is_offscreen_canvas:
- f = codecs.open(f'{test_path}.html', 'w', 'utf-8')
- f.write(templates['w3coffscreencanvas'] % template_params)
+ pathlib.Path(f'{test_path}.html').write_text(
+ templates['w3coffscreencanvas'] % template_params, 'utf-8')
timeout = ('// META: timeout=%s\n' %
test['timeout'] if 'timeout' in test else '')
template_params['timeout'] = timeout
- f = codecs.open(f'{test_path}.worker.js', 'w', 'utf-8')
- f.write(templates['w3cworker'] % template_params)
+ pathlib.Path(f'{test_path}.worker.js').write_text(
+ templates['w3cworker'] % template_params, 'utf-8')
else:
- f = codecs.open(f'{test_path}.html', 'w', 'utf-8')
- f.write(templates['w3ccanvas'] % template_params)
+ pathlib.Path(f'{test_path}.html').write_text(
+ templates['w3ccanvas'] % template_params, 'utf-8')
def genTestUtils(TESTOUTPUTDIR: str, IMAGEOUTPUTDIR: str, TEMPLATEFILE: str,
@@ -307,8 +307,8 @@ def genTestUtils(TESTOUTPUTDIR: str, IMAGEOUTPUTDIR: str, TEMPLATEFILE: str,
doctest.testmod()
sys.exit()
- templates = yaml.safe_load(open(TEMPLATEFILE, 'r').read())
- name_to_sub_dir = yaml.safe_load(open(NAME2DIRFILE, 'r').read())
+ templates = yaml.safe_load(pathlib.Path(TEMPLATEFILE).read_text())
+ name_to_sub_dir = yaml.safe_load(pathlib.Path(NAME2DIRFILE).read_text())
tests = []
test_yaml_directory = 'yaml/element'
@@ -318,8 +318,8 @@ def genTestUtils(TESTOUTPUTDIR: str, IMAGEOUTPUTDIR: str, TEMPLATEFILE: str,
os.path.join(test_yaml_directory, f)
for f in os.listdir(test_yaml_directory) if f.endswith('.yaml')
]
- for t in sum([yaml.safe_load(open(f, 'r').read()) for f in TESTSFILES],
- []):
+ for t in sum(
+ [yaml.safe_load(pathlib.Path(f).read_text()) for f in TESTSFILES], []):
if 'DISABLED' in t:
continue
if 'meta' in t:
diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py
index 4c65d688c25..3afb54de477 100644
--- a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py
+++ b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py
@@ -31,12 +31,12 @@
from typing import List, Mapping
import re
-import codecs
import collections
import dataclasses
import enum
import importlib
import os
+import pathlib
import sys
try:
@@ -317,26 +317,28 @@ def _generate_test(test: Mapping[str, str], templates: Mapping[str, str],
# Create test cases for canvas and offscreencanvas.
if html_canvas_cfg.enabled:
- f = codecs.open(f'{canvas_path}.html', 'w', 'utf-8')
- f.write(templates['w3ccanvas'] % template_params)
+ pathlib.Path(f'{canvas_path}.html').write_text(
+ templates['w3ccanvas'] % template_params, 'utf-8')
if offscreen_canvas_cfg.enabled:
- f_html = codecs.open(f'{offscreen_path}.html', 'w', 'utf-8')
- f_worker = codecs.open(f'{offscreen_path}.worker.js', 'w', 'utf-8')
if ('then(t_pass, t_fail);' in code_canvas):
temp_offscreen = templates['w3coffscreencanvas'].replace(
't.done();\n', '')
temp_worker = templates['w3cworker'].replace('t.done();\n', '')
- f_html.write(temp_offscreen % template_params)
+ pathlib.Path(f'{offscreen_path}.html').write_text(
+ temp_offscreen % template_params, 'utf-8')
timeout = ('// META: timeout=%s\n' %
test['timeout'] if 'timeout' in test else '')
template_params['timeout'] = timeout
- f_worker.write(temp_worker % template_params)
+ pathlib.Path(f'{offscreen_path}.worker.js').write_text(
+ temp_worker % template_params, 'utf-8')
else:
- f_html.write(templates['w3coffscreencanvas'] % template_params)
+ pathlib.Path(f'{offscreen_path}.html').write_text(
+ templates['w3coffscreencanvas'] % template_params, 'utf-8')
timeout = ('// META: timeout=%s\n' %
test['timeout'] if 'timeout' in test else '')
template_params['timeout'] = timeout
- f_worker.write(templates['w3cworker'] % template_params)
+ pathlib.Path(f'{offscreen_path}.worker.js').write_text(
+ templates['w3cworker'] % template_params, 'utf-8')
def genTestUtils_union(TEMPLATEFILE: str, NAME2DIRFILE: str) -> None:
@@ -351,8 +353,8 @@ def genTestUtils_union(TEMPLATEFILE: str, NAME2DIRFILE: str) -> None:
doctest.testmod()
sys.exit()
- templates = yaml.safe_load(open(TEMPLATEFILE, 'r').read())
- name_to_sub_dir = yaml.safe_load(open(NAME2DIRFILE, 'r').read())
+ templates = yaml.safe_load(pathlib.Path(TEMPLATEFILE).read_text())
+ name_to_sub_dir = yaml.safe_load(pathlib.Path(NAME2DIRFILE).read_text())
tests = []
test_yaml_directory = 'yaml-new'
@@ -360,8 +362,8 @@ def genTestUtils_union(TEMPLATEFILE: str, NAME2DIRFILE: str) -> None:
os.path.join(test_yaml_directory, f)
for f in os.listdir(test_yaml_directory) if f.endswith('.yaml')
]
- for t in sum([yaml.safe_load(open(f, 'r').read()) for f in TESTSFILES],
- []):
+ for t in sum(
+ [yaml.safe_load(pathlib.Path(f).read_text()) for f in TESTSFILES], []):
if 'DISABLED' in t:
continue
if 'meta' in t:
diff --git a/tests/wpt/web-platform-tests/loading/early-hints/preload-fetch.h2.window.js b/tests/wpt/web-platform-tests/loading/early-hints/preload-fetch.h2.window.js
new file mode 100644
index 00000000000..121913ed317
--- /dev/null
+++ b/tests/wpt/web-platform-tests/loading/early-hints/preload-fetch.h2.window.js
@@ -0,0 +1,10 @@
+// META: script=resources/early-hints-helpers.sub.js
+
+test(() => {
+ const preloads = [{
+ "url": "empty.json?" + Date.now(),
+ "as_attr": "fetch",
+ "crossorigin_attr": "",
+ }];
+ navigateToTestWithEarlyHints("resources/preload-fetch.html", preloads);
+});
diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/early-hints-helpers.sub.js b/tests/wpt/web-platform-tests/loading/early-hints/resources/early-hints-helpers.sub.js
index 3991e8fe9da..faf6119cf1e 100644
--- a/tests/wpt/web-platform-tests/loading/early-hints/resources/early-hints-helpers.sub.js
+++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/early-hints-helpers.sub.js
@@ -14,6 +14,8 @@ const CROSS_ORIGIN_RESOURCES_URL = CROSS_ORIGIN + RESOURCES_PATH;
* @property {string} url - A URL to preload. Note: This is relative to the
* `test_url` parameter of `navigateToTestWithEarlyHints()`.
* @property {string} as_attr - `as` attribute of this preload.
+ * @property {string} [crossorigin_attr] - `crossorigin` attribute of this
+ * preload.
*
* @param {string} test_url - URL of a test after the Early Hints response.
* @param {Array<Preload>} preloads - Preloads included in the Early Hints response.
diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/early-hints-test-loader.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/early-hints-test-loader.h2.py
index aa9188c6dbc..bb987209c50 100644
--- a/tests/wpt/web-platform-tests/loading/early-hints/resources/early-hints-test-loader.h2.py
+++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/early-hints-test-loader.h2.py
@@ -18,6 +18,12 @@ def handle_headers(frame, request, response):
for encoded_preload in request.GET.get_list(b"preloads"):
preload = json.loads(encoded_preload.decode("utf-8"))
header = "<{}>; rel=preload; as={}".format(preload["url"], preload["as_attr"])
+ if "crossorigin_attr" in preload:
+ crossorigin = preload["crossorigin_attr"]
+ if crossorigin:
+ header += "; crossorigin={}".format(crossorigin)
+ else:
+ header += "; crossorigin"
preload_headers.append(header.encode())
# Send a 103 response.
diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/empty.json b/tests/wpt/web-platform-tests/loading/early-hints/resources/empty.json
new file mode 100644
index 00000000000..0967ef424bc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/empty.json
@@ -0,0 +1 @@
+{}
diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/empty.json.headers b/tests/wpt/web-platform-tests/loading/early-hints/resources/empty.json.headers
new file mode 100644
index 00000000000..1738466bcb3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/empty.json.headers
@@ -0,0 +1,4 @@
+cache-control: max-age=600
+access-control-allow-origin: *
+timing-allow-origin: *
+cross-origin-resource-policy: cross-origin
diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-fetch.html b/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-fetch.html
new file mode 100644
index 00000000000..2e90f76af14
--- /dev/null
+++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/preload-fetch.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="early-hints-helpers.sub.js"></script>
+<body>
+<script>
+promise_test(async (t) => {
+ const preloads = getPreloadsFromSearchParams();
+ assert_equals(preloads.length, 1);
+ const preload = preloads[0];
+
+ await fetch(preload.url).then((response) => response.json());
+ const name = new URL(preload.url, window.location);
+ assert_true(isPreloadedByEarlyHints(name));
+}, "Ensure early hints preload works for fetch()");
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/same-url-replace-cross-document.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/same-url-replace-cross-document.html
new file mode 100644
index 00000000000..0a976cd51fd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/same-url-replace-cross-document.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/helpers.js"></script>
+
+<script>
+promise_test(async t => {
+ // Wait for after the load event so that we are definitely testing the
+ // same URL as the cause of the rejections.
+ await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0));
+ assert_equals(navigation.entries().length, 1);
+
+ navigation.onnavigate = t.step_func(e => {
+ e.intercept();
+ assert_equals(e.navigationType, "replace");
+ });
+ navigation.onnavigateerror = t.unreached_func("onnavigateerror should not be called");
+
+ await navigation.navigate(location.href).finished;
+ assert_equals(navigation.entries().length, 1);
+ assert_equals(navigation.currentEntry.index, 0);
+}, "navigate() to the current URL cross document should replace");
+</script>
diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/same-url-replace-same-document.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/same-url-replace-same-document.html
new file mode 100644
index 00000000000..839c6879342
--- /dev/null
+++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/same-url-replace-same-document.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/helpers.js"></script>
+
+<script>
+promise_test(async t => {
+ // Wait for after the load event so that we are definitely testing the
+ // same URL as the cause of the rejections.
+ await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0));
+ assert_equals(navigation.entries().length, 1);
+ await navigation.navigate("#").finished;
+ assert_equals(navigation.entries().length, 2);
+ assert_equals(navigation.currentEntry.index, 1);
+
+ navigation.onnavigate = t.step_func(e => {
+ assert_equals(e.navigationType, "replace");
+ });
+ await navigation.navigate(location.href).finished;
+ assert_equals(navigation.entries().length, 2);
+ assert_equals(navigation.currentEntry.index, 1);
+}, "navigate() to the current URL same document should replace");
+</script>
diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-with-percent-delay.tentative.html b/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-with-percent-delay.tentative.html
new file mode 100644
index 00000000000..4f2e1761de2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-with-percent-delay.tentative.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<link rel="help" src="https://drafts.csswg.org/scroll-animations-1/#named-timeline-range">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/web-animations/testcommon.js"></script>
+<script src="support/testcommon.js"></script>
+<title>Animation range and delay</title>
+</head>
+<style type="text/css">
+ @keyframes anim {
+ from { opacity: 0 }
+ to { opacity: 1 }
+ }
+ #scroller {
+ border: 10px solid lightgray;
+ overflow-y: scroll;
+ width: 300px;
+ height: 200px;
+ }
+ #target {
+ margin: 800px 0px;
+ width: 100px;
+ height: 100px;
+ z-index: -1;
+ background-color: green;
+ animation: anim auto linear;
+ animation-timeline: scroll();
+ /* Sentinel value when in before or after phase of the animation. */
+ opacity: 0.96875;
+ }
+</style>
+<body>
+ <div id=scroller>
+ <div id=target></div>
+ </div>
+</body>
+<script type="text/javascript">
+ async function runTest() {
+
+ function assert_opacity_equals(expected, errorMessage) {
+ assert_approx_equals(
+ parseFloat(getComputedStyle(target).opacity), expected, 1e-6,
+ errorMessage);
+ }
+
+ promise_test(async t => {
+ await waitForNextFrame();
+ const anim = document.getAnimations()[0];
+ await anim.ready;
+
+ await waitForNextFrame();
+ scroller.scrollTop =
+ (scroller.scrollHeight - scroller.clientHeight) / 2;
+ await waitForNextFrame();
+
+ const baseOpacity = 0.96875;
+ // Delays are percentages.
+ const testData = [
+ { delay: 0, endDelay: 0, opacity: 0.5 },
+ { delay: 20, endDelay: 0, opacity: 0.375 },
+ { delay: 0, endDelay: 20, opacity: 0.625 },
+ { delay: 20, endDelay: 20, opacity: 0.5 },
+ // // Negative delays.
+ { delay: -25, endDelay: 0, opacity: 0.6 },
+ { delay: 0, endDelay: -25, opacity: 0.4 },
+ { delay: -25, endDelay: -25, opacity: 0.5 },
+ // Stress tests with >= 100% total delay. Verify effect is inactive.
+ { delay: 100, endDelay: 0, opacity: baseOpacity },
+ { delay: 0, endDelay: 100, opacity: baseOpacity },
+ { delay: 100, endDelay: 100, opacity: baseOpacity }
+ ];
+
+ testData.forEach(test => {
+ anim.effect.updateTiming({
+ delay: CSS.percent(test.delay),
+ endDelay: CSS.percent(test.endDelay)
+ });
+ assert_opacity_equals(
+ test.opacity,
+ `Opacity when delay=${test.delay} and endDelay=${test.endDelay}`);
+ });
+ }, 'ScrollTimeline with animation delays as percentages');
+ }
+
+ window.onload = runTest;
+
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/view-timeline-with-delay-and-range.tentative.html b/tests/wpt/web-platform-tests/scroll-animations/css/view-timeline-with-delay-and-range.tentative.html
new file mode 100644
index 00000000000..40548bf5cd4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/scroll-animations/css/view-timeline-with-delay-and-range.tentative.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<link rel="help" src="https://drafts.csswg.org/scroll-animations-1/#named-timeline-range">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/web-animations/testcommon.js"></script>
+<script src="support/testcommon.js"></script>
+<title>Animation range and delay</title>
+</head>
+<style type="text/css">
+ @keyframes anim {
+ from { opacity: 0 }
+ to { opacity: 1 }
+ }
+ #scroller {
+ border: 10px solid lightgray;
+ overflow-y: scroll;
+ width: 300px;
+ height: 200px;
+ }
+ #target {
+ margin: 800px 0px;
+ width: 100px;
+ height: 100px;
+ z-index: -1;
+ background-color: green;
+ animation: anim auto linear;
+ animation-timeline: t1;
+ view-timeline: t1 block;
+ animation-range-start: enter 0%;
+ animation-range-end: enter 100%;
+ /* Sentinel value when in before or after phase of the animation. */
+ opacity: 0.96875;
+ }
+</style>
+<body>
+ <div id=scroller>
+ <div id=target></div>
+ </div>
+</body>
+<script type="text/javascript">
+ async function runTest() {
+
+ function assert_opacity_equals(expected, errorMessage) {
+ assert_approx_equals(
+ parseFloat(getComputedStyle(target).opacity), expected, 1e-6,
+ errorMessage);
+ }
+
+ promise_test(async t => {
+ await waitForNextFrame();
+ const anim = document.getAnimations()[0];
+ await anim.ready;
+
+ await waitForNextFrame();
+ scroller.scrollTop = 650;
+ await waitForNextFrame();
+
+ const baseOpacity = 0.96875;
+ // Delays are percentages.
+ const testData = [
+ { delay: 0, endDelay: 0, opacity: 0.5 },
+ { delay: 20, endDelay: 0, opacity: 0.375 },
+ { delay: 0, endDelay: 20, opacity: 0.625 },
+ { delay: 20, endDelay: 20, opacity: 0.5 },
+ // Negative delays.
+ { delay: -25, endDelay: 0, opacity: 0.6 },
+ { delay: 0, endDelay: -25, opacity: 0.4 },
+ { delay: -25, endDelay: -25, opacity: 0.5 },
+ // Stress tests with >= 100% total delay. Verify effect is inactive.
+ { delay: 100, endDelay: 0, opacity: baseOpacity },
+ { delay: 0, endDelay: 100, opacity: baseOpacity },
+ { delay: 100, endDelay: 100, opacity: baseOpacity }
+ ];
+
+ testData.forEach(test => {
+ anim.effect.updateTiming({
+ delay: CSS.percent(test.delay),
+ endDelay: CSS.percent(test.endDelay)
+ });
+ assert_opacity_equals(
+ test.opacity,
+ `Opacity when delay=${test.delay} and endDelay=${test.endDelay}`);
+ });
+ }, 'ViewTimeline with animation delays and range');
+ }
+
+ window.onload = runTest;
+
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/tools/webtransport/h3/webtransport_h3_server.py b/tests/wpt/web-platform-tests/tools/webtransport/h3/webtransport_h3_server.py
index d3031b4c0c2..4b49c90d816 100644
--- a/tests/wpt/web-platform-tests/tools/webtransport/h3/webtransport_h3_server.py
+++ b/tests/wpt/web-platform-tests/tools/webtransport/h3/webtransport_h3_server.py
@@ -186,8 +186,8 @@ class WebTransportH3Protocol(QuicConnectionProtocol):
def _send_error_response(self, stream_id: int, status_code: int) -> None:
assert self._http is not None
- headers = [(b"server", SERVER_NAME.encode()),
- (b":status", str(status_code).encode())]
+ headers = [(b":status", str(status_code).encode()),
+ (b"server", SERVER_NAME.encode())]
self._http.send_headers(stream_id=stream_id,
headers=headers,
end_stream=True)
@@ -221,9 +221,11 @@ class WebTransportH3Protocol(QuicConnectionProtocol):
for name, value in response_headers:
if name == b":status":
status_code = value
+ response_headers.remove((b":status", status_code))
+ response_headers.insert(0, (b":status", status_code))
break
if not status_code:
- response_headers.append((b":status", b"200"))
+ response_headers.insert(0, (b":status", b"200"))
self._http.send_headers(stream_id=event.stream_id,
headers=response_headers)
diff --git a/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin-insecure.sub.window.js b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin-insecure.sub.window.js
new file mode 100644
index 00000000000..b4bcb2cd340
--- /dev/null
+++ b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin-insecure.sub.window.js
@@ -0,0 +1,109 @@
+// META: script=/storage-access-api/helpers.js
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+'use strict';
+
+// Note that this file follows the pattern in:
+// storage-access-api/requestStorageAccess.sub.window.js
+//
+// Some tests are run at the top-level, and an iframe is added to validate API
+// behavior in that context.
+
+// Prefix each test case with an indicator so we know what context they are run
+// in if they are used in multiple iframes.
+let testPrefix = 'insecure-context';
+
+// Keep track of if we run these tests in a nested context, we don't want to
+// recurse forever.
+let topLevelDocument = true;
+
+// The query string allows derivation of test conditions, like whether the tests
+// are running in a top-level context.
+const queryParams = window.location.search.substring(1).split('&');
+queryParams.forEach((param) => {
+ if (param.toLowerCase() == 'rootdocument=false') {
+ topLevelDocument = false;
+ } else if (param.split('=')[0].toLowerCase() == 'testcase') {
+ testPrefix = param.split('=')[1];
+ }
+});
+
+// TODO(crbug.com/1410556): when/if requestStorageAccessForOrigin is standardized,
+// we should consider upstreaming these helpers.
+function RunRequestStorageAccessForOriginInDetachedFrame(site) {
+ const nestedFrame = document.createElement('iframe');
+ document.body.append(nestedFrame);
+ const inner_doc = nestedFrame.contentDocument;
+ nestedFrame.remove();
+ return inner_doc.requestStorageAccessForOrigin(site);
+}
+
+function RunRequestStorageAccessForOriginViaDomParser(site) {
+ const parser = new DOMParser();
+ const doc = parser.parseFromString('<html></html>', 'text/html');
+ return doc.requestStorageAccessForOrigin(site);
+}
+
+// Common tests to run in all frames.
+test(
+ () => {
+ assert_not_equals(document.requestStorageAccessForOrigin, undefined);
+ },
+ '[' + testPrefix +
+ '] document.requestStorageAccessForOrigin() should be supported on the document interface');
+
+if (topLevelDocument) {
+ promise_test(
+ t => {
+ return promise_rejects_dom(t, 'NotAllowedError',
+ document.requestStorageAccessForOrigin('https://test.com'),
+ 'document.requestStorageAccessForOrigin() call without user gesture');
+ },
+ '[' + testPrefix +
+ '] document.requestStorageAccessForOrigin() should be rejected by default with no user gesture');
+
+ promise_test(async t => {
+ const description =
+ 'document.requestStorageAccessForOrigin() call in a detached frame';
+ // Can't use promise_rejects_dom here because the exception is from the wrong global.
+ return RunRequestStorageAccessForOriginInDetachedFrame('https://foo.com')
+ .then(t.unreached_func('Should have rejected: ' + description))
+ .catch((e) => {
+ assert_equals(e.name, 'InvalidStateError', description);
+ });
+ }, '[non-fully-active] document.requestStorageAccessForOrigin() should not resolve when run in a detached frame');
+
+ promise_test(async t => {
+ const description =
+ 'document.requestStorageAccessForOrigin() in a detached DOMParser result';
+ return RunRequestStorageAccessForOriginViaDomParser('https://foo.com')
+ .then(t.unreached_func('Should have rejected: ' + description))
+ .catch((e) => {
+ assert_equals(e.name, 'InvalidStateError', description);
+ });
+ }, '[non-fully-active] document.requestStorageAccessForOrigin() should not resolve when run in a detached DOMParser document');
+
+ // Create a test with a single-child same-origin iframe.
+ // This will validate that calls to requestStorageAccessForOrigin are rejected
+ // in non-top-level contexts.
+ RunTestsInIFrame(
+ './resources/requestStorageAccessForOrigin-iframe.https.html?testCase=secure-frame-on-insecure-page&rootdocument=false');
+
+ promise_test(
+ async t => {
+ await RunCallbackWithGesture(
+ () => promise_rejects_dom(t, 'NotAllowedError', document.requestStorageAccessForOrigin(document.location.origin), 'document.requestStorageAccessForOrigin() call in insecure context'));
+ },
+ '[' + testPrefix +
+ '] document.requestStorageAccessForOrigin() should be rejected when called in an insecure context');
+
+} else {
+ promise_test(
+ async t => {
+ await RunCallbackWithGesture(
+ () => promise_rejects_dom(t, 'NotAllowedError', document.requestStorageAccessForOrigin(document.location.origin),
+ 'document.requestStorageAccessForOrigin() call in a non-top-level context'));
+ },
+ '[' + testPrefix +
+ '] document.requestStorageAccessForOrigin() should be rejected when called in an iframe');
+}
diff --git a/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.window.js b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.js
index f7dd478a707..f7dd478a707 100644
--- a/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.window.js
+++ b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.js
diff --git a/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/resources/requestStorageAccessForOrigin-iframe.html b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/resources/requestStorageAccessForOrigin-iframe.html
index 3e2f6d5b628..43d16705c85 100644
--- a/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/resources/requestStorageAccessForOrigin-iframe.html
+++ b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/resources/requestStorageAccessForOrigin-iframe.html
@@ -6,4 +6,4 @@
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<div id=log></div>
-<script src="../requestStorageAccessForOrigin.sub.window.js"></script>
+<script src="../requestStorageAccessForOrigin-insecure.sub.window.js"></script>
diff --git a/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/resources/requestStorageAccessForOrigin-iframe.https.html b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/resources/requestStorageAccessForOrigin-iframe.https.html
new file mode 100644
index 00000000000..db03b25e14d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/resources/requestStorageAccessForOrigin-iframe.https.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<meta charset=utf-8>
+
+<script src="/storage-access-api/helpers.js"></script>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<div id=log></div>
+<script src="../requestStorageAccessForOrigin.sub.https.window.js"></script>