mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Update web-platform-tests to revision b'6884bbba4e81574d2ba84d134bc45fbd7483294f'
This commit is contained in:
parent
aaa2348a25
commit
2a743bedbd
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,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"root-element-display-none-crash.html": [
|
||||
"fc55719c7e87bccb9d2862464b19e19112e02711",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"root-element-display-none-during-transition-crash.html": [
|
||||
"19f4143aa6a4c6c8ec63206d1e94fab56f6181c6",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"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": [
|
||||
"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": [
|
||||
"4024952b13ac1953d9874ad08dfcd6bf08edeadd",
|
||||
[
|
||||
|
@ -320336,7 +320392,7 @@
|
|||
]
|
||||
},
|
||||
"CODEOWNERS": [
|
||||
"c1da5c0706ea4feb99127bf775b4e92a0f85c2f0",
|
||||
"2372633782e226189279edc24e5c19e0fd313494",
|
||||
[]
|
||||
],
|
||||
"CODE_OF_CONDUCT.md": [
|
||||
|
@ -323397,12 +323453,12 @@
|
|||
[]
|
||||
],
|
||||
"feature-policy.https.html.headers": [
|
||||
"8e976388eccff54a054dbd681be6a293f2b584b5",
|
||||
"11bbceff0acba6f14a04c10f2da30a2122c7b311",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"feature-policy.sub.https.html.headers": [
|
||||
"78bbb8c8729dcd7940f2e8b1a582b4d78e82f929",
|
||||
"d968517a3ad9d279164dd6d9ca366ffbb6285c75",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -323416,7 +323472,7 @@
|
|||
[]
|
||||
],
|
||||
"cross-origin-iframe-redirect-with-fp-delegation.https.html.headers": [
|
||||
"f3f85f9ebaaf7083dce29cd520d3ac3d10221895",
|
||||
"28580b0a6fcbc5e88e55c528eee2039f569d09ee",
|
||||
[]
|
||||
],
|
||||
"cross-origin-navigation-redirect.https.html.headers": [
|
||||
|
@ -323424,7 +323480,7 @@
|
|||
[]
|
||||
],
|
||||
"cross-origin-subresource-redirect-with-fp-delegation.https.html.headers": [
|
||||
"ed4100978494d56419dc01e4cc2ccec3407bf452",
|
||||
"28580b0a6fcbc5e88e55c528eee2039f569d09ee",
|
||||
[]
|
||||
],
|
||||
"cross-origin-subresource-redirect.https.html.headers": [
|
||||
|
@ -323497,7 +323553,7 @@
|
|||
[]
|
||||
],
|
||||
"feature-policy-with-cross-origin-subresource.html.headers": [
|
||||
"cb6b0cfd13c291312d53b1105aed3f44c4c8cac8",
|
||||
"4738714fb493374d67789c87bbaa0d8cd99286e8",
|
||||
[]
|
||||
],
|
||||
"http-equiv-accept-ch.html": [
|
||||
|
@ -343683,11 +343739,11 @@
|
|||
],
|
||||
"support": {
|
||||
"connect-src-allow.sub.js": [
|
||||
"5812faf5fa6a03b27a1f430e04fd5cc53f8aa9b7",
|
||||
"7f0ee1f837a0b99e5e75630c9c6b10e287ae4ffa",
|
||||
[]
|
||||
],
|
||||
"connect-src-self-report-only.sub.js": [
|
||||
"0287f110d4c51b0aa39d90fa2f7b6676b194d81d",
|
||||
"c62467147602801d6172cd37073e58b4422cd8b4",
|
||||
[]
|
||||
],
|
||||
"connect-src-self-report-only.sub.js.sub.headers": [
|
||||
|
@ -343695,7 +343751,7 @@
|
|||
[]
|
||||
],
|
||||
"connect-src-self.sub.js": [
|
||||
"fd639c29cf8912e895c8df832f5e1dce5e183655",
|
||||
"3c3ecc01c2d75188b6b778eeb4794a6cdf2837b9",
|
||||
[]
|
||||
],
|
||||
"script-src-allow.sub.js": [
|
||||
|
@ -382701,6 +382757,10 @@
|
|||
"e31282c02fdbfd08bbe80acb245bb7b85c28bee9",
|
||||
[]
|
||||
],
|
||||
"clip-path-svg-text-css-ref.html": [
|
||||
"8cf2cd253a4ba7485ad1a578f0c647972b264eae",
|
||||
[]
|
||||
],
|
||||
"clip-path-transform-mutated-001-ref.html": [
|
||||
"f718ea6abfbab54333ba674ff0dcd320d8672bcd",
|
||||
[]
|
||||
|
@ -396635,6 +396695,10 @@
|
|||
"94280ae3affc4350e4100d6bd390fb860ffe1a5a",
|
||||
[]
|
||||
],
|
||||
"new-content-from-root-display-none-ref.html": [
|
||||
"e936a779c743ae8e0b5542ee064846ddb0749553",
|
||||
[]
|
||||
],
|
||||
"new-content-has-scrollbars-ref.html": [
|
||||
"eddd7330144b538455e5fa4a3609299dcb3c63c8",
|
||||
[]
|
||||
|
@ -422253,6 +422317,10 @@
|
|||
]
|
||||
},
|
||||
"user-activation": {
|
||||
"META.yml": [
|
||||
"e50fcfc84ff1f564f6fafb4dfe267df4ffbfb971",
|
||||
[]
|
||||
],
|
||||
"resources": {
|
||||
"child-message-event-api.html": [
|
||||
"a0001633c22d19e44c1f48ddeffa07dde1fbc436",
|
||||
|
@ -447098,6 +447166,10 @@
|
|||
],
|
||||
"tentative": {
|
||||
"resources": {
|
||||
"permissions-iframe.https.html": [
|
||||
"c9907203322112ffb01a50b09541e891250c4f5e",
|
||||
[]
|
||||
],
|
||||
"requestStorageAccessForOrigin-iframe.html": [
|
||||
"43d16705c8515b48685420c8d14925af90afb62a",
|
||||
[]
|
||||
|
@ -449601,7 +449673,7 @@
|
|||
[]
|
||||
],
|
||||
"videoFrame-serialization.crossAgentCluster.serviceworker.js": [
|
||||
"218157c5e9a130a648495e5998a74d34bd996ade",
|
||||
"9b963610befab36124cfb2e61239253ad343a219",
|
||||
[]
|
||||
],
|
||||
"videoFrame-utils.js": [
|
||||
|
@ -453552,8 +453624,8 @@
|
|||
[]
|
||||
]
|
||||
},
|
||||
"webxr_feature_policy.https.html.headers": [
|
||||
"2c758962332e723453f31a6cb8d3dfc3ac292d44",
|
||||
"webxr_permissions_policy.https.html.headers": [
|
||||
"56b8c11a5bd4013b4e9133328155dbe0e8726ec9",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -496912,7 +496984,7 @@
|
|||
]
|
||||
],
|
||||
"font-feature-settings-computed.html": [
|
||||
"89704ac5f477f32be76ad073b9814172e7f9bdf3",
|
||||
"44b9d1c535a0add5530c34508c785b4a5ccad4b6",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -497360,7 +497432,7 @@
|
|||
]
|
||||
],
|
||||
"font-variation-settings-computed.html": [
|
||||
"521461657e8d4b4749042c102685c1491e67f3dd",
|
||||
"8e72161193a27e4c342af96895bc0cc1f80922aa",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -557052,8 +557124,26 @@
|
|||
]
|
||||
},
|
||||
"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": [
|
||||
"7a3cc20c4c573c9cda1f7f703c08d5902aa78bd0",
|
||||
"dbc4f23f677c716ba439c508c42ee33f4b1b3233",
|
||||
[
|
||||
"fetch/private-network-access/fetch.https.window.html?include=baseline",
|
||||
{
|
||||
|
@ -557085,10 +557175,6 @@
|
|||
[
|
||||
"variant",
|
||||
"?include=from-public"
|
||||
],
|
||||
[
|
||||
"variant",
|
||||
"?include=from-treat-as-public"
|
||||
]
|
||||
]
|
||||
}
|
||||
|
@ -557124,10 +557210,6 @@
|
|||
[
|
||||
"variant",
|
||||
"?include=from-public"
|
||||
],
|
||||
[
|
||||
"variant",
|
||||
"?include=from-treat-as-public"
|
||||
]
|
||||
]
|
||||
}
|
||||
|
@ -557163,10 +557245,6 @@
|
|||
[
|
||||
"variant",
|
||||
"?include=from-public"
|
||||
],
|
||||
[
|
||||
"variant",
|
||||
"?include=from-treat-as-public"
|
||||
]
|
||||
]
|
||||
}
|
||||
|
@ -557202,49 +557280,6 @@
|
|||
[
|
||||
"variant",
|
||||
"?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": [
|
||||
"5636270ea63e02fbdc1cf72c8b0d3e9f79e08317",
|
||||
"48bd6420fd9c46a758f8f1f01bf9e2263c8760e1",
|
||||
[
|
||||
"fetch/private-network-access/iframe.tentative.https.window.html",
|
||||
{
|
||||
|
@ -557313,7 +557348,7 @@
|
|||
]
|
||||
],
|
||||
"mixed-content-fetch.tentative.https.window.js": [
|
||||
"fb9f6a7709af5a1ffa145d220dc3f3aa7500bb15",
|
||||
"54485dc70474023683f2a9f4f4fba1f0df0032af",
|
||||
[
|
||||
"fetch/private-network-access/mixed-content-fetch.tentative.https.window.html",
|
||||
{
|
||||
|
@ -557475,7 +557510,7 @@
|
|||
]
|
||||
],
|
||||
"shared-worker-fetch.https.window.js": [
|
||||
"29e9f32c7e0b8102ba63435913bec49d29e1bce0",
|
||||
"7066b359caa2ddb173a02a359d012456dd7a43a2",
|
||||
[
|
||||
"fetch/private-network-access/shared-worker-fetch.https.window.html",
|
||||
{
|
||||
|
@ -557511,7 +557546,7 @@
|
|||
]
|
||||
],
|
||||
"shared-worker.https.window.js": [
|
||||
"91d9186860e9966a44880fc35b92e95b440af1fd",
|
||||
"ecb70c41245e82ab89f652d0de01c1d3b1f80890",
|
||||
[
|
||||
"fetch/private-network-access/shared-worker.https.window.html",
|
||||
{
|
||||
|
@ -557575,7 +557610,7 @@
|
|||
]
|
||||
],
|
||||
"worker-fetch.https.window.js": [
|
||||
"7ca0b4359c3708d284ef94a7068f3c2c0b7756f9",
|
||||
"89e0c3cf1f35f0cf741957c3eb0bff38a4705d93",
|
||||
[
|
||||
"fetch/private-network-access/worker-fetch.https.window.html",
|
||||
{
|
||||
|
@ -557611,7 +557646,7 @@
|
|||
]
|
||||
],
|
||||
"worker.https.window.js": [
|
||||
"fd38f7cf70eb3909fe95fe68a43e74283be163e4",
|
||||
"2d0dddd685cccf4d1ed4064db61ffcc1a3514f09",
|
||||
[
|
||||
"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": [
|
||||
"ac811ee19aa4476626afafc2f3a2cd95d7b9e51a",
|
||||
"4dc5da9912f1012bf72a9e689acfbc125d7c2923",
|
||||
[
|
||||
"fetch/private-network-access/xhr.https.window.html?include=from-local",
|
||||
{
|
||||
|
@ -557675,10 +557728,6 @@
|
|||
[
|
||||
"variant",
|
||||
"?include=from-public"
|
||||
],
|
||||
[
|
||||
"variant",
|
||||
"?include=from-treat-as-public"
|
||||
]
|
||||
]
|
||||
}
|
||||
|
@ -557710,10 +557759,6 @@
|
|||
[
|
||||
"variant",
|
||||
"?include=from-public"
|
||||
],
|
||||
[
|
||||
"variant",
|
||||
"?include=from-treat-as-public"
|
||||
]
|
||||
]
|
||||
}
|
||||
|
@ -557745,45 +557790,6 @@
|
|||
[
|
||||
"variant",
|
||||
"?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": {
|
||||
"first-party-to-first-party-cross-partition.sub.html": [
|
||||
"f91d9403ea0ce424f92960ded05254c32e995430",
|
||||
|
@ -603832,7 +603845,7 @@
|
|||
]
|
||||
],
|
||||
"popover-attribute-basic.html": [
|
||||
"9b03c7bc1c65a14b2ad396713cf9203054231357",
|
||||
"bc32c357d3a5503564282a4e3a7260fcd0ae6458",
|
||||
[
|
||||
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": [
|
||||
"7f59e1f1f84ca2761195f6426ec0a0a3a2bd38b1",
|
||||
[
|
||||
|
@ -659067,7 +659253,7 @@
|
|||
]
|
||||
],
|
||||
"requestStorageAccess.sub.https.window.js": [
|
||||
"a74866e56bccb7c317be56be4b9c60ce02fae187",
|
||||
"d673ed306993334e6f2807f3a0ecf8758e8d87ea",
|
||||
[
|
||||
"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": [
|
||||
"d2f22f196445ee944e3784b5c9c795f338ce9d1f",
|
||||
"a426737f608e85ff4b1062a090d74648e5ad0933",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -683039,7 +683247,7 @@
|
|||
]
|
||||
],
|
||||
"videoFrame-serialization.crossAgentCluster.https.html": [
|
||||
"1266869783ded7ed6a96afb74416848081006b89",
|
||||
"cb02ad4bcc3a23c33e091b887bc069fcfe6ed170",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -702608,8 +702816,8 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"webxr_feature_policy.https.html": [
|
||||
"b493ec73cce687832cfc0784a1a798d665eb10af",
|
||||
"webxr_permissions_policy.https.html": [
|
||||
"9146dd88f05aebd6ed991a95ede3652a669f1a35",
|
||||
[
|
||||
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']
|
||||
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']
|
||||
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%']
|
||||
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']
|
||||
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']
|
||||
expected: FAIL
|
||||
|
||||
|
@ -158,9 +149,6 @@
|
|||
[Matching font-stretch: '90%' should prefer '110% 140%' over '120% 130%']
|
||||
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']
|
||||
expected: FAIL
|
||||
|
||||
|
@ -206,9 +194,6 @@
|
|||
[Matching font-stretch: '110%' should prefer '105%' over '100%']
|
||||
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']
|
||||
expected: FAIL
|
||||
|
||||
|
@ -319,3 +304,18 @@
|
|||
|
||||
[Matching font-style: 'italic' should prefer 'oblique 5deg' over 'normal']
|
||||
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]
|
||||
[Hit test intersecting scaled box]
|
||||
expected: FAIL
|
||||
|
||||
[Hit test within unscaled box]
|
||||
expected: FAIL
|
||||
|
|
|
@ -53,129 +53,6 @@
|
|||
[background-position length(px) / events]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -325,3 +202,153 @@
|
|||
|
||||
[margin-right length(mm) / values]
|
||||
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>]
|
||||
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>]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
[test the top of layer]
|
||||
expected: FAIL
|
||||
|
||||
[test some point of the element: top left corner]
|
||||
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]
|
||||
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".]
|
||||
expected: FAIL
|
||||
|
||||
[https-treat-as-public to http-local: success.]
|
||||
expected: FAIL
|
||||
|
||||
[https-treat-as-public to http-private: wrong targetAddressSpace "local".]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -23,9 +23,6 @@
|
|||
[treat-as-public to local: failed preflight.]
|
||||
expected: FAIL
|
||||
|
||||
[treat-as-public to local: success.]
|
||||
expected: FAIL
|
||||
|
||||
[treat-as-public to private: failed preflight.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,11 +2,5 @@
|
|||
[treat-as-public to local: failed preflight.]
|
||||
expected: FAIL
|
||||
|
||||
[treat-as-public to local: success.]
|
||||
expected: FAIL
|
||||
|
||||
[treat-as-public to private: failed preflight.]
|
||||
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]
|
||||
expected: TIMEOUT
|
||||
[CSP check precedes COEP check - CSP header first]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[COEP check precedes X-Frame-Options check]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[CSP check precedes COEP check - COEP header first]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[CSP check precedes X-Frame-Options check]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
[iframe-src-aboutblank-navigate-immediately.html]
|
||||
expected: TIMEOUT
|
||||
[Navigating to a different document with window.open]
|
||||
expected: FAIL
|
||||
|
||||
[Navigating to a different document with form submission]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[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]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[opener and "removed" embedded documents]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[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
|
||||
|
||||
[Element with tabindex should support autofocus]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
[Area element should support autofocus]
|
||||
expected: NOTRUN
|
||||
expected: TIMEOUT
|
||||
|
||||
[Host element with delegatesFocus should support autofocus]
|
||||
expected: NOTRUN
|
||||
|
||||
[Non-HTMLElement should not support autofocus]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
[update-the-rendering.html]
|
||||
expected: TIMEOUT
|
||||
["Flush autofocus candidates" should be happen after the first animation frame callbacks, and before a resize event in the next iteration of window event loop.]
|
||||
expected: TIMEOUT
|
||||
|
||||
["Flush autofocus candidates" should be happen before a scroll event and animation frame callbacks]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-1.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[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)]
|
||||
expected: FAIL
|
||||
|
||||
[application/x-www-form-urlencoded: 0x00 in filename (formdata event)]
|
||||
expected: FAIL
|
||||
|
||||
[application/x-www-form-urlencoded: \\n in name (normal form)]
|
||||
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
|
||||
|
||||
[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]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
[Check that rel=noopener with target=_self does a normal load]
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[import-meta-url.html]
|
||||
expected: ERROR
|
||||
[import.meta.url at top-level module DedicatedWorker]
|
||||
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
|
||||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: TIMEOUT
|
||||
|
||||
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
[promise-rejection-events.html]
|
||||
expected: TIMEOUT
|
||||
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[unhandledrejection: from createImageBitmap which is UA triggered]
|
||||
expected: FAIL
|
||||
|
|
|
@ -94,10 +94,10 @@
|
|||
expected: FAIL
|
||||
|
||||
[mime-type 16 : text/html;charset=\x0bgbk]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[mime-type 17 : text/html;charset=\x0cgbk]
|
||||
expected: TIMEOUT
|
||||
expected: NOTRUN
|
||||
|
||||
[mime-type 18 : text/html;\x0bcharset=gbk]
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -265,10 +265,10 @@
|
|||
expected: FAIL
|
||||
|
||||
[This test validates the response status of resources. 88]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[This test validates the response status of resources. 89]
|
||||
expected: NOTRUN
|
||||
expected: TIMEOUT
|
||||
|
||||
[This test validates the response status of resources. 90]
|
||||
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
|
||||
[Validate isSessionSupported behavior without xr-spatial-tracking policy]
|
||||
expected: FAIL
|
||||
|
@ -8,4 +8,3 @@
|
|||
|
||||
[Validate xr compatibility requests without xr-spatial-tracking policy]
|
||||
expected: NOTRUN
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[Worker-constructor.html]
|
||||
expected: ERROR
|
|
@ -1,5 +1,9 @@
|
|||
# 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
|
||||
/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
|
||||
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
|
||||
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 +
|
||||
" 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();
|
||||
|
|
|
@ -77,9 +77,22 @@ promise_test(t => {
|
|||
]);
|
||||
}, "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
|
||||
? [ fetch_cross_origin_url, xhr_cross_origin_url, redirect_url ]
|
||||
: [ fetch_cross_origin_url, redirect_url ];
|
||||
? [ fetch_cross_origin_url, xhr_cross_origin_url, redirect_url, websocket_url ]
|
||||
: [ fetch_cross_origin_url, redirect_url, websocket_url ];
|
||||
|
||||
promise_test(async t => {
|
||||
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 +
|
||||
" 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
|
||||
? [ fetch_cross_origin_url, xhr_cross_origin_url, redirect_url ]
|
||||
: [ fetch_cross_origin_url, redirect_url ];
|
||||
? [ fetch_cross_origin_url, xhr_cross_origin_url, redirect_url, websocket_url ]
|
||||
: [ fetch_cross_origin_url, redirect_url, websocket_url ];
|
||||
|
||||
promise_test(async t => {
|
||||
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', '"c2sc"');
|
||||
test_computed_value('font-feature-settings', '"liga" 0');
|
||||
test_computed_value('font-feature-settings', '"tnum", "hist"',
|
||||
['"tnum", "hist"', '"hist", "tnum"']);
|
||||
test_computed_value('font-feature-settings', '"tnum", "hist"', '"hist", "tnum"');
|
||||
|
||||
test_computed_value('font-feature-settings', '"PKRN"');
|
||||
|
||||
test_computed_value('font-feature-settings', '"dlig", "smcp", "dlig" 0',
|
||||
['"smcp", "dlig" 0', '"dlig" 0, "smcp"']);
|
||||
test_computed_value('font-feature-settings', '"dlig", "smcp", "dlig" 0', '"dlig" 0, "smcp"');
|
||||
</script>
|
||||
</body>
|
||||
</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',
|
||||
['"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');
|
||||
</script>
|
||||
</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-private
|
||||
// META: variant=?include=from-public
|
||||
// META: variant=?include=from-treat-as-public
|
||||
//
|
||||
// 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,
|
||||
}), "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,
|
||||
}), "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
|
||||
// grandchild, the IP address space of the grandparent is compared against the
|
||||
// IP address space of the response. Indeed, the navigation initiator in this
|
||||
|
|
|
@ -220,7 +220,7 @@ promise_test_parallel(t => fetchTest(t, {
|
|||
target: {
|
||||
server: Server.HTTP_LOCAL,
|
||||
behavior: {
|
||||
preflight: PreflightBehavior.success(token()),
|
||||
preflight: PreflightBehavior.optionalSuccess(token()),
|
||||
response: ResponseBehavior.allowCrossOrigin(),
|
||||
},
|
||||
},
|
||||
|
@ -236,7 +236,7 @@ promise_test_parallel(t => fetchTest(t, {
|
|||
target: {
|
||||
server: Server.HTTP_LOCAL,
|
||||
behavior: {
|
||||
preflight: PreflightBehavior.success(token()),
|
||||
preflight: PreflightBehavior.optionalSuccess(token()),
|
||||
response: ResponseBehavior.allowCrossOrigin(),
|
||||
},
|
||||
},
|
||||
|
|
|
@ -106,7 +106,7 @@ promise_test(t => sharedWorkerFetchTest(t, {
|
|||
},
|
||||
target: {
|
||||
server: Server.HTTPS_LOCAL,
|
||||
behavior: { preflight: PreflightBehavior.success(token()) },
|
||||
behavior: { preflight: PreflightBehavior.optionalSuccess(token()) },
|
||||
},
|
||||
expected: WorkerFetchTestResult.SUCCESS,
|
||||
}), "treat-as-public to local: success.");
|
||||
|
|
|
@ -25,7 +25,7 @@ promise_test(t => sharedWorkerScriptTest(t, {
|
|||
},
|
||||
target: {
|
||||
server: Server.HTTPS_LOCAL,
|
||||
behavior: { preflight: PreflightBehavior.success(token()) },
|
||||
behavior: { preflight: PreflightBehavior.optionalSuccess(token()) },
|
||||
},
|
||||
expected: WorkerScriptTestResult.SUCCESS,
|
||||
}), "treat-as-public to local: success.");
|
||||
|
@ -46,7 +46,7 @@ promise_test(t => sharedWorkerScriptTest(t, {
|
|||
},
|
||||
target: {
|
||||
server: Server.HTTPS_PRIVATE,
|
||||
behavior: { preflight: PreflightBehavior.success(token()) },
|
||||
behavior: { preflight: PreflightBehavior.optionalSuccess(token()) },
|
||||
},
|
||||
expected: WorkerScriptTestResult.SUCCESS,
|
||||
}), "treat-as-public to private: success.");
|
||||
|
|
|
@ -106,7 +106,7 @@ promise_test(t => workerFetchTest(t, {
|
|||
},
|
||||
target: {
|
||||
server: Server.HTTPS_LOCAL,
|
||||
behavior: { preflight: PreflightBehavior.success(token()) },
|
||||
behavior: { preflight: PreflightBehavior.optionalSuccess(token()) },
|
||||
},
|
||||
expected: WorkerFetchTestResult.SUCCESS,
|
||||
}), "treat-as-public to local: success.");
|
||||
|
|
|
@ -28,7 +28,7 @@ promise_test(t => workerScriptTest(t, {
|
|||
},
|
||||
target: {
|
||||
server: Server.HTTPS_LOCAL,
|
||||
behavior: { preflight: PreflightBehavior.success(token()) },
|
||||
behavior: { preflight: PreflightBehavior.optionalSuccess(token()) },
|
||||
},
|
||||
expected: WorkerScriptTestResult.SUCCESS,
|
||||
}), "treat-as-public to local: success.");
|
||||
|
@ -49,7 +49,7 @@ promise_test(t => workerScriptTest(t, {
|
|||
},
|
||||
target: {
|
||||
server: Server.HTTPS_PRIVATE,
|
||||
behavior: { preflight: PreflightBehavior.success(token()) },
|
||||
behavior: { preflight: PreflightBehavior.optionalSuccess(token()) },
|
||||
},
|
||||
expected: WorkerScriptTestResult.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-private
|
||||
// META: variant=?include=from-public
|
||||
// META: variant=?include=from-treat-as-public
|
||||
//
|
||||
// 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 },
|
||||
expected: XhrTestResult.SUCCESS,
|
||||
}), "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.
|
||||
const expectVisible = !nonPopover.hasAttribute('popover');
|
||||
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');
|
||||
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');
|
||||
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');
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
// 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) {
|
||||
// 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');
|
||||
});
|
||||
|
||||
promise_test(t => {
|
||||
promise_test(async t => {
|
||||
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");
|
||||
}, "[" + 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(
|
||||
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) {
|
||||
let target_url = HTTPS_ORIGIN + '/web-locks/resources/iframe.html';
|
||||
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);
|
||||
|
||||
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';
|
||||
// Wrap the child iframe in its cross-origin parent (middle).
|
||||
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);
|
||||
// Embed the parent iframe in the top-level site (top).
|
||||
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);
|
||||
|
||||
// Request the weblock for the top-level site.
|
||||
|
|
|
@ -16,10 +16,29 @@
|
|||
};
|
||||
</script>
|
||||
<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();
|
||||
self.onconnect = function (event) {
|
||||
const port = event.ports[0];
|
||||
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')) {
|
||||
port.postMessage(
|
||||
received.get(e.data.id) ? 'RECEIVED' : 'NOT_RECEIVED');
|
||||
|
@ -72,7 +91,7 @@ promise_test(async () => {
|
|||
});
|
||||
const worker = new SharedWorker(window.URL.createObjectURL(blob));
|
||||
let frame = createVideoFrame(40);
|
||||
worker.port.postMessage({frame: frame, transfer: false});
|
||||
worker.port.postMessage(frame);
|
||||
worker.port.postMessage({'id': 40});
|
||||
const received = await new Promise(resolve => worker.port.onmessage = e => {
|
||||
resolve(e.data);
|
||||
|
@ -126,7 +145,7 @@ promise_test(async () => {
|
|||
});
|
||||
const worker = new SharedWorker(window.URL.createObjectURL(blob));
|
||||
let frame = createVideoFrame(90);
|
||||
worker.port.postMessage({frame: frame, transfer: true});
|
||||
worker.port.postMessage(frame, [frame]);
|
||||
worker.port.postMessage({'id': 90});
|
||||
const received = await new Promise(resolve => worker.port.onmessage = e => {
|
||||
resolve(e.data);
|
||||
|
@ -147,6 +166,28 @@ promise_test(async () => {
|
|||
assert_equals(received, 'NOT_RECEIVED');
|
||||
}, '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) {
|
||||
const frame = document.createElement('iframe');
|
||||
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();
|
||||
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')) {
|
||||
e.source.postMessage(
|
||||
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) => {
|
||||
t.step(() => {
|
||||
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
|
||||
|
@ -42,11 +42,11 @@ xr_promise_test(
|
|||
|
||||
promise_rejects_dom(t, "NotSupportedError",
|
||||
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",
|
||||
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(() => {
|
||||
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",
|
||||
gl.makeXRCompatible(),
|
||||
"makeXRCompatible should reject without feature policy");
|
||||
"makeXRCompatible should reject without permissions policy");
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1 @@
|
|||
Permissions-Policy: xr-spatial-tracking=()
|
Loading…
Add table
Add a link
Reference in a new issue