diff --git a/tests/wpt/metadata/FileAPI/url/url-charset.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-charset.window.js.ini
new file mode 100644
index 00000000000..33fc78f48d9
--- /dev/null
+++ b/tests/wpt/metadata/FileAPI/url/url-charset.window.js.ini
@@ -0,0 +1,7 @@
+[url-charset.window.html]
+ expected: TIMEOUT
+ [Blob charset should override any auto-detected charset.]
+ expected: TIMEOUT
+
+ [Blob charset should override .]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
index 282ab0b2525..cdeaf7f7080 100644
--- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
@@ -7,7 +7,7 @@
expected: FAIL
[Opening a blob URL in a new window immediately before revoking it works.]
- expected: FAIL
+ expected: TIMEOUT
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index fd1cc1cbfbf..f20ff3f8d43 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -4366,6 +4366,13 @@
{}
]
],
+ "inserthtml-to-replace-root-list-element-in-designMode.html": [
+ "c751a5bebcdf420c0eee239e490a7c6a1875e978",
+ [
+ null,
+ {}
+ ]
+ ],
"insertlinebreak-around-comment-node.html": [
"dc2d5e2bd4b43b382034e78dfea317d69fbf5738",
[
@@ -127675,7 +127682,7 @@
]
],
"animation-opacity-pause-and-set-time.html": [
- "c63c2f3b9fe3fd0b2e4a727398f1843febf339eb",
+ "cbf63ea2178638e6f476307954ba0337d35cd570",
[
null,
[
@@ -127684,7 +127691,23 @@
"=="
]
],
- {}
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 1
+ ],
+ [
+ 0,
+ 2500
+ ]
+ ]
+ ]
+ ]
+ }
]
],
"animation-pseudo-dynamic-001.html": [
@@ -275884,7 +275907,7 @@
},
"css-view-transitions": {
"3d-transform-incoming.html": [
- "01debbcfcc1f0bdeb58cc4c3c7bbcbc1e9f02424",
+ "cdf1b32ab73013e19be759cbf1b233c654d67131",
[
null,
[
@@ -275917,7 +275940,7 @@
]
],
"3d-transform-outgoing.html": [
- "1cf74c8f08af8bafdcaa3f5254a34ee918511b80",
+ "746b93afd40c1c1e33f8ca3b4a8e0fa2970e635c",
[
null,
[
@@ -275950,7 +275973,7 @@
]
],
"break-inside-avoid-child.html": [
- "29afa0424f696fec81b9426432935d16353c2a86",
+ "7791f7ab4f6012daa6612c4b14f4a26415103f98",
[
null,
[
@@ -276334,7 +276357,7 @@
]
],
"fractional-translation-from-position.html": [
- "9cae723e8435c17d4737d8844dd324b89a108439",
+ "a09b08cf00c554955ec4c4e041c169fe1575de43",
[
null,
[
@@ -276347,7 +276370,7 @@
]
],
"fractional-translation-from-transform.html": [
- "2d2e5d98fe5f0d7f38223f109e224ec5473d218c",
+ "7027a9008640945f2781fe7a4d7b236f786053fb",
[
null,
[
@@ -276436,7 +276459,7 @@
]
],
"inline-child-with-filter.html": [
- "fbacc332462f5744b5e2115cc8fbabe44f416967",
+ "8790756eac0cb0f490ec6f6fc66e48ca9f8f24b5",
[
null,
[
@@ -276627,12 +276650,12 @@
]
],
"new-content-captures-spans.html": [
- "5467d411565ef1ae3b26fad40256b1e590cd2348",
+ "843f6752d76740550f8348ed3cd3c9134700aa77",
[
null,
[
[
- "/css/css-view-transitions/new-content-captures-positioned-spans-ref.html",
+ "/css/css-view-transitions/new-content-captures-spans-ref.html",
"=="
]
],
@@ -276738,6 +276761,39 @@
{}
]
],
+ "new-content-is-inline.html": [
+ "c341444f3425de43a7bc47f2a718a36337398141",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/new-content-is-inline-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ [
+ "/css/css-view-transitions/new-content-is-inline.html",
+ "/css/css-view-transitions/new-content-is-inline-ref.html",
+ "=="
+ ],
+ [
+ [
+ 0,
+ 255
+ ],
+ [
+ 0,
+ 1000
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
"new-content-object-fit-fill.html": [
"b891eee16d5e93258f8bf8df0ce80b5bdb9b2d6e",
[
@@ -277193,6 +277249,39 @@
{}
]
],
+ "old-content-is-inline.html": [
+ "9f350237adcb1ea234c98f9374c8e357a14e6e78",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/old-content-is-inline-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ [
+ "/css/css-view-transitions/old-content-is-inline.html",
+ "/css/css-view-transitions/old-content-is-inline-ref.html",
+ "=="
+ ],
+ [
+ [
+ 0,
+ 255
+ ],
+ [
+ 0,
+ 500
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
"old-content-object-fit-fill.html": [
"9ad8b14843fbb059229234fb8970f87e5a83ee48",
[
@@ -277391,7 +277480,7 @@
]
],
"root-scrollbar-with-fixed-background.html": [
- "9a4684c3476ab69f5fcbeae28a8983ecb4fb68f0",
+ "c657fa19fba1923c3fbde4e2aa833b07aec5e455",
[
null,
[
@@ -277456,7 +277545,7 @@
]
],
"rtl-with-scrollbar.html": [
- "d235a3f6990f12db8fcaabc0353b98662c47918f",
+ "de2570605adbc04428b414448e1eeaeb7b55b0fb",
[
null,
[
@@ -277469,7 +277558,7 @@
]
],
"scroller-child-abspos.html": [
- "6c5b16dc01ddb72731da6e1db014aaa00f478dd5",
+ "9b2ac35eef07b33dc1ba75179b18ca9c7fbe0066",
[
null,
[
@@ -277502,7 +277591,7 @@
]
],
"scroller-child.html": [
- "72b405d64c0446a566a852f1874952025b1f054f",
+ "b18187ca6eba039d576b809b9b4723641d4d4f48",
[
null,
[
@@ -277535,7 +277624,7 @@
]
],
"scroller.html": [
- "c86fce2353a448312bc2b75bccff29a52c46b10d",
+ "6e2a6e465073a93f532942032e2d364727c0c4f8",
[
null,
[
@@ -301044,13 +301133,162 @@
]
},
"layers": {
- "2d.layer.alpha.html": [
- "b4a87b42daaf344bb8955e7912dbd3f7adaa84fa",
+ "2d.layer.global-states.alpha.filter.globalcompositeoperation.html": [
+ "54bafb9e65244d633d484d1583008f3c8b29663b",
[
null,
[
[
- "/html/canvas/element/layers/2d.layer.alpha-expected.html",
+ "/html/canvas/element/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.alpha.filter.html": [
+ "bf522c29457fc4a3bf36e7b0ff914a8508479834",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/layers/2d.layer.global-states.alpha.filter-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.alpha.filter.shadow.html": [
+ "cccdf42edce0a420321e3ab31c650dca253396a7",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/layers/2d.layer.global-states.alpha.filter.shadow-expected.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 2
+ ],
+ [
+ 0,
+ 5824
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "2d.layer.global-states.alpha.html": [
+ "10ef0e7b221553d58f28e189d106be8fa17af265",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/layers/2d.layer.global-states.alpha-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.alpha.shadow.html": [
+ "a0f4d79a22380a5b14a257c0080c4173a721a55e",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/layers/2d.layer.global-states.alpha.shadow-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.filter.globalcompositeoperation.html": [
+ "1f23dba96cc378079365b1da8dbc1f84f4fd08f2",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/layers/2d.layer.global-states.filter.globalcompositeoperation-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.filter.html": [
+ "7524ef56bb98e52e0af23b954759a31f3755b78a",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/layers/2d.layer.global-states.filter-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.filter.shadow.html": [
+ "efa5dca2ae03e68b23abe5c3d642da86fa25c0dd",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/layers/2d.layer.global-states.filter.shadow-expected.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 1
+ ],
+ [
+ 0,
+ 49
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "2d.layer.global-states.globalcompositeoperation.html": [
+ "f27336adf4bbee1443e447360958ef35bf600fe9",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/layers/2d.layer.global-states.globalcompositeoperation-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.shadow.html": [
+ "da78b3435c780cb63f0ee06c797cb08692552e60",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/layers/2d.layer.global-states.shadow-expected.html",
"=="
]
],
@@ -301860,90 +302098,6 @@
]
},
"layers": {
- "layers-alpha-filter-globalcompositeoperation.html": [
- "6912d6a18b4475b20ab590841886f5d814ceb05d",
- [
- null,
- [
- [
- "/html/canvas/element/manual/layers/layers-alpha-filter-globalcompositeoperation-expected.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "layers-alpha-filter-shadow.html": [
- "9c4a6fcaa7e7a34132120ca8d3ef4a442a669d44",
- [
- null,
- [
- [
- "/html/canvas/element/manual/layers/layers-alpha-filter-shadow-expected.html",
- "=="
- ]
- ],
- {
- "fuzzy": [
- [
- null,
- [
- [
- 0,
- 2
- ],
- [
- 0,
- 18000
- ]
- ]
- ]
- ]
- }
- ]
- ],
- "layers-alpha-filter.html": [
- "7a895cf34dc00b1d848365649e8d7ed1f64e40c4",
- [
- null,
- [
- [
- "/html/canvas/element/manual/layers/layers-alpha-filter-expected.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "layers-alpha-shadow.html": [
- "e7d791d8fc076528d31e8e1d70477c2acd364b34",
- [
- null,
- [
- [
- "/html/canvas/element/manual/layers/layers-alpha-shadow-expected.html",
- "=="
- ]
- ],
- {
- "fuzzy": [
- [
- null,
- [
- [
- 0,
- 2
- ],
- [
- 0,
- 18000
- ]
- ]
- ]
- ]
- }
- ]
- ],
"layers-endlayer-noop.html": [
"aae72cfeaefc80f24c2894a98f233d47f2aad8bd",
[
@@ -301957,58 +302111,6 @@
{}
]
],
- "layers-filter-globalcompositeoperation.html": [
- "03d04d09ae5cb816ab310940d5c8746a7682a1dc",
- [
- null,
- [
- [
- "/html/canvas/element/manual/layers/layers-filter-globalcompositeoperation-expected.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "layers-filter-shadow.html": [
- "31ce671629027fd8bbd00bf8350eb556e86544ca",
- [
- null,
- [
- [
- "/html/canvas/element/manual/layers/layers-filter-shadow-expected.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "layers-filter.html": [
- "c4d63cda2ff9481a6a39cc7b4ada910aa4303a49",
- [
- null,
- [
- [
- "/html/canvas/element/manual/layers/layers-filter-expected.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "layers-globalcompositeoperation.html": [
- "6d4fde3ed5367ff7137f6b77b8066ce2953d6d94",
- [
- null,
- [
- [
- "/html/canvas/element/manual/layers/layers-globalcompositeoperation-expected.html",
- "=="
- ]
- ],
- {}
- ]
- ],
"layers-loneendlayer.html": [
"f0584d385cc69c3eeb97f6df43f45a721961bfb7",
[
@@ -302108,19 +302210,6 @@
]
}
]
- ],
- "layers-shadow.html": [
- "59768746e49e25240e3f4083a196db04f60edebc",
- [
- null,
- [
- [
- "/html/canvas/element/manual/layers/layers-shadow-expected.html",
- "=="
- ]
- ],
- {}
- ]
]
},
"line-styles": {
@@ -302306,26 +302395,324 @@
},
"offscreen": {
"layers": {
- "2d.layer.alpha.html": [
- "90506bfb622df8b321ae03118538eb7fd0af8ec2",
+ "2d.layer.global-states.alpha.filter.globalcompositeoperation.html": [
+ "88d339fb1b112763151ad8573f6edc082d2be611",
[
null,
[
[
- "/html/canvas/offscreen/layers/2d.layer.alpha-expected.html",
+ "/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation-expected.html",
"=="
]
],
{}
]
],
- "2d.layer.alpha.w.html": [
- "bc9344217b108069ff34dd6e28b0efc7bc947865",
+ "2d.layer.global-states.alpha.filter.globalcompositeoperation.w.html": [
+ "a95085ca8946cf8afb172dbc32218a458bf6e31f",
[
null,
[
[
- "/html/canvas/offscreen/layers/2d.layer.alpha-expected.html",
+ "/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.alpha.filter.html": [
+ "e8d3d5691bb4e7c04e2af9f34bcdd7447dc4bd77",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.alpha.filter.shadow.html": [
+ "3e5e5bd9ba13aaa3bcf448704e1a0981999aab3b",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.shadow-expected.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 2
+ ],
+ [
+ 0,
+ 5824
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "2d.layer.global-states.alpha.filter.shadow.w.html": [
+ "9fac030db321a05bf6908eb29a916fca63773df1",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.shadow-expected.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 2
+ ],
+ [
+ 0,
+ 5824
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "2d.layer.global-states.alpha.filter.w.html": [
+ "177bae4e32d12b1ce0609c3c698c3beefa76a964",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.alpha.html": [
+ "7064f47b20ab5287c2740bc97a93c5365f9b1ad9",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/layers/2d.layer.global-states.alpha-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.alpha.shadow.html": [
+ "afbbac881e72dcb1780db420421e671478735a0f",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.alpha.shadow.w.html": [
+ "9e0e70993409dd2e0aebb706805ac2c35cad4860",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.alpha.w.html": [
+ "59d528b2099a48f5fe16a526a8f9bd28d3e1a50a",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/layers/2d.layer.global-states.alpha-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.filter.globalcompositeoperation.html": [
+ "b3ce2285dc922db002df6b50f55af48178efe509",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/layers/2d.layer.global-states.filter.globalcompositeoperation-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.filter.globalcompositeoperation.w.html": [
+ "6d21ffb8157d775871685066fc07fcea09660947",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/layers/2d.layer.global-states.filter.globalcompositeoperation-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.filter.html": [
+ "a36a34d78e044eeea4760d419cf0a64c6c627fb4",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/layers/2d.layer.global-states.filter-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.filter.shadow.html": [
+ "16439c60c68cf5d9dc6f36c5bfee89ae6a2fdb81",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow-expected.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 1
+ ],
+ [
+ 0,
+ 49
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "2d.layer.global-states.filter.shadow.w.html": [
+ "7abddb27c517f1b44aad901d1caa22b92e9c46ef",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow-expected.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 1
+ ],
+ [
+ 0,
+ 49
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "2d.layer.global-states.filter.w.html": [
+ "08e6c253562855709488d49737d47c9b82dafb1d",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/layers/2d.layer.global-states.filter-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.globalcompositeoperation.html": [
+ "1be83170f116998212e66da401e1be9097336728",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/layers/2d.layer.global-states.globalcompositeoperation-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.globalcompositeoperation.w.html": [
+ "7757aa5d8a95afff121c70055a54f3cd34683f6c",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/layers/2d.layer.global-states.globalcompositeoperation-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.shadow.html": [
+ "87b8224f856acedb3d30342bba45a40adb646841",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/layers/2d.layer.global-states.shadow-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.layer.global-states.shadow.w.html": [
+ "b8d598887290da085ea03646b21d19e0ca317a71",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/layers/2d.layer.global-states.shadow-expected.html",
"=="
]
],
@@ -320666,7 +321053,7 @@
[]
],
"successes.js": [
- "4a047aa0609d7a6ac6e778f267dfef18d7a0d80a",
+ "e1c1665b511030533d1a01e92a741c11045d670a",
[]
]
},
@@ -320722,7 +321109,7 @@
},
"util": {
"helpers.js": [
- "ee9d09d1251237dfd1bf8a3d4ade55d8b683bee5",
+ "ce240a1549cb21d7259438abdef6c758b7e792c9",
[]
],
"worker-report-crypto-subtle-presence.js": [
@@ -385489,7 +385876,7 @@
],
"resources": {
"utils.js": [
- "dbbda1d585caa1aaca994956330fb18ceb269690",
+ "f659e123feb9d84a478ccbdf34a80e8c516c27fd",
[]
]
},
@@ -396707,6 +397094,10 @@
"c85028d3bd9f42c43d46a77c7c937b8cafde11b6",
[]
],
+ "new-content-is-inline-ref.html": [
+ "d2ba93e0948584ee4fecafa775fab0772b0bafaa",
+ []
+ ],
"new-content-object-view-box-clip-path-ref.html": [
"28e22b8ca2568a969545848281e18a0b4e8a6a99",
[]
@@ -396779,6 +397170,10 @@
"b4b17ee780f0484e75d5eb51ce04fcd432a6cdb5",
[]
],
+ "old-content-is-inline-ref.html": [
+ "5fe7d3fa1d2753853edc49680f5b0da2d127cd0b",
+ []
+ ],
"old-content-object-view-box-clip-path-ref.html": [
"28e22b8ca2568a969545848281e18a0b4e8a6a99",
[]
@@ -396853,7 +397248,7 @@
[]
],
"frame-helper.html": [
- "d5bc43e7b820541b9f6e7c8cd5629fe0b08e7592",
+ "3d2e7b52d078d640602a15b97e54dd62981cb83d",
[]
],
"transition-in-empty-iframe-child.html": [
@@ -402298,7 +402693,7 @@
[]
],
"testharness-api.md": [
- "38e6813b1a2d108ebfacce26add318456dd9f57c",
+ "339815c5ffe673542441be66c96803780fbb966a",
[]
],
"testharness-tutorial.md": [
@@ -403210,7 +403605,7 @@
[]
],
"delete.js": [
- "bbd95e56a260ea3d1fff5e5410e79145db765c5b",
+ "7e63c518c793c8aabb11cd7d9e1cbe7ec0dded70",
[]
],
"fontname.js": [
@@ -403230,7 +403625,7 @@
[]
],
"forwarddelete.js": [
- "7c1218276b226d4aeeb038f1a03ae12d74160c78",
+ "661b62adb8d1509c229d8983256aedf80d024845",
[]
],
"hilitecolor.js": [
@@ -403336,7 +403731,7 @@
},
"include": {
"editor-test-utils.js": [
- "8d8e778836a51f1936e2de551df90d804fbcc973",
+ "a4c24c94edb8e7b0660c7dfdac10b77add02a43c",
[]
],
"implementation.js": [
@@ -407885,12 +408280,12 @@
[]
],
"generic-sensor-tests.js": [
- "2f910806dfd498f49c5c75557f67f817396e68e9",
+ "65f58ee7ca2c42b77b196a57276be3c935d598b8",
[]
],
"resources": {
"generic-sensor-helpers.js": [
- "aa101547ff1420f3ec95c96725bb8e5067a7f955",
+ "9a51a591ce116e981310c0f1eb37cfc7eac722fd",
[]
],
"iframe_sensor_handler.html": [
@@ -410639,8 +411034,44 @@
]
},
"layers": {
- "2d.layer.alpha-expected.html": [
- "615aa1cb8bfd7ab03b9fb8930317c5975d76b5fd",
+ "2d.layer.global-states.alpha-expected.html": [
+ "72d97c663f863ca503eeaa42d8d1a78fbd0f32a8",
+ []
+ ],
+ "2d.layer.global-states.alpha.filter-expected.html": [
+ "b4512e2455e2062df69460a2910c30a50f48ec28",
+ []
+ ],
+ "2d.layer.global-states.alpha.filter.globalcompositeoperation-expected.html": [
+ "ab7e6cc6c194a9471dab267b7fb6fde6b731eb39",
+ []
+ ],
+ "2d.layer.global-states.alpha.filter.shadow-expected.html": [
+ "9a49e366a953c1337989a8aa39546aec11df569e",
+ []
+ ],
+ "2d.layer.global-states.alpha.shadow-expected.html": [
+ "9daefc377bde8aa05b21689f89ff249924615dd7",
+ []
+ ],
+ "2d.layer.global-states.filter-expected.html": [
+ "cff8783b3921b7579bb87b038a063fe59be9158c",
+ []
+ ],
+ "2d.layer.global-states.filter.globalcompositeoperation-expected.html": [
+ "12fc31209ac942878df5f9b2d81f8e6a1ecc2e70",
+ []
+ ],
+ "2d.layer.global-states.filter.shadow-expected.html": [
+ "6ec9b02f7cb4e5d7a0a1da41b0a5a45a777db53c",
+ []
+ ],
+ "2d.layer.global-states.globalcompositeoperation-expected.html": [
+ "7e2e021b552e5ab6d6007caa3fbe01f3d5a4bea6",
+ []
+ ],
+ "2d.layer.global-states.shadow-expected.html": [
+ "6787bdd1e50496f3cb05bcbecb2ffb29854e0442",
[]
]
},
@@ -410866,42 +411297,10 @@
]
},
"layers": {
- "layers-alpha-filter-expected.html": [
- "5b54384a79bfaf43470bc5639f42d7b04fb1e82b",
- []
- ],
- "layers-alpha-filter-globalcompositeoperation-expected.html": [
- "8d84dcb73f4f5778a895ae2ab56fb8bcc9a02cd6",
- []
- ],
- "layers-alpha-filter-shadow-expected.html": [
- "89c3f64feae4dde06a8e047ba35d5098c08eff6f",
- []
- ],
- "layers-alpha-shadow-expected.html": [
- "f29fb736e3ab38f6179acb1aed63973e040b9c19",
- []
- ],
"layers-endlayer-noop-expected.html": [
"7f4937ecda40e2aa85864e518caf9bd48d870cb9",
[]
],
- "layers-filter-expected.html": [
- "7fe4d2c03efc5635ab42ca307fd693f24b05a267",
- []
- ],
- "layers-filter-globalcompositeoperation-expected.html": [
- "0676d7e1aac001ba89c5e4fafd7dc1d216f4cf41",
- []
- ],
- "layers-filter-shadow-expected.html": [
- "5d141c3d0856e29d35e2a75efeba830522e3cf91",
- []
- ],
- "layers-globalcompositeoperation-expected.html": [
- "d2d4317f0742eea23ff50abd45d6fa9a98dd26c6",
- []
- ],
"layers-loneendlayer-expected.html": [
"cec5a54512c5782ce1574c6d4d191e483b776e26",
[]
@@ -410917,10 +411316,6 @@
"layers-several-complex-expected.html": [
"eca81cd8d72ce689d2635532b08b31de667aa1c8",
[]
- ],
- "layers-shadow-expected.html": [
- "76960455719cdad63809e3733ef7154e0da64f3f",
- []
]
},
"line-styles": {
@@ -411401,8 +411796,44 @@
[]
],
"layers": {
- "2d.layer.alpha-expected.html": [
- "615aa1cb8bfd7ab03b9fb8930317c5975d76b5fd",
+ "2d.layer.global-states.alpha-expected.html": [
+ "72d97c663f863ca503eeaa42d8d1a78fbd0f32a8",
+ []
+ ],
+ "2d.layer.global-states.alpha.filter-expected.html": [
+ "b4512e2455e2062df69460a2910c30a50f48ec28",
+ []
+ ],
+ "2d.layer.global-states.alpha.filter.globalcompositeoperation-expected.html": [
+ "ab7e6cc6c194a9471dab267b7fb6fde6b731eb39",
+ []
+ ],
+ "2d.layer.global-states.alpha.filter.shadow-expected.html": [
+ "9a49e366a953c1337989a8aa39546aec11df569e",
+ []
+ ],
+ "2d.layer.global-states.alpha.shadow-expected.html": [
+ "9daefc377bde8aa05b21689f89ff249924615dd7",
+ []
+ ],
+ "2d.layer.global-states.filter-expected.html": [
+ "cff8783b3921b7579bb87b038a063fe59be9158c",
+ []
+ ],
+ "2d.layer.global-states.filter.globalcompositeoperation-expected.html": [
+ "12fc31209ac942878df5f9b2d81f8e6a1ecc2e70",
+ []
+ ],
+ "2d.layer.global-states.filter.shadow-expected.html": [
+ "6ec9b02f7cb4e5d7a0a1da41b0a5a45a777db53c",
+ []
+ ],
+ "2d.layer.global-states.globalcompositeoperation-expected.html": [
+ "7e2e021b552e5ab6d6007caa3fbe01f3d5a4bea6",
+ []
+ ],
+ "2d.layer.global-states.shadow-expected.html": [
+ "6787bdd1e50496f3cb05bcbecb2ffb29854e0442",
[]
]
},
@@ -411497,7 +411928,7 @@
[]
],
"gentestutilsunion.py": [
- "097bf12483d1896edc0de0a27563a4b7ba2eae17",
+ "fdb6a390cf4a19fb6acf9fd8de1e81c558150174",
[]
],
"name2dir-canvas.yaml": [
@@ -411628,7 +412059,7 @@
[]
],
"layers.yaml": [
- "7f9719fd505347737f4e9e39a3abaa7f63ef0ad3",
+ "51dedfd781326c8bf4f6d57c3bc79e82c95b0703",
[]
],
"line-styles.yaml": [
@@ -416504,6 +416935,10 @@
"bbbcf799393fc047dae6d47836c3696868df8fb7",
[]
],
+ "frame-with-a.html": [
+ "1f317369028ab2f87d378dc4070ff443432f9a09",
+ []
+ ],
"frame-with-anchor.html": [
"b9070159e747dfe1d60b21b5e190598abd36d5b0",
[]
@@ -416525,7 +416960,7 @@
[]
],
"utils.js": [
- "c4f38fcb209e52328429a5d425fd5b5c8f2aaae4",
+ "e928e275407cbeee9fefffa9a3772b9d55ccc62e",
[]
]
}
@@ -423606,7 +424041,7 @@
},
"server": {
"context.any.js.ini": [
- "49220324f2f08b8e2bd700e2161615ba93f78b59",
+ "03bf96ec464ce59ea7ede41df1c6c888c97cf45b",
[]
],
"http2-context.sub.h2.any.js.ini": [
@@ -431863,6 +432298,10 @@
],
"tests": {
"functional": {
+ "abortsignal.html": [
+ "e6080e96ec9fb54c6a06567fc65ed9c315217e1e",
+ []
+ ],
"add_cleanup.html": [
"468319fdbea0044d1d8436ccf626d9778dc1e805",
[]
@@ -432297,7 +432736,7 @@
[]
],
"testharness.js": [
- "55aaa582c53eff9674f2c2f060c5678b6f82a5a3",
+ "bed115a99cefba4fb2bc849cfc7607cbde6b3c7d",
[]
],
"testharness.js.headers": [
@@ -448186,7 +448625,7 @@
]
},
"wasm-module-builder.js": [
- "7be72f86dae75240edfa3548826e6f88bfde40c8",
+ "86d836a5a37245100c628fe6f03691373b6a27d4",
[]
]
},
@@ -468295,7 +468734,7 @@
],
"import_export": {
"ec_importKey.https.any.js": [
- "66be9ff65d6f8b2946a5253cda600c556b2d1c8f",
+ "c70583bf12eba9afdf641ebb0c13f38d75d86e3b",
[
"WebCryptoAPI/import_export/ec_importKey.https.any.html",
{
@@ -468307,6 +468746,10 @@
[
"timeout",
"long"
+ ],
+ [
+ "script",
+ "../util/helpers.js"
]
],
"timeout": "long"
@@ -468323,6 +468766,10 @@
[
"timeout",
"long"
+ ],
+ [
+ "script",
+ "../util/helpers.js"
]
],
"timeout": "long"
@@ -468330,7 +468777,7 @@
]
],
"okp_importKey.https.any.js": [
- "0bd460b62f66ae43f7c79468abdc80edeaba0cdd",
+ "2257a5fa418ad5f2a71cda4c83b919c7d28850b2",
[
"WebCryptoAPI/import_export/okp_importKey.https.any.html",
{
@@ -468342,6 +468789,10 @@
[
"timeout",
"long"
+ ],
+ [
+ "script",
+ "../util/helpers.js"
]
],
"timeout": "long"
@@ -468358,6 +468809,10 @@
[
"timeout",
"long"
+ ],
+ [
+ "script",
+ "../util/helpers.js"
]
],
"timeout": "long"
@@ -468569,7 +469024,7 @@
]
],
"rsa_importKey.https.any.js": [
- "9f9d38a9554be98f256e6f6d30642242185e29b8",
+ "41d25da89c6505f9e0408cff72a2bb1b9d884266",
[
"WebCryptoAPI/import_export/rsa_importKey.https.any.html",
{
@@ -468581,6 +469036,10 @@
[
"timeout",
"long"
+ ],
+ [
+ "script",
+ "../util/helpers.js"
]
],
"timeout": "long"
@@ -468597,6 +469056,10 @@
[
"timeout",
"long"
+ ],
+ [
+ "script",
+ "../util/helpers.js"
]
],
"timeout": "long"
@@ -468604,7 +469067,7 @@
]
],
"symmetric_importKey.https.any.js": [
- "3d76daac1e28a1369c5046effd2b4fa951766963",
+ "404b66ac0022acd81ed803c9054969fbb3a02111",
[
"WebCryptoAPI/import_export/symmetric_importKey.https.any.html",
{
@@ -468616,6 +469079,10 @@
[
"timeout",
"long"
+ ],
+ [
+ "script",
+ "../util/helpers.js"
]
],
"timeout": "long"
@@ -468632,6 +469099,10 @@
[
"timeout",
"long"
+ ],
+ [
+ "script",
+ "../util/helpers.js"
]
],
"timeout": "long"
@@ -504942,6 +505413,13 @@
{}
]
],
+ "custom-property-transition-property-all.html": [
+ "6fc724cd35fdcadf5aa22b1e42bca955d246160c",
+ [
+ null,
+ {}
+ ]
+ ],
"custom-property-transition-resolution.html": [
"5631910b7cb9809c1778cb4fb3ac4364b3f943b3",
[
@@ -594078,14 +594556,14 @@
]
],
"document-with-fragment-top.html": [
- "ea3cc41f81b3f32d7f0ee14054fc7d72f3e774f2",
+ "f2d2aaae609c1c573c47f7dd11d2135a1fd0e20f",
[
null,
{}
]
],
"document-with-fragment-valid.html": [
- "7a7b01a21b906379f0e830effa9484a0297dcb50",
+ "5078f1a0ac3b9306a1076ee7dbb5c4b4b8de5214",
[
null,
{}
@@ -594194,7 +594672,7 @@
]
],
"spin-by-blocking-style-sheet.html": [
- "22a4c3573cccf909d3a5675db2aab97a4f366bc0",
+ "fb87eca77a6ef5bfc1c6ab0a6e9ebcd474fc8a2a",
[
null,
{}
@@ -614074,6 +614552,13 @@
{}
]
],
+ "inert-inlines-around-selection-range-in-contenteditable.html": [
+ "ff00e16a7a436fb31adbfd81e24c38f490e1f226",
+ [
+ null,
+ {}
+ ]
+ ],
"inert-inlines.html": [
"b056c6495d2c54733bee6ab796332ba89f01b379",
[
@@ -624442,6 +624927,13 @@
{}
]
],
+ "navigate-history-back-noop.html": [
+ "10763c93fd20ec841acb1f1dab45d2343c5de074",
+ [
+ null,
+ {}
+ ]
+ ],
"navigate-history-go-0.html": [
"96d98cf44c8261a777d37b31785137897f3429c8",
[
@@ -649139,7 +649631,7 @@
]
],
"scroll-timeline-inactive.html": [
- "92165d7046c19e10dfcdb74b2b32f5216bf2abc4",
+ "0953f1b389406dffb80fb9b599eef7f1fbe24c07",
[
null,
{}
@@ -663387,7 +663879,7 @@
},
"subapps": {
"add-error.tentative.https.html": [
- "8598f3fa35ab36603d05f4a68969608721b24b1e",
+ "2cbf50836df093ee12e0157d5db6dfa0cc59706e",
[
null,
{
@@ -663396,7 +663888,7 @@
]
],
"add-success.tentative.https.html": [
- "24c420666e9d62cb78ba7fe2ba52194a2ecb1ac4",
+ "2453fdbdecd39cfadf142b5ecf34d35a9eaef5ca",
[
null,
{
@@ -663437,21 +663929,21 @@
]
],
"list-success.tentative.https.html": [
- "d214b8ac14a7588c27c313f2ee6df1e138ccdb0c",
+ "c1d281abc530f16f60c0af6548d36a35710fd4dd",
[
null,
{}
]
],
"remove-error.tentative.https.html": [
- "e447ccede5c53199789ef8c8defb80e18303311a",
+ "e85ffd74a78d52a156f1fba88bba61a384a20cc7",
[
null,
{}
]
],
"remove-success.tentative.https.html": [
- "a4148fd869c43d1168da738dfceb76484b20912c",
+ "ca73cbea8886aa5eb93249b97264df0c4ac1e875",
[
null,
{}
@@ -672256,7 +672748,7 @@
]
],
"constructor.tentative.any.js": [
- "0fd47b455e023c7aecd40cf0dfafb175b7bb3e43",
+ "7ad08e1883ba13c38fa9c21b1f053fc6e6d5b1a3",
[
null,
{
@@ -672305,7 +672797,7 @@
]
],
"getArg.tentative.any.js": [
- "4b72c61f47b7e2c1ad921d072ce1016333e6d420",
+ "f0a568a857f0e733035675a0c0d97d7214ac5d61",
[
null,
{
@@ -672353,6 +672845,67 @@
}
]
],
+ "identity.tentative.any.js": [
+ "65787c107e3c29f7e4cc1a2e34d6425fc7d56c86",
+ [
+ null,
+ {
+ "jsshell": true,
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker,jsshell"
+ ],
+ [
+ "script",
+ "/wasm/jsapi/assertions.js"
+ ],
+ [
+ "script",
+ "/wasm/jsapi/wasm-module-builder.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "wasm/jsapi/exception/identity.tentative.any.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker,jsshell"
+ ],
+ [
+ "script",
+ "/wasm/jsapi/assertions.js"
+ ],
+ [
+ "script",
+ "/wasm/jsapi/wasm-module-builder.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "wasm/jsapi/exception/identity.tentative.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker,jsshell"
+ ],
+ [
+ "script",
+ "/wasm/jsapi/assertions.js"
+ ],
+ [
+ "script",
+ "/wasm/jsapi/wasm-module-builder.js"
+ ]
+ ]
+ }
+ ]
+ ],
"is.tentative.any.js": [
"e28a88a3c5fdcfa0f08711a00fba8a1eaf97114e",
[
@@ -672403,7 +672956,7 @@
]
],
"toString.tentative.any.js": [
- "52635186c762fcb6828856be7236af87b22e9359",
+ "00e801a6fc1a4a2f0e361288d4d6bfb45745f446",
[
null,
{
diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini
new file mode 100644
index 00000000000..968f62a2553
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini
@@ -0,0 +1,3 @@
+[hit-test-floats-002.html]
+ [Hit test float]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini
deleted file mode 100644
index 665ec4646cb..00000000000
--- a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[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-001.html.ini b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-001.html.ini
deleted file mode 100644
index b4eea326212..00000000000
--- a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-001.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[block-in-inline-hittest-001.html]
- [block-in-inline-hittest-001]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/selectors/attribute-value-selector-004.xht.ini b/tests/wpt/metadata/css/CSS2/selectors/attribute-value-selector-004.xht.ini
new file mode 100644
index 00000000000..ce14b0578d7
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/selectors/attribute-value-selector-004.xht.ini
@@ -0,0 +1,2 @@
+[attribute-value-selector-004.xht]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/css/css-flexbox/hittest-before-pseudo.html.ini b/tests/wpt/metadata/css/css-flexbox/hittest-before-pseudo.html.ini
new file mode 100644
index 00000000000..5b685485f3c
--- /dev/null
+++ b/tests/wpt/metadata/css/css-flexbox/hittest-before-pseudo.html.ini
@@ -0,0 +1,3 @@
+[hittest-before-pseudo.html]
+ [Hit-testing text within a pseudo-element flex-item should return the flexbox as the hittest result.]
+ expected: FAIL
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 4a5712723f3..537c917bdfc 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
@@ -68,9 +68,6 @@
[Matching font-style: 'italic' should prefer 'oblique 20deg' over 'oblique 30deg 60deg']
expected: FAIL
- [Matching font-stretch: '100%' should prefer '100%' over '110% 120%']
- expected: FAIL
-
[Matching font-style: 'normal' should prefer 'oblique 10deg 40deg' over 'oblique 20deg 30deg']
expected: FAIL
@@ -113,9 +110,6 @@
[Matching font-style: 'oblique 21deg' should prefer 'oblique 21deg' over 'oblique 30deg 60deg']
expected: FAIL
- [Matching font-style: 'italic' should prefer 'oblique 5deg 10deg' over 'oblique 5deg']
- expected: FAIL
-
[Matching font-style: 'oblique 10deg' should prefer 'oblique 0deg' over 'oblique -50deg -20deg']
expected: FAIL
@@ -155,9 +149,6 @@
[Matching font-stretch: '110%' should prefer '50% 80%' over '60% 70%']
expected: FAIL
- [Matching font-style: 'oblique -21deg' should prefer 'italic' over 'oblique 0deg']
- expected: FAIL
-
[Matching font-style: 'italic' should prefer 'italic' over 'oblique 20deg']
expected: FAIL
@@ -233,9 +224,6 @@
[Matching font-stretch: '110%' should prefer '100%' over '50% 80%']
expected: FAIL
- [Matching font-style: 'oblique 10deg' should prefer 'oblique 10deg' over 'oblique 5deg']
- expected: FAIL
-
[Matching font-style: 'oblique -10deg' should prefer 'oblique -1deg 0deg' over 'oblique -20deg -15deg']
expected: FAIL
@@ -248,9 +236,6 @@
[Matching font-style: 'oblique -21deg' should prefer 'oblique 0deg' over 'oblique 30deg 60deg']
expected: FAIL
- [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
@@ -319,3 +304,18 @@
[Matching font-style: 'oblique 0deg' should prefer 'oblique 40deg 50deg' over 'italic']
expected: FAIL
+
+ [Matching font-weight: '501' should prefer '450 460' over '390 410']
+ expected: FAIL
+
+ [Matching font-style: 'italic' should prefer 'oblique 40deg 50deg' over 'oblique 5deg 10deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 10deg' should prefer 'oblique -50deg -20deg' over 'oblique -40deg -30deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 0deg' should prefer 'oblique 5deg' over 'oblique 15deg 20deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -21deg' should prefer 'oblique -10deg' over 'italic']
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini b/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini
index 3f9c5003739..4a1232b3c22 100644
--- a/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini
@@ -1,3 +1,6 @@
[transform-scale-hittest.html]
[Hit test intersecting scaled box]
expected: FAIL
+
+ [Hit test within unscaled box]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-002.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-002.html.ini
index 22cc93431b5..9a3de180712 100644
--- a/tests/wpt/metadata/css/css-transitions/properties-value-002.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/properties-value-002.html.ini
@@ -25,4 +25,3 @@
[padding-top percentage(%) / values]
expected: [FAIL, PASS]
-
diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini
index 3fe0bd64cb2..438884a0319 100644
--- a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini
@@ -325,3 +325,153 @@
[margin-right length(mm) / values]
expected: [FAIL, PASS]
+
+ [color color(rgba) / values]
+ expected: FAIL
+
+ [font-size length(pt) / values]
+ expected: FAIL
+
+ [font-size length(pc) / values]
+ expected: FAIL
+
+ [font-size length(px) / values]
+ expected: FAIL
+
+ [font-size length(em) / values]
+ expected: FAIL
+
+ [font-size length(ex) / values]
+ expected: FAIL
+
+ [font-size length(mm) / values]
+ expected: FAIL
+
+ [font-size length(cm) / values]
+ expected: FAIL
+
+ [font-size length(in) / values]
+ expected: FAIL
+
+ [font-size percentage(%) / values]
+ expected: FAIL
+
+ [font-weight font-weight(keyword) / values]
+ expected: FAIL
+
+ [font-weight font-weight(numeric) / values]
+ expected: FAIL
+
+ [line-height number(integer) / values]
+ expected: FAIL
+
+ [line-height number(decimal) / values]
+ expected: FAIL
+
+ [line-height length(pt) / values]
+ expected: FAIL
+
+ [line-height length(pc) / values]
+ expected: FAIL
+
+ [line-height length(px) / values]
+ expected: FAIL
+
+ [line-height length(em) / values]
+ expected: FAIL
+
+ [line-height length(ex) / values]
+ expected: FAIL
+
+ [line-height length(mm) / values]
+ expected: FAIL
+
+ [line-height length(cm) / values]
+ expected: FAIL
+
+ [line-height length(in) / values]
+ expected: FAIL
+
+ [line-height percentage(%) / values]
+ expected: FAIL
+
+ [letter-spacing length(pt) / values]
+ expected: FAIL
+
+ [letter-spacing length(pc) / values]
+ expected: FAIL
+
+ [letter-spacing length(px) / values]
+ expected: FAIL
+
+ [letter-spacing length(em) / values]
+ expected: FAIL
+
+ [letter-spacing length(ex) / values]
+ expected: FAIL
+
+ [letter-spacing length(mm) / values]
+ expected: FAIL
+
+ [letter-spacing length(cm) / values]
+ expected: FAIL
+
+ [letter-spacing length(in) / values]
+ expected: FAIL
+
+ [word-spacing length(pt) / values]
+ expected: FAIL
+
+ [word-spacing length(pc) / values]
+ expected: FAIL
+
+ [word-spacing length(px) / values]
+ expected: FAIL
+
+ [word-spacing length(em) / values]
+ expected: FAIL
+
+ [word-spacing length(ex) / values]
+ expected: FAIL
+
+ [word-spacing length(mm) / values]
+ expected: FAIL
+
+ [word-spacing length(cm) / values]
+ expected: FAIL
+
+ [word-spacing length(in) / values]
+ expected: FAIL
+
+ [word-spacing percentage(%) / values]
+ expected: FAIL
+
+ [text-indent length(pt) / values]
+ expected: FAIL
+
+ [text-indent length(pc) / values]
+ expected: FAIL
+
+ [text-indent length(px) / values]
+ expected: FAIL
+
+ [text-indent length(em) / values]
+ expected: FAIL
+
+ [text-indent length(ex) / values]
+ expected: FAIL
+
+ [text-indent length(mm) / values]
+ expected: FAIL
+
+ [text-indent length(cm) / values]
+ expected: FAIL
+
+ [text-indent length(in) / values]
+ expected: FAIL
+
+ [text-indent percentage(%) / values]
+ expected: FAIL
+
+ [text-shadow shadow(shadow) / values]
+ 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
deleted file mode 100644
index db065588308..00000000000
--- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-table.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[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..8ae9bae3500 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
@@ -13,6 +13,3 @@
[
Outside 3]
expected: FAIL
-
- [Image Inside 2]
- 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 57cbb5a4948..898f39c4330 100644
--- a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
@@ -18,5 +18,5 @@
[test some point of the element: bottom right corner]
expected: FAIL
- [test some point of the element: top left corner]
+ [test the top of layer]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini b/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini
index 067368ac95d..0d48169e3cc 100644
--- a/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini
+++ b/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini
@@ -147,5 +147,5 @@
[list-style-image sec-fetch-site - HTTPS downgrade-upgrade]
expected: FAIL
- [background-image sec-fetch-site - Not sent to non-trustworthy cross-site destination]
+ [background-image sec-fetch-site - HTTPS downgrade (header not sent)]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini
index 6e9f7acf151..c8a3c8f9e68 100644
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini
@@ -1,6 +1,6 @@
[scroll-restoration-fragment-scrolling-cross-origin.html]
type: testharness
- expected: TIMEOUT
+ expected: ERROR
[Manual scroll restoration should take precedent over scrolling to fragment in cross origin navigation]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/005.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/005.html.ini
index 33efcdbcf48..f7ee5361549 100644
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/005.html.ini
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/005.html.ini
@@ -1,3 +1,4 @@
[005.html]
+ expected: TIMEOUT
[Link with onclick navigation and href navigation ]
expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html.ini
index a46c9650e78..1d68034a37d 100644
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html.ini
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html.ini
@@ -1,13 +1,12 @@
[failure-check-sequence.https.html]
- expected: TIMEOUT
[CSP check precedes COEP check - CSP header first]
- expected: TIMEOUT
+ expected: FAIL
[COEP check precedes X-Frame-Options check]
- expected: NOTRUN
+ expected: FAIL
[CSP check precedes COEP check - COEP header first]
- expected: NOTRUN
+ expected: FAIL
[CSP check precedes X-Frame-Options check]
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 dd7320bb46e..856bb1c9901 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
@@ -4,7 +4,7 @@
expected: FAIL
[Navigating to a different document with form submission]
- expected: NOTRUN
+ expected: TIMEOUT
[Navigating to a different document with link click]
- expected: TIMEOUT
+ 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/history/the-history-interface/traverse-during-unload.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse-during-unload.html.ini
new file mode 100644
index 00000000000..f5b7b25324f
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse-during-unload.html.ini
@@ -0,0 +1,4 @@
+[traverse-during-unload.html]
+ expected: TIMEOUT
+ [Traversing the history during unload]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
new file mode 100644
index 00000000000..d6188c03424
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
@@ -0,0 +1,3 @@
+[traverse_the_history_4.html]
+ [Multiple history traversals, last would be aborted]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/canvas/element/layers/2d.layer.alpha.html.ini b/tests/wpt/metadata/html/canvas/element/layers/2d.layer.alpha.html.ini
deleted file mode 100644
index 22b9ad2bb5b..00000000000
--- a/tests/wpt/metadata/html/canvas/element/layers/2d.layer.alpha.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[2d.layer.alpha.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/canvas/element/manual/image-smoothing/imagesmoothing.html.ini b/tests/wpt/metadata/html/canvas/element/manual/image-smoothing/imagesmoothing.html.ini
deleted file mode 100644
index 52663ea3f55..00000000000
--- a/tests/wpt/metadata/html/canvas/element/manual/image-smoothing/imagesmoothing.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[imagesmoothing.html]
- [Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with stroke() and createPattern().]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/canvas/element/manual/layers/layers-alpha-filter.html.ini b/tests/wpt/metadata/html/canvas/element/manual/layers/layers-alpha-filter.html.ini
deleted file mode 100644
index d75478539b7..00000000000
--- a/tests/wpt/metadata/html/canvas/element/manual/layers/layers-alpha-filter.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[layers-alpha-filter.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/canvas/element/manual/layers/layers-filter.html.ini b/tests/wpt/metadata/html/canvas/element/manual/layers/layers-filter.html.ini
deleted file mode 100644
index 92017302971..00000000000
--- a/tests/wpt/metadata/html/canvas/element/manual/layers/layers-filter.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[layers-filter.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/canvas/element/manual/layers/layers-globalcompositeoperation.html.ini b/tests/wpt/metadata/html/canvas/element/manual/layers/layers-globalcompositeoperation.html.ini
deleted file mode 100644
index e752351fa6a..00000000000
--- a/tests/wpt/metadata/html/canvas/element/manual/layers/layers-globalcompositeoperation.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[layers-globalcompositeoperation.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.alpha.html.ini b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.alpha.html.ini
deleted file mode 100644
index 22b9ad2bb5b..00000000000
--- a/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.alpha.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[2d.layer.alpha.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.alpha.w.html.ini b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.alpha.w.html.ini
deleted file mode 100644
index 100c59b490f..00000000000
--- a/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.alpha.w.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[2d.layer.alpha.w.html]
- expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation.w.html.ini b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation.w.html.ini
new file mode 100644
index 00000000000..9942cbaf0f2
--- /dev/null
+++ b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation.w.html.ini
@@ -0,0 +1,2 @@
+[2d.layer.global-states.alpha.filter.globalcompositeoperation.w.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.shadow.w.html.ini b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.shadow.w.html.ini
new file mode 100644
index 00000000000..7389a729032
--- /dev/null
+++ b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.shadow.w.html.ini
@@ -0,0 +1,2 @@
+[2d.layer.global-states.alpha.filter.shadow.w.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.w.html.ini b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.w.html.ini
new file mode 100644
index 00000000000..558b18cf58b
--- /dev/null
+++ b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.w.html.ini
@@ -0,0 +1,2 @@
+[2d.layer.global-states.alpha.filter.w.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow.w.html.ini b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow.w.html.ini
new file mode 100644
index 00000000000..4f0d5b65629
--- /dev/null
+++ b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow.w.html.ini
@@ -0,0 +1,2 @@
+[2d.layer.global-states.alpha.shadow.w.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.alpha.w.html.ini b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.alpha.w.html.ini
new file mode 100644
index 00000000000..562e7fb544a
--- /dev/null
+++ b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.alpha.w.html.ini
@@ -0,0 +1,2 @@
+[2d.layer.global-states.alpha.w.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.filter.globalcompositeoperation.w.html.ini b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.filter.globalcompositeoperation.w.html.ini
new file mode 100644
index 00000000000..11fb743f0c9
--- /dev/null
+++ b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.filter.globalcompositeoperation.w.html.ini
@@ -0,0 +1,2 @@
+[2d.layer.global-states.filter.globalcompositeoperation.w.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow.w.html.ini b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow.w.html.ini
new file mode 100644
index 00000000000..1ffdc5dc7eb
--- /dev/null
+++ b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow.w.html.ini
@@ -0,0 +1,2 @@
+[2d.layer.global-states.filter.shadow.w.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.filter.w.html.ini b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.filter.w.html.ini
new file mode 100644
index 00000000000..c2355891e60
--- /dev/null
+++ b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.filter.w.html.ini
@@ -0,0 +1,2 @@
+[2d.layer.global-states.filter.w.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.globalcompositeoperation.w.html.ini b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.globalcompositeoperation.w.html.ini
new file mode 100644
index 00000000000..6cf683385e0
--- /dev/null
+++ b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.globalcompositeoperation.w.html.ini
@@ -0,0 +1,2 @@
+[2d.layer.global-states.globalcompositeoperation.w.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.shadow.w.html.ini b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.shadow.w.html.ini
new file mode 100644
index 00000000000..66861cfabf4
--- /dev/null
+++ b/tests/wpt/metadata/html/canvas/offscreen/layers/2d.layer.global-states.shadow.w.html.ini
@@ -0,0 +1,2 @@
+[2d.layer.global-states.shadow.w.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/spin-by-blocking-style-sheet.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/spin-by-blocking-style-sheet.html.ini
index 4805d3e402b..24f10d4d7f2 100644
--- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/spin-by-blocking-style-sheet.html.ini
+++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/spin-by-blocking-style-sheet.html.ini
@@ -1,5 +1,3 @@
[spin-by-blocking-style-sheet.html]
- expected: TIMEOUT
[Script-blocking style sheet should pause flushing autofocus candidates.]
- 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/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 e5994e21efc..25d9964f057 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,4 @@
[iframe_sandbox_popups_escaping-1.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-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
index 6f7461b9472..53b0601e68c 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
@@ -1,4 +1,5 @@
[iframe_sandbox_popups_nonescaping-1.html]
type: testharness
+ expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini
index 176a036eb36..8acf34f2b96 100644
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini
@@ -175,3 +175,6 @@
[application/x-www-form-urlencoded: single quote in name (normal form)]
expected: FAIL
+
+ [application/x-www-form-urlencoded: 0x00 in filename (formdata event)]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/forms/historical.html.ini b/tests/wpt/metadata/html/semantics/forms/historical.html.ini
new file mode 100644
index 00000000000..5d8289307cc
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/forms/historical.html.ini
@@ -0,0 +1,3 @@
+[historical.html]
+ [ should not be supported]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/forms/textfieldselection/select-event.html.ini b/tests/wpt/metadata/html/semantics/forms/textfieldselection/select-event.html.ini
deleted file mode 100644
index 0016a73a842..00000000000
--- a/tests/wpt/metadata/html/semantics/forms/textfieldselection/select-event.html.ini
+++ /dev/null
@@ -1,12 +0,0 @@
-[select-event.html]
- [textarea: selectionEnd disconnected node]
- expected: FAIL
-
- [input type text: selectionStart disconnected node]
- expected: FAIL
-
- [input type text: selectionStart event queue]
- expected: FAIL
-
- [input type text: setSelectionRange() event queue]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-url.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-url.html.ini
index aefc66df468..514c8b576ad 100644
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-url.html.ini
+++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-url.html.ini
@@ -1,5 +1,4 @@
[import-meta-url.html]
- expected: ERROR
[import.meta.url at top-level module DedicatedWorker]
expected: FAIL
diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini
new file mode 100644
index 00000000000..fc0233f5241
--- /dev/null
+++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini
@@ -0,0 +1,3 @@
+[module-delayed.html]
+ [async document.write in a module]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini
deleted file mode 100644
index f9a4f08cd70..00000000000
--- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[module-tla-delayed.html]
- [document.write in an imported module]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
index 8845054116d..e55f8f2ce3c 100644
--- a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
+++ b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
@@ -3,3 +3,6 @@
expected: TIMEOUT
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: TIMEOUT
+
+ [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini
index dbe1def99e3..7237f5792de 100644
--- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini
+++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini
@@ -1,9 +1,10 @@
[promise-job-entry-different-function-realm.html]
+ expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
expected: FAIL
[Rejection handler on pending-then-rejected promise]
- expected: FAIL
+ expected: TIMEOUT
[Thenable resolution]
expected: FAIL
@@ -12,4 +13,4 @@
expected: FAIL
[Fulfillment handler on pending-then-fulfilled promise]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/wasm/jsapi/exception/basic.tentative.any.js.ini b/tests/wpt/metadata/wasm/jsapi/exception/basic.tentative.any.js.ini
index c28301608df..30501bd1060 100644
--- a/tests/wpt/metadata/wasm/jsapi/exception/basic.tentative.any.js.ini
+++ b/tests/wpt/metadata/wasm/jsapi/exception/basic.tentative.any.js.ini
@@ -1,4 +1,16 @@
[basic.tentative.any.worker.html]
+ [Wasm function throws argument]
+ expected: FAIL
+
+ [Wasm function throws null]
+ expected: FAIL
+
+ [Wasm function throws integer]
+ expected: FAIL
+
+ [Imported JS function throws]
+ expected: FAIL
+
[basic.tentative.any.sharedworker.html]
expected: ERROR
@@ -7,3 +19,14 @@
expected: ERROR
[basic.tentative.any.html]
+ [Wasm function throws argument]
+ expected: FAIL
+
+ [Wasm function throws null]
+ expected: FAIL
+
+ [Wasm function throws integer]
+ expected: FAIL
+
+ [Imported JS function throws]
+ expected: FAIL
diff --git a/tests/wpt/metadata/wasm/jsapi/exception/getArg.tentative.any.js.ini b/tests/wpt/metadata/wasm/jsapi/exception/getArg.tentative.any.js.ini
new file mode 100644
index 00000000000..012fe6c7f8b
--- /dev/null
+++ b/tests/wpt/metadata/wasm/jsapi/exception/getArg.tentative.any.js.ini
@@ -0,0 +1,8 @@
+[getArg.tentative.any.worker.html]
+ [Getting out-of-range argument]
+ expected: FAIL
+
+
+[getArg.tentative.any.html]
+ [Getting out-of-range argument]
+ 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/018.html.ini b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini
deleted file mode 100644
index b7b36c1d3a4..00000000000
--- a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[018.html]
- expected: TIMEOUT
- [origin of the script that invoked the method, javascript:]
- expected: TIMEOUT
diff --git a/tests/wpt/metadata/webmessaging/without-ports/018.html.ini b/tests/wpt/metadata/webmessaging/without-ports/018.html.ini
deleted file mode 100644
index b7b36c1d3a4..00000000000
--- a/tests/wpt/metadata/webmessaging/without-ports/018.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[018.html]
- expected: TIMEOUT
- [origin of the script that invoked the method, javascript:]
- expected: TIMEOUT
diff --git a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
new file mode 100644
index 00000000000..80f9a4f15b8
--- /dev/null
+++ b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
@@ -0,0 +1,2 @@
+[Worker-constructor.html]
+ expected: ERROR
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes.js
index 4a047aa0609..e1c1665b511 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes.js
@@ -64,7 +64,7 @@ function run_test(algorithmNames, slowTest) {
.then(function(result) {
if (resultType === "CryptoKeyPair") {
assert_goodCryptoKey(result.privateKey, algorithm, extractable, usages, "private");
- assert_goodCryptoKey(result.publicKey, algorithm, extractable, usages, "public");
+ assert_goodCryptoKey(result.publicKey, algorithm, true, usages, "public");
} else {
assert_goodCryptoKey(result, algorithm, extractable, usages, "secret");
}
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/ec_importKey.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/ec_importKey.https.any.js
index 66be9ff65d6..c70583bf12e 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/ec_importKey.https.any.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/ec_importKey.https.any.js
@@ -1,5 +1,6 @@
// META: title=WebCryptoAPI: importKey() for EC keys
// META: timeout=long
+// META: script=../util/helpers.js
// Test importKey and exportKey for EC algorithms. Only "happy paths" are
// currently tested - those where the operation should succeed.
@@ -110,6 +111,7 @@
return subtle.importKey(format, keyData, algorithm, extractable, usages).
then(function(key) {
assert_equals(key.constructor, CryptoKey, "Imported a CryptoKey object");
+ assert_goodCryptoKey(key, algorithm, extractable, usages, (format === 'pkcs8' || (format === 'jwk' && keyData.d)) ? 'private' : 'public');
if (!extractable) {
return;
}
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/okp_importKey.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/okp_importKey.https.any.js
index 0bd460b62f6..2257a5fa418 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/okp_importKey.https.any.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/okp_importKey.https.any.js
@@ -1,5 +1,6 @@
// META: title=WebCryptoAPI: importKey() for OKP keys
// META: timeout=long
+// META: script=../util/helpers.js
// Test importKey and exportKey for OKP algorithms. Only "happy paths" are
// currently tested - those where the operation should succeed.
@@ -104,6 +105,7 @@
return subtle.importKey(format, keyData[format], algorithm, extractable, usages).
then(function(key) {
assert_equals(key.constructor, CryptoKey, "Imported a CryptoKey object");
+ assert_goodCryptoKey(key, algorithm, extractable, usages, (format === 'pkcs8' || (format === 'jwk' && keyData[format].d)) ? 'private' : 'public');
if (!extractable) {
return;
}
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.any.js
index 9f9d38a9554..41d25da89c6 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.any.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.any.js
@@ -1,5 +1,6 @@
// META: title=WebCryptoAPI: importKey() for RSA keys
// META: timeout=long
+// META: script=../util/helpers.js
// Test importKey and exportKey for RSA algorithms. Only "happy paths" are
// currently tested - those where the operation should succeed.
@@ -113,6 +114,7 @@
return subtle.importKey(format, keyData[format], algorithm, extractable, usages).
then(function(key) {
assert_equals(key.constructor, CryptoKey, "Imported a CryptoKey object");
+ assert_goodCryptoKey(key, algorithm, extractable, usages, (format === 'pkcs8' || (format === 'jwk' && keyData[format].d)) ? 'private' : 'public');
if (!extractable) {
return;
}
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/symmetric_importKey.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/symmetric_importKey.https.any.js
index 3d76daac1e2..404b66ac002 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/symmetric_importKey.https.any.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/symmetric_importKey.https.any.js
@@ -1,5 +1,6 @@
// META: title=WebCryptoAPI: importKey() for symmetric keys
// META: timeout=long
+// META: script=../util/helpers.js
// Test importKey and exportKey for non-PKC algorithms. Only "happy paths" are
// currently tested - those where the operation should succeed.
@@ -57,6 +58,10 @@
});
});
+ function hasLength(algorithm) {
+ return algorithm.name === 'HMAC' || algorithm.name.startsWith('AES');
+ }
+
// Test importKey with a given key format and other parameters. If
// extrable is true, export the key and verify that it matches the input.
function testFormat(format, algorithm, keyData, keySize, usages, extractable) {
@@ -64,6 +69,7 @@
return subtle.importKey(format, keyData, algorithm, extractable, usages).
then(function(key) {
assert_equals(key.constructor, CryptoKey, "Imported a CryptoKey object");
+ assert_goodCryptoKey(key, hasLength(key.algorithm) ? { length: keySize, ...algorithm } : algorithm, extractable, usages, 'secret');
if (!extractable) {
return;
}
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/util/helpers.js b/tests/wpt/web-platform-tests/WebCryptoAPI/util/helpers.js
index ee9d09d1251..ce240a1549c 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/util/helpers.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/util/helpers.js
@@ -19,7 +19,7 @@ var registeredAlgorithmNames = [
"SHA-256",
"SHA-384",
"SHA-512",
- "HKDF-CTR",
+ "HKDF",
"PBKDF2",
"Ed25519",
"Ed448",
@@ -104,9 +104,6 @@ function assert_goodCryptoKey(key, algorithm, extractable, usages, kind) {
assert_equals(key.constructor, CryptoKey, "Is a CryptoKey");
assert_equals(key.type, kind, "Is a " + kind + " key");
- if (key.type === "public") {
- extractable = true; // public keys are always extractable
- }
assert_equals(key.extractable, extractable, "Extractability is correct");
assert_equals(key.algorithm.name, registeredAlgorithmName, "Correct algorithm name");
@@ -130,6 +127,10 @@ function assert_goodCryptoKey(key, algorithm, extractable, usages, kind) {
assert_equals(key.algorithm.hash.name.toUpperCase(), algorithm.hash.toUpperCase(), "Correct hash function");
}
+ if (/^(?:Ed|X)(?:25519|448)$/.test(key.algorithm.name)) {
+ assert_false('namedCurve' in key.algorithm, "Does not have a namedCurve property");
+ }
+
// usages is expected to be provided for a key pair, but we are checking
// only a single key. The publicKey and privateKey portions of a key pair
// recognize only some of the usages appropriate for a key pair.
diff --git a/tests/wpt/web-platform-tests/css/css-animations/animation-opacity-pause-and-set-time.html b/tests/wpt/web-platform-tests/css/css-animations/animation-opacity-pause-and-set-time.html
index c63c2f3b9fe..cbf63ea2178 100644
--- a/tests/wpt/web-platform-tests/css/css-animations/animation-opacity-pause-and-set-time.html
+++ b/tests/wpt/web-platform-tests/css/css-animations/animation-opacity-pause-and-set-time.html
@@ -1,6 +1,7 @@
+
CSS Animations Test: pauses a opacity animation and sets the current time
diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/animation/custom-property-transition-property-all.html b/tests/wpt/web-platform-tests/css/css-properties-values-api/animation/custom-property-transition-property-all.html
new file mode 100644
index 00000000000..6fc724cd35f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/animation/custom-property-transition-property-all.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/resources/utils.js b/tests/wpt/web-platform-tests/css/css-properties-values-api/resources/utils.js
index dbbda1d585c..f659e123feb 100644
--- a/tests/wpt/web-platform-tests/css/css-properties-values-api/resources/utils.js
+++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/resources/utils.js
@@ -183,6 +183,8 @@ function transition_test(options, description) {
promise_test(async () => {
const customProperty = generate_name();
+ options.transitionProperty ??= customProperty;
+
CSS.registerProperty({
name: customProperty,
syntax: options.syntax,
@@ -199,7 +201,7 @@ function transition_test(options, description) {
});
});
- target.style.transition = `${customProperty} 1s -500ms linear`;
+ target.style.transition = `${options.transitionProperty} 1s -500ms linear`;
target.style.setProperty(customProperty, options.to);
const animations = target.getAnimations();
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-incoming.html b/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-incoming.html
index 01debbcfcc1..cdf1b32ab73 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-incoming.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-incoming.html
@@ -59,5 +59,5 @@ function runTest() {
});
}
-onload = requestAnimationFrame(() => requestAnimationFrame(runTest));
+onload = () => requestAnimationFrame(() => requestAnimationFrame(runTest));
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-outgoing.html b/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-outgoing.html
index 1cf74c8f08a..746b93afd40 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-outgoing.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-outgoing.html
@@ -60,5 +60,5 @@ function runTest() {
});
}
-onload = requestAnimationFrame(() => requestAnimationFrame(runTest));
+onload = () => requestAnimationFrame(() => requestAnimationFrame(runTest));
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/break-inside-avoid-child.html b/tests/wpt/web-platform-tests/css/css-view-transitions/break-inside-avoid-child.html
index 29afa0424f6..7791f7ab4f6 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/break-inside-avoid-child.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/break-inside-avoid-child.html
@@ -33,7 +33,7 @@
height: 300px;
}
-html::view-transition-container(root) { animation-duration: 300s; }
+html::view-transition-group(root) { animation-duration: 300s; }
html::view-transition-old(target) {
animation: unset;
opacity: 1;
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/fractional-translation-from-position.html b/tests/wpt/web-platform-tests/css/css-view-transitions/fractional-translation-from-position.html
index 9cae723e843..a09b08cf00c 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/fractional-translation-from-position.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/fractional-translation-from-position.html
@@ -51,5 +51,5 @@ function runTest() {
});
}
-onload = requestAnimationFrame(() => requestAnimationFrame(runTest));
+onload = () => requestAnimationFrame(() => requestAnimationFrame(runTest));
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/fractional-translation-from-transform.html b/tests/wpt/web-platform-tests/css/css-view-transitions/fractional-translation-from-transform.html
index 2d2e5d98fe5..7027a900864 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/fractional-translation-from-transform.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/fractional-translation-from-transform.html
@@ -53,5 +53,5 @@ function runTest() {
});
}
-onload = requestAnimationFrame(() => requestAnimationFrame(runTest));
+onload = () => requestAnimationFrame(() => requestAnimationFrame(runTest));
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/inline-child-with-filter.html b/tests/wpt/web-platform-tests/css/css-view-transitions/inline-child-with-filter.html
index fbacc332462..8790756eac0 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/inline-child-with-filter.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/inline-child-with-filter.html
@@ -26,7 +26,7 @@ body { margin : 0; }
filter: blur(30px);
}
-html::view-transition-container(root) { animation-duration: 300s; }
+html::view-transition-group(root) { animation-duration: 300s; }
html::view-transition-old(target) {
animation: unset;
opacity: 1;
@@ -48,5 +48,5 @@ async function runTest() {
});
transition.ready.then(() => requestAnimationFrame(takeScreenshot));
}
-onclick = requestAnimationFrame(() => requestAnimationFrame(runTest));
+onload = () => requestAnimationFrame(() => requestAnimationFrame(runTest));
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-spans.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-spans.html
index 5467d411565..843f6752d76 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-spans.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-spans.html
@@ -3,7 +3,7 @@
View transitions: capture span elements
-
+
+
+
+
FILLER FILLER
+
INLINE INLINE INLINE INLINE
+
START STATE
+
+
+
+
FILLER FILLER
+
INLINE INLINE INLINE INLINE
+
END STATE
+
+
+
+ FILLER FILLER
+ INLINE INLINE INLINE INLINE
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-inline.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-inline.html
new file mode 100644
index 00000000000..c341444f342
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-inline.html
@@ -0,0 +1,148 @@
+
+
+View transitions: New content is an inline element.
+
+
+
+
+
+
+
+
+
+
+
FILLER FILLER
+
INLINE INLINE INLINE INLINE
+
START STATE
+
+
+
+
+
FILLER FILLER
+
INLINE INLINE INLINE INLINE
+
END STATE
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-inline-ref.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-inline-ref.html
new file mode 100644
index 00000000000..5fe7d3fa1d2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-inline-ref.html
@@ -0,0 +1,73 @@
+
+View transitions: Old content is an inline element (ref)
+
+
+
+
+
+
+
FILLER FILLER
+
INLINE INLINE INLINE INLINE
+
START STATE
+
+
+
+
FILLER FILLER
+
INLINE INLINE INLINE INLINE
+
END STATE
+
+
+
+ FILLER FILLER
+ INLINE INLINE INLINE INLINE
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-inline.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-inline.html
new file mode 100644
index 00000000000..9f350237adc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-inline.html
@@ -0,0 +1,148 @@
+
+
+View transitions: Old content is an inline element.
+
+
+
+
+
+
+
+
+
+
+
FILLER FILLER
+
INLINE INLINE INLINE INLINE
+
START STATE
+
+
+
+
+
FILLER FILLER
+
INLINE INLINE INLINE INLINE
+
END STATE
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background.html b/tests/wpt/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background.html
index 9a4684c3476..c657fa19fba 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background.html
@@ -61,7 +61,7 @@ async function runTest() {
});
}
-onload = requestAnimationFrame(runTest);
+onload = () => requestAnimationFrame(runTest);
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/rtl-with-scrollbar.html b/tests/wpt/web-platform-tests/css/css-view-transitions/rtl-with-scrollbar.html
index d235a3f6990..de2570605ad 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/rtl-with-scrollbar.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/rtl-with-scrollbar.html
@@ -66,7 +66,7 @@ async function runTest() {
});
}
-onload = requestAnimationFrame(runTest);
+onload = () => requestAnimationFrame(runTest);
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/scroller-child-abspos.html b/tests/wpt/web-platform-tests/css/css-view-transitions/scroller-child-abspos.html
index 6c5b16dc01d..9b2ac35eef0 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/scroller-child-abspos.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/scroller-child-abspos.html
@@ -30,7 +30,7 @@
top: 200px;
}
-html::view-transition-container(root) { animation-duration: 300s; }
+html::view-transition-group(root) { animation-duration: 300s; }
html::view-transition-old(target) {
animation: unset;
opacity: 1;
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/scroller-child.html b/tests/wpt/web-platform-tests/css/css-view-transitions/scroller-child.html
index 72b405d64c0..b18187ca6eb 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/scroller-child.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/scroller-child.html
@@ -28,7 +28,7 @@
background: green;
}
-html::view-transition-container(root) { animation-duration: 300s; }
+html::view-transition-group(root) { animation-duration: 300s; }
html::view-transition-old(target) {
animation: unset;
opacity: 1;
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/scroller.html b/tests/wpt/web-platform-tests/css/css-view-transitions/scroller.html
index c86fce2353a..6e2a6e46507 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/scroller.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/scroller.html
@@ -23,7 +23,7 @@
background: green;
}
-html::view-transition-container(root) { animation-duration: 300s; }
+html::view-transition-group(root) { animation-duration: 300s; }
html::view-transition-old(target) {
animation: unset;
opacity: 1;
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/support/frame-helper.html b/tests/wpt/web-platform-tests/css/css-view-transitions/support/frame-helper.html
index d5bc43e7b82..3d2e7b52d07 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/support/frame-helper.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/support/frame-helper.html
@@ -20,6 +20,6 @@ function run() {
}));
});
}
-onload = requestAnimationFrame(() => requestAnimationFrame(run));
+onload = () => requestAnimationFrame(() => requestAnimationFrame(run));
diff --git a/tests/wpt/web-platform-tests/docs/writing-tests/testharness-api.md b/tests/wpt/web-platform-tests/docs/writing-tests/testharness-api.md
index 38e6813b1a2..339815c5ffe 100644
--- a/tests/wpt/web-platform-tests/docs/writing-tests/testharness-api.md
+++ b/tests/wpt/web-platform-tests/docs/writing-tests/testharness-api.md
@@ -516,6 +516,24 @@ complex cleanup behavior should manage execution order explicitly. If
any of the eventual values are rejected, the test runner will report
an error.
+### AbortSignal support ###
+
+[`Test.get_signal`](#Test.get_signal) gives an AbortSignal that is aborted when
+the test finishes. This can be useful when dealing with AbortSignal-supported
+APIs.
+
+```js
+promise_test(t => {
+ // Throws when the user agent does not support AbortSignal
+ const signal = t.get_signal();
+ const event = await new Promise(resolve => {
+ document.body.addEventListener(resolve, { once: true, signal });
+ document.body.click();
+ });
+ assert_equals(event.type, "click");
+}, "");
+```
+
## Timers in Tests ##
In general the use of timers (i.e. `setTimeout`) in tests is
diff --git a/tests/wpt/web-platform-tests/editing/crashtests/inserthtml-to-replace-root-list-element-in-designMode.html b/tests/wpt/web-platform-tests/editing/crashtests/inserthtml-to-replace-root-list-element-in-designMode.html
new file mode 100644
index 00000000000..c751a5bebcd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/editing/crashtests/inserthtml-to-replace-root-list-element-in-designMode.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/editing/data/delete.js b/tests/wpt/web-platform-tests/editing/data/delete.js
index bbd95e56a26..7e63c518c79 100644
--- a/tests/wpt/web-platform-tests/editing/data/delete.js
+++ b/tests/wpt/web-platform-tests/editing/data/delete.js
@@ -3012,4 +3012,11 @@ var browserTests = [
"\n- {}
"],
[true],
{}],
+
+// Select all list item children when list items have multiple nodes.
+["{}",
+ [["delete",""]],
+ "",
+ [true],
+ {}],
]
diff --git a/tests/wpt/web-platform-tests/editing/data/forwarddelete.js b/tests/wpt/web-platform-tests/editing/data/forwarddelete.js
index 7c1218276b2..661b62adb8d 100644
--- a/tests/wpt/web-platform-tests/editing/data/forwarddelete.js
+++ b/tests/wpt/web-platform-tests/editing/data/forwarddelete.js
@@ -2892,4 +2892,11 @@ var browserTests = [
"\n- {}
"],
[true],
{}],
+
+// Select all list item children when list items have multiple nodes.
+["{}",
+ [["delete",""]],
+ "",
+ [true],
+ {}],
]
diff --git a/tests/wpt/web-platform-tests/editing/include/editor-test-utils.js b/tests/wpt/web-platform-tests/editing/include/editor-test-utils.js
index 8d8e778836a..a4c24c94edb 100644
--- a/tests/wpt/web-platform-tests/editing/include/editor-test-utils.js
+++ b/tests/wpt/web-platform-tests/editing/include/editor-test-utils.js
@@ -96,7 +96,14 @@ class EditorTestUtils {
// - `{` specifies start boundary before a node
// - `]` specifies end boundary in a text node
// - `}` specifies end boundary after a node
- setupEditingHost(innerHTMLWithRangeMarkers) {
+ //
+ // options can have following fields:
+ // - selection: how to set selection, "addRange" (default),
+ // "setBaseAndExtent", "setBaseAndExtent-reverse".
+ setupEditingHost(innerHTMLWithRangeMarkers, options = {}) {
+ if (!options.selection) {
+ options.selection = "addRange";
+ }
const startBoundaries = innerHTMLWithRangeMarkers.match(/\{|\[/g) || [];
const endBoundaries = innerHTMLWithRangeMarkers.match(/\}|\]/g) || [];
if (startBoundaries.length !== endBoundaries.length) {
@@ -351,9 +358,31 @@ class EditorTestUtils {
ranges.push(range);
}
+ if (options.selection != "addRange" && ranges.length > 1) {
+ throw `Failed due to invalid selection option, ${options.selection}, for multiple selection ranges`;
+ }
+
this.selection.removeAllRanges();
- for (let range of ranges) {
- this.selection.addRange(range);
+ for (const range of ranges) {
+ if (options.selection == "addRange") {
+ this.selection.addRange(range);
+ } else if (options.selection == "setBaseAndExtent") {
+ this.selection.setBaseAndExtent(
+ range.startContainer,
+ range.startOffset,
+ range.endContainer,
+ range.endOffset
+ );
+ } else if (options.selection == "setBaseAndExtent-reverse") {
+ this.selection.setBaseAndExtent(
+ range.endContainer,
+ range.endOffset,
+ range.startContainer,
+ range.startOffset
+ );
+ } else {
+ throw `Failed due to invalid selection option, ${options.selection}`;
+ }
}
if (this.selection.rangeCount != ranges.length) {
diff --git a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js
index 2f910806dfd..65f58ee7ca2 100644
--- a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js
+++ b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js
@@ -364,31 +364,43 @@ function runGenericSensorTests(sensorName,
sensor.stop();
}, `${sensorName}: Test that fresh reading is fetched on start().`);
-// TBD file a WPT issue: visibilityChangeWatcher times out.
-// sensor_test(async (t, sensorProvider) => {
-// assert_implements(sensorName in self, `${sensorName} is not supported.`);
-// const sensor = new sensorType();
-// const sensorWatcher = new EventWatcher(t, sensor, ["reading", "error"]);
-// const visibilityChangeWatcher = new EventWatcher(t, document,
-// "visibilitychange");
-// sensor.start();
+ sensor_test(async (t, sensorProvider) => {
+ assert_implements(sensorName in self, `${sensorName} is not supported.`);
+ const sensor = new sensorType();
+ t.add_cleanup(() => {
+ sensor.stop();
+ });
+ const sensorWatcher = new EventWatcher(t, sensor, ['reading', 'error']);
+ sensor.start();
-// const mockSensor = await sensorProvider.getCreatedSensor(sensorName);
-// mockSensor.setSensorReading(readings);
+ const mockSensor = await sensorProvider.getCreatedSensor(sensorName);
+ mockSensor.setSensorReading(readings);
-// await sensorWatcher.wait_for("reading");
-// const expected = new RingBuffer(expectedReadings).next().value;
-// assert_true(verificationFunction(expected, sensor));
-// const cachedTimestamp1 = sensor.timestamp;
+ const expectedBuffer = new RingBuffer(expectedReadings);
+ await sensorWatcher.wait_for('reading');
+ const expected1 = expectedBuffer.next().value;
+ assert_true(verificationFunction(expected1, sensor));
+ assert_true(mockSensor.isReadingData());
+ const cachedTimestamp1 = sensor.timestamp;
-// const win = window.open('', '_blank');
-// await visibilityChangeWatcher.wait_for("visibilitychange");
-// const cachedTimestamp2 = sensor.timestamp;
+ const {minimize, restore} = window_state_context(t);
-// win.close();
-// sensor.stop();
-// assert_equals(cachedTimestamp1, cachedTimestamp2);
-// }, `${sensorName}: sensor readings can not be fired on the background tab.`);
+ await minimize();
+ assert_true(document.hidden);
+ await t.step_wait(
+ () => !mockSensor.isReadingData(), 'readings must be suspended');
+ const cachedTimestamp2 = sensor.timestamp;
+ assert_equals(cachedTimestamp1, cachedTimestamp2);
+
+ await restore();
+ assert_false(document.hidden);
+ await t.step_wait(
+ () => mockSensor.isReadingData(), 'readings must be restored');
+ await sensorWatcher.wait_for('reading');
+ const expected2 = expectedBuffer.next().value;
+ assert_true(verificationFunction(expected2, sensor));
+ assert_greater_than(sensor.timestamp, cachedTimestamp2);
+ }, `${sensorName}: Losing visibility must cause readings to be suspended.`);
sensor_test(async (t, sensorProvider) => {
assert_implements(sensorName in self, `${sensorName} is not supported.`);
diff --git a/tests/wpt/web-platform-tests/generic-sensor/resources/generic-sensor-helpers.js b/tests/wpt/web-platform-tests/generic-sensor/resources/generic-sensor-helpers.js
index aa101547ff1..9a51a591ce1 100644
--- a/tests/wpt/web-platform-tests/generic-sensor/resources/generic-sensor-helpers.js
+++ b/tests/wpt/web-platform-tests/generic-sensor/resources/generic-sensor-helpers.js
@@ -11,6 +11,7 @@
async function loadChromiumResources() {
await loadScript('/resources/testdriver.js');
await loadScript('/resources/testdriver-vendor.js');
+ await loadScript('/page-visibility/resources/window_state_context.js');
await import('/resources/chromium/generic_sensor_mocks.js');
}
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.alpha-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha-expected.html
similarity index 63%
rename from tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.alpha-expected.html
rename to tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha-expected.html
index 615aa1cb8bf..72d97c663f8 100644
--- a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.alpha-expected.html
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha-expected.html
@@ -1,8 +1,8 @@
-Canvas test: 2d.layer.alpha
-2d.layer.alpha
-A test to make sure shadow works with layers.
+Canvas test: 2d.layer.global-states.alpha
+2d.layer.global-states.alpha
+Checks that layers correctly use global render states.
@@ -11,7 +11,10 @@
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'rgba(0, 0, 255, 1)';
- ctx.fillRect(50, 50, 95, 70);
+
+ var circle = new Path2D();
+ circle.arc(90, 90, 45, 0, 2 * Math.PI);
+ ctx.fill(circle);
ctx.globalAlpha = 0.6;
@@ -19,9 +22,9 @@
ctx2 = canvas2.getContext("2d");
ctx2.fillStyle = 'rgba(225, 0, 0, 1)';
- ctx2.fillRect(60, 40, 75, 50);
+ ctx2.fillRect(50, 50, 75, 50);
ctx2.fillStyle = 'rgba(0, 255, 0, 1)';
- ctx2.fillRect(80, 60, 75, 50);
+ ctx2.fillRect(70, 70, 75, 50);
ctx.drawImage(canvas2, 0, 0);
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.filter-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.filter-expected.html
new file mode 100644
index 00000000000..b4512e2455e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.filter-expected.html
@@ -0,0 +1,31 @@
+
+
+Canvas test: 2d.layer.global-states.alpha.filter
+2d.layer.global-states.alpha.filter
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation-expected.html
new file mode 100644
index 00000000000..ab7e6cc6c19
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation-expected.html
@@ -0,0 +1,32 @@
+
+
+Canvas test: 2d.layer.global-states.alpha.filter.globalcompositeoperation
+2d.layer.global-states.alpha.filter.globalcompositeoperation
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation.html
new file mode 100644
index 00000000000..54bafb9e652
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation.html
@@ -0,0 +1,32 @@
+
+
+
+Canvas test: 2d.layer.global-states.alpha.filter.globalcompositeoperation
+2d.layer.global-states.alpha.filter.globalcompositeoperation
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.filter.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.filter.html
new file mode 100644
index 00000000000..bf522c29457
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.filter.html
@@ -0,0 +1,31 @@
+
+
+
+Canvas test: 2d.layer.global-states.alpha.filter
+2d.layer.global-states.alpha.filter
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.filter.shadow-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.filter.shadow-expected.html
new file mode 100644
index 00000000000..9a49e366a95
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.filter.shadow-expected.html
@@ -0,0 +1,34 @@
+
+
+Canvas test: 2d.layer.global-states.alpha.filter.shadow
+2d.layer.global-states.alpha.filter.shadow
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.filter.shadow.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.filter.shadow.html
new file mode 100644
index 00000000000..cccdf42edce
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.filter.shadow.html
@@ -0,0 +1,35 @@
+
+
+
+
+Canvas test: 2d.layer.global-states.alpha.filter.shadow
+2d.layer.global-states.alpha.filter.shadow
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.alpha.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.html
similarity index 56%
rename from tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.alpha.html
rename to tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.html
index b4a87b42daa..10ef0e7b221 100644
--- a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.alpha.html
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.html
@@ -1,9 +1,9 @@
-
-Canvas test: 2d.layer.alpha
-2d.layer.alpha
-A test to make sure shadow works with layers.
+
+Canvas test: 2d.layer.global-states.alpha
+2d.layer.global-states.alpha
+Checks that layers correctly use global render states.
@@ -12,16 +12,19 @@
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'rgba(0, 0, 255, 1)';
- ctx.fillRect(50, 50, 95, 70);
+
+ var circle = new Path2D();
+ circle.arc(90, 90, 45, 0, 2 * Math.PI);
+ ctx.fill(circle);
ctx.globalAlpha = 0.6;
ctx.beginLayer();
ctx.fillStyle = 'rgba(225, 0, 0, 1)';
- ctx.fillRect(60, 40, 75, 50);
+ ctx.fillRect(50, 50, 75, 50);
ctx.fillStyle = 'rgba(0, 255, 0, 1)';
- ctx.fillRect(80, 60, 75, 50);
+ ctx.fillRect(70, 70, 75, 50);
ctx.endLayer();
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.shadow-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.shadow-expected.html
new file mode 100644
index 00000000000..9daefc377bd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.shadow-expected.html
@@ -0,0 +1,33 @@
+
+
+Canvas test: 2d.layer.global-states.alpha.shadow
+2d.layer.global-states.alpha.shadow
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.shadow.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.shadow.html
new file mode 100644
index 00000000000..a0f4d79a223
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.alpha.shadow.html
@@ -0,0 +1,33 @@
+
+
+
+Canvas test: 2d.layer.global-states.alpha.shadow
+2d.layer.global-states.alpha.shadow
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.filter-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.filter-expected.html
new file mode 100644
index 00000000000..cff8783b392
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.filter-expected.html
@@ -0,0 +1,30 @@
+
+
+Canvas test: 2d.layer.global-states.filter
+2d.layer.global-states.filter
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.filter.globalcompositeoperation-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.filter.globalcompositeoperation-expected.html
new file mode 100644
index 00000000000..12fc31209ac
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.filter.globalcompositeoperation-expected.html
@@ -0,0 +1,31 @@
+
+
+Canvas test: 2d.layer.global-states.filter.globalcompositeoperation
+2d.layer.global-states.filter.globalcompositeoperation
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.filter.globalcompositeoperation.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.filter.globalcompositeoperation.html
new file mode 100644
index 00000000000..1f23dba96cc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.filter.globalcompositeoperation.html
@@ -0,0 +1,31 @@
+
+
+
+Canvas test: 2d.layer.global-states.filter.globalcompositeoperation
+2d.layer.global-states.filter.globalcompositeoperation
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.filter.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.filter.html
new file mode 100644
index 00000000000..7524ef56bb9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.filter.html
@@ -0,0 +1,30 @@
+
+
+
+Canvas test: 2d.layer.global-states.filter
+2d.layer.global-states.filter
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.filter.shadow-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.filter.shadow-expected.html
new file mode 100644
index 00000000000..6ec9b02f7cb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.filter.shadow-expected.html
@@ -0,0 +1,33 @@
+
+
+Canvas test: 2d.layer.global-states.filter.shadow
+2d.layer.global-states.filter.shadow
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.filter.shadow.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.filter.shadow.html
new file mode 100644
index 00000000000..efa5dca2ae0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.filter.shadow.html
@@ -0,0 +1,34 @@
+
+
+
+
+Canvas test: 2d.layer.global-states.filter.shadow
+2d.layer.global-states.filter.shadow
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.globalcompositeoperation-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.globalcompositeoperation-expected.html
new file mode 100644
index 00000000000..7e2e021b552
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.globalcompositeoperation-expected.html
@@ -0,0 +1,30 @@
+
+
+Canvas test: 2d.layer.global-states.globalcompositeoperation
+2d.layer.global-states.globalcompositeoperation
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.globalcompositeoperation.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.globalcompositeoperation.html
new file mode 100644
index 00000000000..f27336adf4b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.globalcompositeoperation.html
@@ -0,0 +1,30 @@
+
+
+
+Canvas test: 2d.layer.global-states.globalcompositeoperation
+2d.layer.global-states.globalcompositeoperation
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.shadow-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.shadow-expected.html
new file mode 100644
index 00000000000..6787bdd1e50
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.shadow-expected.html
@@ -0,0 +1,32 @@
+
+
+Canvas test: 2d.layer.global-states.shadow
+2d.layer.global-states.shadow
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.shadow.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.shadow.html
new file mode 100644
index 00000000000..da78b3435c7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.global-states.shadow.html
@@ -0,0 +1,32 @@
+
+
+
+Canvas test: 2d.layer.global-states.shadow
+2d.layer.global-states.shadow
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-expected.html
deleted file mode 100644
index 5b54384a79b..00000000000
--- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-expected.html
+++ /dev/null
@@ -1,24 +0,0 @@
- Test to ensure beginlayer works when both alpha and filter are applied.
-
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-globalcompositeoperation-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-globalcompositeoperation-expected.html
deleted file mode 100644
index 8d84dcb73f4..00000000000
--- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-globalcompositeoperation-expected.html
+++ /dev/null
@@ -1,28 +0,0 @@
- Test to ensure beginlayer works with global alpha, filter, and global composite operation.
-
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-globalcompositeoperation.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-globalcompositeoperation.html
deleted file mode 100644
index 6912d6a18b4..00000000000
--- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-globalcompositeoperation.html
+++ /dev/null
@@ -1,28 +0,0 @@
-
- Test to ensure beginlayer works with global alpha, filter, and global composite operation.
-
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-shadow-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-shadow-expected.html
deleted file mode 100644
index 89c3f64feae..00000000000
--- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-shadow-expected.html
+++ /dev/null
@@ -1,27 +0,0 @@
- Test to ensure beginlayer works for filter, alpha and shadow.
-
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-shadow.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-shadow.html
deleted file mode 100644
index 9c4a6fcaa7e..00000000000
--- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter-shadow.html
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
- Test to ensure beginlayer works for filter, alpha and shadow.
-
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter.html
deleted file mode 100644
index 7a895cf34dc..00000000000
--- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-filter.html
+++ /dev/null
@@ -1,24 +0,0 @@
-
- Test to ensure beginlayer works when both alpha and filter are applied.
-
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-shadow-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-shadow-expected.html
deleted file mode 100644
index f29fb736e3a..00000000000
--- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-shadow-expected.html
+++ /dev/null
@@ -1,26 +0,0 @@
- Test to ensure beginlayer works for alpha and shadow.
-
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-shadow.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-shadow.html
deleted file mode 100644
index e7d791d8fc0..00000000000
--- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-shadow.html
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
- Test to ensure beginlayer works for alpha and shadow.
-
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-expected.html
deleted file mode 100644
index 7fe4d2c03ef..00000000000
--- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-expected.html
+++ /dev/null
@@ -1,23 +0,0 @@
- Test to ensure beginlayer works for filter.
-
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-globalcompositeoperation-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-globalcompositeoperation-expected.html
deleted file mode 100644
index 0676d7e1aac..00000000000
--- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-globalcompositeoperation-expected.html
+++ /dev/null
@@ -1,28 +0,0 @@
- Test to ensure beginlayer works for filter and global composition.
-
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-globalcompositeoperation.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-globalcompositeoperation.html
deleted file mode 100644
index 03d04d09ae5..00000000000
--- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-globalcompositeoperation.html
+++ /dev/null
@@ -1,28 +0,0 @@
-
- Test to ensure beginlayer works for filter and global composition.
-
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-shadow-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-shadow-expected.html
deleted file mode 100644
index 5d141c3d085..00000000000
--- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-shadow-expected.html
+++ /dev/null
@@ -1,26 +0,0 @@
- Test to ensure beginlayer works for filter and shadow.
-
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-shadow.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-shadow.html
deleted file mode 100644
index 31ce6716290..00000000000
--- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter-shadow.html
+++ /dev/null
@@ -1,28 +0,0 @@
-
- Test to ensure beginlayer works for filter and shadow.
-
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter.html
deleted file mode 100644
index c4d63cda2ff..00000000000
--- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-filter.html
+++ /dev/null
@@ -1,23 +0,0 @@
-
- Test to ensure beginlayer works for filter.
-
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-globalcompositeoperation-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-globalcompositeoperation-expected.html
deleted file mode 100644
index d2d4317f074..00000000000
--- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-globalcompositeoperation-expected.html
+++ /dev/null
@@ -1,23 +0,0 @@
- Test to ensure beginlayer works for globalCompositeOperation.
-
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-globalcompositeoperation.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-globalcompositeoperation.html
deleted file mode 100644
index 6d4fde3ed53..00000000000
--- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-globalcompositeoperation.html
+++ /dev/null
@@ -1,25 +0,0 @@
-
- Test to ensure beginlayer works for globalCompositeOperation.
-
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-shadow-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-shadow-expected.html
deleted file mode 100644
index 76960455719..00000000000
--- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-shadow-expected.html
+++ /dev/null
@@ -1,25 +0,0 @@
- A test to make sure shadow works with layers.
-
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-shadow.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-shadow.html
deleted file mode 100644
index 59768746e49..00000000000
--- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-shadow.html
+++ /dev/null
@@ -1,28 +0,0 @@
-
- A test to make sure shadow works with layers.
-
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.alpha-expected.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha-expected.html
similarity index 63%
rename from tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.alpha-expected.html
rename to tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha-expected.html
index 615aa1cb8bf..72d97c663f8 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.alpha-expected.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha-expected.html
@@ -1,8 +1,8 @@
-Canvas test: 2d.layer.alpha
-2d.layer.alpha
-A test to make sure shadow works with layers.
+Canvas test: 2d.layer.global-states.alpha
+2d.layer.global-states.alpha
+Checks that layers correctly use global render states.
@@ -11,7 +11,10 @@
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'rgba(0, 0, 255, 1)';
- ctx.fillRect(50, 50, 95, 70);
+
+ var circle = new Path2D();
+ circle.arc(90, 90, 45, 0, 2 * Math.PI);
+ ctx.fill(circle);
ctx.globalAlpha = 0.6;
@@ -19,9 +22,9 @@
ctx2 = canvas2.getContext("2d");
ctx2.fillStyle = 'rgba(225, 0, 0, 1)';
- ctx2.fillRect(60, 40, 75, 50);
+ ctx2.fillRect(50, 50, 75, 50);
ctx2.fillStyle = 'rgba(0, 255, 0, 1)';
- ctx2.fillRect(80, 60, 75, 50);
+ ctx2.fillRect(70, 70, 75, 50);
ctx.drawImage(canvas2, 0, 0);
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter-expected.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter-expected.html
new file mode 100644
index 00000000000..b4512e2455e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter-expected.html
@@ -0,0 +1,31 @@
+
+
+Canvas test: 2d.layer.global-states.alpha.filter
+2d.layer.global-states.alpha.filter
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation-expected.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation-expected.html
new file mode 100644
index 00000000000..ab7e6cc6c19
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation-expected.html
@@ -0,0 +1,32 @@
+
+
+Canvas test: 2d.layer.global-states.alpha.filter.globalcompositeoperation
+2d.layer.global-states.alpha.filter.globalcompositeoperation
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation.html
new file mode 100644
index 00000000000..88d339fb1b1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation.html
@@ -0,0 +1,35 @@
+
+
+
+Canvas test: 2d.layer.global-states.alpha.filter.globalcompositeoperation
+2d.layer.global-states.alpha.filter.globalcompositeoperation
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation.w.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation.w.html
new file mode 100644
index 00000000000..a95085ca894
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.globalcompositeoperation.w.html
@@ -0,0 +1,49 @@
+
+
+
+
+Canvas test: 2d.layer.global-states.alpha.filter.globalcompositeoperation
+2d.layer.global-states.alpha.filter.globalcompositeoperation
+Checks that layers correctly use global render states.
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.html
new file mode 100644
index 00000000000..e8d3d5691bb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.html
@@ -0,0 +1,34 @@
+
+
+
+Canvas test: 2d.layer.global-states.alpha.filter
+2d.layer.global-states.alpha.filter
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.shadow-expected.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.shadow-expected.html
new file mode 100644
index 00000000000..9a49e366a95
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.shadow-expected.html
@@ -0,0 +1,34 @@
+
+
+Canvas test: 2d.layer.global-states.alpha.filter.shadow
+2d.layer.global-states.alpha.filter.shadow
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.shadow.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.shadow.html
new file mode 100644
index 00000000000..3e5e5bd9ba1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.shadow.html
@@ -0,0 +1,38 @@
+
+
+
+
+Canvas test: 2d.layer.global-states.alpha.filter.shadow
+2d.layer.global-states.alpha.filter.shadow
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.shadow.w.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.shadow.w.html
new file mode 100644
index 00000000000..9fac030db32
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.shadow.w.html
@@ -0,0 +1,52 @@
+
+
+
+
+
+Canvas test: 2d.layer.global-states.alpha.filter.shadow
+2d.layer.global-states.alpha.filter.shadow
+Checks that layers correctly use global render states.
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.w.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.w.html
new file mode 100644
index 00000000000..177bae4e32d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.filter.w.html
@@ -0,0 +1,48 @@
+
+
+
+
+Canvas test: 2d.layer.global-states.alpha.filter
+2d.layer.global-states.alpha.filter
+Checks that layers correctly use global render states.
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.alpha.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.html
similarity index 61%
rename from tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.alpha.html
rename to tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.html
index 90506bfb622..7064f47b20a 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.alpha.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.html
@@ -1,9 +1,9 @@
-
-Canvas test: 2d.layer.alpha
-2d.layer.alpha
-A test to make sure shadow works with layers.
+
+Canvas test: 2d.layer.global-states.alpha
+2d.layer.global-states.alpha
+Checks that layers correctly use global render states.
@@ -12,16 +12,19 @@
const ctx = offscreen_canvas.getContext('2d');
ctx.fillStyle = 'rgba(0, 0, 255, 1)';
- ctx.fillRect(50, 50, 95, 70);
+
+ var circle = new Path2D();
+ circle.arc(90, 90, 45, 0, 2 * Math.PI);
+ ctx.fill(circle);
ctx.globalAlpha = 0.6;
ctx.beginLayer();
ctx.fillStyle = 'rgba(225, 0, 0, 1)';
- ctx.fillRect(60, 40, 75, 50);
+ ctx.fillRect(50, 50, 75, 50);
ctx.fillStyle = 'rgba(0, 255, 0, 1)';
- ctx.fillRect(80, 60, 75, 50);
+ ctx.fillRect(70, 70, 75, 50);
ctx.endLayer();
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow-expected.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow-expected.html
new file mode 100644
index 00000000000..9daefc377bd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow-expected.html
@@ -0,0 +1,33 @@
+
+
+Canvas test: 2d.layer.global-states.alpha.shadow
+2d.layer.global-states.alpha.shadow
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow.html
new file mode 100644
index 00000000000..afbbac881e7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow.html
@@ -0,0 +1,36 @@
+
+
+
+Canvas test: 2d.layer.global-states.alpha.shadow
+2d.layer.global-states.alpha.shadow
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow.w.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow.w.html
new file mode 100644
index 00000000000..9e0e7099340
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow.w.html
@@ -0,0 +1,50 @@
+
+
+
+
+Canvas test: 2d.layer.global-states.alpha.shadow
+2d.layer.global-states.alpha.shadow
+Checks that layers correctly use global render states.
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.alpha.w.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.w.html
similarity index 73%
rename from tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.alpha.w.html
rename to tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.w.html
index bc9344217b1..59d528b2099 100644
--- a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.alpha.w.html
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.w.html
@@ -1,10 +1,10 @@
-
-Canvas test: 2d.layer.alpha
-2d.layer.alpha
-A test to make sure shadow works with layers.
+
+Canvas test: 2d.layer.global-states.alpha
+2d.layer.global-states.alpha
+Checks that layers correctly use global render states.
@@ -14,16 +14,19 @@
const ctx = oc.getContext('2d');
ctx.fillStyle = 'rgba(0, 0, 255, 1)';
- ctx.fillRect(50, 50, 95, 70);
+
+ var circle = new Path2D();
+ circle.arc(90, 90, 45, 0, 2 * Math.PI);
+ ctx.fill(circle);
ctx.globalAlpha = 0.6;
ctx.beginLayer();
ctx.fillStyle = 'rgba(225, 0, 0, 1)';
- ctx.fillRect(60, 40, 75, 50);
+ ctx.fillRect(50, 50, 75, 50);
ctx.fillStyle = 'rgba(0, 255, 0, 1)';
- ctx.fillRect(80, 60, 75, 50);
+ ctx.fillRect(70, 70, 75, 50);
ctx.endLayer();
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter-expected.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter-expected.html
new file mode 100644
index 00000000000..cff8783b392
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter-expected.html
@@ -0,0 +1,30 @@
+
+
+Canvas test: 2d.layer.global-states.filter
+2d.layer.global-states.filter
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.globalcompositeoperation-expected.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.globalcompositeoperation-expected.html
new file mode 100644
index 00000000000..12fc31209ac
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.globalcompositeoperation-expected.html
@@ -0,0 +1,31 @@
+
+
+Canvas test: 2d.layer.global-states.filter.globalcompositeoperation
+2d.layer.global-states.filter.globalcompositeoperation
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.globalcompositeoperation.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.globalcompositeoperation.html
new file mode 100644
index 00000000000..b3ce2285dc9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.globalcompositeoperation.html
@@ -0,0 +1,34 @@
+
+
+
+Canvas test: 2d.layer.global-states.filter.globalcompositeoperation
+2d.layer.global-states.filter.globalcompositeoperation
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.globalcompositeoperation.w.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.globalcompositeoperation.w.html
new file mode 100644
index 00000000000..6d21ffb8157
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.globalcompositeoperation.w.html
@@ -0,0 +1,48 @@
+
+
+
+
+Canvas test: 2d.layer.global-states.filter.globalcompositeoperation
+2d.layer.global-states.filter.globalcompositeoperation
+Checks that layers correctly use global render states.
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.html
new file mode 100644
index 00000000000..a36a34d78e0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.html
@@ -0,0 +1,33 @@
+
+
+
+Canvas test: 2d.layer.global-states.filter
+2d.layer.global-states.filter
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow-expected.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow-expected.html
new file mode 100644
index 00000000000..6ec9b02f7cb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow-expected.html
@@ -0,0 +1,33 @@
+
+
+Canvas test: 2d.layer.global-states.filter.shadow
+2d.layer.global-states.filter.shadow
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow.html
new file mode 100644
index 00000000000..16439c60c68
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow.html
@@ -0,0 +1,37 @@
+
+
+
+
+Canvas test: 2d.layer.global-states.filter.shadow
+2d.layer.global-states.filter.shadow
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow.w.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow.w.html
new file mode 100644
index 00000000000..7abddb27c51
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow.w.html
@@ -0,0 +1,51 @@
+
+
+
+
+
+Canvas test: 2d.layer.global-states.filter.shadow
+2d.layer.global-states.filter.shadow
+Checks that layers correctly use global render states.
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.w.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.w.html
new file mode 100644
index 00000000000..08e6c253562
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.w.html
@@ -0,0 +1,47 @@
+
+
+
+
+Canvas test: 2d.layer.global-states.filter
+2d.layer.global-states.filter
+Checks that layers correctly use global render states.
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.globalcompositeoperation-expected.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.globalcompositeoperation-expected.html
new file mode 100644
index 00000000000..7e2e021b552
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.globalcompositeoperation-expected.html
@@ -0,0 +1,30 @@
+
+
+Canvas test: 2d.layer.global-states.globalcompositeoperation
+2d.layer.global-states.globalcompositeoperation
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.globalcompositeoperation.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.globalcompositeoperation.html
new file mode 100644
index 00000000000..1be83170f11
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.globalcompositeoperation.html
@@ -0,0 +1,33 @@
+
+
+
+Canvas test: 2d.layer.global-states.globalcompositeoperation
+2d.layer.global-states.globalcompositeoperation
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.globalcompositeoperation.w.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.globalcompositeoperation.w.html
new file mode 100644
index 00000000000..7757aa5d8a9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.globalcompositeoperation.w.html
@@ -0,0 +1,47 @@
+
+
+
+
+Canvas test: 2d.layer.global-states.globalcompositeoperation
+2d.layer.global-states.globalcompositeoperation
+Checks that layers correctly use global render states.
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow-expected.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow-expected.html
new file mode 100644
index 00000000000..6787bdd1e50
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow-expected.html
@@ -0,0 +1,32 @@
+
+
+Canvas test: 2d.layer.global-states.shadow
+2d.layer.global-states.shadow
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow.html
new file mode 100644
index 00000000000..87b8224f856
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow.html
@@ -0,0 +1,35 @@
+
+
+
+Canvas test: 2d.layer.global-states.shadow
+2d.layer.global-states.shadow
+Checks that layers correctly use global render states.
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow.w.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow.w.html
new file mode 100644
index 00000000000..b8d59888729
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow.w.html
@@ -0,0 +1,49 @@
+
+
+
+
+Canvas test: 2d.layer.global-states.shadow
+2d.layer.global-states.shadow
+Checks that layers correctly use global render states.
+
+
+
+
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 097bf12483d..fdb6a390cf4 100644
--- a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py
+++ b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py
@@ -28,7 +28,7 @@
#
# * Test the tests, add new ones to Git, remove deleted ones from Git, etc.
-from typing import List, Mapping, MutableMapping, Optional
+from typing import Any, List, Mapping, MutableMapping, Optional
import re
import collections
@@ -184,7 +184,7 @@ class CanvasType(str, enum.Enum):
OFFSCREEN_CANVAS = 'offscreencanvas'
-def _get_enabled_canvas_types(test: Mapping[str, str]) -> List[CanvasType]:
+def _get_enabled_canvas_types(test: Mapping[str, Any]) -> List[CanvasType]:
return [CanvasType(t.lower()) for t in test.get('canvasType', CanvasType)]
@@ -199,7 +199,7 @@ _CANVAS_SIZE_REGEX = re.compile(r'(?P.*), (?P.*)',
re.MULTILINE | re.DOTALL)
-def _get_canvas_size(test: Mapping[str, str]):
+def _get_canvas_size(test: Mapping[str, Any]):
size = test.get('size', '100, 50')
match = _CANVAS_SIZE_REGEX.match(size)
if not match:
@@ -262,7 +262,7 @@ def _write_testharness_test(templates: Mapping[str, str],
worker_template % template_params, 'utf-8')
-def _generate_test(test: Mapping[str, str], templates: Mapping[str, str],
+def _generate_test(test: Mapping[str, Any], templates: Mapping[str, str],
sub_dir: str, html_canvas_cfg: TestConfig,
offscreen_canvas_cfg: TestConfig) -> None:
name = test['name']
@@ -448,30 +448,42 @@ def genTestUtils_union(TEMPLATEFILE: str, NAME2DIRFILE: str) -> None:
pass # Ignore if it already exists,
used_tests = collections.defaultdict(set)
- for test in tests:
- name = test['name']
- print('\r(%s)' % name, ' ' * 32, '\t')
+ for original_test in tests:
+ variants = original_test.get('variants', {'': dict()})
+ for variant_name, variant_params in variants.items():
+ test = original_test.copy()
+ if variant_name or variant_params:
+ test['name'] += '.' + variant_name
+ test['code'] = test['code'] % variant_params
+ if 'reference' in test:
+ test['reference'] = test['reference'] % variant_params
+ test.update(variant_params)
- enabled_canvas_types = _get_enabled_canvas_types(test)
+ name = test['name']
+ print('\r(%s)' % name, ' ' * 32, '\t')
- already_tested = used_tests[name].intersection(enabled_canvas_types)
- if already_tested:
- raise InvalidTestDefinitionError(
- f'Test {name} is defined twice for types {already_tested}')
- used_tests[name].update(enabled_canvas_types)
+ enabled_canvas_types = _get_enabled_canvas_types(test)
- sub_dir = _get_test_sub_dir(name, name_to_sub_dir)
- _generate_test(
- test,
- templates,
- sub_dir,
- html_canvas_cfg=TestConfig(
- out_dir=CANVASOUTPUTDIR,
- image_out_dir=CANVASIMAGEOUTPUTDIR,
- enabled=CanvasType.HTML_CANVAS in enabled_canvas_types),
- offscreen_canvas_cfg=TestConfig(
- out_dir=OFFSCREENCANVASOUTPUTDIR,
- image_out_dir=OFFSCREENCANVASIMAGEOUTPUTDIR,
- enabled=CanvasType.OFFSCREEN_CANVAS in enabled_canvas_types))
+ already_tested = used_tests[name].intersection(
+ enabled_canvas_types)
+ if already_tested:
+ raise InvalidTestDefinitionError(
+ f'Test {name} is defined twice for types {already_tested}')
+ used_tests[name].update(enabled_canvas_types)
+
+ sub_dir = _get_test_sub_dir(name, name_to_sub_dir)
+ _generate_test(
+ test,
+ templates,
+ sub_dir,
+ html_canvas_cfg=TestConfig(
+ out_dir=CANVASOUTPUTDIR,
+ image_out_dir=CANVASIMAGEOUTPUTDIR,
+ enabled=CanvasType.HTML_CANVAS in enabled_canvas_types),
+ offscreen_canvas_cfg=TestConfig(
+ out_dir=OFFSCREENCANVASOUTPUTDIR,
+ image_out_dir=OFFSCREENCANVASIMAGEOUTPUTDIR,
+ enabled=CanvasType.OFFSCREEN_CANVAS in
+ enabled_canvas_types))
print()
diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/layers.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/layers.yaml
index 7f9719fd505..51dedfd7813 100644
--- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/layers.yaml
+++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/layers.yaml
@@ -1,32 +1,84 @@
-- name: 2d.layer.alpha
- desc: A test to make sure shadow works with layers.
+- name: 2d.layer.global-states
+ desc: Checks that layers correctly use global render states.
size: 200, 200
code: |
ctx.fillStyle = 'rgba(0, 0, 255, 1)';
- ctx.fillRect(50, 50, 95, 70);
- ctx.globalAlpha = 0.6;
+ var circle = new Path2D();
+ circle.arc(90, 90, 45, 0, 2 * Math.PI);
+ ctx.fill(circle);
+
+ %(render_states)s
ctx.beginLayer();
ctx.fillStyle = 'rgba(225, 0, 0, 1)';
- ctx.fillRect(60, 40, 75, 50);
+ ctx.fillRect(50, 50, 75, 50);
ctx.fillStyle = 'rgba(0, 255, 0, 1)';
- ctx.fillRect(80, 60, 75, 50);
+ ctx.fillRect(70, 70, 75, 50);
ctx.endLayer();
reference: |
ctx.fillStyle = 'rgba(0, 0, 255, 1)';
- ctx.fillRect(50, 50, 95, 70);
- ctx.globalAlpha = 0.6;
+ var circle = new Path2D();
+ circle.arc(90, 90, 45, 0, 2 * Math.PI);
+ ctx.fill(circle);
+
+ %(render_states)s
canvas2 = document.createElement("canvas");
ctx2 = canvas2.getContext("2d");
ctx2.fillStyle = 'rgba(225, 0, 0, 1)';
- ctx2.fillRect(60, 40, 75, 50);
+ ctx2.fillRect(50, 50, 75, 50);
ctx2.fillStyle = 'rgba(0, 255, 0, 1)';
- ctx2.fillRect(80, 60, 75, 50);
+ ctx2.fillRect(70, 70, 75, 50);
ctx.drawImage(canvas2, 0, 0);
+ variants:
+ alpha:
+ render_states: ctx.globalAlpha = 0.6;
+ globalcompositeoperation:
+ render_states: ctx.globalCompositeOperation = 'source-in';
+ shadow:
+ render_states: |-
+ ctx.shadowOffsetX = -10;
+ ctx.shadowOffsetY = 10;
+ ctx.shadowColor = 'orange';
+ filter:
+ render_states: ctx.filter = 'sepia(1) opacity(30%)';
+ alpha.shadow:
+ render_states: |-
+ ctx.globalAlpha = 0.5;
+ ctx.shadowOffsetX = -10;
+ ctx.shadowOffsetY = 10;
+ ctx.shadowColor = 'orange';
+ alpha.filter:
+ render_states: |-
+ ctx.globalAlpha = 0.6;
+ ctx.filter = 'drop-shadow(-9px 9px 0px #e81)';
+ alpha.filter.shadow:
+ fuzzy: maxDifference=0-2; totalPixels=0-5824
+ render_states: |-
+ ctx.globalAlpha = 0.5;
+ ctx.filter = 'sepia(0.5)';
+ ctx.shadowOffsetX = -10;
+ ctx.shadowOffsetY = 10;
+ ctx.shadowColor = 'orange';
+ alpha.filter.globalcompositeoperation:
+ render_states: |-
+ ctx.globalAlpha = 0.6;
+ ctx.globalCompositeOperation = 'source-in';
+ ctx.filter = 'drop-shadow(-9px 9px 0px #e81)';
+ filter.shadow:
+ fuzzy: maxDifference=0-1; totalPixels=0-49
+ render_states: |-
+ ctx.filter = 'sepia(1) opacity(70%)';
+ ctx.shadowOffsetX = -10;
+ ctx.shadowOffsetY = 10;
+ ctx.shadowColor = 'rgba(0,1,0,0.5)';
+ filter.globalcompositeoperation:
+ render_states: |-
+ ctx.globalCompositeOperation = 'source-in';
+ ctx.filter = 'drop-shadow(-9px 9px 0px #e81)';
diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/document-with-fragment-top.html b/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/document-with-fragment-top.html
index ea3cc41f81b..f2d2aaae609 100644
--- a/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/document-with-fragment-top.html
+++ b/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/document-with-fragment-top.html
@@ -10,9 +10,12 @@
promise_test(async () => {
await waitForLoad(window);
+ const iframe = document.querySelector('iframe');
await waitUntilStableAutofocusState();
- assert_equals(document.activeElement, document.querySelector('iframe'),
+ assert_equals(document.activeElement, iframe,
'Autofocus elements in iframes should be focused.');
+ const doc = iframe.contentDocument;
+ assert_true(!doc.querySelector(':target'));
let input = document.createElement('input');
input.autofocus = true;
diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/document-with-fragment-valid.html b/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/document-with-fragment-valid.html
index 7a7b01a21b9..5078f1a0ac3 100644
--- a/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/document-with-fragment-valid.html
+++ b/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/document-with-fragment-valid.html
@@ -21,7 +21,23 @@ promise_test(async () => {
doc.body.appendChild(input);
await waitUntilStableAutofocusState();
assert_not_equals(doc.activeElement, input);
-}, 'Autofocus elements in iframed documents with URL fragments should be skipped.');
+ iframe.remove();
+}, 'Autofocus elements in iframed documents with URL fragments should be skipped. (id matches)');
+
+promise_test(async () => {
+ let iframe = await waitForIframeLoad("resources/frame-with-a.html");
+ iframe.contentWindow.location.hash = 'anchor1';
+ await waitForEvent(iframe.contentWindow, 'hashchange');
+ const doc = iframe.contentDocument;
+ assert_true(!!doc.querySelector(':target'));
+
+ let input = doc.createElement('input');
+ input.autofocus = true;
+ doc.body.appendChild(input);
+ await waitUntilStableAutofocusState();
+ assert_not_equals(doc.activeElement, input);
+ iframe.remove();
+}, 'Autofocus elements in iframed documents with URL fragments should be skipped.(a element)');
promise_test(async () => {
let w = window.open('resources/frame-with-anchor.html');
diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/resources/frame-with-a.html b/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/resources/frame-with-a.html
new file mode 100644
index 00000000000..1f317369028
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/resources/frame-with-a.html
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/resources/utils.js b/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/resources/utils.js
index c4f38fcb209..e928e275407 100644
--- a/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/resources/utils.js
+++ b/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/resources/utils.js
@@ -39,3 +39,13 @@ async function waitUntilStableAutofocusState(w) {
// Awaiting one animation frame is an easy way to determine autofocus state.
await waitForAnimationFrame(targetWindow);
}
+
+async function waitForIframeLoad(src, w = window) {
+ const iframe = w.document.createElement("iframe");
+ let loadPromise = new Promise(resolve => {
+ iframe.addEventListener("load", () => resolve(iframe));
+ });
+ iframe.src = src;
+ w.document.body.appendChild(iframe);
+ return loadPromise;
+}
diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/spin-by-blocking-style-sheet.html b/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/spin-by-blocking-style-sheet.html
index 22a4c3573cc..fb87eca77a6 100644
--- a/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/spin-by-blocking-style-sheet.html
+++ b/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/spin-by-blocking-style-sheet.html
@@ -2,16 +2,18 @@
-
+
+
diff --git a/tests/wpt/web-platform-tests/inert/inert-inlines-around-selection-range-in-contenteditable.html b/tests/wpt/web-platform-tests/inert/inert-inlines-around-selection-range-in-contenteditable.html
new file mode 100644
index 00000000000..ff00e16a7a4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/inert/inert-inlines-around-selection-range-in-contenteditable.html
@@ -0,0 +1,94 @@
+
+
+
+
+Delete editable range around elements having inert attribute
+
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/context.any.js.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/context.any.js.ini
index 49220324f2f..03bf96ec464 100644
--- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/context.any.js.ini
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/server/context.any.js.ini
@@ -1,7 +1,3 @@
-[context.any.sharedworker-module.html]
- expected:
- if product == "firefox": TIMEOUT # https://bugzilla.mozilla.org/show_bug.cgi?id=1247687
-
[context.any.serviceworker.html]
[context]
expected:
diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-history-back-noop.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-history-back-noop.html
new file mode 100644
index 00000000000..10763c93fd2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigate-history-back-noop.html
@@ -0,0 +1,32 @@
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/abortsignal.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/abortsignal.html
new file mode 100644
index 00000000000..e6080e96ec9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/abortsignal.html
@@ -0,0 +1,49 @@
+
+Test#get_signal
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/resources/testharness.js b/tests/wpt/web-platform-tests/resources/testharness.js
index 55aaa582c53..bed115a99ce 100644
--- a/tests/wpt/web-platform-tests/resources/testharness.js
+++ b/tests/wpt/web-platform-tests/resources/testharness.js
@@ -2478,6 +2478,10 @@
this._user_defined_cleanup_count = 0;
this._done_callbacks = [];
+ if (typeof AbortController === "function") {
+ this._abortController = new AbortController();
+ }
+
// Tests declared following harness completion are likely an indication
// of a programming error, but they cannot be reported
// deterministically.
@@ -2954,6 +2958,10 @@
this.phase = this.phases.CLEANING;
+ if (this._abortController) {
+ this._abortController.abort("Test cleanup");
+ }
+
forEach(this.cleanup_callbacks,
function(cleanup_callback) {
var result;
@@ -3047,6 +3055,16 @@
test._done_callbacks.length = 0;
}
+ /**
+ * Gives an AbortSignal that will be aborted when the test finishes.
+ */
+ Test.prototype.get_signal = function() {
+ if (!this._abortController) {
+ throw new Error("AbortController is not supported in this browser");
+ }
+ return this._abortController.signal;
+ }
+
/**
* A RemoteTest object mirrors a Test object on a remote worker. The
* associated RemoteWorker updates the RemoteTest object in response to
diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-inactive.html b/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-inactive.html
index 92165d7046c..0953f1b3894 100644
--- a/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-inactive.html
+++ b/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-inactive.html
@@ -5,47 +5,86 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/subapps/add-error.tentative.https.html b/tests/wpt/web-platform-tests/subapps/add-error.tentative.https.html
index 8598f3fa35a..2cbf50836df 100644
--- a/tests/wpt/web-platform-tests/subapps/add-error.tentative.https.html
+++ b/tests/wpt/web-platform-tests/subapps/add-error.tentative.https.html
@@ -37,22 +37,22 @@ promise_test(async t => {
}, "API is only supported in top-level browsing contexts.");
promise_test(async t => {
- const same_origin_url = document.location.origin + '/sub-app';
+ const url = '/sub-app';
let subapp = {
- [same_origin_url]: { installURL: same_origin_url }
+ [url]: { "installURL": url }
};
await promise_rejects_dom(t, 'NotAllowedError', navigator.subApps.add(subapp));
}, 'Missing user activation.');
promise_test(async t => {
- const same_origin_url = document.location.origin + '/sub-app-';
+ const base_url = '/sub-app-';
let add_call_params = {};
for (let i = 0; i < 8; i++) {
- const url = same_origin_url + i;
- add_call_params[url] = { installURL: url };
+ const url = base_url + i;
+ add_call_params[url] = { "installURL": url };
}
await test_driver.bless("installing subapps", async function () {
@@ -82,8 +82,8 @@ promise_test(async t => {
};
let mocked_response = [
- { unhashedAppIdPath: url_1, resultCode: Status.FAILURE },
- { unhashedAppIdPath: url_2, resultCode: Status.FAILURE }
+ { "unhashedAppIdPath": url_1, "resultCode": Status.FAILURE },
+ { "unhashedAppIdPath": url_2, "resultCode": Status.FAILURE }
];
let expected_results = {
@@ -106,8 +106,8 @@ promise_test(async t => {
};
let mocked_response = [
- { unhashedAppIdPath: url_1, resultCode: Status.SUCCESS },
- { unhashedAppIdPath: url_2, resultCode: Status.FAILURE }
+ { "unhashedAppIdPath": url_1, "resultCode": Status.SUCCESS },
+ { "unhashedAppIdPath": url_2, "resultCode": Status.FAILURE }
];
let expected_results = {
diff --git a/tests/wpt/web-platform-tests/subapps/add-success.tentative.https.html b/tests/wpt/web-platform-tests/subapps/add-success.tentative.https.html
index 24c420666e9..2453fdbdecd 100644
--- a/tests/wpt/web-platform-tests/subapps/add-success.tentative.https.html
+++ b/tests/wpt/web-platform-tests/subapps/add-success.tentative.https.html
@@ -16,7 +16,7 @@ promise_test(async t => {
};
let mocked_response = [
- { unhashedAppIdPath: install_url, resultCode: Status.SUCCESS }
+ { "unhashedAppIdPath": install_url, "resultCode": Status.SUCCESS }
];
let expected_results = {
@@ -38,8 +38,8 @@ promise_test(async t => {
};
let mocked_response = [
- { unhashedAppIdPath: url_1, resultCode: Status.SUCCESS },
- { unhashedAppIdPath: url_2, resultCode: Status.SUCCESS }
+ { "unhashedAppIdPath": url_1, "resultCode": Status.SUCCESS },
+ { "unhashedAppIdPath": url_2, "resultCode": Status.SUCCESS }
];
let expected_results = {
diff --git a/tests/wpt/web-platform-tests/subapps/list-success.tentative.https.html b/tests/wpt/web-platform-tests/subapps/list-success.tentative.https.html
index d214b8ac14a..c1d281abc53 100644
--- a/tests/wpt/web-platform-tests/subapps/list-success.tentative.https.html
+++ b/tests/wpt/web-platform-tests/subapps/list-success.tentative.https.html
@@ -15,8 +15,8 @@ promise_test(async t => {
const url_2 = '/sub-app-2';
const mocked_response = [
- { unhashedAppIdPath: url_1, appName: "App 1" },
- { unhashedAppIdPath: url_2, appName: "App 2" },
+ { "unhashedAppIdPath": url_1, "appName": "App 1" },
+ { "unhashedAppIdPath": url_2, "appName": "App 2" },
];
let expected_results = {
diff --git a/tests/wpt/web-platform-tests/subapps/remove-error.tentative.https.html b/tests/wpt/web-platform-tests/subapps/remove-error.tentative.https.html
index e447ccede5c..e85ffd74a78 100644
--- a/tests/wpt/web-platform-tests/subapps/remove-error.tentative.https.html
+++ b/tests/wpt/web-platform-tests/subapps/remove-error.tentative.https.html
@@ -20,7 +20,7 @@ promise_test(async t => {
// At this point the iframe is detached and unloaded, and its execution
// context is gone.
- await promise_rejects_dom(t, 'NotFoundError', iframeDOMException, iframeNavigator.subApps.remove('sub-app-id'));
+ await promise_rejects_dom(t, 'NotFoundError', iframeDOMException, iframeNavigator.subApps.remove('/sub-app-id'));
}, "The object is no longer associated to a document.");
promise_test(async t => {
@@ -31,11 +31,11 @@ promise_test(async t => {
const iframeDOMException = iframe.contentWindow.DOMException;
t.add_cleanup(() => iframe.remove());
- await promise_rejects_dom(t, 'InvalidStateError', iframeDOMException, iframeNavigator.subApps.remove('sub-app-id'));
+ await promise_rejects_dom(t, 'InvalidStateError', iframeDOMException, iframeNavigator.subApps.remove('/sub-app-id'));
}, "API is only supported in top-level browsing contexts.");
promise_test(async t => {
- const full_url = document.location.origin + '/sub-app';
+ const full_url = document.location.origin + '/sub-app-id';
await promise_rejects_dom(t, 'NotSupportedError', navigator.subApps.remove(full_url));
}, 'API supports only root-relative paths.');
@@ -46,7 +46,7 @@ promise_test(async t => {
mockSubAppsService = null;
});
await createMockSubAppsService(Status.FAILURE, [], []);
- return promise_rejects_dom(t, 'OperationError', navigator.subApps.remove('sub-app-id'));
+ return promise_rejects_dom(t, 'OperationError', navigator.subApps.remove('/sub-app-id'));
}, 'Remove call failed.');
\ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/subapps/remove-success.tentative.https.html b/tests/wpt/web-platform-tests/subapps/remove-success.tentative.https.html
index a4148fd869c..ca73cbea888 100644
--- a/tests/wpt/web-platform-tests/subapps/remove-success.tentative.https.html
+++ b/tests/wpt/web-platform-tests/subapps/remove-success.tentative.https.html
@@ -6,7 +6,7 @@
\ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/wasm/jsapi/exception/constructor.tentative.any.js b/tests/wpt/web-platform-tests/wasm/jsapi/exception/constructor.tentative.any.js
index 0fd47b455e0..7ad08e1883b 100644
--- a/tests/wpt/web-platform-tests/wasm/jsapi/exception/constructor.tentative.any.js
+++ b/tests/wpt/web-platform-tests/wasm/jsapi/exception/constructor.tentative.any.js
@@ -18,8 +18,8 @@ test(() => {
}, "No arguments");
test(() => {
- const argument = new WebAssembly.Tag({ parameters: [] });
- assert_throws_js(TypeError, () => WebAssembly.Exception(argument));
+ const tag = new WebAssembly.Tag({ parameters: [] });
+ assert_throws_js(TypeError, () => WebAssembly.Exception(tag));
}, "Calling");
test(() => {
@@ -53,10 +53,10 @@ test(() => {
["i64", undefined],
];
for (const typeAndArg of typesAndArgs) {
- const exn = new WebAssembly.Tag({ parameters: [typeAndArg[0]] });
+ const tag = new WebAssembly.Tag({ parameters: [typeAndArg[0]] });
assert_throws_js(
TypeError,
- () => new WebAssembly.Exception(exn, typeAndArg[1])
+ () => new WebAssembly.Exception(tag, typeAndArg[1])
);
}
}, "Invalid exception argument");
diff --git a/tests/wpt/web-platform-tests/wasm/jsapi/exception/getArg.tentative.any.js b/tests/wpt/web-platform-tests/wasm/jsapi/exception/getArg.tentative.any.js
index 4b72c61f47b..f0a568a857f 100644
--- a/tests/wpt/web-platform-tests/wasm/jsapi/exception/getArg.tentative.any.js
+++ b/tests/wpt/web-platform-tests/wasm/jsapi/exception/getArg.tentative.any.js
@@ -43,7 +43,7 @@ test(() => {
const tag = new WebAssembly.Tag({ parameters: [] });
const exn = new WebAssembly.Exception(tag, []);
for (const value of outOfRangeValues) {
- assert_throws_js(TypeError, () => exn.getArg(tag, value));
+ assert_throws_js(RangeError, () => exn.getArg(tag, value));
}
}, "Getting out-of-range argument");
diff --git a/tests/wpt/web-platform-tests/wasm/jsapi/exception/identity.tentative.any.js b/tests/wpt/web-platform-tests/wasm/jsapi/exception/identity.tentative.any.js
new file mode 100644
index 00000000000..65787c107e3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/wasm/jsapi/exception/identity.tentative.any.js
@@ -0,0 +1,61 @@
+// META: global=window,dedicatedworker,jsshell
+// META: script=/wasm/jsapi/assertions.js
+// META: script=/wasm/jsapi/wasm-module-builder.js
+
+test(() => {
+ const tag = new WebAssembly.Tag({ parameters: ["i32"] });
+ const exn = new WebAssembly.Exception(tag, [42]);
+ const exn_same_payload = new WebAssembly.Exception(tag, [42]);
+ const exn_diff_payload = new WebAssembly.Exception(tag, [53]);
+
+ const builder = new WasmModuleBuilder();
+ const jsfuncIndex = builder.addImport("module", "jsfunc", kSig_v_v);
+ const tagIndex = builder.addImportedTag("module", "tag", kSig_v_i);
+ const imports = {
+ module: {
+ jsfunc: function() { throw exn; },
+ tag: tag
+ }
+ };
+
+ builder
+ .addFunction("catch_rethrow", kSig_v_v)
+ .addBody([
+ kExprTry, kWasmStmt,
+ kExprCallFunction, jsfuncIndex,
+ kExprCatch, tagIndex,
+ kExprDrop,
+ kExprRethrow, 0x00,
+ kExprEnd
+ ])
+ .exportFunc();
+
+ builder
+ .addFunction("catch_all_rethrow", kSig_v_v)
+ .addBody([
+ kExprTry, kWasmStmt,
+ kExprCallFunction, jsfuncIndex,
+ kExprCatchAll,
+ kExprRethrow, 0x00,
+ kExprEnd
+ ])
+ .exportFunc();
+
+ const buffer = builder.toBuffer();
+ WebAssembly.instantiate(buffer, imports).then(result => {
+ try {
+ result.instance.exports.catch_rethrow();
+ } catch (e) {
+ assert_equals(e, exn);
+ assert_not_equals(e, exn_same_payload);
+ assert_not_equals(e, exn_diff_payload);
+ }
+ try {
+ result.instance.exports.catch_all_rethrow();
+ } catch (e) {
+ assert_equals(e, exn);
+ assert_not_equals(e, exn_same_payload);
+ assert_not_equals(e, exn_diff_payload);
+ }
+ });
+}, "Identity check");
diff --git a/tests/wpt/web-platform-tests/wasm/jsapi/exception/toString.tentative.any.js b/tests/wpt/web-platform-tests/wasm/jsapi/exception/toString.tentative.any.js
index 52635186c76..00e801a6fc1 100644
--- a/tests/wpt/web-platform-tests/wasm/jsapi/exception/toString.tentative.any.js
+++ b/tests/wpt/web-platform-tests/wasm/jsapi/exception/toString.tentative.any.js
@@ -3,8 +3,8 @@
test(() => {
const argument = { parameters: [] };
const tag = new WebAssembly.Tag(argument);
- const exception = new WebAssembly.Exception(tag, []);
- assert_class_string(exception, "WebAssembly.Exception");
+ const exn = new WebAssembly.Exception(tag, []);
+ assert_class_string(exn, "WebAssembly.Exception");
}, "Object.prototype.toString on an Exception");
test(() => {
diff --git a/tests/wpt/web-platform-tests/wasm/jsapi/wasm-module-builder.js b/tests/wpt/web-platform-tests/wasm/jsapi/wasm-module-builder.js
index 7be72f86dae..86d836a5a37 100644
--- a/tests/wpt/web-platform-tests/wasm/jsapi/wasm-module-builder.js
+++ b/tests/wpt/web-platform-tests/wasm/jsapi/wasm-module-builder.js
@@ -65,7 +65,7 @@ let kElementSectionCode = 9; // Elements section
let kCodeSectionCode = 10; // Function code
let kDataSectionCode = 11; // Data segments
let kDataCountSectionCode = 12; // Data segment count (between Element & Code)
-let kExceptionSectionCode = 13; // Exception section (between Global & Export)
+let kTagSectionCode = 13; // Tag section (between Memory & Global)
// Name section types
let kModuleNameCode = 0;
@@ -104,13 +104,13 @@ let kExternalFunction = 0;
let kExternalTable = 1;
let kExternalMemory = 2;
let kExternalGlobal = 3;
-let kExternalException = 4;
+let kExternalTag = 4;
let kTableZero = 0;
let kMemoryZero = 0;
let kSegmentZero = 0;
-let kExceptionAttribute = 0;
+let kTagAttribute = 0;
// Useful signatures
let kSig_i_i = makeSig([kWasmI32], [kWasmI32]);
@@ -681,7 +681,7 @@ class WasmModuleBuilder {
this.exports = [];
this.globals = [];
this.tables = [];
- this.exceptions = [];
+ this.tags = [];
this.functions = [];
this.element_segments = [];
this.data_segments = [];
@@ -689,7 +689,7 @@ class WasmModuleBuilder {
this.num_imported_funcs = 0;
this.num_imported_globals = 0;
this.num_imported_tables = 0;
- this.num_imported_exceptions = 0;
+ this.num_imported_tags = 0;
return this;
}
@@ -752,10 +752,10 @@ class WasmModuleBuilder {
return table;
}
- addException(type) {
+ addTag(type) {
let type_index = (typeof type) == "number" ? type : this.addType(type);
- let except_index = this.exceptions.length + this.num_imported_exceptions;
- this.exceptions.push(type_index);
+ let except_index = this.tags.length + this.num_imported_tags;
+ this.tags.push(type_index);
return except_index;
}
@@ -804,14 +804,14 @@ class WasmModuleBuilder {
return this.num_imported_tables++;
}
- addImportedException(module, name, type) {
- if (this.exceptions.length != 0) {
- throw new Error('Imported exceptions must be declared before local ones');
+ addImportedTag(module, name, type) {
+ if (this.tags.length != 0) {
+ throw new Error('Imported tags must be declared before local ones');
}
let type_index = (typeof type) == "number" ? type : this.addType(type);
- let o = {module: module, name: name, kind: kExternalException, type: type_index};
+ let o = {module: module, name: name, kind: kExternalTag, type: type_index};
this.imports.push(o);
- return this.num_imported_exceptions++;
+ return this.num_imported_tags++;
}
addExport(name, index) {
@@ -938,8 +938,8 @@ class WasmModuleBuilder {
section.emit_u8(has_max ? 1 : 0); // flags
section.emit_u32v(imp.initial); // initial
if (has_max) section.emit_u32v(imp.maximum); // maximum
- } else if (imp.kind == kExternalException) {
- section.emit_u32v(kExceptionAttribute);
+ } else if (imp.kind == kExternalTag) {
+ section.emit_u32v(kTagAttribute);
section.emit_u32v(imp.type);
} else {
throw new Error("unknown/unsupported import kind " + imp.kind);
@@ -1036,13 +1036,13 @@ class WasmModuleBuilder {
});
}
- // Add exceptions.
- if (wasm.exceptions.length > 0) {
- if (debug) print("emitting exceptions @ " + binary.length);
- binary.emit_section(kExceptionSectionCode, section => {
- section.emit_u32v(wasm.exceptions.length);
- for (let type of wasm.exceptions) {
- section.emit_u32v(kExceptionAttribute);
+ // Add tags.
+ if (wasm.tags.length > 0) {
+ if (debug) print("emitting tags @ " + binary.length);
+ binary.emit_section(kTagSectionCode, section => {
+ section.emit_u32v(wasm.tags.length);
+ for (let type of wasm.tags) {
+ section.emit_u32v(kTagAttribute);
section.emit_u32v(type);
}
});
diff --git a/tests/wpt/webgl/meta/conformance2/rendering/draw-buffers.html.ini b/tests/wpt/webgl/meta/conformance2/rendering/draw-buffers.html.ini
index befc00e10bb..a5533ff0964 100644
--- a/tests/wpt/webgl/meta/conformance2/rendering/draw-buffers.html.ini
+++ b/tests/wpt/webgl/meta/conformance2/rendering/draw-buffers.html.ini
@@ -310,3 +310,6 @@
[WebGL test #52: attachment 7 should be 0,255,0,255\nat (4, 0) expected: 0,255,0,255 was 0,2,0,0]
expected: FAIL
+
+ [WebGL test #50: attachment 5 should be 0,255,0,255\nat (0, 0) expected: 0,255,0,255 was 255,0,0,0]
+ expected: FAIL