Update web-platform-tests to revision b'5857a9b5776d85fe77883fadf62c398dc05cf608'

This commit is contained in:
WPT Sync Bot 2023-04-08 01:35:01 +00:00
parent 2803edd5e1
commit 8101fa5636
96 changed files with 1117 additions and 441 deletions

View file

@ -1,3 +1,6 @@
[block-in-inline-hittest-relpos-zindex.html]
[position: relative; z-index: -1;]
expected: FAIL
[block-in-inline-hittest-relpos-zindex]
expected: FAIL

View file

@ -0,0 +1,2 @@
[registered-property-interpolation-003.https.html]
expected: TIMEOUT

View file

@ -1,3 +1,6 @@
[transform-scale-hittest.html]
[Hit test intersecting scaled box]
expected: FAIL
[Hit test within unscaled box]
expected: FAIL

View file

@ -56,126 +56,6 @@
[background-position length(px) / events]
expected: FAIL
[color color(rgba) / events]
expected: FAIL
[font-size length(pt) / events]
expected: FAIL
[font-size length(pc) / events]
expected: FAIL
[font-size length(px) / events]
expected: FAIL
[font-size length(em) / events]
expected: FAIL
[font-size length(ex) / events]
expected: FAIL
[font-size length(mm) / events]
expected: FAIL
[font-size length(cm) / events]
expected: FAIL
[font-size length(in) / events]
expected: FAIL
[font-size percentage(%) / events]
expected: FAIL
[font-weight font-weight(keyword) / events]
expected: FAIL
[font-weight font-weight(numeric) / events]
expected: FAIL
[line-height number(integer) / events]
expected: FAIL
[line-height number(decimal) / events]
expected: FAIL
[line-height length(pt) / events]
expected: FAIL
[line-height length(pc) / events]
expected: FAIL
[line-height length(px) / events]
expected: FAIL
[line-height length(em) / events]
expected: FAIL
[line-height length(ex) / events]
expected: FAIL
[line-height length(mm) / events]
expected: FAIL
[line-height length(cm) / events]
expected: FAIL
[line-height length(in) / events]
expected: FAIL
[line-height percentage(%) / events]
expected: FAIL
[letter-spacing length(pt) / events]
expected: FAIL
[letter-spacing length(pc) / events]
expected: FAIL
[letter-spacing length(px) / events]
expected: FAIL
[letter-spacing length(em) / events]
expected: FAIL
[letter-spacing length(ex) / events]
expected: FAIL
[letter-spacing length(mm) / events]
expected: FAIL
[letter-spacing length(cm) / events]
expected: FAIL
[letter-spacing length(in) / events]
expected: FAIL
[word-spacing length(pt) / events]
expected: FAIL
[word-spacing length(pc) / events]
expected: FAIL
[word-spacing length(px) / events]
expected: FAIL
[word-spacing length(em) / events]
expected: FAIL
[word-spacing length(ex) / events]
expected: FAIL
[word-spacing length(mm) / events]
expected: FAIL
[word-spacing length(cm) / events]
expected: FAIL
[word-spacing length(in) / events]
expected: FAIL
[word-spacing percentage(%) / events]
expected: FAIL
[text-indent length(pt) / events]
expected: FAIL
@ -514,3 +394,153 @@
[vertical-align percentage(%) / events]
expected: FAIL
[padding-bottom length(ex) / events]
expected: FAIL
[padding-bottom length(mm) / events]
expected: FAIL
[padding-bottom length(cm) / events]
expected: FAIL
[padding-bottom length(in) / events]
expected: FAIL
[padding-left length(pt) / events]
expected: FAIL
[padding-left length(pc) / events]
expected: FAIL
[padding-left length(px) / events]
expected: FAIL
[padding-left length(em) / events]
expected: FAIL
[padding-left length(ex) / events]
expected: FAIL
[padding-left length(mm) / events]
expected: FAIL
[padding-left length(cm) / events]
expected: FAIL
[padding-left length(in) / events]
expected: FAIL
[padding-right length(pt) / events]
expected: FAIL
[padding-right length(pc) / events]
expected: FAIL
[padding-right length(px) / events]
expected: FAIL
[padding-right length(em) / events]
expected: FAIL
[padding-right length(ex) / events]
expected: FAIL
[padding-right length(mm) / events]
expected: FAIL
[padding-right length(cm) / events]
expected: FAIL
[padding-right length(in) / events]
expected: FAIL
[padding-top length(pt) / events]
expected: FAIL
[padding-top length(pc) / events]
expected: FAIL
[padding-top length(px) / events]
expected: FAIL
[padding-top length(em) / events]
expected: FAIL
[padding-top length(ex) / events]
expected: FAIL
[padding-top length(mm) / events]
expected: FAIL
[padding-top length(cm) / events]
expected: FAIL
[padding-top length(in) / events]
expected: FAIL
[margin-bottom length(pt) / events]
expected: FAIL
[margin-bottom length(pc) / events]
expected: FAIL
[margin-bottom length(px) / events]
expected: FAIL
[margin-bottom length(em) / events]
expected: FAIL
[margin-bottom length(ex) / events]
expected: FAIL
[margin-bottom length(mm) / events]
expected: FAIL
[margin-bottom length(cm) / events]
expected: FAIL
[margin-bottom length(in) / events]
expected: FAIL
[margin-left length(pt) / events]
expected: FAIL
[margin-left length(pc) / events]
expected: FAIL
[margin-left length(px) / events]
expected: FAIL
[margin-left length(em) / events]
expected: FAIL
[margin-left length(ex) / events]
expected: FAIL
[margin-left length(mm) / events]
expected: FAIL
[margin-left length(cm) / events]
expected: FAIL
[margin-left length(in) / events]
expected: FAIL
[margin-right length(pt) / events]
expected: FAIL
[margin-right length(pc) / events]
expected: FAIL
[margin-right length(px) / events]
expected: FAIL
[margin-right length(em) / events]
expected: FAIL
[margin-right length(ex) / events]
expected: FAIL
[margin-right length(mm) / events]
expected: FAIL

View file

@ -0,0 +1,2 @@
[vh_not_refreshing_on_chrome.html]
expected: TIMEOUT

View file

@ -1,3 +0,0 @@
[elementFromPoint-001.html]
[CSSOM View - 5 - extensions to the Document interface]
expected: FAIL

View file

@ -1,4 +1,4 @@
[elementFromPoint-002.html]
expected: CRASH
[Checking whether dynamic changes to visibility interact correctly with\n table anonymous boxes]
expected: FAIL

View file

@ -0,0 +1,3 @@
[elementFromPoint-dynamic-anon-box.html]
[Link should be clickable after hiding a scrollbox with an anonymous table inside]
expected: FAIL

View file

@ -16,6 +16,3 @@
[test the top of layer]
expected: FAIL
[test some point of the element: top left corner]
expected: FAIL

View file

@ -1,4 +1,3 @@
[keepalive.any.html]
expected: TIMEOUT
[keepalive in onunload in nested frame in another window]
expected: FAIL

View file

@ -0,0 +1,2 @@
[redirect-keepalive.any.html]
expected: TIMEOUT

View file

@ -0,0 +1,37 @@
[iframe.tentative.https.window.html]
expected: TIMEOUT
[private to local: failed preflight.]
expected: FAIL
[private to local: success.]
expected: FAIL
[public to local: failed preflight.]
expected: FAIL
[public to local: success.]
expected: FAIL
[public to private: failed preflight.]
expected: FAIL
[public to private: success.]
expected: FAIL
[treat-as-public-address to local: failed preflight.]
expected: FAIL
[treat-as-public-address to local: success.]
expected: FAIL
[treat-as-public-address to private: failed preflight.]
expected: FAIL
[treat-as-public-address to private: success.]
expected: FAIL
[public to local, grandparent navigates: failure.]
expected: TIMEOUT
[public to local, grandparent navigates: success.]
expected: TIMEOUT

View file

