mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Auto merge of #29367 - servo:wpt_update_16-02-2023, r=servo-wpt-sync
Sync WPT with upstream (16-02-2023) Automated downstream sync of changes from upstream as of 16-02-2023 [no-wpt-sync] r? @servo-wpt-sync
This commit is contained in:
commit
658cb986b4
91 changed files with 1387 additions and 535 deletions
|
@ -1,4 +0,0 @@
|
||||||
[url-charset.window.html]
|
|
||||||
expected: TIMEOUT
|
|
||||||
[Blob charset should override any auto-detected charset.]
|
|
||||||
expected: TIMEOUT
|
|
|
@ -3783,6 +3783,20 @@
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
|
],
|
||||||
|
"root-element-display-none-crash.html": [
|
||||||
|
"fc55719c7e87bccb9d2862464b19e19112e02711",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"root-element-display-none-during-transition-crash.html": [
|
||||||
|
"19f4143aa6a4c6c8ec63206d1e94fab56f6181c6",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"css-writing-modes": {
|
"css-writing-modes": {
|
||||||
|
@ -199144,6 +199158,35 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"clip-path-svg-text-css.html": [
|
||||||
|
"8a0d7111b0c3d86cf632e1d1c98c3fcf40d5b980",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-masking/clip-path/reference/clip-path-svg-text-css-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"fuzzy": [
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
200
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
"clip-path-svg-text-font-loading.html": [
|
"clip-path-svg-text-font-loading.html": [
|
||||||
"230c36ce6e731b8303b78471454e5c78408f81d5",
|
"230c36ce6e731b8303b78471454e5c78408f81d5",
|
||||||
[
|
[
|
||||||
|
@ -276622,6 +276665,19 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"new-content-from-root-display-none.html": [
|
||||||
|
"4d2ad28b17844f0b878a408cb8c04ff895aea06c",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-view-transitions/new-content-from-root-display-none-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"new-content-has-scrollbars.html": [
|
"new-content-has-scrollbars.html": [
|
||||||
"4024952b13ac1953d9874ad08dfcd6bf08edeadd",
|
"4024952b13ac1953d9874ad08dfcd6bf08edeadd",
|
||||||
[
|
[
|
||||||
|
@ -320336,7 +320392,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"CODEOWNERS": [
|
"CODEOWNERS": [
|
||||||
"c1da5c0706ea4feb99127bf775b4e92a0f85c2f0",
|
"2372633782e226189279edc24e5c19e0fd313494",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"CODE_OF_CONDUCT.md": [
|
"CODE_OF_CONDUCT.md": [
|
||||||
|
@ -323397,12 +323453,12 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"feature-policy.https.html.headers": [
|
"feature-policy.https.html.headers": [
|
||||||
"8e976388eccff54a054dbd681be6a293f2b584b5",
|
"11bbceff0acba6f14a04c10f2da30a2122c7b311",
|
||||||
[]
|
[]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"feature-policy.sub.https.html.headers": [
|
"feature-policy.sub.https.html.headers": [
|
||||||
"78bbb8c8729dcd7940f2e8b1a582b4d78e82f929",
|
"d968517a3ad9d279164dd6d9ca366ffbb6285c75",
|
||||||
[]
|
[]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -323416,7 +323472,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"cross-origin-iframe-redirect-with-fp-delegation.https.html.headers": [
|
"cross-origin-iframe-redirect-with-fp-delegation.https.html.headers": [
|
||||||
"f3f85f9ebaaf7083dce29cd520d3ac3d10221895",
|
"28580b0a6fcbc5e88e55c528eee2039f569d09ee",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"cross-origin-navigation-redirect.https.html.headers": [
|
"cross-origin-navigation-redirect.https.html.headers": [
|
||||||
|
@ -323424,7 +323480,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"cross-origin-subresource-redirect-with-fp-delegation.https.html.headers": [
|
"cross-origin-subresource-redirect-with-fp-delegation.https.html.headers": [
|
||||||
"ed4100978494d56419dc01e4cc2ccec3407bf452",
|
"28580b0a6fcbc5e88e55c528eee2039f569d09ee",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"cross-origin-subresource-redirect.https.html.headers": [
|
"cross-origin-subresource-redirect.https.html.headers": [
|
||||||
|
@ -323497,7 +323553,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"feature-policy-with-cross-origin-subresource.html.headers": [
|
"feature-policy-with-cross-origin-subresource.html.headers": [
|
||||||
"cb6b0cfd13c291312d53b1105aed3f44c4c8cac8",
|
"4738714fb493374d67789c87bbaa0d8cd99286e8",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"http-equiv-accept-ch.html": [
|
"http-equiv-accept-ch.html": [
|
||||||
|
@ -343683,11 +343739,11 @@
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"connect-src-allow.sub.js": [
|
"connect-src-allow.sub.js": [
|
||||||
"5812faf5fa6a03b27a1f430e04fd5cc53f8aa9b7",
|
"7f0ee1f837a0b99e5e75630c9c6b10e287ae4ffa",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"connect-src-self-report-only.sub.js": [
|
"connect-src-self-report-only.sub.js": [
|
||||||
"0287f110d4c51b0aa39d90fa2f7b6676b194d81d",
|
"c62467147602801d6172cd37073e58b4422cd8b4",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"connect-src-self-report-only.sub.js.sub.headers": [
|
"connect-src-self-report-only.sub.js.sub.headers": [
|
||||||
|
@ -343695,7 +343751,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"connect-src-self.sub.js": [
|
"connect-src-self.sub.js": [
|
||||||
"fd639c29cf8912e895c8df832f5e1dce5e183655",
|
"3c3ecc01c2d75188b6b778eeb4794a6cdf2837b9",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"script-src-allow.sub.js": [
|
"script-src-allow.sub.js": [
|
||||||
|
@ -382701,6 +382757,10 @@
|
||||||
"e31282c02fdbfd08bbe80acb245bb7b85c28bee9",
|
"e31282c02fdbfd08bbe80acb245bb7b85c28bee9",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"clip-path-svg-text-css-ref.html": [
|
||||||
|
"8cf2cd253a4ba7485ad1a578f0c647972b264eae",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"clip-path-transform-mutated-001-ref.html": [
|
"clip-path-transform-mutated-001-ref.html": [
|
||||||
"f718ea6abfbab54333ba674ff0dcd320d8672bcd",
|
"f718ea6abfbab54333ba674ff0dcd320d8672bcd",
|
||||||
[]
|
[]
|
||||||
|
@ -396635,6 +396695,10 @@
|
||||||
"94280ae3affc4350e4100d6bd390fb860ffe1a5a",
|
"94280ae3affc4350e4100d6bd390fb860ffe1a5a",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"new-content-from-root-display-none-ref.html": [
|
||||||
|
"e936a779c743ae8e0b5542ee064846ddb0749553",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"new-content-has-scrollbars-ref.html": [
|
"new-content-has-scrollbars-ref.html": [
|
||||||
"eddd7330144b538455e5fa4a3609299dcb3c63c8",
|
"eddd7330144b538455e5fa4a3609299dcb3c63c8",
|
||||||
[]
|
[]
|
||||||
|
@ -422253,6 +422317,10 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"user-activation": {
|
"user-activation": {
|
||||||
|
"META.yml": [
|
||||||
|
"e50fcfc84ff1f564f6fafb4dfe267df4ffbfb971",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"resources": {
|
"resources": {
|
||||||
"child-message-event-api.html": [
|
"child-message-event-api.html": [
|
||||||
"a0001633c22d19e44c1f48ddeffa07dde1fbc436",
|
"a0001633c22d19e44c1f48ddeffa07dde1fbc436",
|
||||||
|
@ -447098,6 +447166,10 @@
|
||||||
],
|
],
|
||||||
"tentative": {
|
"tentative": {
|
||||||
"resources": {
|
"resources": {
|
||||||
|
"permissions-iframe.https.html": [
|
||||||
|
"c9907203322112ffb01a50b09541e891250c4f5e",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"requestStorageAccessForOrigin-iframe.html": [
|
"requestStorageAccessForOrigin-iframe.html": [
|
||||||
"43d16705c8515b48685420c8d14925af90afb62a",
|
"43d16705c8515b48685420c8d14925af90afb62a",
|
||||||
[]
|
[]
|
||||||
|
@ -449601,7 +449673,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"videoFrame-serialization.crossAgentCluster.serviceworker.js": [
|
"videoFrame-serialization.crossAgentCluster.serviceworker.js": [
|
||||||
"218157c5e9a130a648495e5998a74d34bd996ade",
|
"9b963610befab36124cfb2e61239253ad343a219",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"videoFrame-utils.js": [
|
"videoFrame-utils.js": [
|
||||||
|
@ -453552,8 +453624,8 @@
|
||||||
[]
|
[]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"webxr_feature_policy.https.html.headers": [
|
"webxr_permissions_policy.https.html.headers": [
|
||||||
"2c758962332e723453f31a6cb8d3dfc3ac292d44",
|
"56b8c11a5bd4013b4e9133328155dbe0e8726ec9",
|
||||||
[]
|
[]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -496912,7 +496984,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"font-feature-settings-computed.html": [
|
"font-feature-settings-computed.html": [
|
||||||
"89704ac5f477f32be76ad073b9814172e7f9bdf3",
|
"44b9d1c535a0add5530c34508c785b4a5ccad4b6",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -497360,7 +497432,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"font-variation-settings-computed.html": [
|
"font-variation-settings-computed.html": [
|
||||||
"521461657e8d4b4749042c102685c1491e67f3dd",
|
"8e72161193a27e4c342af96895bc0cc1f80922aa",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -557052,8 +557124,26 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"private-network-access": {
|
"private-network-access": {
|
||||||
|
"fetch-from-treat-as-public.https.window.js": [
|
||||||
|
"90f7feb63419d7e3c03811679644f6ccc4abd2a7",
|
||||||
|
[
|
||||||
|
"fetch/private-network-access/fetch-from-treat-as-public.https.window.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"/common/utils.js"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"resources/support.sub.js"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
"fetch.https.window.js": [
|
"fetch.https.window.js": [
|
||||||
"7a3cc20c4c573c9cda1f7f703c08d5902aa78bd0",
|
"dbc4f23f677c716ba439c508c42ee33f4b1b3233",
|
||||||
[
|
[
|
||||||
"fetch/private-network-access/fetch.https.window.html?include=baseline",
|
"fetch/private-network-access/fetch.https.window.html?include=baseline",
|
||||||
{
|
{
|
||||||
|
@ -557085,10 +557175,6 @@
|
||||||
[
|
[
|
||||||
"variant",
|
"variant",
|
||||||
"?include=from-public"
|
"?include=from-public"
|
||||||
],
|
|
||||||
[
|
|
||||||
"variant",
|
|
||||||
"?include=from-treat-as-public"
|
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -557124,10 +557210,6 @@
|
||||||
[
|
[
|
||||||
"variant",
|
"variant",
|
||||||
"?include=from-public"
|
"?include=from-public"
|
||||||
],
|
|
||||||
[
|
|
||||||
"variant",
|
|
||||||
"?include=from-treat-as-public"
|
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -557163,10 +557245,6 @@
|
||||||
[
|
[
|
||||||
"variant",
|
"variant",
|
||||||
"?include=from-public"
|
"?include=from-public"
|
||||||
],
|
|
||||||
[
|
|
||||||
"variant",
|
|
||||||
"?include=from-treat-as-public"
|
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -557202,49 +557280,6 @@
|
||||||
[
|
[
|
||||||
"variant",
|
"variant",
|
||||||
"?include=from-public"
|
"?include=from-public"
|
||||||
],
|
|
||||||
[
|
|
||||||
"variant",
|
|
||||||
"?include=from-treat-as-public"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"fetch/private-network-access/fetch.https.window.html?include=from-treat-as-public",
|
|
||||||
{
|
|
||||||
"script_metadata": [
|
|
||||||
[
|
|
||||||
"script",
|
|
||||||
"/common/subset-tests-by-key.js"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"script",
|
|
||||||
"/common/utils.js"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"script",
|
|
||||||
"resources/support.sub.js"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"variant",
|
|
||||||
"?include=baseline"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"variant",
|
|
||||||
"?include=from-local"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"variant",
|
|
||||||
"?include=from-private"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"variant",
|
|
||||||
"?include=from-public"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"variant",
|
|
||||||
"?include=from-treat-as-public"
|
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -557269,7 +557304,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"iframe.tentative.https.window.js": [
|
"iframe.tentative.https.window.js": [
|
||||||
"5636270ea63e02fbdc1cf72c8b0d3e9f79e08317",
|
"48bd6420fd9c46a758f8f1f01bf9e2263c8760e1",
|
||||||
[
|
[
|
||||||
"fetch/private-network-access/iframe.tentative.https.window.html",
|
"fetch/private-network-access/iframe.tentative.https.window.html",
|
||||||
{
|
{
|
||||||
|
@ -557313,7 +557348,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mixed-content-fetch.tentative.https.window.js": [
|
"mixed-content-fetch.tentative.https.window.js": [
|
||||||
"fb9f6a7709af5a1ffa145d220dc3f3aa7500bb15",
|
"54485dc70474023683f2a9f4f4fba1f0df0032af",
|
||||||
[
|
[
|
||||||
"fetch/private-network-access/mixed-content-fetch.tentative.https.window.html",
|
"fetch/private-network-access/mixed-content-fetch.tentative.https.window.html",
|
||||||
{
|
{
|
||||||
|
@ -557475,7 +557510,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"shared-worker-fetch.https.window.js": [
|
"shared-worker-fetch.https.window.js": [
|
||||||
"29e9f32c7e0b8102ba63435913bec49d29e1bce0",
|
"7066b359caa2ddb173a02a359d012456dd7a43a2",
|
||||||
[
|
[
|
||||||
"fetch/private-network-access/shared-worker-fetch.https.window.html",
|
"fetch/private-network-access/shared-worker-fetch.https.window.html",
|
||||||
{
|
{
|
||||||
|
@ -557511,7 +557546,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"shared-worker.https.window.js": [
|
"shared-worker.https.window.js": [
|
||||||
"91d9186860e9966a44880fc35b92e95b440af1fd",
|
"ecb70c41245e82ab89f652d0de01c1d3b1f80890",
|
||||||
[
|
[
|
||||||
"fetch/private-network-access/shared-worker.https.window.html",
|
"fetch/private-network-access/shared-worker.https.window.html",
|
||||||
{
|
{
|
||||||
|
@ -557575,7 +557610,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"worker-fetch.https.window.js": [
|
"worker-fetch.https.window.js": [
|
||||||
"7ca0b4359c3708d284ef94a7068f3c2c0b7756f9",
|
"89e0c3cf1f35f0cf741957c3eb0bff38a4705d93",
|
||||||
[
|
[
|
||||||
"fetch/private-network-access/worker-fetch.https.window.html",
|
"fetch/private-network-access/worker-fetch.https.window.html",
|
||||||
{
|
{
|
||||||
|
@ -557611,7 +557646,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"worker.https.window.js": [
|
"worker.https.window.js": [
|
||||||
"fd38f7cf70eb3909fe95fe68a43e74283be163e4",
|
"2d0dddd685cccf4d1ed4064db61ffcc1a3514f09",
|
||||||
[
|
[
|
||||||
"fetch/private-network-access/worker.https.window.html",
|
"fetch/private-network-access/worker.https.window.html",
|
||||||
{
|
{
|
||||||
|
@ -557646,8 +557681,26 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"xhr-from-treat-as-public.https.window.js": [
|
||||||
|
"04fe5449d19e5baecbb1904140b315dc18206070",
|
||||||
|
[
|
||||||
|
"fetch/private-network-access/xhr-from-treat-as-public.https.window.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"/common/utils.js"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"resources/support.sub.js"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
"xhr.https.window.js": [
|
"xhr.https.window.js": [
|
||||||
"ac811ee19aa4476626afafc2f3a2cd95d7b9e51a",
|
"4dc5da9912f1012bf72a9e689acfbc125d7c2923",
|
||||||
[
|
[
|
||||||
"fetch/private-network-access/xhr.https.window.html?include=from-local",
|
"fetch/private-network-access/xhr.https.window.html?include=from-local",
|
||||||
{
|
{
|
||||||
|
@ -557675,10 +557728,6 @@
|
||||||
[
|
[
|
||||||
"variant",
|
"variant",
|
||||||
"?include=from-public"
|
"?include=from-public"
|
||||||
],
|
|
||||||
[
|
|
||||||
"variant",
|
|
||||||
"?include=from-treat-as-public"
|
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -557710,10 +557759,6 @@
|
||||||
[
|
[
|
||||||
"variant",
|
"variant",
|
||||||
"?include=from-public"
|
"?include=from-public"
|
||||||
],
|
|
||||||
[
|
|
||||||
"variant",
|
|
||||||
"?include=from-treat-as-public"
|
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -557745,45 +557790,6 @@
|
||||||
[
|
[
|
||||||
"variant",
|
"variant",
|
||||||
"?include=from-public"
|
"?include=from-public"
|
||||||
],
|
|
||||||
[
|
|
||||||
"variant",
|
|
||||||
"?include=from-treat-as-public"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"fetch/private-network-access/xhr.https.window.html?include=from-treat-as-public",
|
|
||||||
{
|
|
||||||
"script_metadata": [
|
|
||||||
[
|
|
||||||
"script",
|
|
||||||
"/common/subset-tests-by-key.js"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"script",
|
|
||||||
"/common/utils.js"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"script",
|
|
||||||
"resources/support.sub.js"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"variant",
|
|
||||||
"?include=from-local"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"variant",
|
|
||||||
"?include=from-private"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"variant",
|
|
||||||
"?include=from-public"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"variant",
|
|
||||||
"?include=from-treat-as-public"
|
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -567919,6 +567925,13 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"opener-string.window.js": [
|
||||||
|
"a39c584d20b27b6c3a33fe0bd6ed93827afb07f6",
|
||||||
|
[
|
||||||
|
"html/browsers/windows/opener-string.window.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"post-message": {
|
"post-message": {
|
||||||
"first-party-to-first-party-cross-partition.sub.html": [
|
"first-party-to-first-party-cross-partition.sub.html": [
|
||||||
"f91d9403ea0ce424f92960ded05254c32e995430",
|
"f91d9403ea0ce424f92960ded05254c32e995430",
|
||||||
|
@ -603832,7 +603845,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"popover-attribute-basic.html": [
|
"popover-attribute-basic.html": [
|
||||||
"9b03c7bc1c65a14b2ad396713cf9203054231357",
|
"bc32c357d3a5503564282a4e3a7260fcd0ae6458",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{
|
{
|
||||||
|
@ -648240,6 +648253,179 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"task-signal-any-abort.tentative.any.js": [
|
||||||
|
"4afcde901d10cb6402a11b2b738d7a911b944b0f",
|
||||||
|
[
|
||||||
|
"scheduler/task-signal-any-abort.tentative.any.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"../dom/abort/resources/abort-signal-any-tests.js"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"scheduler/task-signal-any-abort.tentative.any.serviceworker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"../dom/abort/resources/abort-signal-any-tests.js"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"scheduler/task-signal-any-abort.tentative.any.sharedworker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"../dom/abort/resources/abort-signal-any-tests.js"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"scheduler/task-signal-any-abort.tentative.any.worker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"../dom/abort/resources/abort-signal-any-tests.js"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"task-signal-any-post-task-run-order.tentative.any.js": [
|
||||||
|
"889217b08109080bd319d4c290fff7c0cf701521",
|
||||||
|
[
|
||||||
|
"scheduler/task-signal-any-post-task-run-order.tentative.any.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"Scheduler: Tasks Run in Priority Order"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"scheduler/task-signal-any-post-task-run-order.tentative.any.serviceworker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"Scheduler: Tasks Run in Priority Order"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"scheduler/task-signal-any-post-task-run-order.tentative.any.sharedworker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"Scheduler: Tasks Run in Priority Order"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"scheduler/task-signal-any-post-task-run-order.tentative.any.worker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"title",
|
||||||
|
"Scheduler: Tasks Run in Priority Order"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"task-signal-any-priority.tentative.any.js": [
|
||||||
|
"99a7dd67b0d4a355aa5397907b55466f72e98efd",
|
||||||
|
[
|
||||||
|
"scheduler/task-signal-any-priority.tentative.any.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"scheduler/task-signal-any-priority.tentative.any.serviceworker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"scheduler/task-signal-any-priority.tentative.any.sharedworker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"scheduler/task-signal-any-priority.tentative.any.worker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"global",
|
||||||
|
"window,worker"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
"task-signal-onprioritychange.any.js": [
|
"task-signal-onprioritychange.any.js": [
|
||||||
"7f59e1f1f84ca2761195f6426ec0a0a3a2bd38b1",
|
"7f59e1f1f84ca2761195f6426ec0a0a3a2bd38b1",
|
||||||
[
|
[
|
||||||
|
@ -659067,7 +659253,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"requestStorageAccess.sub.https.window.js": [
|
"requestStorageAccess.sub.https.window.js": [
|
||||||
"a74866e56bccb7c317be56be4b9c60ce02fae187",
|
"d673ed306993334e6f2807f3a0ecf8758e8d87ea",
|
||||||
[
|
[
|
||||||
"storage-access-api/requestStorageAccess.sub.https.window.html",
|
"storage-access-api/requestStorageAccess.sub.https.window.html",
|
||||||
{
|
{
|
||||||
|
@ -666578,6 +666764,28 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
],
|
||||||
|
"top-level-storage-access-permission.sub.https.window.js": [
|
||||||
|
"466b6f3bbed03642248ce40367b0794d3b2e4eb3",
|
||||||
|
[
|
||||||
|
"top-level-storage-access-api/tentative/top-level-storage-access-permission.sub.https.window.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"/storage-access-api/helpers.js"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"/resources/testdriver.js"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"/resources/testdriver-vendor.js"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -677097,7 +677305,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"partitioned-web-locks.tentative.https.html": [
|
"partitioned-web-locks.tentative.https.html": [
|
||||||
"d2f22f196445ee944e3784b5c9c795f338ce9d1f",
|
"a426737f608e85ff4b1062a090d74648e5ad0933",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -683039,7 +683247,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"videoFrame-serialization.crossAgentCluster.https.html": [
|
"videoFrame-serialization.crossAgentCluster.https.html": [
|
||||||
"1266869783ded7ed6a96afb74416848081006b89",
|
"cb02ad4bcc3a23c33e091b887bc069fcfe6ed170",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -702608,8 +702816,8 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"webxr_feature_policy.https.html": [
|
"webxr_permissions_policy.https.html": [
|
||||||
"b493ec73cce687832cfc0784a1a798d665eb10af",
|
"9146dd88f05aebd6ed991a95ede3652a669f1a35",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
[block-in-inline-hittest-001.html]
|
||||||
|
[block-in-inline-hittest-001]
|
||||||
|
expected: FAIL
|
|
@ -29,3 +29,8 @@
|
||||||
[Property font-variation-settings value '"AB@D" 0.5']
|
[Property font-variation-settings value '"AB@D" 0.5']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property font-variation-settings value '"wght" 100, "wdth" 200' values should be sorted alphabetically by tag.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property font-variation-settings value '"wght" 100, "wdth" 200, "wght" 300, "wdth" 400' duplicate values should be removed, keeping the rightmost occurrence, and sorted alphabetically by tag.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -68,21 +68,12 @@
|
||||||
[Matching font-style: 'italic' should prefer 'oblique 20deg' over 'oblique 30deg 60deg']
|
[Matching font-style: 'italic' should prefer 'oblique 20deg' over 'oblique 30deg 60deg']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Matching font-style: 'oblique 10deg' should prefer 'oblique -50deg -20deg' over 'oblique -40deg -30deg']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Matching font-stretch: '100%' should prefer '100%' over '110% 120%']
|
[Matching font-stretch: '100%' should prefer '100%' over '110% 120%']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Matching font-style: 'oblique 0deg' should prefer 'oblique 5deg' over 'oblique 15deg 20deg']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Matching font-style: 'normal' should prefer 'oblique 10deg 40deg' over 'oblique 20deg 30deg']
|
[Matching font-style: 'normal' should prefer 'oblique 10deg 40deg' over 'oblique 20deg 30deg']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Matching font-weight: '501' should prefer '450 460' over '390 410']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Matching font-weight: '399' should prefer '450 460' over '500 501']
|
[Matching font-weight: '399' should prefer '450 460' over '500 501']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -158,9 +149,6 @@
|
||||||
[Matching font-stretch: '90%' should prefer '110% 140%' over '120% 130%']
|
[Matching font-stretch: '90%' should prefer '110% 140%' over '120% 130%']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Matching font-style: 'oblique -21deg' should prefer 'oblique -10deg' over 'italic']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Matching font-style: 'oblique 21deg' should prefer 'oblique -50deg -20deg' over 'oblique -40deg -30deg']
|
[Matching font-style: 'oblique 21deg' should prefer 'oblique -50deg -20deg' over 'oblique -40deg -30deg']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -206,9 +194,6 @@
|
||||||
[Matching font-stretch: '110%' should prefer '105%' over '100%']
|
[Matching font-stretch: '110%' should prefer '105%' over '100%']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Matching font-style: 'italic' should prefer 'oblique 40deg 50deg' over 'oblique 5deg 10deg']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Matching font-style: 'italic' should prefer 'oblique 0deg' over 'oblique -60deg -30deg']
|
[Matching font-style: 'italic' should prefer 'oblique 0deg' over 'oblique -60deg -30deg']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -319,3 +304,18 @@
|
||||||
|
|
||||||
[Matching font-style: 'italic' should prefer 'oblique 5deg' over 'normal']
|
[Matching font-style: 'italic' should prefer 'oblique 5deg' over 'normal']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Matching font-weight: '400' should prefer '400' over '450 460']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Matching font-weight: '399' should prefer '200 300' over '400']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Matching font-stretch: '110%' should prefer '110% 120%' over '115% 116%']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Matching font-style: 'oblique 21deg' should prefer 'oblique 10deg' over 'italic']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Matching font-style: 'oblique 0deg' should prefer 'oblique 40deg 50deg' over 'italic']
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
[transform-scale-hittest.html]
|
[transform-scale-hittest.html]
|
||||||
[Hit test intersecting scaled box]
|
[Hit test intersecting scaled box]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Hit test within unscaled box]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -53,129 +53,6 @@
|
||||||
[background-position length(px) / events]
|
[background-position length(px) / events]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[background-color color(rgba) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-top-width length(pt) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-top-width length(pc) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-top-width length(px) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-top-width length(em) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-top-width length(ex) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-top-width length(mm) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-top-width length(cm) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-top-width length(in) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-right-width length(pt) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-right-width length(pc) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-right-width length(px) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-right-width length(em) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-right-width length(ex) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-right-width length(mm) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-right-width length(cm) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-right-width length(in) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-bottom-width length(pt) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-bottom-width length(pc) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-bottom-width length(px) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-bottom-width length(em) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-bottom-width length(ex) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-bottom-width length(mm) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-bottom-width length(cm) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-bottom-width length(in) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-left-width length(pt) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-left-width length(pc) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-left-width length(px) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-left-width length(em) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-left-width length(ex) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-left-width length(mm) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-left-width length(cm) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-left-width length(in) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-top-color color(rgba) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-right-color color(rgba) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-bottom-color color(rgba) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[border-left-color color(rgba) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[padding-bottom length(pt) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[padding-bottom length(pc) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[padding-bottom length(px) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[padding-bottom length(em) / values]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[padding-bottom length(ex) / values]
|
[padding-bottom length(ex) / values]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -325,3 +202,153 @@
|
||||||
|
|
||||||
[margin-right length(mm) / values]
|
[margin-right length(mm) / values]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[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
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
[elementFromPoint-float-in-relative.html]
|
|
||||||
[elementFromPoint-float-in-relative]
|
|
||||||
expected: FAIL
|
|
|
@ -14,17 +14,5 @@
|
||||||
[<li>Outside 3</li>]
|
[<li>Outside 3</li>]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<li>Inside 1</li>]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<li>Inside 2</li>]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<li>Inside 3</li>]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<li>Image Inside 1</li>]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<li>Image Inside 2</li>]
|
[<li>Image Inside 2</li>]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
[elementFromPoint-subpixel.html]
|
|
||||||
[Hit test top left corner of box]
|
|
||||||
expected: FAIL
|
|
|
@ -18,8 +18,5 @@
|
||||||
[test some point of the element: bottom right corner]
|
[test some point of the element: bottom right corner]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test the top of layer]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test some point of the element: top left corner]
|
[test some point of the element: top left corner]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
[elementsFromPoint-invalid-cases.html]
|
|
||||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
|
||||||
expected: FAIL
|
|
|
@ -146,3 +146,6 @@
|
||||||
|
|
||||||
[list-style-image sec-fetch-site - HTTPS downgrade-upgrade]
|
[list-style-image sec-fetch-site - HTTPS downgrade-upgrade]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[background-image sec-fetch-site - Not sent to non-trustworthy cross-site destination]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
[fetch-from-treat-as-public.https.window.html]
|
||||||
|
[treat-as-public-address to local: failed preflight.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[treat-as-public-address to private: failed preflight.]
|
||||||
|
expected: FAIL
|
|
@ -128,9 +128,6 @@
|
||||||
[https-treat-as-public to http-local: wrong targetAddressSpace "private".]
|
[https-treat-as-public to http-local: wrong targetAddressSpace "private".]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[https-treat-as-public to http-local: success.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[https-treat-as-public to http-private: wrong targetAddressSpace "local".]
|
[https-treat-as-public to http-private: wrong targetAddressSpace "local".]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -23,9 +23,6 @@
|
||||||
[treat-as-public to local: failed preflight.]
|
[treat-as-public to local: failed preflight.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[treat-as-public to local: success.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[treat-as-public to private: failed preflight.]
|
[treat-as-public to private: failed preflight.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -2,11 +2,5 @@
|
||||||
[treat-as-public to local: failed preflight.]
|
[treat-as-public to local: failed preflight.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[treat-as-public to local: success.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[treat-as-public to private: failed preflight.]
|
[treat-as-public to private: failed preflight.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[treat-as-public to private: success.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
[xhr-from-treat-as-public.https.window.html]
|
||||||
|
[treat-as-public to local: failed preflight.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[treat-as-public to private: failed preflight.]
|
||||||
|
expected: FAIL
|
|
@ -1,12 +1,13 @@
|
||||||
[failure-check-sequence.https.html]
|
[failure-check-sequence.https.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[CSP check precedes COEP check - CSP header first]
|
[CSP check precedes COEP check - CSP header first]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
[COEP check precedes X-Frame-Options check]
|
[COEP check precedes X-Frame-Options check]
|
||||||
expected: FAIL
|
expected: NOTRUN
|
||||||
|
|
||||||
[CSP check precedes COEP check - COEP header first]
|
[CSP check precedes COEP check - COEP header first]
|
||||||
expected: FAIL
|
expected: NOTRUN
|
||||||
|
|
||||||
[CSP check precedes X-Frame-Options check]
|
[CSP check precedes X-Frame-Options check]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
[iframe-src-aboutblank-navigate-immediately.html]
|
[iframe-src-aboutblank-navigate-immediately.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Navigating to a different document with window.open]
|
[Navigating to a different document with window.open]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Navigating to a different document with form submission]
|
[Navigating to a different document with form submission]
|
||||||
expected: FAIL
|
expected: NOTRUN
|
||||||
|
|
||||||
[Navigating to a different document with link click]
|
[Navigating to a different document with link click]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
[navigation-unload-same-origin-fragment.html]
|
|
||||||
[Tests that a fragment navigation in the unload handler will not block the initial navigation]
|
|
||||||
expected: FAIL
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
[navigation-unload-same-origin.window.html]
|
||||||
|
[Same-origin navigation started from unload handler must be ignored]
|
||||||
|
expected: FAIL
|
|
@ -1,4 +0,0 @@
|
||||||
[traverse-during-unload.html]
|
|
||||||
expected: TIMEOUT
|
|
||||||
[Traversing the history during unload]
|
|
||||||
expected: TIMEOUT
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
[traverse_the_history_1.html]
|
||||||
|
[Multiple history traversals from the same task]
|
||||||
|
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
||||||
[traverse_the_history_4.html]
|
|
||||||
[Multiple history traversals, last would be aborted]
|
|
||||||
expected: FAIL
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
[creating_browsing_context_test_01.html]
|
||||||
|
[first argument: absolute url]
|
||||||
|
expected: FAIL
|
|
@ -1,5 +1,5 @@
|
||||||
[embedded-opener-remove-frame.html]
|
[embedded-opener-remove-frame.html]
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[opener and "removed" embedded documents]
|
[opener and "removed" embedded documents]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
[canvas.2d.disconnected.html]
|
[canvas.2d.disconnected.html]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
[imagesmoothing.html]
|
||||||
|
[Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with stroke() and createPattern().]
|
||||||
|
expected: FAIL
|
|
@ -4,16 +4,13 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Element with tabindex should support autofocus]
|
[Element with tabindex should support autofocus]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||||
expected: NOTRUN
|
expected: FAIL
|
||||||
|
|
||||||
[Area element should support autofocus]
|
[Area element should support autofocus]
|
||||||
expected: NOTRUN
|
expected: TIMEOUT
|
||||||
|
|
||||||
[Host element with delegatesFocus should support autofocus]
|
[Host element with delegatesFocus should support autofocus]
|
||||||
expected: NOTRUN
|
expected: FAIL
|
||||||
|
|
||||||
[Non-HTMLElement should not support autofocus]
|
|
||||||
expected: NOTRUN
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
[update-the-rendering.html]
|
[update-the-rendering.html]
|
||||||
|
expected: TIMEOUT
|
||||||
["Flush autofocus candidates" should be happen after the first animation frame callbacks, and before a resize event in the next iteration of window event loop.]
|
["Flush autofocus candidates" should be happen after the first animation frame callbacks, and before a resize event in the next iteration of window event loop.]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
["Flush autofocus candidates" should be happen before a scroll event and animation frame callbacks]
|
["Flush autofocus candidates" should be happen before a scroll event and animation frame callbacks]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[iframe_sandbox_popups_escaping-1.html]
|
[iframe_sandbox_popups_escaping-1.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
|
expected: CRASH
|
||||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[iframe_sandbox_popups_nonescaping-2.html]
|
[iframe_sandbox_popups_nonescaping-2.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: NOTRUN
|
expected: FAIL
|
||||||
|
|
|
@ -17,9 +17,6 @@
|
||||||
[application/x-www-form-urlencoded: 0x00 in filename (normal form)]
|
[application/x-www-form-urlencoded: 0x00 in filename (normal form)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[application/x-www-form-urlencoded: 0x00 in filename (formdata event)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[application/x-www-form-urlencoded: \\n in name (normal form)]
|
[application/x-www-form-urlencoded: \\n in name (normal form)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
[historical.html]
|
|
||||||
[<input name=isindex> should not be supported]
|
|
||||||
expected: FAIL
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
[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
|
|
@ -8,10 +8,10 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Check that rel=noopener with target=_top does a normal load]
|
[Check that rel=noopener with target=_top does a normal load]
|
||||||
expected: NOTRUN
|
expected: FAIL
|
||||||
|
|
||||||
[Check that rel=noopener with target=_parent does a normal load]
|
[Check that rel=noopener with target=_parent does a normal load]
|
||||||
expected: NOTRUN
|
expected: FAIL
|
||||||
|
|
||||||
[Check that rel=noopener with target=_self does a normal load]
|
[Check that rel=noopener with target=_self does a normal load]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[import-meta-url.html]
|
[import-meta-url.html]
|
||||||
|
expected: ERROR
|
||||||
[import.meta.url at top-level module DedicatedWorker]
|
[import.meta.url at top-level module DedicatedWorker]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
[DOMContentLoaded-defer.html]
|
||||||
|
[The end: DOMContentLoaded and defer scripts]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
||||||
|
[module-tla-delayed.html]
|
||||||
|
[document.write in an imported module]
|
||||||
|
expected: FAIL
|
|
@ -3,6 +3,3 @@
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||||
expected: TIMEOUT
|
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
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
[promise-rejection-events.html]
|
[promise-rejection-events.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
|
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[unhandledrejection: from createImageBitmap which is UA triggered]
|
[unhandledrejection: from createImageBitmap which is UA triggered]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -94,10 +94,10 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[mime-type 16 : text/html;charset=\x0bgbk]
|
[mime-type 16 : text/html;charset=\x0bgbk]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
[mime-type 17 : text/html;charset=\x0cgbk]
|
[mime-type 17 : text/html;charset=\x0cgbk]
|
||||||
expected: TIMEOUT
|
expected: NOTRUN
|
||||||
|
|
||||||
[mime-type 18 : text/html;\x0bcharset=gbk]
|
[mime-type 18 : text/html;\x0bcharset=gbk]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
|
@ -265,10 +265,10 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[This test validates the response status of resources. 88]
|
[This test validates the response status of resources. 88]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[This test validates the response status of resources. 89]
|
[This test validates the response status of resources. 89]
|
||||||
expected: NOTRUN
|
expected: TIMEOUT
|
||||||
|
|
||||||
[This test validates the response status of resources. 90]
|
[This test validates the response status of resources. 90]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
4
tests/wpt/metadata/webmessaging/with-ports/017.html.ini
Normal file
4
tests/wpt/metadata/webmessaging/with-ports/017.html.ini
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
[017.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[origin of the script that invoked the method, about:blank]
|
||||||
|
expected: TIMEOUT
|
4
tests/wpt/metadata/webmessaging/with-ports/018.html.ini
Normal file
4
tests/wpt/metadata/webmessaging/with-ports/018.html.ini
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
[018.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[origin of the script that invoked the method, javascript:]
|
||||||
|
expected: TIMEOUT
|
|
@ -0,0 +1,4 @@
|
||||||
|
[localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[StorageKey: test 3P about:blank window opened from a 3P iframe]
|
||||||
|
expected: TIMEOUT
|
|
@ -1,4 +1,4 @@
|
||||||
[webxr_feature_policy.https.html]
|
[webxr_permissions_policy.https.html]
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
[Validate isSessionSupported behavior without xr-spatial-tracking policy]
|
[Validate isSessionSupported behavior without xr-spatial-tracking policy]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
@ -8,4 +8,3 @@
|
||||||
|
|
||||||
[Validate xr compatibility requests without xr-spatial-tracking policy]
|
[Validate xr compatibility requests without xr-spatial-tracking policy]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[Worker-constructor.html]
|
|
||||||
expected: ERROR
|
|
|
@ -1,5 +1,9 @@
|
||||||
# Prevent accidentially touching CSS subtree
|
# Prevent accidentially touching CSS subtree
|
||||||
/css/tools/apiclient/ @plinss @jgraham
|
/css/tools/apiclient/ @plinss @web-platform-tests/wpt-core-team
|
||||||
|
|
||||||
|
# Require review for changes that often need an RFC
|
||||||
|
/resources/testdriver* @web-platform-tests/wpt-core-team
|
||||||
|
/resources/testharness* @web-platform-tests/wpt-core-team
|
||||||
|
|
||||||
# Prevent accidentally touching tools/third_party
|
# Prevent accidentally touching tools/third_party
|
||||||
/tools/third_party/ @jgraham
|
/tools/third_party/ @web-platform-tests/wpt-core-team
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
Accept-CH: Sec-CH-DPR, DPR, Sec-CH-Device-Memory, Device-Memory
|
Accept-CH: Sec-CH-DPR, DPR, Sec-CH-Device-Memory, Device-Memory
|
||||||
Feature-Policy: ch-dpr *; ch-device-memory *
|
Permissions-Policy: ch-dpr=*, ch-device-memory=*
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
Accept-CH: Sec-CH-DPR, DPR, Sec-CH-Device-Memory, Device-Memory
|
Accept-CH: Sec-CH-DPR, DPR, Sec-CH-Device-Memory, Device-Memory
|
||||||
Feature-Policy: ch-dpr *;ch-device-memory *
|
Permissions-Policy: ch-dpr=*, ch-device-memory=*
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Feature-Policy: ch-device-memory *;
|
Permissions-Policy: ch-device-memory=*
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Feature-Policy: ch-device-memory *; ch-dpr 'none'; ch-viewport-width 'self'; ch-ua 'self'; ch-ua-mobile 'none'
|
Permissions-Policy: ch-device-memory=*, ch-dpr=(), ch-viewport-width=(self), ch-ua=(self), ch-ua-mobile=()
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Feature-Policy: ch-device-memory *; ch-dpr 'none'; ch-viewport-width 'self'; ch-mobile; ch-prefers-color-scheme 'none'; ch-prefers-reduced-motion 'none'; ch-viewport-height 'none'
|
Permissions-Policy: ch-device-memory=*, ch-dpr=(), ch-viewport-width=(self), ch-mobile, ch-prefers-color-scheme=(), ch-prefers-reduced-motion=(), ch-viewport-height=()
|
||||||
|
|
|
@ -68,4 +68,15 @@ promise_test(t => {
|
||||||
}, "Same-origin => cross-origin 'fetch()' in " + self.location.protocol +
|
}, "Same-origin => cross-origin 'fetch()' in " + self.location.protocol +
|
||||||
" without CSP");
|
" without CSP");
|
||||||
|
|
||||||
|
// WebSocket
|
||||||
|
promise_test(async function(t) {
|
||||||
|
let url = "wss://{{host}}:{{ports[wss][0]}}/echo";
|
||||||
|
assert_no_csp_event_for_url(t, url);
|
||||||
|
|
||||||
|
return new Promise(resolve => {
|
||||||
|
let ws = new WebSocket(url);
|
||||||
|
ws.onopen = resolve;
|
||||||
|
});
|
||||||
|
}, "WebSocket without CSP");
|
||||||
|
|
||||||
done();
|
done();
|
||||||
|
|
|
@ -77,9 +77,22 @@ promise_test(t => {
|
||||||
]);
|
]);
|
||||||
}, "Same-origin => cross-origin 'fetch()'.");
|
}, "Same-origin => cross-origin 'fetch()'.");
|
||||||
|
|
||||||
|
let websocket_url = "wss://{{host}}:{{ports[wss][0]}}/echo";
|
||||||
|
|
||||||
|
// The WebSocket URL is not the same as 'self'
|
||||||
|
promise_test(t => {
|
||||||
|
return Promise.all([
|
||||||
|
waitUntilCSPEventForURL(t, websocket_url),
|
||||||
|
new Promise(resolve => {
|
||||||
|
let ws = new WebSocket(websocket_url);
|
||||||
|
ws.onopen = resolve;
|
||||||
|
})
|
||||||
|
]);
|
||||||
|
}, "WebSocket.");
|
||||||
|
|
||||||
let expected_blocked_urls = self.XMLHttpRequest
|
let expected_blocked_urls = self.XMLHttpRequest
|
||||||
? [ fetch_cross_origin_url, xhr_cross_origin_url, redirect_url ]
|
? [ fetch_cross_origin_url, xhr_cross_origin_url, redirect_url, websocket_url ]
|
||||||
: [ fetch_cross_origin_url, redirect_url ];
|
: [ fetch_cross_origin_url, redirect_url, websocket_url ];
|
||||||
|
|
||||||
promise_test(async t => {
|
promise_test(async t => {
|
||||||
let report_url = `{{location[server]}}/reporting/resources/report.py?` +
|
let report_url = `{{location[server]}}/reporting/resources/report.py?` +
|
||||||
|
|
|
@ -88,9 +88,29 @@ promise_test(t => {
|
||||||
}, "Same-origin => cross-origin 'fetch()' in " + self.location.protocol +
|
}, "Same-origin => cross-origin 'fetch()' in " + self.location.protocol +
|
||||||
" with {{GET[test-name]}}");
|
" with {{GET[test-name]}}");
|
||||||
|
|
||||||
|
|
||||||
|
let websocket_url = "wss://{{host}}:{{ports[wss][0]}}/echo";
|
||||||
|
|
||||||
|
// The WebSocket URL is not the same as 'self'
|
||||||
|
promise_test(t => {
|
||||||
|
return Promise.all([
|
||||||
|
waitUntilCSPEventForURL(t, websocket_url),
|
||||||
|
new Promise((resolve, reject) => {
|
||||||
|
// Firefox throws in the constructor, Chrome triggers the error event.
|
||||||
|
try {
|
||||||
|
let ws = new WebSocket(websocket_url);
|
||||||
|
ws.onerror = resolve;
|
||||||
|
ws.onopen = reject; // unexpected
|
||||||
|
} catch (e) {
|
||||||
|
resolve();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
]);
|
||||||
|
}, "WebSocket in " + self.location.protocol + " with {{GET[test-name]}}");
|
||||||
|
|
||||||
let expected_blocked_urls = self.XMLHttpRequest
|
let expected_blocked_urls = self.XMLHttpRequest
|
||||||
? [ fetch_cross_origin_url, xhr_cross_origin_url, redirect_url ]
|
? [ fetch_cross_origin_url, xhr_cross_origin_url, redirect_url, websocket_url ]
|
||||||
: [ fetch_cross_origin_url, redirect_url ];
|
: [ fetch_cross_origin_url, redirect_url, websocket_url ];
|
||||||
|
|
||||||
promise_test(async t => {
|
promise_test(async t => {
|
||||||
let report_url = `{{location[server]}}/reporting/resources/report.py` +
|
let report_url = `{{location[server]}}/reporting/resources/report.py` +
|
||||||
|
|
|
@ -20,13 +20,11 @@ test_computed_value('font-feature-settings', '"dlig"');
|
||||||
test_computed_value('font-feature-settings', '"smcp"');
|
test_computed_value('font-feature-settings', '"smcp"');
|
||||||
test_computed_value('font-feature-settings', '"c2sc"');
|
test_computed_value('font-feature-settings', '"c2sc"');
|
||||||
test_computed_value('font-feature-settings', '"liga" 0');
|
test_computed_value('font-feature-settings', '"liga" 0');
|
||||||
test_computed_value('font-feature-settings', '"tnum", "hist"',
|
test_computed_value('font-feature-settings', '"tnum", "hist"', '"hist", "tnum"');
|
||||||
['"tnum", "hist"', '"hist", "tnum"']);
|
|
||||||
|
|
||||||
test_computed_value('font-feature-settings', '"PKRN"');
|
test_computed_value('font-feature-settings', '"PKRN"');
|
||||||
|
|
||||||
test_computed_value('font-feature-settings', '"dlig", "smcp", "dlig" 0',
|
test_computed_value('font-feature-settings', '"dlig", "smcp", "dlig" 0', '"dlig" 0, "smcp"');
|
||||||
['"smcp", "dlig" 0', '"dlig" 0, "smcp"']);
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -23,6 +23,12 @@ test_computed_value('font-variation-settings', '"wght" 700, "wght" 500', '"wght"
|
||||||
test_computed_value('font-variation-settings', '"wght" 700, "XHGT" 0.7',
|
test_computed_value('font-variation-settings', '"wght" 700, "XHGT" 0.7',
|
||||||
['"wght" 700, "XHGT" 0.7', '"XHGT" 0.7, "wght" 700']);
|
['"wght" 700, "XHGT" 0.7', '"XHGT" 0.7, "wght" 700']);
|
||||||
|
|
||||||
|
test_computed_value('font-variation-settings', '"wght" 100, "wdth" 200', '"wdth" 200, "wght" 100',
|
||||||
|
"values should be sorted alphabetically by tag.");
|
||||||
|
|
||||||
|
test_computed_value('font-variation-settings', '"wght" 100, "wdth" 200, "wght" 300, "wdth" 400', '"wdth" 400, "wght" 300',
|
||||||
|
"duplicate values should be removed, keeping the rightmost occurrence, and sorted alphabetically by tag.");
|
||||||
|
|
||||||
test_computed_value('font-variation-settings', '"XHGT" calc(0.4 + 0.3)', '"XHGT" 0.7');
|
test_computed_value('font-variation-settings', '"XHGT" calc(0.4 + 0.3)', '"XHGT" 0.7');
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
<!doctype html>
|
||||||
|
<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#ClipPathElement">
|
||||||
|
<link rel="match" href="reference/clip-path-svg-text-css-ref.html">
|
||||||
|
<meta name="fuzzy" content="0-1;0-200">
|
||||||
|
<meta name="flags" content="ahem">
|
||||||
|
<link rel="stylesheet" href="/fonts/ahem.css" />
|
||||||
|
<style>
|
||||||
|
text {
|
||||||
|
font: 50px/1 Ahem;
|
||||||
|
text-shadow: grey 10px 10px;
|
||||||
|
fill: none;
|
||||||
|
stroke: red;
|
||||||
|
stroke-width: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<svg>
|
||||||
|
<defs>
|
||||||
|
<!-- clipPath works on raw geometry regardless of fill/stroke/shadow etc -->
|
||||||
|
<clipPath id="c">
|
||||||
|
<text x="30" y="50">Hello</text>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<rect width="200" height="100" fill="green" clip-path="url(#c)"/>
|
||||||
|
</svg>
|
|
@ -0,0 +1,16 @@
|
||||||
|
<!doctype html>
|
||||||
|
<meta name="flags" content="ahem">
|
||||||
|
<link rel="stylesheet" href="/fonts/ahem.css" />
|
||||||
|
<style>
|
||||||
|
text {
|
||||||
|
font: 50px/1 Ahem;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<svg>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="c">
|
||||||
|
<text x="30" y="50">Hello</text>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<rect width="200" height="100" fill="green" clip-path="url(#c)"/>
|
||||||
|
</svg>
|
|
@ -0,0 +1,22 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<title>View transitions: capture starts with root being display none (ref)</title>
|
||||||
|
<link rel="help" href="https://github.com/WICG/view-transitions">
|
||||||
|
<link rel="author" href="mailto:vmpstr@chromium.org">
|
||||||
|
<style>
|
||||||
|
.tb { writing-mode: horizontal-tb; }
|
||||||
|
.lr { writing-mode: vertical-lr; }
|
||||||
|
.rl { writing-mode: vertical-rl; }
|
||||||
|
.shared {
|
||||||
|
margin: 2px;
|
||||||
|
width: 100px;
|
||||||
|
height: 50px;
|
||||||
|
background: green;
|
||||||
|
contain: paint;
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class=tb><div id=one class=shared>T</div></div>
|
||||||
|
<div class=lr><div id=two class=shared>T</div></div>
|
||||||
|
<div class=rl><div id=three class=shared>T</div></div>
|
|
@ -0,0 +1,49 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html class=reftest-wait style="display: none">
|
||||||
|
<title>View transitions: capture starts with root being display none</title>
|
||||||
|
<link rel="help" href="https://github.com/WICG/view-transitions">
|
||||||
|
<link rel="author" href="mailto:vmpstr@chromium.org">
|
||||||
|
<link rel="match" href="new-content-from-root-display-none-ref.html">
|
||||||
|
<script src="/common/reftest-wait.js"></script>
|
||||||
|
<style>
|
||||||
|
.tb { writing-mode: horizontal-tb; }
|
||||||
|
.lr { writing-mode: vertical-lr; }
|
||||||
|
.rl { writing-mode: vertical-rl; }
|
||||||
|
.shared {
|
||||||
|
margin: 2px;
|
||||||
|
width: 100px;
|
||||||
|
height: 50px;
|
||||||
|
background: green;
|
||||||
|
contain: paint;
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
html::view-transition-group(root) { animation-duration: 500s; }
|
||||||
|
html::view-transition-new(root) {
|
||||||
|
animation: unset;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
html::view-transition-old(root) {
|
||||||
|
animation: unset;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class=tb><div id=one class=shared>T</div></div>
|
||||||
|
<div class=lr><div id=two class=shared>T</div></div>
|
||||||
|
<div class=rl><div id=three class=shared>T</div></div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
failIfNot(document.startViewTransition, "Missing document.startViewTransition");
|
||||||
|
|
||||||
|
async function runTest() {
|
||||||
|
let transition = document.startViewTransition(() => {
|
||||||
|
document.documentElement.style = "";
|
||||||
|
});
|
||||||
|
transition.ready.then(() => requestAnimationFrame(takeScreenshot));
|
||||||
|
}
|
||||||
|
onload = () => requestAnimationFrame(() => requestAnimationFrame(runTest));
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html class=reftest-wait>
|
||||||
|
<title>View transitions: html display none</title>
|
||||||
|
<link rel="help" href="https://github.com/WICG/view-transitions">
|
||||||
|
<link rel="author" href="mailto:vmpstr@chromium.org">
|
||||||
|
|
||||||
|
<script src="/common/reftest-wait.js"></script>
|
||||||
|
<style>
|
||||||
|
html {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
failIfNot(document.startViewTransition, "Missing document.startViewTransition");
|
||||||
|
|
||||||
|
async function runTest() {
|
||||||
|
document.startViewTransition().finished.then(takeScreenshot, takeScreenshot);
|
||||||
|
|
||||||
|
}
|
||||||
|
onload = () => requestAnimationFrame(() => requestAnimationFrame(runTest));
|
||||||
|
</script>
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html class=reftest-wait>
|
||||||
|
<title>View transitions: entry animation from root display none</title>
|
||||||
|
<link rel="help" href="https://github.com/WICG/view-transitions">
|
||||||
|
<link rel="author" href="mailto:vmpstr@chromium.org">
|
||||||
|
|
||||||
|
<script src="/common/reftest-wait.js"></script>
|
||||||
|
<style>
|
||||||
|
.hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
::view-transition-group(*) {
|
||||||
|
animation-duration: 500s
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
failIfNot(document.startViewTransition, "Missing document.startViewTransition");
|
||||||
|
|
||||||
|
async function runTest() {
|
||||||
|
transition = document.startViewTransition();
|
||||||
|
transition.ready.then(
|
||||||
|
requestAnimationFrame(() => {
|
||||||
|
document.documentElement.classList.toggle("hidden");
|
||||||
|
}));
|
||||||
|
transition.finished.then(takeScreenshot);
|
||||||
|
}
|
||||||
|
onload = () => requestAnimationFrame(() => requestAnimationFrame(runTest));
|
||||||
|
</script>
|
||||||
|
|
|
@ -0,0 +1,68 @@
|
||||||
|
// META: script=/common/utils.js
|
||||||
|
// META: script=resources/support.sub.js
|
||||||
|
//
|
||||||
|
// Spec: https://wicg.github.io/private-network-access/#integration-fetch
|
||||||
|
//
|
||||||
|
// These tests verify that documents fetched from the `local` or `private`
|
||||||
|
// address space yet carrying the `treat-as-public-address` CSP directive are
|
||||||
|
// treated as if they had been fetched from the `public` address space.
|
||||||
|
|
||||||
|
promise_test(t => fetchTest(t, {
|
||||||
|
source: {
|
||||||
|
server: Server.HTTPS_LOCAL,
|
||||||
|
treatAsPublic: true,
|
||||||
|
},
|
||||||
|
target: { server: Server.HTTPS_LOCAL },
|
||||||
|
expected: FetchTestResult.FAILURE,
|
||||||
|
}), "treat-as-public-address to local: failed preflight.");
|
||||||
|
|
||||||
|
promise_test(t => fetchTest(t, {
|
||||||
|
source: {
|
||||||
|
server: Server.HTTPS_LOCAL,
|
||||||
|
treatAsPublic: true,
|
||||||
|
},
|
||||||
|
target: {
|
||||||
|
server: Server.HTTPS_LOCAL,
|
||||||
|
behavior: {
|
||||||
|
preflight: PreflightBehavior.optionalSuccess(token()),
|
||||||
|
// Interesting: no need for CORS headers on same-origin final response.
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expected: FetchTestResult.SUCCESS,
|
||||||
|
}), "treat-as-public-address to local: success.");
|
||||||
|
|
||||||
|
promise_test(t => fetchTest(t, {
|
||||||
|
source: {
|
||||||
|
server: Server.HTTPS_LOCAL,
|
||||||
|
treatAsPublic: true,
|
||||||
|
},
|
||||||
|
target: { server: Server.HTTPS_PRIVATE },
|
||||||
|
expected: FetchTestResult.FAILURE,
|
||||||
|
}), "treat-as-public-address to private: failed preflight.");
|
||||||
|
|
||||||
|
promise_test(t => fetchTest(t, {
|
||||||
|
source: {
|
||||||
|
server: Server.HTTPS_LOCAL,
|
||||||
|
treatAsPublic: true,
|
||||||
|
},
|
||||||
|
target: {
|
||||||
|
server: Server.HTTPS_PRIVATE,
|
||||||
|
behavior: {
|
||||||
|
preflight: PreflightBehavior.optionalSuccess(token()),
|
||||||
|
response: ResponseBehavior.allowCrossOrigin(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expected: FetchTestResult.SUCCESS,
|
||||||
|
}), "treat-as-public-address to private: success.");
|
||||||
|
|
||||||
|
promise_test(t => fetchTest(t, {
|
||||||
|
source: {
|
||||||
|
server: Server.HTTPS_LOCAL,
|
||||||
|
treatAsPublic: true,
|
||||||
|
},
|
||||||
|
target: {
|
||||||
|
server: Server.HTTPS_PUBLIC,
|
||||||
|
behavior: { response: ResponseBehavior.allowCrossOrigin() },
|
||||||
|
},
|
||||||
|
expected: FetchTestResult.SUCCESS,
|
||||||
|
}), "treat-as-public-address to public: no preflight required.");
|
|
@ -5,7 +5,6 @@
|
||||||
// META: variant=?include=from-local
|
// META: variant=?include=from-local
|
||||||
// META: variant=?include=from-private
|
// META: variant=?include=from-private
|
||||||
// META: variant=?include=from-public
|
// META: variant=?include=from-public
|
||||||
// META: variant=?include=from-treat-as-public
|
|
||||||
//
|
//
|
||||||
// Spec: https://wicg.github.io/private-network-access/#integration-fetch
|
// Spec: https://wicg.github.io/private-network-access/#integration-fetch
|
||||||
//
|
//
|
||||||
|
@ -270,66 +269,3 @@ subsetTestByKey("from-public", promise_test, t => fetchTest(t, {
|
||||||
expected: FetchTestResult.SUCCESS,
|
expected: FetchTestResult.SUCCESS,
|
||||||
}), "public to public: no preflight required.");
|
}), "public to public: no preflight required.");
|
||||||
|
|
||||||
// These tests verify that documents fetched from the `local` address space yet
|
|
||||||
// carrying the `treat-as-public-address` CSP directive are treated as if they
|
|
||||||
// had been fetched from the `public` address space.
|
|
||||||
|
|
||||||
subsetTestByKey("from-treat-as-public", promise_test, t => fetchTest(t, {
|
|
||||||
source: {
|
|
||||||
server: Server.HTTPS_LOCAL,
|
|
||||||
treatAsPublic: true,
|
|
||||||
},
|
|
||||||
target: { server: Server.HTTPS_LOCAL },
|
|
||||||
expected: FetchTestResult.FAILURE,
|
|
||||||
}), "treat-as-public-address to local: failed preflight.");
|
|
||||||
|
|
||||||
subsetTestByKey("from-treat-as-public", promise_test, t => fetchTest(t, {
|
|
||||||
source: {
|
|
||||||
server: Server.HTTPS_LOCAL,
|
|
||||||
treatAsPublic: true,
|
|
||||||
},
|
|
||||||
target: {
|
|
||||||
server: Server.HTTPS_LOCAL,
|
|
||||||
behavior: {
|
|
||||||
preflight: PreflightBehavior.success(token()),
|
|
||||||
// Interesting: no need for CORS headers on same-origin final response.
|
|
||||||
},
|
|
||||||
},
|
|
||||||
expected: FetchTestResult.SUCCESS,
|
|
||||||
}), "treat-as-public-address to local: success.");
|
|
||||||
|
|
||||||
subsetTestByKey("from-treat-as-public", promise_test, t => fetchTest(t, {
|
|
||||||
source: {
|
|
||||||
server: Server.HTTPS_LOCAL,
|
|
||||||
treatAsPublic: true,
|
|
||||||
},
|
|
||||||
target: { server: Server.HTTPS_PRIVATE },
|
|
||||||
expected: FetchTestResult.FAILURE,
|
|
||||||
}), "treat-as-public-address to private: failed preflight.");
|
|
||||||
|
|
||||||
subsetTestByKey("from-treat-as-public", promise_test, t => fetchTest(t, {
|
|
||||||
source: {
|
|
||||||
server: Server.HTTPS_LOCAL,
|
|
||||||
treatAsPublic: true,
|
|
||||||
},
|
|
||||||
target: {
|
|
||||||
server: Server.HTTPS_PRIVATE,
|
|
||||||
behavior: {
|
|
||||||
preflight: PreflightBehavior.success(token()),
|
|
||||||
response: ResponseBehavior.allowCrossOrigin(),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
expected: FetchTestResult.SUCCESS,
|
|
||||||
}), "treat-as-public-address to private: success.");
|
|
||||||
|
|
||||||
subsetTestByKey("from-treat-as-public", promise_test, t => fetchTest(t, {
|
|
||||||
source: {
|
|
||||||
server: Server.HTTPS_LOCAL,
|
|
||||||
treatAsPublic: true,
|
|
||||||
},
|
|
||||||
target: {
|
|
||||||
server: Server.HTTPS_PUBLIC,
|
|
||||||
behavior: { response: ResponseBehavior.allowCrossOrigin() },
|
|
||||||
},
|
|
||||||
expected: FetchTestResult.SUCCESS,
|
|
||||||
}), "treat-as-public-address to public: no preflight required.");
|
|
||||||
|
|
|
@ -175,6 +175,18 @@ promise_test_parallel(t => iframeTest(t, {
|
||||||
expected: IframeTestResult.SUCCESS,
|
expected: IframeTestResult.SUCCESS,
|
||||||
}), "treat-as-public-address to public: no preflight required.");
|
}), "treat-as-public-address to public: no preflight required.");
|
||||||
|
|
||||||
|
promise_test_parallel(t => iframeTest(t, {
|
||||||
|
source: {
|
||||||
|
server: Server.HTTPS_LOCAL,
|
||||||
|
treatAsPublic: true,
|
||||||
|
},
|
||||||
|
target: {
|
||||||
|
server: Server.HTTPS_PUBLIC,
|
||||||
|
behavior: { preflight: PreflightBehavior.optionalSuccess(token()) }
|
||||||
|
},
|
||||||
|
expected: IframeTestResult.SUCCESS,
|
||||||
|
}), "treat-as-public-address to local: optional preflight");
|
||||||
|
|
||||||
// The following tests verify that when a grandparent frame navigates its
|
// The following tests verify that when a grandparent frame navigates its
|
||||||
// grandchild, the IP address space of the grandparent is compared against the
|
// grandchild, the IP address space of the grandparent is compared against the
|
||||||
// IP address space of the response. Indeed, the navigation initiator in this
|
// IP address space of the response. Indeed, the navigation initiator in this
|
||||||
|
|
|
@ -220,7 +220,7 @@ promise_test_parallel(t => fetchTest(t, {
|
||||||
target: {
|
target: {
|
||||||
server: Server.HTTP_LOCAL,
|
server: Server.HTTP_LOCAL,
|
||||||
behavior: {
|
behavior: {
|
||||||
preflight: PreflightBehavior.success(token()),
|
preflight: PreflightBehavior.optionalSuccess(token()),
|
||||||
response: ResponseBehavior.allowCrossOrigin(),
|
response: ResponseBehavior.allowCrossOrigin(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -236,7 +236,7 @@ promise_test_parallel(t => fetchTest(t, {
|
||||||
target: {
|
target: {
|
||||||
server: Server.HTTP_LOCAL,
|
server: Server.HTTP_LOCAL,
|
||||||
behavior: {
|
behavior: {
|
||||||
preflight: PreflightBehavior.success(token()),
|
preflight: PreflightBehavior.optionalSuccess(token()),
|
||||||
response: ResponseBehavior.allowCrossOrigin(),
|
response: ResponseBehavior.allowCrossOrigin(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -106,7 +106,7 @@ promise_test(t => sharedWorkerFetchTest(t, {
|
||||||
},
|
},
|
||||||
target: {
|
target: {
|
||||||
server: Server.HTTPS_LOCAL,
|
server: Server.HTTPS_LOCAL,
|
||||||
behavior: { preflight: PreflightBehavior.success(token()) },
|
behavior: { preflight: PreflightBehavior.optionalSuccess(token()) },
|
||||||
},
|
},
|
||||||
expected: WorkerFetchTestResult.SUCCESS,
|
expected: WorkerFetchTestResult.SUCCESS,
|
||||||
}), "treat-as-public to local: success.");
|
}), "treat-as-public to local: success.");
|
||||||
|
|
|
@ -25,7 +25,7 @@ promise_test(t => sharedWorkerScriptTest(t, {
|
||||||
},
|
},
|
||||||
target: {
|
target: {
|
||||||
server: Server.HTTPS_LOCAL,
|
server: Server.HTTPS_LOCAL,
|
||||||
behavior: { preflight: PreflightBehavior.success(token()) },
|
behavior: { preflight: PreflightBehavior.optionalSuccess(token()) },
|
||||||
},
|
},
|
||||||
expected: WorkerScriptTestResult.SUCCESS,
|
expected: WorkerScriptTestResult.SUCCESS,
|
||||||
}), "treat-as-public to local: success.");
|
}), "treat-as-public to local: success.");
|
||||||
|
@ -46,7 +46,7 @@ promise_test(t => sharedWorkerScriptTest(t, {
|
||||||
},
|
},
|
||||||
target: {
|
target: {
|
||||||
server: Server.HTTPS_PRIVATE,
|
server: Server.HTTPS_PRIVATE,
|
||||||
behavior: { preflight: PreflightBehavior.success(token()) },
|
behavior: { preflight: PreflightBehavior.optionalSuccess(token()) },
|
||||||
},
|
},
|
||||||
expected: WorkerScriptTestResult.SUCCESS,
|
expected: WorkerScriptTestResult.SUCCESS,
|
||||||
}), "treat-as-public to private: success.");
|
}), "treat-as-public to private: success.");
|
||||||
|
|
|
@ -106,7 +106,7 @@ promise_test(t => workerFetchTest(t, {
|
||||||
},
|
},
|
||||||
target: {
|
target: {
|
||||||
server: Server.HTTPS_LOCAL,
|
server: Server.HTTPS_LOCAL,
|
||||||
behavior: { preflight: PreflightBehavior.success(token()) },
|
behavior: { preflight: PreflightBehavior.optionalSuccess(token()) },
|
||||||
},
|
},
|
||||||
expected: WorkerFetchTestResult.SUCCESS,
|
expected: WorkerFetchTestResult.SUCCESS,
|
||||||
}), "treat-as-public to local: success.");
|
}), "treat-as-public to local: success.");
|
||||||
|
|
|
@ -28,7 +28,7 @@ promise_test(t => workerScriptTest(t, {
|
||||||
},
|
},
|
||||||
target: {
|
target: {
|
||||||
server: Server.HTTPS_LOCAL,
|
server: Server.HTTPS_LOCAL,
|
||||||
behavior: { preflight: PreflightBehavior.success(token()) },
|
behavior: { preflight: PreflightBehavior.optionalSuccess(token()) },
|
||||||
},
|
},
|
||||||
expected: WorkerScriptTestResult.SUCCESS,
|
expected: WorkerScriptTestResult.SUCCESS,
|
||||||
}), "treat-as-public to local: success.");
|
}), "treat-as-public to local: success.");
|
||||||
|
@ -49,7 +49,7 @@ promise_test(t => workerScriptTest(t, {
|
||||||
},
|
},
|
||||||
target: {
|
target: {
|
||||||
server: Server.HTTPS_PRIVATE,
|
server: Server.HTTPS_PRIVATE,
|
||||||
behavior: { preflight: PreflightBehavior.success(token()) },
|
behavior: { preflight: PreflightBehavior.optionalSuccess(token()) },
|
||||||
},
|
},
|
||||||
expected: WorkerScriptTestResult.SUCCESS,
|
expected: WorkerScriptTestResult.SUCCESS,
|
||||||
}), "treat-as-public to private: success.");
|
}), "treat-as-public to private: success.");
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
// META: script=/common/utils.js
|
||||||
|
// META: script=resources/support.sub.js
|
||||||
|
//
|
||||||
|
// Spec: https://wicg.github.io/private-network-access/#integration-fetch
|
||||||
|
//
|
||||||
|
// These tests verify that documents fetched from the `local` address space yet
|
||||||
|
// carrying the `treat-as-public-address` CSP directive are treated as if they
|
||||||
|
// had been fetched from the `public` address space.
|
||||||
|
|
||||||
|
promise_test(t => xhrTest(t, {
|
||||||
|
source: {
|
||||||
|
server: Server.HTTPS_LOCAL,
|
||||||
|
treatAsPublic: true,
|
||||||
|
},
|
||||||
|
target: {
|
||||||
|
server: Server.HTTPS_LOCAL,
|
||||||
|
behavior: { response: ResponseBehavior.allowCrossOrigin() },
|
||||||
|
},
|
||||||
|
expected: XhrTestResult.FAILURE,
|
||||||
|
}), "treat-as-public to local: failed preflight.");
|
||||||
|
|
||||||
|
promise_test(t => xhrTest(t, {
|
||||||
|
source: {
|
||||||
|
server: Server.HTTPS_LOCAL,
|
||||||
|
treatAsPublic: true,
|
||||||
|
},
|
||||||
|
target: {
|
||||||
|
server: Server.HTTPS_LOCAL,
|
||||||
|
behavior: {
|
||||||
|
preflight: PreflightBehavior.optionalSuccess(token()),
|
||||||
|
response: ResponseBehavior.allowCrossOrigin(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expected: XhrTestResult.SUCCESS,
|
||||||
|
}), "treat-as-public to local: success.");
|
||||||
|
|
||||||
|
promise_test(t => xhrTest(t, {
|
||||||
|
source: {
|
||||||
|
server: Server.HTTPS_LOCAL,
|
||||||
|
treatAsPublic: true,
|
||||||
|
},
|
||||||
|
target: {
|
||||||
|
server: Server.HTTPS_PRIVATE,
|
||||||
|
behavior: { response: ResponseBehavior.allowCrossOrigin() },
|
||||||
|
},
|
||||||
|
expected: XhrTestResult.FAILURE,
|
||||||
|
}), "treat-as-public to private: failed preflight.");
|
||||||
|
|
||||||
|
promise_test(t => xhrTest(t, {
|
||||||
|
source: {
|
||||||
|
server: Server.HTTPS_LOCAL,
|
||||||
|
treatAsPublic: true,
|
||||||
|
},
|
||||||
|
target: {
|
||||||
|
server: Server.HTTPS_PRIVATE,
|
||||||
|
behavior: {
|
||||||
|
preflight: PreflightBehavior.optionalSuccess(token()),
|
||||||
|
response: ResponseBehavior.allowCrossOrigin(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expected: XhrTestResult.SUCCESS,
|
||||||
|
}), "treat-as-public to private: success.");
|
||||||
|
|
||||||
|
promise_test(t => xhrTest(t, {
|
||||||
|
source: {
|
||||||
|
server: Server.HTTPS_LOCAL,
|
||||||
|
treatAsPublic: true,
|
||||||
|
},
|
||||||
|
target: {
|
||||||
|
server: Server.HTTPS_PUBLIC,
|
||||||
|
behavior: { response: ResponseBehavior.allowCrossOrigin() },
|
||||||
|
},
|
||||||
|
expected: XhrTestResult.SUCCESS,
|
||||||
|
}), "treat-as-public to public: no preflight required.");
|
|
@ -4,7 +4,6 @@
|
||||||
// META: variant=?include=from-local
|
// META: variant=?include=from-local
|
||||||
// META: variant=?include=from-private
|
// META: variant=?include=from-private
|
||||||
// META: variant=?include=from-public
|
// META: variant=?include=from-public
|
||||||
// META: variant=?include=from-treat-as-public
|
|
||||||
//
|
//
|
||||||
// Spec: https://wicg.github.io/private-network-access/#integration-fetch
|
// Spec: https://wicg.github.io/private-network-access/#integration-fetch
|
||||||
//
|
//
|
||||||
|
@ -141,73 +140,3 @@ subsetTestByKey("from-public", promise_test, t => xhrTest(t, {
|
||||||
target: { server: Server.HTTPS_PUBLIC },
|
target: { server: Server.HTTPS_PUBLIC },
|
||||||
expected: XhrTestResult.SUCCESS,
|
expected: XhrTestResult.SUCCESS,
|
||||||
}), "public to public: no preflight required.");
|
}), "public to public: no preflight required.");
|
||||||
|
|
||||||
// These tests verify that documents fetched from the `local` address space yet
|
|
||||||
// carrying the `treat-as-public-address` CSP directive are treated as if they
|
|
||||||
// had been fetched from the `public` address space.
|
|
||||||
|
|
||||||
subsetTestByKey("from-treat-as-public", promise_test, t => xhrTest(t, {
|
|
||||||
source: {
|
|
||||||
server: Server.HTTPS_LOCAL,
|
|
||||||
treatAsPublic: true,
|
|
||||||
},
|
|
||||||
target: {
|
|
||||||
server: Server.HTTPS_LOCAL,
|
|
||||||
behavior: { response: ResponseBehavior.allowCrossOrigin() },
|
|
||||||
},
|
|
||||||
expected: XhrTestResult.FAILURE,
|
|
||||||
}), "treat-as-public to local: failed preflight.");
|
|
||||||
|
|
||||||
subsetTestByKey("from-treat-as-public", promise_test, t => xhrTest(t, {
|
|
||||||
source: {
|
|
||||||
server: Server.HTTPS_LOCAL,
|
|
||||||
treatAsPublic: true,
|
|
||||||
},
|
|
||||||
target: {
|
|
||||||
server: Server.HTTPS_LOCAL,
|
|
||||||
behavior: {
|
|
||||||
preflight: PreflightBehavior.success(token()),
|
|
||||||
response: ResponseBehavior.allowCrossOrigin(),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
expected: XhrTestResult.SUCCESS,
|
|
||||||
}), "treat-as-public to local: success.");
|
|
||||||
|
|
||||||
subsetTestByKey("from-treat-as-public", promise_test, t => xhrTest(t, {
|
|
||||||
source: {
|
|
||||||
server: Server.HTTPS_LOCAL,
|
|
||||||
treatAsPublic: true,
|
|
||||||
},
|
|
||||||
target: {
|
|
||||||
server: Server.HTTPS_PRIVATE,
|
|
||||||
behavior: { response: ResponseBehavior.allowCrossOrigin() },
|
|
||||||
},
|
|
||||||
expected: XhrTestResult.FAILURE,
|
|
||||||
}), "treat-as-public to private: failed preflight.");
|
|
||||||
|
|
||||||
subsetTestByKey("from-treat-as-public", promise_test, t => xhrTest(t, {
|
|
||||||
source: {
|
|
||||||
server: Server.HTTPS_LOCAL,
|
|
||||||
treatAsPublic: true,
|
|
||||||
},
|
|
||||||
target: {
|
|
||||||
server: Server.HTTPS_PRIVATE,
|
|
||||||
behavior: {
|
|
||||||
preflight: PreflightBehavior.success(token()),
|
|
||||||
response: ResponseBehavior.allowCrossOrigin(),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
expected: XhrTestResult.SUCCESS,
|
|
||||||
}), "treat-as-public to private: success.");
|
|
||||||
|
|
||||||
subsetTestByKey("from-treat-as-public", promise_test, t => xhrTest(t, {
|
|
||||||
source: {
|
|
||||||
server: Server.HTTPS_LOCAL,
|
|
||||||
treatAsPublic: true,
|
|
||||||
},
|
|
||||||
target: {
|
|
||||||
server: Server.HTTPS_PUBLIC,
|
|
||||||
behavior: { response: ResponseBehavior.allowCrossOrigin() },
|
|
||||||
},
|
|
||||||
expected: XhrTestResult.SUCCESS,
|
|
||||||
}), "treat-as-public to public: no preflight required.");
|
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
test(t => {
|
||||||
|
const popup = window.open();
|
||||||
|
t.add_cleanup(() => popup.close());
|
||||||
|
assert_equals(popup.opener, self, "The opener of the popup is me");
|
||||||
|
assert_equals(Object.getOwnPropertyDescriptor(popup, "opener").writable, undefined);
|
||||||
|
|
||||||
|
popup.opener = "blah";
|
||||||
|
assert_equals(popup.opener, "blah", "The popup's opener is now a string");
|
||||||
|
assert_equals(Object.getOwnPropertyDescriptor(popup, "opener").writable, true);
|
||||||
|
|
||||||
|
const openerGetter = Object.getOwnPropertyDescriptor(self, "opener").get;
|
||||||
|
const popupOpener = openerGetter.call(popup);
|
||||||
|
assert_equals(popupOpener, self, "The underlying opener of the popup is still me");
|
||||||
|
}, "Setting popup.opener to a string");
|
|
@ -106,11 +106,11 @@ window.onload = () => {
|
||||||
// be invisible. Otherwise, it should be visible.
|
// be invisible. Otherwise, it should be visible.
|
||||||
const expectVisible = !nonPopover.hasAttribute('popover');
|
const expectVisible = !nonPopover.hasAttribute('popover');
|
||||||
assertPopoverVisibility(nonPopover, /*isPopover*/false, expectVisible, 'A non-popover should start out visible');
|
assertPopoverVisibility(nonPopover, /*isPopover*/false, expectVisible, 'A non-popover should start out visible');
|
||||||
assert_throws_dom("NotSupportedError",() => nonPopover.showPopover(),'Calling showPopover on a non-popover should throw NotSupportedError');
|
assert_throws_dom("InvalidStateError",() => nonPopover.showPopover(),'Calling showPopover on a non-popover should throw InvalidStateError');
|
||||||
assertPopoverVisibility(nonPopover, /*isPopover*/false, expectVisible, 'Calling showPopover on a non-popover should leave it visible');
|
assertPopoverVisibility(nonPopover, /*isPopover*/false, expectVisible, 'Calling showPopover on a non-popover should leave it visible');
|
||||||
assert_throws_dom("NotSupportedError",() => nonPopover.hidePopover(),'Calling hidePopover on a non-popover should throw NotSupportedError');
|
assert_throws_dom("InvalidStateError",() => nonPopover.hidePopover(),'Calling hidePopover on a non-popover should throw InvalidStateError');
|
||||||
assertPopoverVisibility(nonPopover, /*isPopover*/false, expectVisible, 'Calling hidePopover on a non-popover should leave it visible');
|
assertPopoverVisibility(nonPopover, /*isPopover*/false, expectVisible, 'Calling hidePopover on a non-popover should leave it visible');
|
||||||
assert_throws_dom("NotSupportedError",() => nonPopover.togglePopover(),'Calling togglePopover on a non-popover should throw NotSupportedError');
|
assert_throws_dom("InvalidStateError",() => nonPopover.togglePopover(),'Calling togglePopover on a non-popover should throw InvalidStateError');
|
||||||
assertPopoverVisibility(nonPopover, /*isPopover*/false, expectVisible, 'Calling togglePopover on a non-popover should leave it visible');
|
assertPopoverVisibility(nonPopover, /*isPopover*/false, expectVisible, 'Calling togglePopover on a non-popover should leave it visible');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
spec: https://html.spec.whatwg.org/multipage/interaction.html#tracking-user-activation
|
||||||
|
suggested_reviewers:
|
||||||
|
- marcoscaceres
|
|
@ -0,0 +1,6 @@
|
||||||
|
// META: global=window,worker
|
||||||
|
// META: script=../dom/abort/resources/abort-signal-any-tests.js
|
||||||
|
|
||||||
|
abortSignalAnySignalOnlyTests(TaskSignal);
|
||||||
|
abortSignalAnyTests(TaskSignal, AbortController);
|
||||||
|
abortSignalAnyTests(TaskSignal, TaskController);
|
|
@ -0,0 +1,73 @@
|
||||||
|
// META: title=Scheduler: Tasks Run in Priority Order
|
||||||
|
// META: global=window,worker
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
const runOrder = [];
|
||||||
|
const schedule = (id, signal) => scheduler.postTask(() => { runOrder.push(id); }, {signal});
|
||||||
|
|
||||||
|
const tasks = [];
|
||||||
|
tasks.push(schedule('B1', TaskSignal.any([], {priority: 'background'})));
|
||||||
|
tasks.push(schedule('B2', TaskSignal.any([], {priority: 'background'})));
|
||||||
|
tasks.push(schedule('UV1', TaskSignal.any([], {priority: 'user-visible'})));
|
||||||
|
tasks.push(schedule('UV2', TaskSignal.any([], {priority: 'user-visible'})));
|
||||||
|
tasks.push(schedule('UB1', TaskSignal.any([], {priority: 'user-blocking'})));
|
||||||
|
tasks.push(schedule('UB2', TaskSignal.any([], {priority: 'user-blocking'})));
|
||||||
|
|
||||||
|
await Promise.all(tasks);
|
||||||
|
|
||||||
|
assert_equals(runOrder.toString(),'UB1,UB2,UV1,UV2,B1,B2');
|
||||||
|
}, 'scheduler.postTask() tasks run in priority order with a fixed priority composite signal');
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
const runOrder = [];
|
||||||
|
const schedule = (id, priorityOrSignal) => {
|
||||||
|
if (priorityOrSignal instanceof TaskSignal) {
|
||||||
|
return scheduler.postTask(() => { runOrder.push(id); }, {signal: priorityOrSignal});
|
||||||
|
} else {
|
||||||
|
return scheduler.postTask(() => { runOrder.push(id); }, {priority: priorityOrSignal});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const controller = new TaskController({priority: 'user-blocking'});
|
||||||
|
const signal = TaskSignal.any([], {priority: controller.signal});
|
||||||
|
|
||||||
|
const tasks = [];
|
||||||
|
tasks.push(schedule('B1', signal));
|
||||||
|
tasks.push(schedule('B2', signal));
|
||||||
|
tasks.push(schedule('UV1', 'user-visible'));
|
||||||
|
tasks.push(schedule('UV2', 'user-visible'));
|
||||||
|
tasks.push(schedule('UB1', 'user-blocking'));
|
||||||
|
tasks.push(schedule('UB2', 'user-blocking'));
|
||||||
|
|
||||||
|
controller.setPriority('background');
|
||||||
|
|
||||||
|
await Promise.all(tasks);
|
||||||
|
|
||||||
|
assert_equals(runOrder.toString(),'UB1,UB2,UV1,UV2,B1,B2');
|
||||||
|
}, 'scheduler.postTask() tasks run in priority order with a dynamic priority composite signal');
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
const runOrder = [];
|
||||||
|
const schedule = (id, priorityOrSignal) => {
|
||||||
|
if (priorityOrSignal instanceof TaskSignal) {
|
||||||
|
return scheduler.postTask(() => { runOrder.push(id); }, {signal: priorityOrSignal});
|
||||||
|
} else {
|
||||||
|
return scheduler.postTask(() => { runOrder.push(id); }, {priority: priorityOrSignal});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const parentSignal = TaskSignal.any([], {priority: 'background'});
|
||||||
|
const signal = TaskSignal.any([], {priority: parentSignal});
|
||||||
|
|
||||||
|
const tasks = [];
|
||||||
|
tasks.push(schedule('B1', signal));
|
||||||
|
tasks.push(schedule('B2', signal));
|
||||||
|
tasks.push(schedule('UV1', 'user-visible'));
|
||||||
|
tasks.push(schedule('UV2', 'user-visible'));
|
||||||
|
tasks.push(schedule('UB1', 'user-blocking'));
|
||||||
|
tasks.push(schedule('UB2', 'user-blocking'));
|
||||||
|
|
||||||
|
await Promise.all(tasks);
|
||||||
|
|
||||||
|
assert_equals(runOrder.toString(),'UB1,UB2,UV1,UV2,B1,B2');
|
||||||
|
}, 'scheduler.postTask() tasks run in priority order with a composite signal whose source has fixed priority');
|
|
@ -0,0 +1,186 @@
|
||||||
|
// META: global=window,worker
|
||||||
|
|
||||||
|
test((t) => {
|
||||||
|
const signal = TaskSignal.any([]);
|
||||||
|
assert_true(signal instanceof TaskSignal);
|
||||||
|
assert_equals(signal.priority, 'user-visible');
|
||||||
|
}, "TaskSignal.any() returns a user-visible TaskSignal when no priority is specified");
|
||||||
|
|
||||||
|
test((t) => {
|
||||||
|
let signal = TaskSignal.any([], {priority: 'user-blocking'});
|
||||||
|
assert_equals(signal.priority, 'user-blocking');
|
||||||
|
|
||||||
|
signal = TaskSignal.any([], {priority: 'user-visible'});
|
||||||
|
assert_equals(signal.priority, 'user-visible');
|
||||||
|
|
||||||
|
signal = TaskSignal.any([], {priority: 'background'});
|
||||||
|
assert_equals(signal.priority, 'background');
|
||||||
|
}, "TaskSignal.any() returns a signal with the correct priority when intialized with a string");
|
||||||
|
|
||||||
|
test((t) => {
|
||||||
|
let controller = new TaskController({priority: 'user-blocking'});
|
||||||
|
let signal = TaskSignal.any([], {priority: controller.signal});
|
||||||
|
assert_equals(signal.priority, 'user-blocking');
|
||||||
|
|
||||||
|
controller = new TaskController({priority: 'user-visible'});
|
||||||
|
signal = TaskSignal.any([], {priority: controller.signal});
|
||||||
|
assert_equals(signal.priority, 'user-visible');
|
||||||
|
|
||||||
|
controller = new TaskController({priority: 'background'});
|
||||||
|
signal = TaskSignal.any([], {priority: controller.signal});
|
||||||
|
assert_equals(signal.priority, 'background');
|
||||||
|
}, "TaskSignal.any() returns a signal with the correct priority when intialized with a TaskSignal");
|
||||||
|
|
||||||
|
test((t) => {
|
||||||
|
let controller = new TaskController({priority: 'user-blocking'});
|
||||||
|
let signal = TaskSignal.any([], {priority: controller.signal});
|
||||||
|
assert_equals(signal.priority, 'user-blocking');
|
||||||
|
|
||||||
|
controller.setPriority('user-visible');
|
||||||
|
assert_equals(signal.priority, 'user-visible');
|
||||||
|
|
||||||
|
controller.setPriority('background');
|
||||||
|
assert_equals(signal.priority, 'background');
|
||||||
|
|
||||||
|
controller.setPriority('user-blocking');
|
||||||
|
assert_equals(signal.priority, 'user-blocking');
|
||||||
|
}, "TaskSignal.any() returns a signal with dynamic priority");
|
||||||
|
|
||||||
|
test((t) => {
|
||||||
|
const controller = new TaskController();
|
||||||
|
const signal = TaskSignal.any([], {priority: controller.signal});
|
||||||
|
|
||||||
|
let eventFiredCount = 0;
|
||||||
|
signal.onprioritychange = t.step_func((e) => {
|
||||||
|
assert_equals(e.target, signal,
|
||||||
|
`The event target is the signal returned by TaskSignal.any()`);
|
||||||
|
++eventFiredCount;
|
||||||
|
});
|
||||||
|
|
||||||
|
controller.setPriority('background');
|
||||||
|
assert_equals(eventFiredCount, 1);
|
||||||
|
|
||||||
|
controller.setPriority('user-visible');
|
||||||
|
assert_equals(eventFiredCount, 2);
|
||||||
|
|
||||||
|
controller.setPriority('user-blocking');
|
||||||
|
assert_equals(eventFiredCount, 3);
|
||||||
|
}, "Priority change events fire for composite signals");
|
||||||
|
|
||||||
|
|
||||||
|
test((t) => {
|
||||||
|
const controller = new TaskController();
|
||||||
|
let signal = TaskSignal.any([], {priority: controller.signal});
|
||||||
|
signal = TaskSignal.any([], {priority: signal});
|
||||||
|
signal = TaskSignal.any([], {priority: signal});
|
||||||
|
signal = TaskSignal.any([], {priority: signal});
|
||||||
|
signal = TaskSignal.any([], {priority: signal});
|
||||||
|
|
||||||
|
assert_equals(signal.priority, 'user-visible');
|
||||||
|
|
||||||
|
let eventFiredCount = 0;
|
||||||
|
signal.onprioritychange = t.step_func((e) => {
|
||||||
|
assert_equals(e.target, signal,
|
||||||
|
"The event target is the signal returned by TaskSignal.any()");
|
||||||
|
++eventFiredCount;
|
||||||
|
});
|
||||||
|
|
||||||
|
controller.setPriority('background');
|
||||||
|
assert_equals(eventFiredCount, 1);
|
||||||
|
assert_equals(signal.priority, 'background');
|
||||||
|
|
||||||
|
controller.setPriority('user-visible');
|
||||||
|
assert_equals(eventFiredCount, 2);
|
||||||
|
assert_equals(signal.priority, 'user-visible');
|
||||||
|
|
||||||
|
controller.setPriority('user-blocking');
|
||||||
|
assert_equals(eventFiredCount, 3);
|
||||||
|
assert_equals(signal.priority, 'user-blocking');
|
||||||
|
}, "Priority change events fire for composite signals with intermediate sources");
|
||||||
|
|
||||||
|
test((t) => {
|
||||||
|
const controller = new TaskController();
|
||||||
|
const signals = [];
|
||||||
|
const results = [];
|
||||||
|
|
||||||
|
let id = 0;
|
||||||
|
for (let i = 0; i < 3; i++) {
|
||||||
|
const signal = TaskSignal.any([], {priority: controller.signal});
|
||||||
|
const eventId = id++;
|
||||||
|
signal.addEventListener('prioritychange', () => {
|
||||||
|
results.push(eventId);
|
||||||
|
});
|
||||||
|
signals.push(signal);
|
||||||
|
}
|
||||||
|
for (let i = 0; i < 3; i++) {
|
||||||
|
const signal = TaskSignal.any([], {priority: signals[i]});
|
||||||
|
const eventId = id++;
|
||||||
|
signal.addEventListener('prioritychange', () => {
|
||||||
|
results.push(eventId);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
controller.setPriority('background');
|
||||||
|
assert_equals(results.toString(), '0,1,2,3,4,5')
|
||||||
|
|
||||||
|
controller.setPriority('user-blocking');
|
||||||
|
assert_equals(results.toString(), '0,1,2,3,4,5,0,1,2,3,4,5')
|
||||||
|
}, "Priority change propagates to multiple dependent signals in the right order");
|
||||||
|
|
||||||
|
test((t) => {
|
||||||
|
const controller = new TaskController();
|
||||||
|
const signal = TaskSignal.any([], {priority: controller.signal});
|
||||||
|
|
||||||
|
let fired = false;
|
||||||
|
signal.onabort = t.step_func(() => {
|
||||||
|
assert_unreached("The signal should not abort");
|
||||||
|
fired = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
controller.abort();
|
||||||
|
assert_false(fired);
|
||||||
|
}, "TaskSignal.any() does not propagate abort when not given dependent abort signals");
|
||||||
|
|
||||||
|
test((t) => {
|
||||||
|
const taskController = new TaskController();
|
||||||
|
const abortController = new AbortController();
|
||||||
|
const signal = TaskSignal.any([abortController.signal], {priority: taskController.signal});
|
||||||
|
|
||||||
|
let priorityFireCount = 0;
|
||||||
|
signal.onprioritychange = t.step_func(() => {
|
||||||
|
++priorityFireCount;
|
||||||
|
});
|
||||||
|
|
||||||
|
let abortFired = false;
|
||||||
|
signal.onabort = t.step_func(() => {
|
||||||
|
abortFired = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
taskController.setPriority('background');
|
||||||
|
assert_equals(signal.priority, 'background');
|
||||||
|
assert_equals(priorityFireCount, 1);
|
||||||
|
|
||||||
|
taskController.abort();
|
||||||
|
assert_false(abortFired, "The signal should use abortController for abort");
|
||||||
|
|
||||||
|
abortController.abort();
|
||||||
|
assert_true(abortFired);
|
||||||
|
|
||||||
|
taskController.setPriority('user-visible');
|
||||||
|
assert_equals(signal.priority, 'user-visible');
|
||||||
|
assert_equals(priorityFireCount, 2);
|
||||||
|
}, "TaskSignal.any() propagates abort and priority");
|
||||||
|
|
||||||
|
|
||||||
|
test((t) => {
|
||||||
|
const controller = new TaskController();
|
||||||
|
const signal = TaskSignal.any([AbortSignal.abort()], {priority: controller.signal});
|
||||||
|
|
||||||
|
let fired = false;
|
||||||
|
signal.onprioritychange = t.step_func(() => {
|
||||||
|
fired = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
controller.setPriority('background');
|
||||||
|
assert_true(fired);
|
||||||
|
}, "TaskSignal.any() propagates priority after returning an aborted signal");
|
|
@ -7,7 +7,10 @@
|
||||||
//
|
//
|
||||||
// testPrefix: Prefix each test case with an indicator so we know what context
|
// testPrefix: Prefix each test case with an indicator so we know what context
|
||||||
// they are run in if they are used in multiple iframes.
|
// they are run in if they are used in multiple iframes.
|
||||||
const {testPrefix} = processQueryParams();
|
//
|
||||||
|
// topLevelDocument: Keep track of if we run these tests in a nested context, we
|
||||||
|
// don't want to recurse forever.
|
||||||
|
const {testPrefix, topLevelDocument} = processQueryParams();
|
||||||
|
|
||||||
if (window !== window.top) {
|
if (window !== window.top) {
|
||||||
// WPT synthesizes a top-level HTML test for this JS file, and in that case we
|
// WPT synthesizes a top-level HTML test for this JS file, and in that case we
|
||||||
|
@ -26,10 +29,15 @@ promise_setup(async () => {
|
||||||
{ name: 'storage-access' }, 'prompt');
|
{ name: 'storage-access' }, 'prompt');
|
||||||
});
|
});
|
||||||
|
|
||||||
promise_test(t => {
|
promise_test(async t => {
|
||||||
return promise_rejects_dom(t, "NotAllowedError", document.requestStorageAccess(),
|
if (topLevelDocument) {
|
||||||
|
await document.requestStorageAccess()
|
||||||
|
.catch(t.unreached_func("document.requestStorageAccess() call should resolve in top-level frame"));
|
||||||
|
} else {
|
||||||
|
return promise_rejects_dom(t, "NotAllowedError", document.requestStorageAccess(),
|
||||||
"document.requestStorageAccess() call without user gesture");
|
"document.requestStorageAccess() call without user gesture");
|
||||||
}, "[" + testPrefix + "] document.requestStorageAccess() should be rejected with a NotAllowedError by default with no user gesture");
|
}
|
||||||
|
}, "[" + testPrefix + "] document.requestStorageAccess() should resolve in top-level frame or otherwise reject with a NotAllowedError with no user gesture");
|
||||||
|
|
||||||
promise_test(
|
promise_test(
|
||||||
async () => {
|
async () => {
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
<!doctype html>
|
||||||
|
<meta charset=utf-8>
|
||||||
|
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testdriver.js"></script>
|
||||||
|
<script src="/resources/testdriver-vendor.js"></script>
|
||||||
|
<!-- no testharnessreport.js -->
|
||||||
|
<script src="/storage-access-api/helpers.js"></script>
|
||||||
|
<div id=log></div>
|
||||||
|
<script src="/top-level-storage-access-api/top-level-storage-access-permission.sub.https.window.js"></script>
|
|
@ -0,0 +1,22 @@
|
||||||
|
// META: script=/storage-access-api/helpers.js
|
||||||
|
// META: script=/resources/testdriver.js
|
||||||
|
// META: script=/resources/testdriver-vendor.js
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
(async function() {
|
||||||
|
promise_test(async t => {
|
||||||
|
return promise_rejects_js(
|
||||||
|
t, TypeError,
|
||||||
|
navigator.permissions.query({name: 'top-level-storage-access'}),
|
||||||
|
'top-level-storage-access query without origin');
|
||||||
|
}, 'Permission queries without an origin are rejected');
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
const permission = await navigator.permissions.query({
|
||||||
|
name: 'top-level-storage-access',
|
||||||
|
requestedOrigin: 'https://test.com'
|
||||||
|
});
|
||||||
|
assert_equals(permission.name, 'top-level-storage-access');
|
||||||
|
assert_equals(permission.state, 'prompt');
|
||||||
|
}, 'Permission default state can be queried');
|
||||||
|
})();
|
|
@ -21,7 +21,7 @@ let next_lock_id = 1;
|
||||||
async function third_party_test(t) {
|
async function third_party_test(t) {
|
||||||
let target_url = HTTPS_ORIGIN + '/web-locks/resources/iframe.html';
|
let target_url = HTTPS_ORIGIN + '/web-locks/resources/iframe.html';
|
||||||
target_url = new URL(
|
target_url = new URL(
|
||||||
`./resources/partitioned-parent.html?target=${encodeURIComponent(target_url)}`,
|
`/web-locks/resources/partitioned-parent.html?target=${encodeURIComponent(target_url)}`,
|
||||||
HTTPS_NOTSAMESITE_ORIGIN + self.location.pathname);
|
HTTPS_NOTSAMESITE_ORIGIN + self.location.pathname);
|
||||||
|
|
||||||
navigator.locks.request('testLock', {mode: 'exclusive', ifAvailable: true},
|
navigator.locks.request('testLock', {mode: 'exclusive', ifAvailable: true},
|
||||||
|
@ -71,11 +71,11 @@ async function nested_iframe_test(t) {
|
||||||
let leaf_url = HTTPS_ORIGIN + '/web-locks/resources/iframe.html';
|
let leaf_url = HTTPS_ORIGIN + '/web-locks/resources/iframe.html';
|
||||||
// Wrap the child iframe in its cross-origin parent (middle).
|
// Wrap the child iframe in its cross-origin parent (middle).
|
||||||
let middle_url = new URL(
|
let middle_url = new URL(
|
||||||
`./resources/iframe-parent.html?target=${encodeURIComponent(leaf_url)}`,
|
`/web-locks/resources/iframe-parent.html?target=${encodeURIComponent(leaf_url)}`,
|
||||||
HTTPS_NOTSAMESITE_ORIGIN + self.location.pathname);
|
HTTPS_NOTSAMESITE_ORIGIN + self.location.pathname);
|
||||||
// Embed the parent iframe in the top-level site (top).
|
// Embed the parent iframe in the top-level site (top).
|
||||||
let top_url = new URL(
|
let top_url = new URL(
|
||||||
`./resources/partitioned-parent.html?target=${encodeURIComponent(middle_url)}`,
|
`/web-locks/resources/partitioned-parent.html?target=${encodeURIComponent(middle_url)}`,
|
||||||
HTTPS_ORIGIN + self.location.pathname);
|
HTTPS_ORIGIN + self.location.pathname);
|
||||||
|
|
||||||
// Request the weblock for the top-level site.
|
// Request the weblock for the top-level site.
|
||||||
|
|
|
@ -16,10 +16,29 @@
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script id='sharedWorkerCode' type='javascript/worker'>
|
<script id='sharedWorkerCode' type='javascript/worker'>
|
||||||
|
const data = new Uint8Array([
|
||||||
|
1, 2, 3, 4, 5, 6, 7, 8,
|
||||||
|
9, 10, 11, 12, 13, 14, 15, 16,
|
||||||
|
]);
|
||||||
let received = new Map();
|
let received = new Map();
|
||||||
self.onconnect = function (event) {
|
self.onconnect = function (event) {
|
||||||
const port = event.ports[0];
|
const port = event.ports[0];
|
||||||
port.onmessage = function (e) {
|
port.onmessage = function (e) {
|
||||||
|
if (e.data == 'create-frame') {
|
||||||
|
let frameOrError = null;
|
||||||
|
try {
|
||||||
|
frameOrError = new VideoFrame(data, {
|
||||||
|
timestamp: 0,
|
||||||
|
codedWidth: 2,
|
||||||
|
codedHeight: 2,
|
||||||
|
format: 'RGBA',
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
frameOrError = error
|
||||||
|
}
|
||||||
|
port.postMessage(frameOrError);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (e.data.hasOwnProperty('id')) {
|
if (e.data.hasOwnProperty('id')) {
|
||||||
port.postMessage(
|
port.postMessage(
|
||||||
received.get(e.data.id) ? 'RECEIVED' : 'NOT_RECEIVED');
|
received.get(e.data.id) ? 'RECEIVED' : 'NOT_RECEIVED');
|
||||||
|
@ -72,7 +91,7 @@ promise_test(async () => {
|
||||||
});
|
});
|
||||||
const worker = new SharedWorker(window.URL.createObjectURL(blob));
|
const worker = new SharedWorker(window.URL.createObjectURL(blob));
|
||||||
let frame = createVideoFrame(40);
|
let frame = createVideoFrame(40);
|
||||||
worker.port.postMessage({frame: frame, transfer: false});
|
worker.port.postMessage(frame);
|
||||||
worker.port.postMessage({'id': 40});
|
worker.port.postMessage({'id': 40});
|
||||||
const received = await new Promise(resolve => worker.port.onmessage = e => {
|
const received = await new Promise(resolve => worker.port.onmessage = e => {
|
||||||
resolve(e.data);
|
resolve(e.data);
|
||||||
|
@ -126,7 +145,7 @@ promise_test(async () => {
|
||||||
});
|
});
|
||||||
const worker = new SharedWorker(window.URL.createObjectURL(blob));
|
const worker = new SharedWorker(window.URL.createObjectURL(blob));
|
||||||
let frame = createVideoFrame(90);
|
let frame = createVideoFrame(90);
|
||||||
worker.port.postMessage({frame: frame, transfer: true});
|
worker.port.postMessage(frame, [frame]);
|
||||||
worker.port.postMessage({'id': 90});
|
worker.port.postMessage({'id': 90});
|
||||||
const received = await new Promise(resolve => worker.port.onmessage = e => {
|
const received = await new Promise(resolve => worker.port.onmessage = e => {
|
||||||
resolve(e.data);
|
resolve(e.data);
|
||||||
|
@ -147,6 +166,28 @@ promise_test(async () => {
|
||||||
assert_equals(received, 'NOT_RECEIVED');
|
assert_equals(received, 'NOT_RECEIVED');
|
||||||
}, 'Verify frames cannot be transferred to serviceworker');
|
}, 'Verify frames cannot be transferred to serviceworker');
|
||||||
|
|
||||||
|
promise_test(async () => {
|
||||||
|
const blob = new Blob([document.querySelector('#sharedWorkerCode').textContent], {
|
||||||
|
type: 'text/javascript',
|
||||||
|
});
|
||||||
|
const worker = new SharedWorker(window.URL.createObjectURL(blob));
|
||||||
|
worker.port.postMessage('create-frame');
|
||||||
|
const received = await new Promise(resolve => worker.port.onmessage = e => {
|
||||||
|
resolve(e.data);
|
||||||
|
});
|
||||||
|
assert_true(received instanceof ReferenceError);
|
||||||
|
}, 'Verify frames is unavailable in sharedworker');
|
||||||
|
|
||||||
|
promise_test(async () => {
|
||||||
|
navigator.serviceWorker.register('videoFrame-serialization.crossAgentCluster.serviceworker.js');
|
||||||
|
let registration = await navigator.serviceWorker.ready;
|
||||||
|
registration.active.postMessage('create-frame');
|
||||||
|
const received = await new Promise(resolve => navigator.serviceWorker.onmessage = (e) => {
|
||||||
|
resolve(e.data);
|
||||||
|
});
|
||||||
|
assert_true(received instanceof ReferenceError);
|
||||||
|
}, 'Verify frames is unavailable in serviceworker');
|
||||||
|
|
||||||
function appendIframe(src) {
|
function appendIframe(src) {
|
||||||
const frame = document.createElement('iframe');
|
const frame = document.createElement('iframe');
|
||||||
document.body.appendChild(frame);
|
document.body.appendChild(frame);
|
||||||
|
|
|
@ -1,5 +1,24 @@
|
||||||
|
const data = new Uint8Array([
|
||||||
|
1, 2, 3, 4, 5, 6, 7, 8,
|
||||||
|
9, 10, 11, 12, 13, 14, 15, 16,
|
||||||
|
]);
|
||||||
let received = new Map();
|
let received = new Map();
|
||||||
self.onmessage = (e) => {
|
self.onmessage = (e) => {
|
||||||
|
if (e.data == 'create-frame') {
|
||||||
|
let frameOrError = null;
|
||||||
|
try {
|
||||||
|
frameOrError = new VideoFrame(data, {
|
||||||
|
timestamp: 0,
|
||||||
|
codedWidth: 2,
|
||||||
|
codedHeight: 2,
|
||||||
|
format: 'RGBA',
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
frameOrError = error
|
||||||
|
}
|
||||||
|
e.source.postMessage(frameOrError);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (e.data.hasOwnProperty('id')) {
|
if (e.data.hasOwnProperty('id')) {
|
||||||
e.source.postMessage(
|
e.source.postMessage(
|
||||||
received.get(e.data.id) ? 'RECEIVED' : 'NOT_RECEIVED');
|
received.get(e.data.id) ? 'RECEIVED' : 'NOT_RECEIVED');
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
Feature-Policy: xr-spatial-tracking 'none'
|
|
|
@ -13,7 +13,7 @@ xr_promise_test(
|
||||||
return navigator.xr.isSessionSupported("inline").then((supported) => {
|
return navigator.xr.isSessionSupported("inline").then((supported) => {
|
||||||
t.step(() => {
|
t.step(() => {
|
||||||
assert_true(supported,
|
assert_true(supported,
|
||||||
"inline should always be supported, even without feature policy");
|
"inline should always be supported, even without permissions policy");
|
||||||
});
|
});
|
||||||
|
|
||||||
// It shouldn't matter that there's no device connected, the SecurityError
|
// It shouldn't matter that there's no device connected, the SecurityError
|
||||||
|
@ -42,11 +42,11 @@ xr_promise_test(
|
||||||
|
|
||||||
promise_rejects_dom(t, "NotSupportedError",
|
promise_rejects_dom(t, "NotSupportedError",
|
||||||
navigator.xr.requestSession("inline", { requiredFeatures: ["local"] }),
|
navigator.xr.requestSession("inline", { requiredFeatures: ["local"] }),
|
||||||
"Inline with features should reject without feature policy"),
|
"Inline with features should reject without permissions policy"),
|
||||||
|
|
||||||
promise_rejects_dom(t, "NotSupportedError",
|
promise_rejects_dom(t, "NotSupportedError",
|
||||||
navigator.xr.requestSession("immersive-vr"),
|
navigator.xr.requestSession("immersive-vr"),
|
||||||
"Immersive-vr should reject without feature policy")
|
"Immersive-vr should reject without permissions policy")
|
||||||
]));
|
]));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -87,11 +87,11 @@ xr_promise_test(
|
||||||
|
|
||||||
t.step(() => {
|
t.step(() => {
|
||||||
assert_false(gl.getContextAttributes().xrCompatible,
|
assert_false(gl.getContextAttributes().xrCompatible,
|
||||||
"xrCompatibility shouldn't be set when requested without feature policy");
|
"xrCompatibility shouldn't be set when requested without permissions policy");
|
||||||
});
|
});
|
||||||
|
|
||||||
return promise_rejects_dom(t, "SecurityError",
|
return promise_rejects_dom(t, "SecurityError",
|
||||||
gl.makeXRCompatible(),
|
gl.makeXRCompatible(),
|
||||||
"makeXRCompatible should reject without feature policy");
|
"makeXRCompatible should reject without permissions policy");
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
|
@ -0,0 +1 @@
|
||||||
|
Permissions-Policy: xr-spatial-tracking=()
|
Loading…
Add table
Add a link
Reference in a new issue