@ -183,8 +183,5 @@
[border-image sec-fetch-user - Not sent to non-trustworthy cross-site destination]
expected: FAIL
[background-image sec-fetch-site - HTTPS downgrade (header not sent)]
expected: TIMEOUT
[border-image sec-fetch-site - HTTPS downgrade (header not sent)]
expected: FAIL

View file

@ -7,6 +7,3 @@
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank#foo']
expected: FAIL
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='']
expected: FAIL

View file

@ -16,6 +16,3 @@
[D83D DE0D set in href="" targeting a frame and clicked]
expected: FAIL
[DE0D 0041 set in href="" targeting a frame and clicked]
expected: FAIL

View file

@ -0,0 +1,3 @@
[navigation-unload-cross-origin.sub.window.html]
[Cross-origin navigation started from unload handler must be ignored]
expected: FAIL

View file

@ -0,0 +1,3 @@
[navigation-unload-same-origin-fragment.html]
[Tests that a fragment navigation in the unload handler will not block the initial navigation]
expected: FAIL

View file

@ -4,13 +4,13 @@
expected: FAIL
[Host element with delegatesFocus including no focusable descendants should be skipped]
expected: TIMEOUT
expected: FAIL
[Element with tabindex should support autofocus]
expected: FAIL
[Area element should support autofocus]
expected: NOTRUN
expected: TIMEOUT
[Host element with delegatesFocus should support autofocus]
expected: FAIL

View file

@ -1,3 +1,4 @@
[iframe_sandbox_popups_escaping-1.html]
expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: FAIL
expected: TIMEOUT

View file

@ -1,3 +1,4 @@
[iframe_sandbox_popups_escaping-2.html]
expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: FAIL
expected: TIMEOUT

View file

@ -0,0 +1,2 @@
[disabled-003.html]
expected: CRASH

View file

@ -1,9 +1,10 @@
[promise-job-entry-different-function-realm.html]
expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
expected: FAIL
[Rejection handler on pending-then-rejected promise]
expected: FAIL
expected: TIMEOUT
[Thenable resolution]
expected: FAIL
@ -12,4 +13,4 @@
expected: FAIL
[Fulfillment handler on pending-then-fulfilled promise]
expected: FAIL
expected: TIMEOUT

View file

@ -1,9 +1,10 @@
[promise-job-entry.html]
expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
expected: FAIL
[Rejection handler on pending-then-rejected promise]
expected: FAIL
expected: TIMEOUT
[Sanity check: this all works as expected with no promises involved]
expected: FAIL
@ -15,4 +16,4 @@
expected: FAIL
[Fulfillment handler on pending-then-fulfilled promise]
expected: FAIL
expected: TIMEOUT

View file

@ -1,4 +0,0 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -441879,7 +441879,7 @@
[]
],
"helpers.js": [
"728b098087e4ab3c67bb8cfd88126ffcf9f4315d",
"0a89c6d7f99374d66a827033e29476e379b624af",
[]
],
"resources": {
@ -441888,7 +441888,7 @@
[]
],
"embedded_responder.js": [
"ab1ab30f6964130e6c4d09655c77cca3095596a4",
"634079289b01557189b1335ba7801c4eb6f6cc9b",
[]
],
"hasStorageAccess-ABA-iframe.https.html": [
@ -453056,10 +453056,6 @@
"c9907203322112ffb01a50b09541e891250c4f5e",
[]
],
"requestStorageAccess-integration-iframe.https.html": [
"f4db5cf65ec6814036d40ab165b9705725df39fa",
[]
],
"requestStorageAccessFor-iframe.html": [
"050196dfdb9e66d2309a8f2286cb0a67eb34121b",
[]
@ -454920,7 +454916,7 @@
[]
],
"iframe-parent.html": [
"021fffab68f5ae9fe2f72a6c3c0bf60a14b333c8",
"ec63045b4a0561d4119e6890195e15bc3b6410af",
[]
],
"iframe.html": [
@ -454932,7 +454928,7 @@
[]
],
"partitioned-parent.html": [
"5dafce49657fbe948582cf3aead2decadad0fdc7",
"ec19c8dbaa69bb2d3b31c8c508f65f2bece23adb",
[]
],
"service-worker.js": [
@ -498184,6 +498180,13 @@
],
"margin-trim": {
"computed-margin-values": {
"flexbox-column-block-end.html": [
"ecc266378dde834b60266f5d7bdf29b2e9bf6ec0",
[
null,
{}
]
],
"flexbox-column-block-start.html": [
"6c760bb1f0912090952ef7266bf29f682ed999b7",
[
@ -498198,6 +498201,20 @@
{}
]
],
"flexbox-column-inline-start.html": [
"681c9b859f1aab6a1de55a90c29d34d7906df83b",
[
null,
{}
]
],
"flexbox-column-multi-line-block-end.html": [
"61f11a9b31fee08a490994428d23a0d7cc50485f",
[
null,
{}
]
],
"flexbox-column-multi-line-block-start.html": [
"517619db49be1a7f42a7a48eea731dac1aeca008",
[
@ -498205,6 +498222,13 @@
{}
]
],
"flexbox-column-multi-line-block.html": [
"e01067fbe2ad9a241ef3afc45cd9d43cc8cc4c52",
[
null,
{}
]
],
"flexbox-column-multi-line-inline-end.html": [
"4d3d5b5326cfcc301323226f5203bd91f440107e",
[
@ -498212,6 +498236,13 @@
{}
]
],
"flexbox-column-multi-line-inline-start.html": [
"1e4d007658af82fa6825bd696533c4e1799e76f4",
[
null,
{}
]
],
"flexbox-column-style-change-triggers-layout-block-start.html": [
"175b5c3f2fc3736d1a2d4ce3de5d1493d9a7bb93",
[
@ -498219,6 +498250,13 @@
{}
]
],
"flexbox-row-block-end.html": [
"f5ca9854fe7e04a48b05d41338c720dab5083d0b",
[
null,
{}
]
],
"flexbox-row-block-start.html": [
"9597c9aa10fd7ca3940d16c5d201117240a38832",
[
@ -498226,6 +498264,13 @@
{}
]
],
"flexbox-row-block.html": [
"6c35fa6ac22f5bd93a20f0e56882664f34d60c9c",
[
null,
{}
]
],
"flexbox-row-inline-end.html": [
"2c20625ed3811c861598d1d752afdf314043612d",
[
@ -498233,6 +498278,20 @@
{}
]
],
"flexbox-row-inline-start.html": [
"24ce7f90e2d9298347a2a92e92bd358e123478de",
[
null,
{}
]
],
"flexbox-row-multi-line-block-end.html": [
"f4c90c29f91b313b9bf8cc732a477e77ef12f95b",
[
null,
{}
]
],
"flexbox-row-multi-line-block-start.html": [
"c3190e1a93fff9b744f7834b8e2457e330296b0a",
[
@ -498240,12 +498299,26 @@
{}
]
],
"flexbox-row-multi-line-block.html": [
"1db5680306b7814677839762bed4d8cc8755f576",
[
null,
{}
]
],
"flexbox-row-multi-line-inline-end.html": [
"8a59bc417175d6569876ecbb135d25cede0731b0",
[
null,
{}
]
],
"flexbox-row-multi-line-inline-start.html": [
"9b925a7b68801cfcd3c9b4698d7bf53466d5b43c",
[
null,
{}
]
]
}
},
@ -565672,7 +565745,7 @@
]
],
"join-leave-ad-interest-group.https.sub.window.js": [
"9c8433219fdf8fda4ecfe05357472f666e235e1b",
"f4615d929e52df76e649688c36d1cbff30781078",
[
"fledge/tentative/join-leave-ad-interest-group.https.sub.window.html",
{
@ -567437,6 +567510,17 @@
"fs/opaque-origin.https.window.html",
{}
]
],
"root-name.https.any.js": [
"650a7a64eef4b043df652b4cd27e1a2c120594bf",
[
"fs/root-name.https.any.html",
{}
],
[
"fs/root-name.https.any.worker.html",
{}
]
]
},
"fullscreen": {
@ -609502,6 +609586,13 @@
{}
]
],
"disabled-003.html": [
"de01eb57fcc6f4bc3ea94032673bdba312cc6313",
[
null,
{}
]
],
"fieldset-checkvalidity.html": [
"eeeca1853b81e64d7720c40bde2fbeeedb4c64a0",
[
@ -668052,7 +668143,7 @@
]
],
"requestStorageAccess-cross-site-sibling-iframes.sub.https.window.js": [
"5496e89670cfcf6d4c1dfce06507ff249112e7b7",
"c93673887c4dafe4a60f8cb00ad65c6203bd2376",
[
"storage-access-api/requestStorageAccess-cross-site-sibling-iframes.sub.https.window.html",
{
@ -675773,7 +675864,7 @@
]
],
"requestStorageAccessFor.sub.https.window.js": [
"c573567084d9ae434b4c6eb3c8ad2dcb474b0042",
"e82cce699fab9b2d3cd6e8d928cc66850083658a",
[
"top-level-storage-access-api/tentative/requestStorageAccessFor.sub.https.window.html",
{
@ -680927,6 +681018,15 @@
"testdriver": true
}
]
],
"synonym-roles.html": [
"59d913a60a3719e4f24d369cd4baeda95e409537",
[
null,
{
"testdriver": true
}
]
]
}
},
@ -686469,7 +686569,7 @@
]
],
"partitioned-web-locks.tentative.https.html": [
"a426737f608e85ff4b1062a090d74648e5ad0933",
"2f166e67bc13cc4976dfd10f854880b8f07a0e50",
[
null,
{}

View file

@ -1,3 +0,0 @@
[hit-test-floats-002.html]
[Hit test float]
expected: FAIL

View file

@ -1,3 +0,0 @@
[hit-test-floats-003.html]
[Miss float below something else]
expected: FAIL

View file

@ -1,3 +0,0 @@
[hit-test-floats-005.html]
[Miss clipped float]
expected: FAIL

View file

@ -1,6 +1,3 @@
[block-in-inline-hittest-002.html]
[elementsFromPoint]
expected: FAIL
[elementFromPoint]
expected: FAIL

View file

@ -1,3 +0,0 @@
[block-in-inline-hittest-float-001.html]
[block-in-inline-hittest-float-001]
expected: FAIL

View file

@ -1,3 +1,6 @@
[block-in-inline-hittest-relpos-zindex.html]
[position: relative; z-index: -1;]
expected: FAIL
[block-in-inline-hittest-relpos-zindex]
expected: FAIL

View file

@ -0,0 +1,3 @@
[hit-test-anonymous-block.html]
[Hit test beside line of text inside anonymous block]
expected: FAIL

View file

@ -1,3 +0,0 @@
[inline-with-filter-and-hidden-backface.html]
[Hit test]
expected: FAIL

View file

@ -1,6 +1,3 @@
[MediaQueryList-addListener-removeListener.html]
[listeners are called when <iframe> is resized]
expected: FAIL
[listeners are called correct number of times]
expected: FAIL

View file

@ -1,3 +0,0 @@
[elementFromPoint-001.html]
[CSSOM View - 5 - extensions to the Document interface]
expected: FAIL

View file

@ -13,9 +13,3 @@
[<li>Outside 3</li>]
expected: FAIL
[<li>Image Inside 2</li>]
expected: FAIL
[<li>Image Inside 1</li>]
expected: FAIL

View file

@ -17,3 +17,6 @@
[test some point of the element: bottom right corner]
expected: FAIL
[test the top of layer]
expected: FAIL

View file

@ -0,0 +1,6 @@
[scroll-behavior-smooth-navigation.html]
[Instant scrolling while doing history navigation.]
expected: FAIL
[Smooth scrolling while doing history navigation.]
expected: FAIL

View file

@ -1,4 +1,3 @@
[keepalive.any.html]
expected: TIMEOUT
[keepalive in onunload in nested frame in another window]
expected: FAIL

View file

@ -0,0 +1,2 @@
[redirect-keepalive.any.html]
expected: TIMEOUT

View file

@ -1,4 +1,5 @@
[iframe.tentative.https.window.html]
expected: TIMEOUT
[private to local: failed preflight.]
expected: FAIL
@ -33,4 +34,4 @@
expected: FAIL
[public to local, grandparent navigates: success.]
expected: FAIL
expected: TIMEOUT

View file

@ -146,3 +146,6 @@
[list-style-image sec-fetch-site - HTTPS downgrade-upgrade]
expected: FAIL
[background-image sec-fetch-dest - Not sent to non-trustworthy same-origin destination]
expected: TIMEOUT

View file

@ -7,6 +7,3 @@
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank#foo']
expected: FAIL
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank']
expected: FAIL

View file

@ -10,3 +10,6 @@
[load event does not fire on window.open('about:blank?foo')]
expected: FAIL
[load event does not fire on window.open('about:blank')]
expected: FAIL

View file

@ -1,10 +1,6 @@
[javascript-url-no-beforeunload.window.html]
expected: TIMEOUT
[Navigating an opened window with an iframe via location.href to a javascript: URL must not fire beforeunload on the iframe: string completion]
expected: NOTRUN
[Navigating an opened window via location.href to a javascript: URL must not fire beforeunload: string completion]
expected: TIMEOUT
expected: FAIL
[Navigating an opened window with an iframe via location.href to a javascript: URL must not fire beforeunload on the iframe: undefined completion]
expected: FAIL

View file

@ -1,3 +0,0 @@
[navigation-unload-same-origin.window.html]
[Same-origin navigation started from unload handler must be ignored]
expected: FAIL

View file

@ -1,3 +0,0 @@
[pageload-image-in-popup.html]
[The document for a standalone media file should have one child in the body.]
expected: FAIL

View file

@ -1,4 +0,0 @@
[traverse-during-unload.html]
expected: TIMEOUT
[Traversing the history during unload]
expected: TIMEOUT

View file

@ -0,0 +1,3 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
expected: FAIL

View file

@ -1,3 +0,0 @@
[traverse_the_history_4.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -1,3 +0,0 @@
[traverse_the_history_5.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -0,0 +1,3 @@
[creating_browsing_context_test_01.html]
[first argument: absolute url]
expected: FAIL

View file

@ -1,7 +1,7 @@
[autofocus-dialog.html]
expected: TIMEOUT
[<dialog> can contain autofocus, without stopping page autofocus content from working]
expected: FAIL
expected: TIMEOUT
[<dialog>-contained autofocus element gets focused when the dialog is shown]
expected: TIMEOUT
expected: NOTRUN

View file

@ -1,4 +1,5 @@
[iframe_sandbox_popups_escaping-1.html]
type: testharness
expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: FAIL
expected: TIMEOUT

View file

@ -1,4 +1,3 @@
[iframe_sandbox_popups_escaping-2.html]
expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: FAIL

View file

@ -1,4 +1,5 @@
[iframe_sandbox_popups_escaping-3.html]
type: testharness
expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: FAIL

View file

@ -1,4 +1,5 @@
[iframe_sandbox_popups_nonescaping-1.html]
type: testharness
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: FAIL
expected: NOTRUN

View file

@ -1,5 +1,4 @@
[sandbox-top-navigation-child-special-cases.tentative.sub.window.html]
expected: TIMEOUT
[Allow top with user activation + user activation]
expected: FAIL

View file

@ -1,4 +0,0 @@
[reparent-form-during-planned-navigation-task.html]
expected: TIMEOUT
[reparent-form-during-planned-navigation-task]
expected: TIMEOUT

View file

@ -1,3 +0,0 @@
[historical.html]
[<input name=isindex> should not be supported]
expected: FAIL

View file

@ -0,0 +1,3 @@
[DOMContentLoaded-defer.html]
[The end: DOMContentLoaded and defer scripts]
expected: FAIL

View file

@ -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

View file

@ -94,10 +94,10 @@
expected: FAIL
[mime-type 16 : text/html;charset=\x0bgbk]
expected: TIMEOUT
expected: FAIL
[mime-type 17 : text/html;charset=\x0cgbk]
expected: NOTRUN
expected: TIMEOUT
[mime-type 18 : text/html;\x0bcharset=gbk]
expected: NOTRUN

View file

@ -1,6 +1,7 @@
[cors-preflight.any.html]
expected: ERROR
[PerformanceResourceTiming sizes fetch with preflight test]
expected: FAIL
expected: TIMEOUT
[cors-preflight.any.worker.html]

View file

@ -1,4 +1,5 @@
[realtimeanalyser-fft-scaling.html]
expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL

View file

@ -1,5 +1,5 @@
[cross-partition.https.tentative.html]
expected: TIMEOUT
expected: CRASH
[BroadcastChannel messages aren't received from a cross-partition iframe]
expected: FAIL

View file

@ -1,4 +0,0 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -1,4 +0,0 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -1,4 +0,0 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -0,0 +1,2 @@
[Worker-constructor.html]
expected: ERROR

View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<html>
<head>
<link rel="author" href="mailto:sammy.gill@apple.com">
<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-flex">
<meta name="assert" content="block-end trimmed margins should be reflected in computed style">
<style>
flexbox {
display: flex;
flex-direction: column;
width: min-content;
margin-trim: block-end;
}
item {
display: block;
background-color: green;
width: 50px;
height: 50px;
margin-block-end: 10px;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
</head>
<body onload="checkLayout('flexbox > item')">
<div id="target">
<flexbox>
<item data-expected-margin-bottom="10" data-offset-y="8"></item>
<item data-expected-margin-bottom="0" data-offset-y="68"></item>
</flexbox>
</div>
</body>
</html>

View file

@ -0,0 +1,43 @@
<!DOCTYPE html>
<html>
<head>
<link rel="author" href="mailto:sammy.gill@apple.com">
<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-flex">
<meta name="assert" content="trimmed inline-start margins should be reflected in computed style">
<style>
flexbox {
display: flex;
flex-direction: column;
width: min-content;
margin-trim: inline-start;
}
item {
display: block;
background-color: green;
width: 50px;
height: 50px;
}
item:nth-child(1) {
margin-inline-start: 10px;
}
item:nth-child(2) {
margin-inline-start: -10px;
}
item:nth-child(3) {
margin-inline-start: 30%;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
</head>
<body onload="checkLayout('flexbox > item')">
<div id="target">
<flexbox>
<item data-expected-margin-left="0" data-offset-x="8"></item>
<item data-expected-margin-left="0" data-offset-x="8"></item>
<item data-expected-margin-left="0" data-offset-x="8"></item>
</flexbox>
</div>
</body>
</html>

View file

@ -0,0 +1,38 @@
<!DOCTYPE html>
<html>
<head>
<link rel="author" href="mailto:sammy.gill@apple.com">
<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-flex">
<meta name="assert" content="block-end trimmed margins should be reflected in computed style">
<style>
flexbox {
display: flex;
flex-direction: column;
flex-wrap: wrap;
width: 100px;
height: 110px;
margin-trim: block-end;
}
item {
display: block;
background-color: green;
width: 50px;
height: 50px;
margin-block-end: 10px;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
</head>
<body onload="checkLayout('flexbox > item')">
<div id="target">
<flexbox>
<item data-offset-y="8" data-expected-margin-bottom="10"></item>
<item data-offset-y="68" data-expected-margin-bottom="0"></item>
<item data-offset-y="8" data-expected-margin-bottom="10"></item>
<item data-offset-y="68" data-expected-margin-top="0"></item>
</flexbox>
</div>
</body>
</html>

View file

@ -0,0 +1,38 @@
<!DOCTYPE html>
<html>
<head>
<link rel="author" href="mailto:sammy.gill@apple.com">
<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-flex">
<meta name="assert" content="both trimmed block margins should be reflected in computed style">
<style>
flexbox {
display: flex;
flex-direction: column;
flex-wrap: wrap;
width: 100px;
height: 120px;
margin-trim: block;
}
item {
display: block;
background-color: green;
width: 50px;
height: 50px;
margin-block: 10px;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
</head>
<body onload="checkLayout('flexbox > item')">
<div id="target">
<flexbox>
<item data-offset-y="8" data-expected-margin-top="0" data-expected-margin-bottom="10"></item>
<item data-offset-y="78" data-expected-margin-top="10" data-expected-margin-bottom="0" ></item>
<item data-offset-y="8" data-expected-margin-top="0" data-expected-margin-bottom="10"></item>
<item data-offset-y="78" data-expected-margin-top="10" data-expected-margin-bottom="0"></item>
</flexbox>
</div>
</body>
</html>

View file

@ -0,0 +1,38 @@
<!DOCTYPE html>
<html>
<head>
<link rel="author" href="mailto:sammy.gill@apple.com">
<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-flex">
<meta name="assert" content="trimmed inline-start margins should be reflected in computed style">
<style>
flexbox {
display: flex;
flex-direction: column;
flex-wrap: wrap;
width: min-content;
height: 100px;
margin-trim: inline-start;
}
item {
display: block;
background-color: green;
width: 50px;
height: 50px;
margin-inline-start: 10px;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
</head>
<body onload="checkLayout('flexbox > item')">
<div id="target">
<flexbox>
<item data-offset-x="8" data-expected-margin-left="0"></item>
<item data-offset-x="8" data-expected-margin-left="0"></item>
<item data-offset-x="68" data-expected-margin-left="10"></item>
<item data-offset-x="68" data-expected-margin-left="10"></item>
</flexbox>
</div>
</body>
</html>

View file

@ -0,0 +1,43 @@
<!DOCTYPE html>
<html>
<head>
<link rel="author" href="mailto:sammy.gill@apple.com">
<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-flex">
<meta name="assert" content="block-end trimmed margins should be reflected in computed style">
<style>
flexbox {
display: flex;
width: min-content;
margin-trim: block-end;
}
item {
display: block;
background-color: green;
width: 50px;
height: 50px;
margin-inline: 10px;
}
item:nth-child(1) {
margin-block-end: 10px;
}
item:nth-child(2) {
margin-block-end: -10px;
}
item:nth-child(3) {
margin-block-end: 30%;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
</head>
<body onload="checkLayout('flexbox > item')">
<div id="target">
<flexbox>
<item data-expected-margin-bottom="0"></item>
<item data-expected-margin-bottom="0"></item>
<item data-expected-margin-bottom="0"></item>
</flexbox>
</div>
</body>
</html>

View file

@ -0,0 +1,43 @@
<!DOCTYPE html>
<html>
<head>
<link rel="author" href="mailto:sammy.gill@apple.com">
<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-flex">
<meta name="assert" content="both trimmed block margins should be reflected in computed style">
<style>
flexbox {
display: flex;
width: min-content;
margin-trim: block;
}
item {
display: block;
background-color: green;
width: 50px;
height: 50px;
margin-inline: 10px;
}
item:nth-child(1) {
margin-block: 10px;
}
item:nth-child(2) {
margin-block: -10px;
}
item:nth-child(3) {
margin-block: 30%;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
</head>
<body onload="checkLayout('flexbox > item')">
<div id="target">
<flexbox>
<item data-expected-margin-top="0" data-expected-margin-bottom="0" data-offset-y="8"></item>
<item data-expected-margin-top="0" data-expected-margin-bottom="0" data-offset-y="8"></item>
<item data-expected-margin-top="0" data-expected-margin-bottom="0" data-offset-y="8"></item>
</flexbox>
</div>
</body>
</html>

View file

@ -0,0 +1,33 @@
<!DOCTYPE html>
<html>
<head>
<link rel="author" href="mailto:sammy.gill@apple.com">
<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-flex">
<meta name="assert" content="trimmed inline-start margins should be reflected in computed style">
<style>
flexbox {
display: flex;
margin-trim: inline-start;
}
item {
display: block;
background-color: green;
width: 50px;
height: 50px;
margin-inline-start: 20px;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
</head>
<body onload="checkLayout('flexbox > item')">
<div id="target">
<flexbox>
<item data-expected-margin-left="0" data-offset-x="8"></item>
<item data-expected-margin-left="20" data-offset-x="78"></item>
<item data-expected-margin-left="20" data-offset-x="148"></item>
</flexbox>
</div>
</body>
</html>

View file

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html>
<head>
<link rel="author" href="mailto:sammy.gill@apple.com">
<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-flex">
<meta name="assert" content="block-end trimmed margins should be reflected in computed style">
<style>
flexbox {
display: flex;
flex-wrap: wrap;
width: 100px;
margin-trim: block-end;
}
item {
display: block;
background-color: green;
width: 50px;
height: 50px;
margin-block-end: 10px;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
</head>
<body onload="checkLayout('flexbox > item')">
<div id="target">
<flexbox>
<item data-offset-y="8" data-expected-margin-bottom="10"></item>
<item data-offset-y="8" data-expected-margin-bottom="10"></item>
<item data-offset-y="68" data-expected-margin-bottom="0"></item>
<item data-offset-y="68" data-expected-margin-bottom="0"></item>
</flexbox>
</div>
</body>
</html>

View file

@ -0,0 +1,37 @@
<!DOCTYPE html>
<html>
<head>
<link rel="author" href="mailto:sammy.gill@apple.com">
<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-flex">
<meta name="assert" content="both trimmed block margins should be reflected in computed style">
<style>
flexbox {
display: flex;
width: 100px;
flex-wrap: wrap;
margin-trim: block;
}
item {
display: block;
background-color: green;
width: 50px;
height: 50px;
margin-block: 10px;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
</head>
<body onload="checkLayout('flexbox > item')">
<div id="target">
<flexbox>
<item data-expected-margin-top="0" data-expected-margin-bottom="10" data-offset-y="8"></item>
<item data-expected-margin-top="0" data-expected-margin-bottom="10" data-offset-y="8"></item>
<item data-expected-margin-top="10" data-expected-margin-bottom="0" data-offset-y="78"></item>
<item data-expected-margin-top="10" data-expected-margin-bottom="0" data-offset-y="78"></item>
</flexbox>
</div>
</body>
</html>

View file

@ -0,0 +1,47 @@
<!DOCTYPE html>
<html>
<head>
<link rel="author" href="mailto:sammy.gill@apple.com">
<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-flex">
<meta name="assert" content="trimmed inline-start margins should be reflected in computed style">
<style>
flexbox {
display: flex;
width: 110px;
flex-wrap: wrap;
margin-trim: inline-start;
}
item {
display: block;
background-color: green;
width: 50px;
height: 50px;
}
item:nth-child(1) {
margin-inline-start: 10px;
}
item:nth-child(2) {
margin-inline-start: -10px;
}
item:nth-child(3) {
margin-inline-start: 50%;
}
item:nth-child(4) {
margin-inline-start: 10px;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
</head>
<body onload="checkLayout('flexbox > item')">
<div id="target">
<flexbox>
<item data-expected-margin-left="0" data-offset-x="8"></item>
<item data-expected-margin-left="-10" data-offset-x="48"></item>
<item data-expected-margin-left="0" data-offset-x="8"></item>
<item data-expected-margin-left="10" data-offset-x="68"></item>
</flexbox>
</div>
</body>
</html>

View file

@ -482,8 +482,7 @@ for (testCase of SIMPLE_JOIN_LEAVE_TEST_CASES) {
assert_true(joinExceptionThrown, 'Exception not thrown on join.');
}
let leave_promise = navigator.leaveAdInterestGroup(testCase.interestGroup,
INTEREST_GROUP_LIFETIME_SECS);
let leave_promise = navigator.leaveAdInterestGroup(testCase.interestGroup);
assert_true(leave_promise instanceof Promise, "leave should return a promise");
if (testCase.expectLeaveSucces) {
assert_equals(await leave_promise, undefined);

View file

@ -0,0 +1,6 @@
'use strict';
promise_test(async test => {
let root = await navigator.storage.getDirectory();
assert_equals(root.name, '');
}, 'getDirectory returns a directory whose name is the empty string');

View file

@ -0,0 +1,39 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>Disable nested fieldsets with focused element</title>
<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-fieldset-element">
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1427047">
<link rel="author" href="mailto:xiaochengh@chromium.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id=container1>
<fieldset id=target1>
<legend>foo</legend>
<fieldset>
<legend>bar</legend>
<input id=input1>
</fieldset>
</fieldset>
</div>
<script>
test(() => {
input1.focus();
target1.disabled = true;
assert_not_equals(document.activeElement, input1);
}, 'Disable light-nested fieldsets should not crash');
</script>
<div id=container2></div>
<script>
test(() => {
let n = 100;
let markup = '<fieldset><legend>foo</legend>'.repeat(n) +
'<input id=input2>' + '</fieldset>'.repeat(n);
container2.innerHTML = markup;
input2.focus();
container2.firstChild.disabled = true;
assert_not_equals(document.activeElement, input2);
}, 'Disable deep-nested fieldsets should not hang');
</script>

View file

@ -227,10 +227,17 @@ function FrameInitiatedNavigation(frame, url) {
return load;
}
// Makes a subresource request to the provided host in the given frame, and returns the cookies in the response.
function FetchFromFrame(frame, host) {
// Makes a subresource request to the provided host in the given frame, and
// returns the cookies that were included in the request.
function FetchSubresourceCookiesFromFrame(frame, host) {
return FetchFromFrame(frame, `${host}/storage-access-api/resources/echo-cookie-header.py`);
}
// Makes a subresource request to the provided host in the given frame, and
// returns the response.
function FetchFromFrame(frame, url) {
return PostMessageAndAwaitReply(
{ command: "subresource cookies", host }, frame.contentWindow);
{ command: "cors fetch", url }, frame.contentWindow);
}
// Tries to set storage access policy, ignoring any errors.

View file

@ -70,11 +70,11 @@
await SetDocumentCookieFromFrame(crossOriginFrame, `cookie=monster;Secure;SameSite=None;Path=/`);
await SetDocumentCookieFromFrame(crossSiteFrame, `foo=bar;Secure;SameSite=None;Path=/`);
assert_true(cookieStringHasCookie("cookie", "monster", await FetchFromFrame(crossOriginFrame, www)),"crossOriginFrame making same-origin subresource request can access cookies.");
assert_true(cookieStringHasCookie("foo", "bar", await FetchFromFrame(crossSiteFrame, wwwAlt)),"crossSiteFrame making same-origin subresource request can access cookies.");
assert_true(cookieStringHasCookie("cookie", "monster", await FetchSubresourceCookiesFromFrame(crossOriginFrame, www)),"crossOriginFrame making same-origin subresource request can access cookies.");
assert_true(cookieStringHasCookie("foo", "bar", await FetchSubresourceCookiesFromFrame(crossSiteFrame, wwwAlt)),"crossSiteFrame making same-origin subresource request can access cookies.");
assert_false(cookieStringHasCookie("foo", "bar", await FetchFromFrame(crossOriginFrame, wwwAlt)), "crossOriginFrame making cross-site subresource request to sibling iframe's host should not include cookies.");
assert_false(cookieStringHasCookie("cookie", "monster", await FetchFromFrame(crossSiteFrame, www)),"crossSiteFrame making cross-site subresource request to sibling iframe's host should not include cookies.");
assert_false(cookieStringHasCookie("foo", "bar", await FetchSubresourceCookiesFromFrame(crossOriginFrame, wwwAlt)), "crossOriginFrame making cross-site subresource request to sibling iframe's host should not include cookies.");
assert_false(cookieStringHasCookie("cookie", "monster", await FetchSubresourceCookiesFromFrame(crossSiteFrame, www)),"crossSiteFrame making cross-site subresource request to sibling iframe's host should not include cookies.");
}, "Cross-site sibling iframes should not be able to take advantage of the existing permission grant requested by others.");

View file

@ -48,9 +48,8 @@ window.addEventListener("message", async (event) => {
// script-with-cookie-header.py.
reply(httpCookies);
break;
case "subresource cookies":
const cookie = await fetch(`${event.data.host}/storage-access-api/resources/echo-cookie-header.py`, {mode: 'cors', credentials: 'include'}).then((resp) => resp.text());
reply(cookie);
case "cors fetch":
reply(await fetch(event.data.url, {mode: 'cors', credentials: 'include'}).then((resp) => resp.text()));
break;
default:
}

View file

@ -3,27 +3,14 @@
// META: script=/resources/testdriver-vendor.js
'use strict';
// Note that this file follows the pattern in:
// storage-access-api/requestStorageAccess.sub.window.js
//
// Some tests are run at the top-level, and an iframe is added to validate API
// behavior in that context.
const {testPrefix, topLevelDocument} = processQueryParams();
if (!topLevelDocument) {
test_driver.set_test_context(window.top);
}
const requestedOrigin = 'https://foo.com';
const altOrigin = 'https://{{hosts[alt][www]}}:{{ports[https][0]}}';
// Common tests to run in all frames.
promise_test(
async () => {
assert_not_equals(document.requestStorageAccessFor, undefined);
},
'[' + testPrefix +
'] document.requestStorageAccessFor() should be supported on the document interface');
'[top-level-context] document.requestStorageAccessFor() should be supported on the document interface');
promise_test(
t => {
@ -31,8 +18,7 @@ promise_test(
document.requestStorageAccessFor(),
'document.requestStorageAccessFor() call without origin argument');
},
'[' + testPrefix +
'] document.requestStorageAccessFor() should be rejected when called with no argument');
'[top-level-context] document.requestStorageAccessFor() should be rejected when called with no argument');
// Most tests need to start with the feature in "prompt" state.
// For tests that rely on the permission state, this function is intended to be
@ -45,169 +31,168 @@ async function CommonSetup() {
{ name: 'top-level-storage-access', requestedOrigin: altOrigin }, 'prompt');
}
if (topLevelDocument) {
promise_test(async t => {
await CommonSetup();
return promise_rejects_dom(t, 'NotAllowedError',
document.requestStorageAccessFor(requestedOrigin),
'document.requestStorageAccessFor() call without user gesture');
},
'[' + testPrefix +
'] document.requestStorageAccessFor() should be rejected by default with no user gesture');
promise_test(async t => {
await CommonSetup();
return promise_rejects_dom(t, 'NotAllowedError',
document.requestStorageAccessFor(requestedOrigin),
'document.requestStorageAccessFor() call without user gesture');
},
'[top-level-context] document.requestStorageAccessFor() should be rejected by default with no user gesture');
promise_test(async t => {
const description =
'document.requestStorageAccessFor() call in a detached frame';
// Can't use promise_rejects_dom here because the exception is from the wrong global.
return CreateDetachedFrame().requestStorageAccessFor(requestedOrigin)
.then(t.unreached_func('Should have rejected: ' + description))
.catch((e) => {
assert_equals(e.name, 'InvalidStateError', description);
});
}, '[non-fully-active] document.requestStorageAccessFor() should not resolve when run in a detached frame');
promise_test(async t => {
const description =
'document.requestStorageAccessFor() call in a detached frame';
// Can't use promise_rejects_dom here because the exception is from the wrong global.
return CreateDetachedFrame().requestStorageAccessFor(requestedOrigin)
.then(t.unreached_func('Should have rejected: ' + description))
.catch((e) => {
assert_equals(e.name, 'InvalidStateError', description);
});
}, '[non-fully-active] document.requestStorageAccessFor() should not resolve when run in a detached frame');
promise_test(async t => {
const description =
'document.requestStorageAccessFor() in a detached DOMParser result';
return CreateDocumentViaDOMParser().requestStorageAccessFor(requestedOrigin)
.then(t.unreached_func('Should have rejected: ' + description))
.catch((e) => {
assert_equals(e.name, 'InvalidStateError', description);
});
}, '[non-fully-active] document.requestStorageAccessFor() should not resolve when run in a detached DOMParser document');
promise_test(async t => {
const description =
'document.requestStorageAccessFor() in a detached DOMParser result';
return CreateDocumentViaDOMParser().requestStorageAccessFor(requestedOrigin)
.then(t.unreached_func('Should have rejected: ' + description))
.catch((e) => {
assert_equals(e.name, 'InvalidStateError', description);
});
}, '[non-fully-active] document.requestStorageAccessFor() should not resolve when run in a detached DOMParser document');
promise_test(
async t => {
await CommonSetup();
await test_driver.set_permission(
{name: 'top-level-storage-access', requestedOrigin}, 'granted');
promise_test(
async t => {
await CommonSetup();
await test_driver.set_permission(
{name: 'top-level-storage-access', requestedOrigin}, 'granted');
await document.requestStorageAccessFor(requestedOrigin);
},
'[' + testPrefix +
'] document.requestStorageAccessFor() should be resolved without a user gesture with an existing permission');
await document.requestStorageAccessFor(requestedOrigin);
},
'[top-level-context] document.requestStorageAccessFor() should be resolved without a user gesture with an existing permission');
promise_test(
async t => {
await CommonSetup();
await test_driver.set_permission(
{name: 'top-level-storage-access', requestedOrigin: altOrigin},
'granted');
promise_test(
async t => {
await CommonSetup();
await test_driver.set_permission(
{name: 'top-level-storage-access', requestedOrigin: altOrigin},
'granted');
await RunCallbackWithGesture(() => {
return document.requestStorageAccessFor(altOrigin).then(() => {
return RunTestsInIFrame(
'https://{{hosts[alt][www]}}:{{ports[https][0]}}/top-level-storage-access-api/tentative/resources/requestStorageAccess-integration-iframe.https.html');
});
});
},
'[' + testPrefix +
'] document.requestStorageAccess() should be resolved without a user gesture after a successful requestStorageAccessFor() call');
const frame = await CreateFrame(
'/storage-access-api/resources/script-with-cookie-header.py?script=embedded_responder.js');
promise_test(() => {
// Create a test with a single-child same-origin iframe.
// This will validate that calls to requestStorageAccessFor are rejected
// in non-top-level contexts.
return RunTestsInIFrame(
'./resources/requestStorageAccessFor-iframe.https.html?testCase=same-origin-frame');
});
await RunCallbackWithGesture(() => document.requestStorageAccessFor(altOrigin));
assert_true(await RequestStorageAccessInFrame(frame));
},
'[top-level-context] document.requestStorageAccess() should be resolved without a user gesture after a successful requestStorageAccessFor() call');
promise_test(
async t => {
await RunCallbackWithGesture(
() => document.requestStorageAccessFor(document.location.origin));
},
'[' + testPrefix +
'] document.requestStorageAccessFor() should be resolved when called properly with a user gesture and the same origin');
promise_test(
async t => {
await RunCallbackWithGesture(
() => document.requestStorageAccessFor(document.location.origin));
},
'[top-level-context] document.requestStorageAccessFor() should be resolved when called properly with a user gesture and the same origin');
promise_test(
async t => {
await RunCallbackWithGesture(
() => promise_rejects_dom(t, 'NotAllowedError', document.requestStorageAccessFor('bogus-url'),
'document.requestStorageAccessFor() call with bogus URL'));
},
'[' + testPrefix +
'] document.requestStorageAccessFor() should be rejected when called with an invalid origin');
promise_test(
async t => {
await RunCallbackWithGesture(
() => promise_rejects_dom(t, 'NotAllowedError', document.requestStorageAccessFor('bogus-url'),
'document.requestStorageAccessFor() call with bogus URL'));
},
'[top-level-context] document.requestStorageAccessFor() should be rejected when called with an invalid origin');
promise_test(
async t => {
await RunCallbackWithGesture(
() => promise_rejects_dom(t, 'NotAllowedError', document.requestStorageAccessFor('data:,Hello%2C%20World%21'),
'document.requestStorageAccessFor() call with data URL'));
},
'[' + testPrefix +
'] document.requestStorageAccessFor() should be rejected when called with an opaque origin');
promise_test(
async t => {
await RunCallbackWithGesture(
() => promise_rejects_dom(t, 'NotAllowedError', document.requestStorageAccessFor('data:,Hello%2C%20World%21'),
'document.requestStorageAccessFor() call with data URL'));
},
'[top-level-context] document.requestStorageAccessFor() should be rejected when called with an opaque origin');
promise_test(
async (t) => {
const altEchoCookieHeaderUrl =
`${altOrigin}/storage-access-api/resources/echo-cookie-header.py`;
promise_test(
async (t) => {
const altEchoCookieHeaderUrl =
`${altOrigin}/storage-access-api/resources/echo-cookie-header.py`;
await MaybeSetStorageAccess('*', '*', 'blocked');
await CommonSetup();
await MaybeSetStorageAccess('*', '*', 'blocked');
await CommonSetup();
await test_driver.set_permission(
{name: 'top-level-storage-access', requestedOrigin: altOrigin},
'granted');
await test_driver.set_permission(
{name: 'top-level-storage-access', requestedOrigin: altOrigin},
'granted');
// Set cross-site cookie for altOrigin. Note that this only works with
// an existing top-level storage access permission.
await fetch(
`${altOrigin}/cookies/resources/set-cookie.py?name=cookie&path=/&samesite=None&secure=`,
{mode: 'cors', credentials: 'include'});
// Set cross-site cookie for altOrigin. Note that this only works with
// an existing top-level storage access permission.
await fetch(
`${altOrigin}/cookies/resources/set-cookie.py?name=cookie&path=/&samesite=None&secure=`,
{mode: 'cors', credentials: 'include'});
const httpCookies1 = await fetch(altEchoCookieHeaderUrl, {
mode: 'cors',
credentials: 'include'
}).then((resp) => resp.text());
assert_true(
httpCookies1.includes('cookie=1'),
'After obtaining top-level storage access, cross-site subresource requests with CORS mode should have cookie access.');
const httpCookies1 = await fetch(altEchoCookieHeaderUrl, {
mode: 'cors',
credentials: 'include'
}).then((resp) => resp.text());
assert_true(
httpCookies1.includes('cookie=1'),
'After obtaining top-level storage access, cross-site subresource requests with CORS mode should have cookie access.');
const httpCookies2 = await fetch(altEchoCookieHeaderUrl, {
mode: 'no-cors',
credentials: 'include'
}).then((resp) => resp.text());
assert_false(
httpCookies2.includes('cookie=1'),
'Cross-site subresource requests without CORS mode cannot access cookie even with an existing permission.');
},
'[' + testPrefix +
'] Top-level storage access only allows cross-site subresource requests to access cookie when using CORS mode.');
const httpCookies2 = await fetch(altEchoCookieHeaderUrl, {
mode: 'no-cors',
credentials: 'include'
}).then((resp) => resp.text());
assert_false(
httpCookies2.includes('cookie=1'),
'Cross-site subresource requests without CORS mode cannot access cookie even with an existing permission.');
},
'[top-level-context] Top-level storage access only allows cross-site subresource requests to access cookie when using CORS mode.');
} else {
promise_test(
async t => {
await RunCallbackWithGesture(
() => promise_rejects_dom(t, 'NotAllowedError', document.requestStorageAccessFor(document.location.origin),
promise_test(
async () => {
const frame = await CreateFrame(
'/storage-access-api/resources/script-with-cookie-header.py?script=embedded_responder.js');
assert_not_equals(frame.contentWindow.document.requestStorageAccessFor, undefined);
},
'[same-origin-iframe] document.requestStorageAccessFor() should be supported on the document interface');
promise_test(
async t => {
const frame = await CreateFrame(
'/storage-access-api/resources/script-with-cookie-header.py?script=embedded_responder.js');
return promise_rejects_js(t, frame.contentWindow.TypeError,
frame.contentWindow.document.requestStorageAccessFor(),
'document.requestStorageAccessFor() call without origin argument');
},
'[same-origin-iframe] document.requestStorageAccessFor() should be rejected when called with no argument');
promise_test(
async t => {
const frame = await CreateFrame(
'/storage-access-api/resources/script-with-cookie-header.py?script=embedded_responder.js');
await RunCallbackWithGesture(() =>
promise_rejects_dom(t, 'NotAllowedError', frame.contentWindow.DOMException,
frame.contentWindow.document.requestStorageAccessFor(document.location.origin),
'document.requestStorageAccessFor() call in a non-top-level context'));
},
'[' + testPrefix +
'] document.requestStorageAccessFor() should be rejected when called in an iframe');
},
'[same-origin-iframe] document.requestStorageAccessFor() should be rejected when called in an iframe');
promise_test(
async (t) => {
await MaybeSetStorageAccess('*', '*', 'blocked');
await CommonSetup();
promise_test(
async (t) => {
await MaybeSetStorageAccess('*', '*', 'blocked');
await CommonSetup();
// Set cross-site cookie for altOrigin. Note that cookie won't be set
// even with an existing top-level storage access permission in an
// iframe.
await fetch(
`${altOrigin}/cookies/resources/set-cookie.py?name=cookie&path=/&samesite=None&secure=`,
{mode: 'cors', credentials: 'include'});
const frame = await CreateFrame(
`/storage-access-api/resources/script-with-cookie-header.py?script=embedded_responder.js`);
await test_driver.set_permission(
{name: 'top-level-storage-access', requestedOrigin: altOrigin},
'granted');
// Set cross-site cookie for altOrigin. Note that cookie won't be set
// even with an existing top-level storage access permission in an
// iframe.
await FetchFromFrame(frame,
`${altOrigin}/cookies/resources/set-cookie.py?name=cookie&path=/&samesite=None&secure=`);
const httpCookies =
await fetch(
`${altOrigin}/storage-access-api/resources/echo-cookie-header.py`,
{mode: 'cors', credentials: 'include'})
.then((resp) => resp.text());
assert_false(httpCookies.includes('cookie=1'));
},
'[' + testPrefix +
'] Existing top-level storage access permission should not allow cookie access for the cross-site subresource requests made in a non-top-level context.');
}
await test_driver.set_permission(
{name: 'top-level-storage-access', requestedOrigin: altOrigin},
'granted');
const httpCookies = await FetchSubresourceCookiesFromFrame(frame, altOrigin);
assert_false(httpCookies.includes('cookie=1'));
},
'[same-origin-iframe] Existing top-level storage access permission should not allow cookie access for the cross-site subresource requests made in a non-top-level context.');

View file

@ -1,15 +0,0 @@
<!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>
promise_test(
async t => document.requestStorageAccess(),
'[request-storage-access-integration] ' +
'document.requestStorageAccess() should be resolved without a user gesture with an existing top-level-storage-access permission');
</script>

View file

@ -0,0 +1,31 @@
<!doctype html>
<html>
<head>
<title>Region Role Verification Tests</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/wai-aria/scripts/aria-utils.js"></script>
</head>
<body>
<!-- spec resolution https://github.com/w3c/core-aam/issues/166 -->
<div role="none" id="none" data-expectedrole="none" data-testname="none role == computedrole none" class="ex">x</div><!-- preferred -->
<div role="presentation" id="presentation" data-expectedrole="none" data-testname="synonym presentation role == computedrole none" class="ex">x</div><!-- synonym -->
<div role="image" id="image" data-expectedrole="image" data-testname="image role == computedrole image" class="ex">x</div><!-- preferred -->
<div role="img" id="img" data-expectedrole="image" data-testname="synonym img role == computedrole image" class="ex">x</div><!-- synonym -->
<!-- `directory` synonym deprecated in ARIA 1.2; these examples should all return computedrole `list` -->
<ul role="list" id="list2" data-expectedrole="list" data-testname="list role == computedrole list" class="ex"><li>x</li></ul>
<ul role="directory" id="directory" data-expectedrole="list" data-testname="directory role == computedrole list" class="ex"><li>x</li></ul>
<div role="directory" id="div" data-expectedrole="list" data-testname="div w/directory role == computedrole list" class="ex"><div role="listitem">x</div></div>
<script>
AriaUtils.verifyRolesBySelector(".ex");
</script>
</body>
</html>

View file

@ -18,12 +18,29 @@ const { HTTPS_ORIGIN, HTTPS_NOTSAMESITE_ORIGIN } = get_host_info();
const held = new Map();
let next_lock_id = 1;
// How this test works:
// Step 1 (top-frame): request an exclusive web-lock and store its id
// and release for clean-up.
// Step 2 (top-frame): open a pop-up window and load a not-same-site
// ./web-locks/resources/partitioned-parent.html
// Step 3 (pop-up): load a same-site iframe inside the pop-up.
// Step 4 (pop-up): send a web-lock request to the same-site iframe.
// Step 5 (iframe): process the web-lock request and message the result
// back to the pop-up.
// Step 6 (pop-up): intercept the result message from the iframe and
// send it to the top-frame.
// Step 7 (top-frame): ensure that the same-site iframe's web-lock
// request succeeds since it and the top-level site are successfully
// partitioned and each can hold an exclusive lock.
// Step 8 (top-frame): clean up.
async function third_party_test(t) {
let target_url = HTTPS_ORIGIN + '/web-locks/resources/iframe.html';
target_url = new URL(
`/web-locks/resources/partitioned-parent.html?target=${encodeURIComponent(target_url)}`,
HTTPS_NOTSAMESITE_ORIGIN + self.location.pathname);
// Step 1.
navigator.locks.request('testLock', {mode: 'exclusive', ifAvailable: true},
lock => {
if (lock === null) {
@ -37,15 +54,18 @@ async function third_party_test(t) {
return promise;
});
// Step 2.
const w = window.open(target_url);
const result = await new Promise(resolve => window.onmessage = resolve);
// Step 7.
// When 3rd party storage partitioning is enabled, the iframe should be able
// to aquire a lock with the same name as one exclusively held by the opener
// of its top window, even when that opener has the same origin.
assert_equals(result.data.failed, undefined,
'The 1p iframe failed to acquire the lock');
// Step 8.
t.add_cleanup(() => {
w.close()
for(let i = 1; i < next_lock_id; i++){
@ -61,6 +81,30 @@ promise_test(t => {
// Optional Test: Checking for partitioned web locks in an A->B->A
// (nested-iframe with cross-site ancestor chain) scenario.
//
// How this test works:
// Nested Step 1 (top frame): request an exclusive web-lock and
// store its id and release for clean-up.
// Nested Step 2 (top frame): open a pop-up window and load a
// same-site /web-locks/resources/partitioned-parent.html.
// Nested Step 3 (pop-up): load a not-same-site "parent" iframe (A->B)
// (/web-locks/resources/iframe-parent.html) inside the pop-up.
// Nested Step 4 (pop-up): send a web-lock request to the parent iframe.
// Nested Step 5 (parent iframe): load a "child" iframe (A->B->A)
// (/web-locks/resources/iframe.html) that is same-site with the
// pop-up inside the "parent" iframe.
// Nested Step 6 (parent iframe): pass on the web-lock request message to
// the "child" iframe.
// Nested Step 7 (child iframe): process the web-lock request and message
// the result to the parent iframe.
// Nested Step 8 (parent iframe): intercept the result message from the
// child iframe and send it to the pop-up.
// Nested Step 9 (pop-up): intercept the result message from the parent
// iframe and send it to the top frame.
// Nested Step 10 (top frame): ensure that the same-site iframe's web-lock
// request succeeds since it and the top-level are successfully
// partitioned and each can hold an exclusive lock.
// Nested Step 11 (top frame): clean up.
// Map of lock_id => function that releases a lock.
const held_2 = new Map();
@ -78,6 +122,7 @@ async function nested_iframe_test(t) {
`/web-locks/resources/partitioned-parent.html?target=${encodeURIComponent(middle_url)}`,
HTTPS_ORIGIN + self.location.pathname);
// Nested Step 1.
// Request the weblock for the top-level site.
navigator.locks.request('testLock', {mode: 'exclusive', ifAvailable: true},
lock => {
@ -93,17 +138,20 @@ async function nested_iframe_test(t) {
return promise;
}).catch(error => alert(error.message));
// Nested Step 2.
// Open the nested iframes. The script in the innermost child iframe
// will attempt to obtain the same weblock as above.
const w = window.open(top_url);
const result = await new Promise(resolve => window.onmessage = resolve);
// Nested Step 10.
// With third-party storage partitioning enabled, the same-site iframe
// should be able to acquire the lock as it has a cross-site ancestor
// and is partitioned separately from the top-level site.
assert_equals(result.data.failed, undefined,
'The 1p iframe failed to acquire the lock');
// Nested Step 11.
t.add_cleanup(() => {
w.close()
for(let i = 1; i < next_lock_id_2; i++){

View file

@ -4,6 +4,7 @@
'use strict';
async function onLoad() {
// Nested Step 5: wpt/web-locks/partitioned-web-locks.tentative.https.html
// Load the innermost child iframe and its content.
const params = new URLSearchParams(self.location.search);
const frame = document.createElement('iframe');
@ -11,6 +12,7 @@ async function onLoad() {
document.body.appendChild(frame);
self.addEventListener('message', evt => {
// Nested Step 6: wpt/web-locks/partitioned-web-locks.tentative.https.html
// Pass any operations request messages to the
// innermost child iframe.
if (evt.data.op){
@ -20,6 +22,7 @@ async function onLoad() {
frame.contentWindow.postMessage(evt.data, '*');
});
}
// Nested Step 8: wpt/web-locks/partitioned-web-locks.tentative.https.html
else {
// All other messages, should be sent back to the
// top-level site.

View file

@ -3,6 +3,8 @@
<meta name="referrer" content="origin">
<script>
async function onLoad() {
// Step 6 and Nested Step 9:
// wpt/web-locks/partitioned-web-locks.tentative.https.html
self.addEventListener('message', evt => {
if (self.opener)
self.opener.postMessage(evt.data, '*');
@ -10,11 +12,15 @@ async function onLoad() {
self.top.postMessage(evt.data, '*');
}, { once: true });
// Step 3 and Nested Step 3:
// wpt/web-locks/partitioned-web-locks.tentative.https.html
const params = new URLSearchParams(self.location.search);
const frame = document.createElement('iframe');
frame.src = params.get('target');
document.body.appendChild(frame);
// Step 4 and Nested Step 4:
// wpt/web-locks/partitioned-web-locks.tentative.https.html
frame.addEventListener('load', function(){
frame.contentWindow.postMessage({op: 'request',
name: 'testLock', ifAvailable: true}, '*');

View file

@ -2,6 +2,3 @@
expected: ERROR
[WebGL test #2: Unable to fetch WebGL rendering context for Canvas]
expected: FAIL
[WebGL test #0: img was loaded]
expected: FAIL

View file

@ -76,3 +76,9 @@
[WebGL test #50: Texture was smaller than the expected size 0x0]
expected: FAIL
[WebGL test #45: Texture was smaller than the expected size 0x0]
expected: FAIL
[WebGL test #49: Texture was smaller than the expected size 0x0]
expected: FAIL

View file

@ -2,6 +2,3 @@
expected: ERROR
[WebGL test #2: Unable to fetch WebGL rendering context for Canvas]
expected: FAIL
[WebGL test #0: img was loaded]
expected: FAIL