mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
Update web-platform-tests to revision b'45fdf45f79582953fb3aa708566cd2c0707cb222'
This commit is contained in:
parent
f7e88665c6
commit
812c6de70b
125 changed files with 1400 additions and 1046 deletions
8
tests/wpt/metadata/FileAPI/blob/Blob-stream.any.js.ini
Normal file
8
tests/wpt/metadata/FileAPI/blob/Blob-stream.any.js.ini
Normal file
|
@ -0,0 +1,8 @@
|
|||
[Blob-stream.any.html]
|
||||
[Reading Blob.stream() with BYOB reader]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[Blob-stream.any.worker.html]
|
||||
[Reading Blob.stream() with BYOB reader]
|
||||
expected: FAIL
|
|
@ -1,7 +0,0 @@
|
|||
[url-charset.window.html]
|
||||
expected: TIMEOUT
|
||||
[Blob charset should override any auto-detected charset.]
|
||||
expected: TIMEOUT
|
||||
|
||||
[Blob charset should override <meta charset>.]
|
||||
expected: TIMEOUT
|
|
@ -7,7 +7,7 @@
|
|||
expected: FAIL
|
||||
|
||||
[Opening a blob URL in a new window immediately before revoking it works.]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -5282,14 +5282,14 @@
|
|||
},
|
||||
"popovers": {
|
||||
"popover-dialog-crash.html": [
|
||||
"76f51b8a5ed81099ad51bb704b4567579e8c8b07",
|
||||
"e7579d5a3869958422fc07422fbb84124c8c635a",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"popover-manual-crash.html": [
|
||||
"d721f7c731e0d2c5a9e6c9ab79a5a450345a4874",
|
||||
"535eb4c7d120186f620c376a149158900721fe12",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -28636,6 +28636,19 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"fixedpos-with-iframe-print.html": [
|
||||
"5102d045c4202e4bc22c6c876fd3bbbcf620c4b0",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-break/fixedpos-with-iframe-print-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"fixedpos-with-link-with-inline-child-print.html": [
|
||||
"694e5376cbfab7ee52c1f27b9bf0fd23a2a91375",
|
||||
[
|
||||
|
@ -208348,8 +208361,8 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"overflow-overlay.tentative.html": [
|
||||
"e3cb8d7180e4bc5ddb84506e401c0b8c90d81470",
|
||||
"overflow-overlay.html": [
|
||||
"0e8ff093b03aa4dd9a78900d6f615590ec510fa7",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -212754,6 +212767,19 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"position-sticky-fractional-offset.html": [
|
||||
"79c29f4e87bf7c14572e51757c258945eb0c8c6e",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-position/sticky/position-sticky-fractional-offset-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"position-sticky-grid.html": [
|
||||
"607e7c2936246c192e04c8d3673321c0a54cda3c",
|
||||
[
|
||||
|
@ -276424,6 +276450,72 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"iframe-new-has-scrollbar.html": [
|
||||
"bed16754f6b163b6bb55c2d2504c733113764c00",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-view-transitions/iframe-new-has-scrollbar-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{
|
||||
"fuzzy": [
|
||||
[
|
||||
[
|
||||
"/css/css-view-transitions/iframe-new-has-scrollbar.html",
|
||||
"/css/css-view-transitions/iframe-new-has-scrollbar-ref.html",
|
||||
"=="
|
||||
],
|
||||
[
|
||||
[
|
||||
0,
|
||||
80
|
||||
],
|
||||
[
|
||||
0,
|
||||
500
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"iframe-old-has-scrollbar.html": [
|
||||
"9dfa4adf7ac34ff85bfd19951060152a9a3da962",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-view-transitions/iframe-old-has-scrollbar-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{
|
||||
"fuzzy": [
|
||||
[
|
||||
[
|
||||
"/css/css-view-transitions/iframe-old-has-scrollbar.html",
|
||||
"/css/css-view-transitions/iframe-old-has-scrollbar-ref.html",
|
||||
"=="
|
||||
],
|
||||
[
|
||||
[
|
||||
0,
|
||||
80
|
||||
],
|
||||
[
|
||||
0,
|
||||
500
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"iframe-transition.sub.html": [
|
||||
"93a5cbed66eb0efac3c68fbed699984556e362b4",
|
||||
[
|
||||
|
@ -309051,7 +309143,7 @@
|
|||
},
|
||||
"popovers": {
|
||||
"popover-anchor-change-display.html": [
|
||||
"a80377441b03f212e2cb8ad95c5f65528908ab02",
|
||||
"435929a6c1b05adc811fe8df029f2a30e2e79cf3",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -309064,7 +309156,7 @@
|
|||
]
|
||||
],
|
||||
"popover-anchor-display.html": [
|
||||
"23d50df7634b47c034b6b625b27cb7b89dfcb99d",
|
||||
"d50dd6c857b24f5e75e979d6356151e5cf7b65c8",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -309077,7 +309169,7 @@
|
|||
]
|
||||
],
|
||||
"popover-anchor-nested-display.html": [
|
||||
"426c0fcb85542870e7fcfecdf228e56e73957e2c",
|
||||
"4b83d9677b978cc2f2c373e671a956042dd159af",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -309090,7 +309182,7 @@
|
|||
]
|
||||
],
|
||||
"popover-anchor-scroll-display.html": [
|
||||
"85a05323784ab604aa4008fdec7db57841c3924c",
|
||||
"9a14b44f04994cd6552862f16d94632d814fb45a",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -309102,47 +309194,8 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"popover-animated-hide-display.html": [
|
||||
"b914d80e69aefa5296960a1ed3d96073e1a08af2",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/html/semantics/popovers/popover-animated-display-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"popover-animated-hide-finishes.html": [
|
||||
"1af583b5a8315d7005a56b4eff8a76af93414b16",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/html/semantics/popovers/popover-animated-hide-finishes-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"popover-animated-show-display.html": [
|
||||
"6857103a759b2c222c424227d0977330d320b22a",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/html/semantics/popovers/popover-animated-display-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"popover-appearance.html": [
|
||||
"87cc4ba3fc89e36b5c412bdecb7a229835c712ca",
|
||||
"e9050bdeb9ddc2215bb91d0fc5c7cd6bf6c83365",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -309155,7 +309208,7 @@
|
|||
]
|
||||
],
|
||||
"popover-backdrop-appearance.html": [
|
||||
"4c5c0acec992249c44f53c76725b30a4d4148c38",
|
||||
"c71e148644b0edb5064b46a01debb37945913818",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -309168,7 +309221,7 @@
|
|||
]
|
||||
],
|
||||
"popover-dialog-appearance.html": [
|
||||
"02b34bfc67555930a2bb0a182ef09d34c9800f23",
|
||||
"8b4edadee9e127355b0e14cbabeb65b30020c5c0",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -309181,7 +309234,7 @@
|
|||
]
|
||||
],
|
||||
"popover-hidden-display.html": [
|
||||
"35fea3e94c67bfc7cd71a54c8f8a98e99561d865",
|
||||
"936c57fc17e52c7ad373c7ccb2d681d7de330a2f",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -309210,7 +309263,7 @@
|
|||
]
|
||||
],
|
||||
"popover-inside-display-none.html": [
|
||||
"3ccb885b81a75b899ac3433101e0822945346364",
|
||||
"a25cf14d1ce039a88188cf3c637523ece926bf3a",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -309223,7 +309276,7 @@
|
|||
]
|
||||
],
|
||||
"popover-open-display.html": [
|
||||
"ca57a6259966c13837e8c3d116db1538341d6c4c",
|
||||
"bc4d16fe80f9dad5ca27b5646db2740ac3dfa652",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -309236,7 +309289,7 @@
|
|||
]
|
||||
],
|
||||
"popover-open-overflow-display.html": [
|
||||
"7fc96411c22f3ec926ab5022d246cb1a3defee70",
|
||||
"3d4d833063877ce1a9a3338d534709f94bdcdd77",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -309249,7 +309302,7 @@
|
|||
]
|
||||
],
|
||||
"popover-stacking-context.html": [
|
||||
"1a9e829250535a3de87239d43fe8c4a4733b3ba9",
|
||||
"ba4e85a89785cc158b2d4768ad6382c648b544f4",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -366462,6 +366515,10 @@
|
|||
"000c05350b54885c47ea74a7336e02ed857d55ea",
|
||||
[]
|
||||
],
|
||||
"fixedpos-with-iframe-print-ref.html": [
|
||||
"5c1714045083dfc22272b0522273e7a7235cde6f",
|
||||
[]
|
||||
],
|
||||
"fixedpos-with-link-with-inline-child-print-ref.html": [
|
||||
"f12d31acd9d077a24a4ba47bcdbb5b2a3029faf3",
|
||||
[]
|
||||
|
@ -385727,6 +385784,10 @@
|
|||
"b78c784de185918d8939075fb46eca7ad48b6fde",
|
||||
[]
|
||||
],
|
||||
"position-sticky-fractional-offset-ref.html": [
|
||||
"8b7a1f8a195843b2b943e39813b5e24781955b8d",
|
||||
[]
|
||||
],
|
||||
"position-sticky-grid-ref.html": [
|
||||
"123eed311b0d293fbe4265ad641576f4fc83fd9f",
|
||||
[]
|
||||
|
@ -397026,6 +397087,14 @@
|
|||
"bca532b22c6a777108fd7a1ea7b811a73f7cdb17",
|
||||
[]
|
||||
],
|
||||
"iframe-new-has-scrollbar-ref.html": [
|
||||
"ea895e84848be70644dbb0b3b62b363d05d0319f",
|
||||
[]
|
||||
],
|
||||
"iframe-old-has-scrollbar-ref.html": [
|
||||
"3bb9bdb88d27b10d7e421eaf32389380642b1d61",
|
||||
[]
|
||||
],
|
||||
"iframe-transition-ref.html": [
|
||||
"49394f35f6c4f6c7d6c25e9f4fd61154a708904f",
|
||||
[]
|
||||
|
@ -397244,13 +397313,17 @@
|
|||
],
|
||||
"support": {
|
||||
"dialog-in-rtl-iframe-child.html": [
|
||||
"f1b3f021cbc19af6757d0a0b46a4971048d35dcc",
|
||||
"7b40a8fd5b614e18c27e3ba53754274edb7ec896",
|
||||
[]
|
||||
],
|
||||
"frame-helper.html": [
|
||||
"3d2e7b52d078d640602a15b97e54dd62981cb83d",
|
||||
[]
|
||||
],
|
||||
"iframe-scrollbar-child.html": [
|
||||
"dfd0fb40d926a358979e9db23f6de11249d277fc",
|
||||
[]
|
||||
],
|
||||
"transition-in-empty-iframe-child.html": [
|
||||
"4eca06a0a943338efd9835e4c2f86b0eff3fce7a",
|
||||
[]
|
||||
|
@ -402549,7 +402622,7 @@
|
|||
[]
|
||||
],
|
||||
"from-local-system.md": [
|
||||
"77f4799fb247d39fd291222d1164bc7548ccbcb2",
|
||||
"f47396acc3c683ba6e074906e3cd835a780cc777",
|
||||
[]
|
||||
],
|
||||
"from-web.md": [
|
||||
|
@ -406700,7 +406773,11 @@
|
|||
[]
|
||||
],
|
||||
"support.sub.js": [
|
||||
"8ffdf100ee8d81f75c923dc712e2e87e52ab3ce7",
|
||||
"a104021d158d93288ae5ad5e3f1674d304b0e875",
|
||||
[]
|
||||
],
|
||||
"worker-blob-fetcher.html": [
|
||||
"18a454b7fa3628838da1d0d5cca0f6a61758c770",
|
||||
[]
|
||||
],
|
||||
"worker-fetcher.html": [
|
||||
|
@ -419926,21 +420003,13 @@
|
|||
[]
|
||||
],
|
||||
"popover-anchor-nested-display-ref.html": [
|
||||
"17311f218b24d49fd72dd8c9e330efb13de43990",
|
||||
"9942b41e365d98bb6115a57c234d755984474feb",
|
||||
[]
|
||||
],
|
||||
"popover-anchor-scroll-display-ref.html": [
|
||||
"1bac806d11191823bdcf87b61693b00c7d507450",
|
||||
[]
|
||||
],
|
||||
"popover-animated-display-ref.html": [
|
||||
"477a97c12ccd9dc8f6a5427c7d85449e96d8f3ff",
|
||||
[]
|
||||
],
|
||||
"popover-animated-hide-finishes-ref.html": [
|
||||
"d8334f985ed51f3277d069838132876d8aad2ffc",
|
||||
[]
|
||||
],
|
||||
"popover-appearance-ref.html": [
|
||||
"7ceca94559b8d425c10243f61b038d6c8422a02b",
|
||||
[]
|
||||
|
@ -432223,7 +432292,7 @@
|
|||
[]
|
||||
],
|
||||
"webusb-test.js": [
|
||||
"fc322bd4736b544d694582a3cbde403d01aea341",
|
||||
"94ff1bcadd913d6b12e4d84d64ac34ef82f2e328",
|
||||
[]
|
||||
],
|
||||
"webusb-test.js.headers": [
|
||||
|
@ -436403,6 +436472,10 @@
|
|||
"1ab609f11bf2be22696f0b132b88d8fc86546b93",
|
||||
[]
|
||||
],
|
||||
"main-frame-navigation.html": [
|
||||
"8781edef6670b48bf17cf644b5623f08bfca0fdb",
|
||||
[]
|
||||
],
|
||||
"media-autoplay-attribute.html": [
|
||||
"ebef5b725df828c7f8bb36470139d7480199d543",
|
||||
[]
|
||||
|
@ -448387,7 +448460,7 @@
|
|||
[]
|
||||
],
|
||||
"urltestdata.json": [
|
||||
"0265346a6a62d437cb9e94e55bd93369d92544fa",
|
||||
"94d41c0cb0d270da1493774e4fd3de579ddfe30a",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -456088,7 +456161,7 @@
|
|||
]
|
||||
],
|
||||
"Blob-stream.any.js": [
|
||||
"8f1d5c555aded300e240bf7873ce415cc51785d8",
|
||||
"87710a171a9752416f47596f59d2dc6313d9bd34",
|
||||
[
|
||||
"FileAPI/blob/Blob-stream.any.html",
|
||||
{
|
||||
|
@ -516928,7 +517001,7 @@
|
|||
]
|
||||
],
|
||||
"acos-asin-atan-atan2-computed.html": [
|
||||
"2835e7a20abc917e111d22a9b04fca17493b4793",
|
||||
"dc8ecce621d69f950846219f698dbe477cb14833",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -517287,7 +517360,7 @@
|
|||
]
|
||||
],
|
||||
"minmax-angle-computed.html": [
|
||||
"c0218a0899e6f9ee991a3645293895b924a895ed",
|
||||
"2c14aa65763154ddc8093dd6d2a450212df619f7",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -558087,6 +558160,24 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"worker-blob-fetch.window.js": [
|
||||
"80374143a283f42723a48159a72dd1bd715d6ba2",
|
||||
[
|
||||
"fetch/private-network-access/worker-blob-fetch.window.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"script",
|
||||
"/common/utils.js"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"resources/support.sub.js"
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"worker-fetch.https.window.js": [
|
||||
"89e0c3cf1f35f0cf741957c3eb0bff38a4705d93",
|
||||
[
|
||||
|
@ -604277,14 +604368,14 @@
|
|||
]
|
||||
],
|
||||
"popover-anchor-display-none.html": [
|
||||
"a4285607fd30360545e1364b450443af1cca1fbe",
|
||||
"55a11fafdb5901ad2f409595107d1d8c587d4979",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"popover-anchor-idl-property.html": [
|
||||
"bc9f3ae770d2daded1b7f087a5d56436b578cb36",
|
||||
"37c79efe1cafe45012627e8b56ab638eaf3c2b95",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -604298,7 +604389,7 @@
|
|||
]
|
||||
],
|
||||
"popover-anchor-nesting.html": [
|
||||
"7490d75dc09c750c028f75ac0e5660b3b99084e1",
|
||||
"e3e712b937ab9c4aabbf595eddf45180f4fd9d34",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -604306,24 +604397,8 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"popover-animated-hide-cleanup.html": [
|
||||
"9310acc4ff209807a36b75c543edad64f4318f39",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"popover-animation-corner-cases.html": [
|
||||
"f41f7a68df9058dee90de4ece70b753a801d6a49",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"popover-attribute-basic.html": [
|
||||
"bc32c357d3a5503564282a4e3a7260fcd0ae6458",
|
||||
"0abba9c4e87f7a72bc2d54f816851b2228e75d5b",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -604333,21 +604408,21 @@
|
|||
]
|
||||
],
|
||||
"popover-beforetoggle-opening-event.html": [
|
||||
"b2c3fa5d68bf051e2faf5d83e765de1ed42397b6",
|
||||
"e3597d1c69936435c99c18f8ec8b05c50a4a0149",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"popover-document-open.html": [
|
||||
"429fd89d3ba68d9588b66e696095e5007eaccc9a",
|
||||
"db43fd02b92f062f925c0beea13e1a5faab2427f",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"popover-events.html": [
|
||||
"b299424570024c81238ae076fdacbfa2badc83b4",
|
||||
"1ccd9967c5c9df25ae7995c19c055fdf2a37b82b",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -604370,7 +604445,7 @@
|
|||
]
|
||||
],
|
||||
"popover-focus.html": [
|
||||
"b1e59a13971c7be224663ef3d1161ee83c0527ed",
|
||||
"307ca8a80f553ce31d5cbf1666ddacf63641cdaf",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -604380,7 +604455,7 @@
|
|||
]
|
||||
],
|
||||
"popover-invoking-attribute.html": [
|
||||
"b49bb4e4a34ced3b30abe1e2bee14ba5c17cff1e",
|
||||
"d0098d32738d84cc43a8c91f0f5342671f2d2e10",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -604390,7 +604465,7 @@
|
|||
]
|
||||
],
|
||||
"popover-light-dismiss-on-scroll.html": [
|
||||
"73b3a2d6193bc6f5a120a583a7a7e6169a34487f",
|
||||
"a4bb4b452b0d4adde4cbd37e7045aac1004bcf94",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -604407,7 +604482,7 @@
|
|||
]
|
||||
],
|
||||
"popover-not-keyboard-focusable.html": [
|
||||
"815ae04ebb4024e84ced328b2d5541734e787cd5",
|
||||
"cd0b60c3ce65df77e75b67dff9d4af2070f4f395",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -604416,28 +604491,28 @@
|
|||
]
|
||||
],
|
||||
"popover-removal-2.html": [
|
||||
"b7b185d58d53f5cb84516e7bb2b98746221a7c6e",
|
||||
"e84124d8bef326efe968ccdebd2717a0eae20d21",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"popover-removal.html": [
|
||||
"aeed3b678db06b9e351b634f654f93829141d8c4",
|
||||
"e6ad5d9c004858b407228238bcdb5b2d4f1efd8b",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"popover-shadow-dom.html": [
|
||||
"72bbe1e8933cfa0fa189b69a41be5d5a47d0716b",
|
||||
"44ded952b702f3d7729eae333719dd0d471c742f",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"popover-stacking.html": [
|
||||
"dc07c1c208473cc96ba0e63d1369f17b01f503df",
|
||||
"bdd6feb20eead682790d1e3814272f3f1a384aa4",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -604451,7 +604526,7 @@
|
|||
]
|
||||
],
|
||||
"popover-top-layer-combinations.html": [
|
||||
"001bf88a25ef851e6607dc6e0ba7a7cf3b8cf4f8",
|
||||
"c8e4211ef5c1358a5f611442513ada939e4b7022",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -604460,7 +604535,7 @@
|
|||
]
|
||||
],
|
||||
"popover-top-layer-interactions.html": [
|
||||
"50a21be7f7723e9010cfc1f5e6548a231ff3e8dd",
|
||||
"6ef6938810b8532b78f7fbfc905b8f84c1300df9",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -604476,7 +604551,7 @@
|
|||
]
|
||||
],
|
||||
"toggleevent-interface.html": [
|
||||
"45709458b00c466805c63d1bc4530d37677718a9",
|
||||
"09ce3f3b5674860f22d255c428aab9a0b63ae072",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -624907,14 +624982,14 @@
|
|||
]
|
||||
],
|
||||
"navigate-history-back-after-fragment.html": [
|
||||
"976754f28a885e77ea08d31fc32f682966bc0999",
|
||||
"57a30c85b8700b1e86f577bed1008b16271acbb2",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"navigate-history-back-after-pushState.html": [
|
||||
"4d870fb2ae6d0a66ded888e2dbc7bea37e106980",
|
||||
"bf2e6e4e300e96c684d467c40a7b3ad796b5018c",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -624977,14 +625052,21 @@
|
|||
]
|
||||
],
|
||||
"navigate-navigation-back-cross-document.html": [
|
||||
"214644066e1d120e1ee516a050a40cec3dad2134",
|
||||
"2e1adbeee93ee082a7d9f7e008a5f863e0fc0c50",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"navigate-navigation-back-same-document-in-iframe.html": [
|
||||
"cebd2f3693c9d8f0845b78ac0a26e53e164f2628",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"navigate-navigation-back-same-document.html": [
|
||||
"8753e6b1c86bab8b3388f5730d2f2a54eca8b472",
|
||||
"431d38449c3dff316911bd17b7260f164160f20b",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -625039,6 +625121,48 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"navigation-back-cross-document-preventDefault.html": [
|
||||
"0b5b750876d7775d352d6471f118d882a259669f",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"navigation-back-same-document-preventDefault.html": [
|
||||
"7edb188823352694caf70101f126135142e7dd28",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"navigation-traverseTo-in-iframe-same-document-preventDefault.html": [
|
||||
"d68b11fa7ccae6a3dc6287150cf25fe8d96d93cf",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"navigation-traverseTo-navigates-top-and-same-doc-child-and-cross-doc-child.html": [
|
||||
"31cb54fca2a4d5e06f3bab4330b77d7a87f78fb6",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"navigation-traverseTo-same-document-preventDefault-multiple-windows.html": [
|
||||
"9bb64fb7cc7a7dd5e007021039616b44da56cdd3",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"navigation-traverseTo-top-cancels-cross-document-child.html": [
|
||||
"11f07afefc5236efc12efc341f9b85da3c0b6c9f",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"same-url-replace-cross-document.html": [
|
||||
"0a976cd51fdcb3205d2a71cc9dc1a9853e417eee",
|
||||
[
|
||||
|
@ -626068,7 +626192,7 @@
|
|||
]
|
||||
],
|
||||
"traverseTo-detach-between-navigate-and-navigatesuccess.html": [
|
||||
"a0a291888786119427dcf544c8a84fce86fa0822",
|
||||
"43bde9a103bc13fd1cb88320da1fb60df0de0fa5",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -658195,6 +658319,15 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"main-frame-navigation.https.html": [
|
||||
"47d8f2e81a3ce911e171ac828b867bd0161dedf3",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"media-autoplay.html": [
|
||||
"7e6b8d10477f9838fc6f57b83f531a2670efeee5",
|
||||
[
|
||||
|
@ -672669,7 +672802,7 @@
|
|||
},
|
||||
"exception": {
|
||||
"basic.tentative.any.js": [
|
||||
"9ddebae0e968a28135b9c73748fffb80be4468e4",
|
||||
"acf644f904f53d54918d660c419f60a15c72eabb",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
[block-in-inline-hittest-002.html]
|
||||
[elementsFromPoint]
|
||||
expected: FAIL
|
||||
|
||||
[elementFromPoint]
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[block-in-inline-hittest-float-002.html]
|
||||
[block-in-inline-hittest-float-002]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[attribute-value-selector-004.xht]
|
||||
expected: TIMEOUT
|
|
@ -1,3 +0,0 @@
|
|||
[hittest-before-pseudo.html]
|
||||
[Hit-testing text within a pseudo-element flex-item should return the flexbox as the hittest result.]
|
||||
expected: FAIL
|
|
@ -158,9 +158,6 @@
|
|||
[Matching font-weight: '430' should prefer '500' over '400 425']
|
||||
expected: FAIL
|
||||
|
||||
[Matching font-weight: '500' should prefer '450 460' over '400']
|
||||
expected: FAIL
|
||||
|
||||
[Matching font-weight: '500' should prefer '350 399' over '351 398']
|
||||
expected: FAIL
|
||||
|
||||
|
@ -319,3 +316,18 @@
|
|||
|
||||
[Matching font-style: 'oblique -21deg' should prefer 'oblique -10deg' over 'italic']
|
||||
expected: FAIL
|
||||
|
||||
[Matching font-stretch: '100%' should prefer '100%' over '110% 120%']
|
||||
expected: FAIL
|
||||
|
||||
[Matching font-style: 'normal' should prefer 'oblique 20deg 30deg' over 'oblique -50deg -20deg']
|
||||
expected: FAIL
|
||||
|
||||
[Matching font-style: 'italic' should prefer 'oblique 5deg 10deg' over 'oblique 5deg']
|
||||
expected: FAIL
|
||||
|
||||
[Matching font-style: 'oblique 10deg' should prefer 'oblique 10deg' over 'oblique 5deg']
|
||||
expected: FAIL
|
||||
|
||||
[Matching font-style: 'oblique -21deg' should prefer 'italic' over 'oblique 0deg']
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
[transform-scale-hittest.html]
|
||||
[Hit test intersecting scaled box]
|
||||
expected: FAIL
|
||||
|
||||
[Hit test within unscaled box]
|
||||
expected: FAIL
|
||||
|
|
|
@ -325,153 +325,3 @@
|
|||
|
||||
[margin-right length(mm) / values]
|
||||
expected: [FAIL, PASS]
|
||||
|
||||
[color color(rgba) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-weight font-weight(keyword) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-weight font-weight(numeric) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height number(integer) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height number(decimal) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-shadow shadow(shadow) / values]
|
||||
expected: FAIL
|
||||
|
|
|
@ -121,3 +121,6 @@
|
|||
|
||||
[atan2(1ms, -1ms) should be used-value-equivalent to 135deg]
|
||||
expected: FAIL
|
||||
|
||||
[calc(atan2(0,-1) / 4) should be used-value-equivalent to 45deg]
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[elementFromPoint-subpixel.html]
|
||||
[Hit test top left corner of box]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[elementFromPoint-visibility-hidden-resizer.html]
|
||||
[elementFromPoint on resizer area of an element with visibility:hidden]
|
||||
expected: FAIL
|
|
@ -20,3 +20,6 @@
|
|||
|
||||
[test the top of layer]
|
||||
expected: FAIL
|
||||
|
||||
[test some point of the element: top left corner]
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[elementsFromPoint-invalid-cases.html]
|
||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
||||
expected: FAIL
|
|
@ -146,6 +146,3 @@
|
|||
|
||||
[list-style-image sec-fetch-site - HTTPS downgrade-upgrade]
|
||||
expected: FAIL
|
||||
|
||||
[background-image sec-fetch-site - HTTPS downgrade (header not sent)]
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
[worker-blob-fetch.window.html]
|
||||
[local to local: success.]
|
||||
expected: FAIL
|
||||
|
||||
[private to local: failure.]
|
||||
expected: FAIL
|
||||
|
||||
[private to private: success.]
|
||||
expected: FAIL
|
||||
|
||||
[public to local: failure.]
|
||||
expected: FAIL
|
||||
|
||||
[public to private: failure.]
|
||||
expected: FAIL
|
||||
|
||||
[public to public: success.]
|
||||
expected: FAIL
|
||||
|
||||
[treat-as-public to local: failure.]
|
||||
expected: FAIL
|
||||
|
||||
[treat-as-public to private: failure.]
|
||||
expected: FAIL
|
||||
|
||||
[treat-as-public to public: success.]
|
||||
expected: FAIL
|
||||
|
||||
[private https to local: failure.]
|
||||
expected: FAIL
|
||||
|
||||
[public https to private: failure.]
|
||||
expected: FAIL
|
||||
|
||||
[public https to local: failure.]
|
||||
expected: FAIL
|
|
@ -1,6 +1,6 @@
|
|||
[scroll-restoration-fragment-scrolling-cross-origin.html]
|
||||
type: testharness
|
||||
expected: ERROR
|
||||
expected: TIMEOUT
|
||||
[Manual scroll restoration should take precedent over scrolling to fragment in cross origin navigation]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
[005.html]
|
||||
expected: TIMEOUT
|
||||
[Link with onclick navigation and href navigation ]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
[iframe-src-aboutblank-navigate-immediately.html]
|
||||
expected: TIMEOUT
|
||||
[Navigating to a different document with window.open]
|
||||
expected: FAIL
|
||||
|
||||
[Navigating to a different document with form submission]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Navigating to a different document with link click]
|
||||
expected: FAIL
|
||||
|
|
|
@ -7,3 +7,6 @@
|
|||
|
||||
[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
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[javascript-url-load-as-html.xhtml]
|
||||
expected: TIMEOUT
|
||||
[javascript: URL navigation to a string must create a HTML document using the correct properties]
|
||||
expected: TIMEOUT
|
|
@ -1,10 +1,6 @@
|
|||
[javascript-url-referrer.window.html]
|
||||
expected: TIMEOUT
|
||||
[unsafe-url referrer policy used to create the starting page]
|
||||
expected: FAIL
|
||||
|
||||
[origin referrer policy used to create the starting page]
|
||||
expected: FAIL
|
||||
|
||||
[no-referrer referrer policy used to create the starting page]
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[navigation-unload-cross-origin.sub.window.html]
|
||||
[Cross-origin navigation started from unload handler must be ignored]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[a-click.html]
|
||||
[aElement.click() before the load event must NOT replace]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[creating_browsing_context_test_01.html]
|
||||
[first argument: absolute url]
|
||||
expected: FAIL
|
|
@ -1,2 +1,2 @@
|
|||
[canvas.2d.disconnected.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
[update-the-rendering.html]
|
||||
expected: TIMEOUT
|
||||
["Flush autofocus candidates" should be happen after the first animation frame callbacks, and before a resize event in the next iteration of window event loop.]
|
||||
expected: TIMEOUT
|
||||
|
||||
["Flush autofocus candidates" should be happen before a scroll event and animation frame callbacks]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[iframe_sandbox_popups_nonescaping-1.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
[non-active-document.html]
|
||||
[DOMParser]
|
||||
expected: FAIL
|
||||
|
||||
[createHTMLDocument]
|
||||
expected: FAIL
|
||||
|
||||
[<template>]
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[select-event.html]
|
||||
[input type tel: selectionStart twice in disconnected node (must fire select only once)]
|
||||
expected: FAIL
|
|
@ -1,6 +1,5 @@
|
|||
[htmlanchorelement_noopener.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Check that targeting of rel=noopener with a given name ignores an existing window with that name]
|
||||
expected: NOTRUN
|
||||
|
||||
|
@ -14,4 +13,4 @@
|
|||
expected: FAIL
|
||||
|
||||
[Check that rel=noopener with target=_self does a normal load]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[popover-animated-hide-display.html]
|
||||
expected: TIMEOUT
|
|
@ -1,2 +0,0 @@
|
|||
[popover-animated-hide-finishes.html]
|
||||
expected: TIMEOUT
|
|
@ -1,2 +0,0 @@
|
|||
[popover-animated-show-display.html]
|
||||
expected: TIMEOUT
|
|
@ -1,24 +0,0 @@
|
|||
[popover-animation-corner-cases.html]
|
||||
[Descendent animations should keep the pop up visible until the animation ends]
|
||||
expected: FAIL
|
||||
|
||||
[Pre-existing animations should *not* keep the pop up visible until the animation ends]
|
||||
expected: FAIL
|
||||
|
||||
[It should be possible to use the "beforetoggle" event handler to animate the hide]
|
||||
expected: FAIL
|
||||
|
||||
[It should be possible to use the "beforetoggle" event handler to animate the hide, even when the hide is due to dialog.showModal]
|
||||
expected: FAIL
|
||||
|
||||
[toggle event cannot be cancelled]
|
||||
expected: FAIL
|
||||
|
||||
[Closing animations are triggered by changing the popover type]
|
||||
expected: FAIL
|
||||
|
||||
[animation finish/cancel events must be trusted in order to finish closing the popover.]
|
||||
expected: FAIL
|
||||
|
||||
[Capturing event listeners can't affect popover animations.]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[DOMContentLoaded-defer.html]
|
||||
[The end: DOMContentLoaded and defer scripts]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[module-delayed.html]
|
||||
[async document.write in a module]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[module-static-import-delayed.html]
|
||||
[document.write in an imported module]
|
||||
expected: FAIL
|
|
@ -1,16 +1,16 @@
|
|||
[promise-job-entry-different-function-realm.html]
|
||||
expected: TIMEOUT
|
||||
[Fulfillment handler on fulfilled promise]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[Rejection handler on pending-then-rejected promise]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Thenable resolution]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[Rejection handler on rejected promise]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[Fulfillment handler on pending-then-fulfilled promise]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
3
tests/wpt/metadata/url/a-element-origin-xhtml.xhtml.ini
Normal file
3
tests/wpt/metadata/url/a-element-origin-xhtml.xhtml.ini
Normal file
|
@ -0,0 +1,3 @@
|
|||
[a-element-origin-xhtml.xhtml]
|
||||
[Parsing origin: <http://[::127.0.0.1.\]> against <http://example.org/foo/bar>]
|
||||
expected: FAIL
|
3
tests/wpt/metadata/url/a-element-origin.html.ini
Normal file
3
tests/wpt/metadata/url/a-element-origin.html.ini
Normal file
|
@ -0,0 +1,3 @@
|
|||
[a-element-origin.html]
|
||||
[Parsing origin: <http://[::127.0.0.1.\]> against <http://example.org/foo/bar>]
|
||||
expected: FAIL
|
|
@ -304,6 +304,9 @@
|
|||
[Parsing: <path> against <non-spec:/..//p>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <http://[::127.0.0.1.\]> against <http://example.org/foo/bar>]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[a-element-xhtml.xhtml?include=javascript]
|
||||
|
||||
|
|
|
@ -307,3 +307,6 @@
|
|||
|
||||
[Parsing: <path> against <non-spec:/..//p>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <http://[::127.0.0.1.\]> against <http://example.org/foo/bar>]
|
||||
expected: FAIL
|
||||
|
|
|
@ -553,6 +553,9 @@
|
|||
[Parsing: <path> against <non-spec:/..//p>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <http://[::127.0.0.1.\]> against <http://example.org/foo/bar>]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[url-constructor.any.html?include=file]
|
||||
[Parsing: </> against <file://h/C:/a/b>]
|
||||
|
@ -705,5 +708,8 @@
|
|||
[Parsing: <path> against <non-spec:/..//p>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <http://[::127.0.0.1.\]> against <http://example.org/foo/bar>]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[url-constructor.any.worker.html?include=javascript]
|
||||
|
|
8
tests/wpt/metadata/url/url-origin.any.js.ini
Normal file
8
tests/wpt/metadata/url/url-origin.any.js.ini
Normal file
|
@ -0,0 +1,8 @@
|
|||
[url-origin.any.html]
|
||||
[Origin parsing: <http://[::127.0.0.1.\]> against <http://example.org/foo/bar>]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[url-origin.any.worker.html]
|
||||
[Origin parsing: <http://[::127.0.0.1.\]> against <http://example.org/foo/bar>]
|
||||
expected: FAIL
|
|
@ -1,16 +1,4 @@
|
|||
[basic.tentative.any.worker.html]
|
||||
[Wasm function throws argument]
|
||||
expected: FAIL
|
||||
|
||||
[Wasm function throws null]
|
||||
expected: FAIL
|
||||
|
||||
[Wasm function throws integer]
|
||||
expected: FAIL
|
||||
|
||||
[Imported JS function throws]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[basic.tentative.any.sharedworker.html]
|
||||
expected: ERROR
|
||||
|
@ -19,14 +7,3 @@
|
|||
expected: ERROR
|
||||
|
||||
[basic.tentative.any.html]
|
||||
[Wasm function throws argument]
|
||||
expected: FAIL
|
||||
|
||||
[Wasm function throws null]
|
||||
expected: FAIL
|
||||
|
||||
[Wasm function throws integer]
|
||||
expected: FAIL
|
||||
|
||||
[Imported JS function throws]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
3
tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini
Normal file
3
tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini
Normal file
|
@ -0,0 +1,3 @@
|
|||
[scrollBy.html]
|
||||
[Ensure that the window.scrollBy function affects scroll position as expected]
|
||||
expected: FAIL
|
|
@ -6,7 +6,8 @@
|
|||
// Helper function that triggers garbage collection while reading a chunk
|
||||
// if perform_gc is true.
|
||||
async function read_and_gc(reader, perform_gc) {
|
||||
const read_promise = reader.read();
|
||||
// Passing Uint8Array for byte streams; non-byte streams will simply ignore it
|
||||
const read_promise = reader.read(new Uint8Array(64));
|
||||
if (perform_gc) {
|
||||
await garbageCollect();
|
||||
}
|
||||
|
@ -16,10 +17,10 @@ async function read_and_gc(reader, perform_gc) {
|
|||
// Takes in a ReadableStream and reads from it until it is done, returning
|
||||
// an array that contains the results of each read operation. If perform_gc
|
||||
// is true, garbage collection is triggered while reading every chunk.
|
||||
async function read_all_chunks(stream, perform_gc = false) {
|
||||
async function read_all_chunks(stream, { perform_gc = false, mode } = {}) {
|
||||
assert_true(stream instanceof ReadableStream);
|
||||
assert_true('getReader' in stream);
|
||||
const reader = stream.getReader();
|
||||
const reader = stream.getReader({ mode });
|
||||
|
||||
assert_true('read' in reader);
|
||||
let read_value = await read_and_gc(reader, perform_gc);
|
||||
|
@ -67,7 +68,16 @@ promise_test(async() => {
|
|||
const stream = blob.stream();
|
||||
blob = null;
|
||||
await garbageCollect();
|
||||
const chunks = await read_all_chunks(stream, /*perform_gc=*/true);
|
||||
const chunks = await read_all_chunks(stream, { perform_gc: true });
|
||||
assert_array_equals(chunks, input_arr);
|
||||
}, "Blob.stream() garbage collection of blob shouldn't break stream" +
|
||||
"consumption")
|
||||
|
||||
promise_test(async () => {
|
||||
const input_arr = [8, 241, 48, 123, 151];
|
||||
const typed_arr = new Uint8Array(input_arr);
|
||||
let blob = new Blob([typed_arr]);
|
||||
const stream = blob.stream();
|
||||
const chunks = await read_all_chunks(stream, { mode: "byob" });
|
||||
assert_array_equals(chunks, input_arr);
|
||||
}, "Reading Blob.stream() with BYOB reader")
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<p>The word "PASS" should be seen below.</p>
|
||||
<div style="position:absolute; background:blue;">
|
||||
<iframe src="data:text/html,PASS" style="width:8em; height:3em; background:yellow;"></iframe>
|
||||
</div>
|
||||
<p style="break-before:page;">
|
||||
Apart from this text, there should be nothing on this page.
|
||||
</p>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1414873">
|
||||
<link rel="match" href="fixedpos-with-iframe-print-ref.html">
|
||||
<p>The word "PASS" should be seen below.</p>
|
||||
<div style="position:fixed; background:blue;">
|
||||
<iframe src="data:text/html,PASS" style="width:8em; height:3em; background:yellow;"></iframe>
|
||||
</div>
|
||||
<p style="break-before:page; position:relative; z-index:1; height:8em; background:white;">
|
||||
Apart from this text, there should be nothing on this page.
|
||||
</p>
|
||||
|
|
@ -3,10 +3,10 @@
|
|||
<link rel="match" href="overflow-overlay-ref.html">
|
||||
<style>
|
||||
div {
|
||||
width: 15em;
|
||||
height: 10em;
|
||||
overflow: overlay;
|
||||
}
|
||||
width: 15em;
|
||||
height: 10em;
|
||||
overflow: overlay;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
|
|
@ -0,0 +1,40 @@
|
|||
<!DOCTYPE html>
|
||||
<style>
|
||||
.container {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
overflow-y: scroll;
|
||||
background: lightgreen;
|
||||
display: inline-block;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="container">
|
||||
<div style="height: calc(300px + 50px + 10.10px);"></div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div style="height: calc(300px + 50px + 10.25px);"></div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div style="height: calc(300px + 50px + 10.50px);"></div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div style="height: calc(300px + 50px + 10.75px);"></div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div style="height: calc(300px + 50px + 10.90px);"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
var containers = document.getElementsByClassName('container');
|
||||
for (let i = 0; i < containers.length; i++) {
|
||||
containers[i].scrollTo(0, 20);
|
||||
}
|
||||
};
|
||||
</script>
|
||||
</html>
|
|
@ -0,0 +1,80 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="reftest-wait">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-position-3/#sticky-pos" />
|
||||
<meta name="assert" content="Position sticky with a fractional offset should not show a gap" />
|
||||
<link rel="match" href="position-sticky-fractional-offset-ref.html" />
|
||||
|
||||
<style>
|
||||
.sticky-container {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
overflow-y: scroll;
|
||||
background: red;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.sticky {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
height: 50px;
|
||||
background: lightgreen;
|
||||
}
|
||||
|
||||
.force-scroll {
|
||||
height: 300px;
|
||||
background: lightgreen;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="sticky-container">
|
||||
<div style="height: 10.10px;"></div>
|
||||
<div class="sticky"></div>
|
||||
<div class="force-scroll"></div>
|
||||
</div>
|
||||
|
||||
<div class="sticky-container">
|
||||
<div style="height: 10.25px;"></div>
|
||||
<div class="sticky"></div>
|
||||
<div class="force-scroll"></div>
|
||||
</div>
|
||||
|
||||
<div class="sticky-container">
|
||||
<div style="height: 10.50px;"></div>
|
||||
<div class="sticky"></div>
|
||||
<div class="force-scroll"></div>
|
||||
</div>
|
||||
|
||||
<div class="sticky-container">
|
||||
<div style="height: 10.75px;"></div>
|
||||
<div class="sticky"></div>
|
||||
<div class="force-scroll"></div>
|
||||
</div>
|
||||
|
||||
<div class="sticky-container">
|
||||
<div style="height: 10.90px;"></div>
|
||||
<div class="sticky"></div>
|
||||
<div class="force-scroll"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
window.onload = function() {
|
||||
// Start with all containers scrolled to the top.
|
||||
var containers = document.getElementsByClassName('sticky-container');
|
||||
for (let i = 0; i < containers.length; i++) {
|
||||
containers[i].scrollTo(0, 0);
|
||||
}
|
||||
|
||||
// Wait for a full frame, then scroll all containers down so the sticky
|
||||
// elements are stuck to the container. There should be no visible gap
|
||||
// where the container's red background color is visible.
|
||||
requestAnimationFrame(() => {
|
||||
requestAnimationFrame(() => {
|
||||
for (let i = 0; i < containers.length; i++) {
|
||||
containers[i].scrollTo(0, 20);
|
||||
}
|
||||
document.documentElement.classList.remove('reftest-wait');
|
||||
});
|
||||
});
|
||||
};
|
||||
</script>
|
||||
</html>
|
|
@ -37,7 +37,7 @@ test_math_used('calc(atan(tan(0.7853975rad ) ))', '45deg', {type:'angle', approx
|
|||
test_math_used('calc(atan(tan(3.14159 / 4 + 1 - 1) ))', '45deg', {type:'angle', approx:0.1});
|
||||
test_math_used('calc(asin(sin(0.25turn)) )', '90deg', {type:'angle', approx:0.1});
|
||||
test_math_used('calc(atan2(0,1))', '0deg', {type:'angle', approx:0.1});
|
||||
test_math_used('calc(atan2(0,-1))', '-180deg', {type:'angle', approx:0.1});
|
||||
test_math_used('calc(atan2(0,-1) / 4)', '45deg', {type:'angle', approx:0.1}); // atan2(0,-1) equals 180deg, result is divided to avoid ambiguity with -180deg
|
||||
test_math_used('calc(atan2(1,-1))', '135deg', {type:'angle', approx:0.1});
|
||||
test_math_used('calc(atan2(-1,1))', '-45deg', {type:'angle', approx:0.1});
|
||||
|
||||
|
|
|
@ -46,14 +46,14 @@ test_angle_equals('min(270deg, max(0.25turn, 3.14rad))', '3.14rad');
|
|||
test_angle_equals('max(0.25turn, min(270deg, 3.14rad))', '3.14rad');
|
||||
|
||||
// General calculations
|
||||
test_angle_equals('calc(min(90deg, 1.58rad) + 0.25turn)', '180deg');
|
||||
test_angle_equals('calc(min(90deg, 1.58rad) + 0.125turn)', '135deg');
|
||||
test_angle_equals('calc(min(90deg, 1.58rad) - 0.125turn)', '45deg');
|
||||
test_angle_equals('calc(min(90deg, 1.58rad) * 2', '180deg');
|
||||
test_angle_equals('calc(min(90deg, 1.58rad) * 1.5', '135deg');
|
||||
test_angle_equals('calc(min(90deg, 1.58rad) / 2', '45deg');
|
||||
test_angle_equals('calc(max(90deg, 1.56rad) + 0.25turn)', '180deg');
|
||||
test_angle_equals('calc(max(90deg, 1.56rad) + 0.125turn', '135deg');
|
||||
test_angle_equals('calc(max(90deg, 1.56rad) - 0.125turn)', '45deg');
|
||||
test_angle_equals('calc(max(90deg, 1.56rad) * 2', '180deg');
|
||||
test_angle_equals('calc(max(90deg, 1.56rad) * 1.5', '135deg');
|
||||
test_angle_equals('calc(max(90deg, 1.56rad) / 2', '45deg');
|
||||
test_angle_equals('calc(min(90deg, 1.58rad) + max(0.25turn, 99grad))', '180deg');
|
||||
test_angle_equals('calc(min(90deg, 1.58rad) + max(0.125turn, 49grad))', '135deg');
|
||||
test_angle_equals('calc(min(90deg, 1.58rad) - max(0.25turn, 99grad))', '0deg');
|
||||
</script>
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>View transitions: iframe transition to scrollbar (ref)</title>
|
||||
<link rel="help" href="https://github.com/WICG/view-transitions">
|
||||
<link rel="author" href="mailto:bokan@chromium.org">
|
||||
<style>
|
||||
iframe {
|
||||
width: 50vw;
|
||||
height: 50vh;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<iframe src="support/iframe-scrollbar-child.html?scrollbar">
|
||||
</iframe>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<html class=reftest-wait>
|
||||
<head>
|
||||
<title>View transitions: iframe transition to scrollbar</title>
|
||||
<link rel="help" href="https://github.com/WICG/view-transitions">
|
||||
<link rel="author" href="mailto:bokan@chromium.org">
|
||||
<link rel="match" href="iframe-new-has-scrollbar-ref.html">
|
||||
<meta name=fuzzy content="iframe-new-has-scrollbar-ref.html:0-80;0-500">
|
||||
<script src="/common/reftest-wait.js"></script>
|
||||
<style>
|
||||
iframe {
|
||||
width: 50vw;
|
||||
height: 50vh;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
onload = () => {
|
||||
requestAnimationFrame(()=>{requestAnimationFrame(()=> {
|
||||
frames[0].window.startTransition();
|
||||
frames[0].window.transition.ready.then(() => {
|
||||
requestAnimationFrame(()=>{requestAnimationFrame(()=> {
|
||||
// Expect that the scrollbar should appear immediately, even though
|
||||
// the new snapshot isn't visible (since the scrollbar isn't part
|
||||
// of the snapshot).
|
||||
takeScreenshot();
|
||||
})});
|
||||
});
|
||||
})});
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<iframe src="support/iframe-scrollbar-child.html">
|
||||
</iframe>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>View transitions: iframe transition from scrollbar (ref)</title>
|
||||
<link rel="help" href="https://github.com/WICG/view-transitions">
|
||||
<link rel="author" href="mailto:bokan@chromium.org">
|
||||
<style>
|
||||
iframe {
|
||||
width: 50vw;
|
||||
height: 50vh;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<iframe src="support/iframe-scrollbar-child.html">
|
||||
</iframe>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,36 @@
|
|||
<!DOCTYPE html>
|
||||
<html class=reftest-wait>
|
||||
<head>
|
||||
<title>View transitions: iframe transition from scrollbar</title>
|
||||
<link rel="help" href="https://github.com/WICG/view-transitions">
|
||||
<link rel="author" href="mailto:bokan@chromium.org">
|
||||
<link rel="match" href="iframe-old-has-scrollbar-ref.html">
|
||||
<meta name=fuzzy content="iframe-old-has-scrollbar-ref.html:0-80;0-500">
|
||||
<script src="/common/reftest-wait.js"></script>
|
||||
<style>
|
||||
iframe {
|
||||
width: 50vw;
|
||||
height: 50vh;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
onload = () => {
|
||||
requestAnimationFrame(()=>{requestAnimationFrame(()=> {
|
||||
frames[0].window.startTransition();
|
||||
frames[0].window.transition.ready.then(() => {
|
||||
requestAnimationFrame(()=>{requestAnimationFrame(()=> {
|
||||
// Expect that the scrollbar should disappear immediately since it
|
||||
// isn't part of the snapshot.
|
||||
takeScreenshot();
|
||||
})});
|
||||
});
|
||||
})});
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<iframe src="support/iframe-scrollbar-child.html?scrollbar">
|
||||
</iframe>
|
||||
</body>
|
||||
</html>
|
|
@ -3,6 +3,8 @@
|
|||
<head>
|
||||
<style>
|
||||
body {
|
||||
/* We need a background due to https://crbug.com/1414158. */
|
||||
background-color: white;
|
||||
height: 200vh;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
body.scrollable {
|
||||
width: 200lvw;
|
||||
height: 200lvh;
|
||||
}
|
||||
|
||||
div {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
background-color: skyblue;
|
||||
}
|
||||
|
||||
::view-transition-new(*) {
|
||||
animation-duration: 30s;
|
||||
opacity: 0;
|
||||
}
|
||||
::view-transition-old(*) {
|
||||
animation: unset;
|
||||
opacity: 1;
|
||||
}
|
||||
*/
|
||||
</style>
|
||||
<script>
|
||||
function startTransition() {
|
||||
window.transition = document.startViewTransition(() => {
|
||||
document.body.classList.toggle('scrollable');
|
||||
});
|
||||
}
|
||||
|
||||
onload = () => {
|
||||
const params = new URLSearchParams(window.location.search);
|
||||
if (params.has('scrollbar')) {
|
||||
document.body.classList.add('scrollable');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div></div>
|
||||
</body>
|
||||
</html>
|
|
@ -33,7 +33,7 @@ installed for the user only:
|
|||
|
||||
```bash
|
||||
python -m ensurepip --user
|
||||
export PATH="$PATH:$HOME/Library/Python/2.7/bin"
|
||||
export PATH="$PATH:$( python3 -m site --user-base )/bin"
|
||||
pip install --user virtualenv
|
||||
```
|
||||
|
||||
|
|
|
@ -635,6 +635,23 @@ async function workerFetchTest(t, { source, target, expected }) {
|
|||
assert_equals(message, expected.message, "response body");
|
||||
}
|
||||
|
||||
async function workerBlobFetchTest(t, { source, target, expected }) {
|
||||
const targetUrl = preflightUrl(target);
|
||||
|
||||
const fetcherUrl = resolveUrl(
|
||||
'resources/worker-blob-fetcher.html', sourceResolveOptions(source));
|
||||
|
||||
const reply = futureMessage();
|
||||
const iframe = await appendIframe(t, document, fetcherUrl);
|
||||
|
||||
iframe.contentWindow.postMessage({ url: targetUrl.href }, "*");
|
||||
|
||||
const { error, status, message } = await reply;
|
||||
assert_equals(error, expected.error, "fetch error");
|
||||
assert_equals(status, expected.status, "response status");
|
||||
assert_equals(message, expected.message, "response body");
|
||||
}
|
||||
|
||||
async function sharedWorkerFetchTest(t, { source, target, expected }) {
|
||||
const targetUrl = preflightUrl(target);
|
||||
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Worker Fetcher</title>
|
||||
<script>
|
||||
window.addEventListener("message", function (evt) {
|
||||
const { url } = evt.data;
|
||||
|
||||
const workerScriptContent = `
|
||||
async function doFetch(url) {
|
||||
const response = await fetch(url);
|
||||
const body = await response.text();
|
||||
return {
|
||||
status: response.status,
|
||||
body,
|
||||
};
|
||||
}
|
||||
|
||||
async function fetchAndPost(url) {
|
||||
try {
|
||||
const message = await doFetch(url);
|
||||
self.postMessage(message);
|
||||
} catch(e) {
|
||||
self.postMessage({ error: e.name });
|
||||
}
|
||||
}
|
||||
|
||||
fetchAndPost("${url}");
|
||||
`;
|
||||
const blob =
|
||||
new Blob([workerScriptContent], {type: 'application/javascript'});
|
||||
const workerScriptUrl = URL.createObjectURL(blob);
|
||||
|
||||
const worker = new Worker(workerScriptUrl);
|
||||
|
||||
URL.revokeObjectURL(workerScriptUrl);
|
||||
|
||||
worker.addEventListener("message", (evt) => {
|
||||
parent.postMessage(evt.data, "*");
|
||||
});
|
||||
|
||||
worker.addEventListener("error", (evt) => {
|
||||
parent.postMessage({ error: evt.message || "unknown error" }, "*");
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,143 @@
|
|||
// META: script=/common/utils.js
|
||||
// META: script=resources/support.sub.js
|
||||
//
|
||||
// Spec: https://wicg.github.io/private-network-access/#integration-fetch
|
||||
//
|
||||
// These tests check that fetches from within `Worker` scripts loaded from blob
|
||||
// URLs are subject to Private Network Access checks, just like fetches from
|
||||
// within documents.
|
||||
//
|
||||
// This file covers only those tests that must execute in a non-secure context.
|
||||
// Other tests are defined in: worker-fetch.https.window.js
|
||||
|
||||
promise_test(t => workerBlobFetchTest(t, {
|
||||
source: { server: Server.HTTP_LOCAL },
|
||||
target: { server: Server.HTTP_LOCAL },
|
||||
expected: WorkerFetchTestResult.SUCCESS,
|
||||
}), "local to local: success.");
|
||||
|
||||
promise_test(t => workerBlobFetchTest(t, {
|
||||
source: { server: Server.HTTP_PRIVATE },
|
||||
target: {
|
||||
server: Server.HTTP_LOCAL,
|
||||
behavior: {
|
||||
preflight: PreflightBehavior.optionalSuccess(token()),
|
||||
response: ResponseBehavior.allowCrossOrigin(),
|
||||
},
|
||||
},
|
||||
expected: WorkerFetchTestResult.FAILURE,
|
||||
}), "private to local: failure.");
|
||||
|
||||
promise_test(t => workerBlobFetchTest(t, {
|
||||
source: { server: Server.HTTP_PRIVATE },
|
||||
target: { server: Server.HTTP_PRIVATE },
|
||||
expected: WorkerFetchTestResult.SUCCESS,
|
||||
}), "private to private: success.");
|
||||
|
||||
promise_test(t => workerBlobFetchTest(t, {
|
||||
source: { server: Server.HTTP_PUBLIC },
|
||||
target: {
|
||||
server: Server.HTTP_LOCAL,
|
||||
behavior: {
|
||||
preflight: PreflightBehavior.optionalSuccess(token()),
|
||||
response: ResponseBehavior.allowCrossOrigin(),
|
||||
},
|
||||
},
|
||||
expected: WorkerFetchTestResult.FAILURE,
|
||||
}), "public to local: failure.");
|
||||
|
||||
promise_test(t => workerBlobFetchTest(t, {
|
||||
source: { server: Server.HTTP_PUBLIC },
|
||||
target: {
|
||||
server: Server.HTTP_PRIVATE,
|
||||
behavior: {
|
||||
preflight: PreflightBehavior.optionalSuccess(token()),
|
||||
response: ResponseBehavior.allowCrossOrigin(),
|
||||
},
|
||||
},
|
||||
expected: WorkerFetchTestResult.FAILURE,
|
||||
}), "public to private: failure.");
|
||||
|
||||
promise_test(t => workerBlobFetchTest(t, {
|
||||
source: { server: Server.HTTP_PUBLIC },
|
||||
target: { server: Server.HTTP_PUBLIC },
|
||||
expected: WorkerFetchTestResult.SUCCESS,
|
||||
}), "public to public: success.");
|
||||
|
||||
promise_test(t => workerBlobFetchTest(t, {
|
||||
source: {
|
||||
server: Server.HTTP_LOCAL,
|
||||
treatAsPublic: true,
|
||||
},
|
||||
target: {
|
||||
server: Server.HTTP_LOCAL,
|
||||
behavior: { preflight: PreflightBehavior.optionalSuccess(token()) },
|
||||
},
|
||||
expected: WorkerFetchTestResult.FAILURE,
|
||||
}), "treat-as-public to local: failure.");
|
||||
|
||||
promise_test(t => workerBlobFetchTest(t, {
|
||||
source: {
|
||||
server: Server.HTTP_LOCAL,
|
||||
treatAsPublic: true,
|
||||
},
|
||||
target: {
|
||||
server: Server.HTTP_PRIVATE,
|
||||
behavior: {
|
||||
preflight: PreflightBehavior.optionalSuccess(token()),
|
||||
response: ResponseBehavior.allowCrossOrigin(),
|
||||
},
|
||||
},
|
||||
expected: WorkerFetchTestResult.FAILURE,
|
||||
}), "treat-as-public to private: failure.");
|
||||
|
||||
promise_test(t => workerBlobFetchTest(t, {
|
||||
source: {
|
||||
server: Server.HTTP_LOCAL,
|
||||
treatAsPublic: true,
|
||||
},
|
||||
target: {
|
||||
server: Server.HTTP_PUBLIC,
|
||||
behavior: { response: ResponseBehavior.allowCrossOrigin() },
|
||||
},
|
||||
expected: WorkerFetchTestResult.SUCCESS,
|
||||
}), "treat-as-public to public: success.");
|
||||
|
||||
// The following tests verify that workers served over HTTPS are not allowed to
|
||||
// make private network requests because they are not secure contexts.
|
||||
|
||||
promise_test(t => workerBlobFetchTest(t, {
|
||||
source: { server: Server.HTTPS_PRIVATE },
|
||||
target: {
|
||||
server: Server.HTTP_LOCAL,
|
||||
behavior: {
|
||||
preflight: PreflightBehavior.success(token()),
|
||||
response: ResponseBehavior.allowCrossOrigin(),
|
||||
},
|
||||
},
|
||||
expected: WorkerFetchTestResult.FAILURE,
|
||||
}), "private https to local: failure.");
|
||||
|
||||
promise_test(t => workerBlobFetchTest(t, {
|
||||
source: { server: Server.HTTPS_PUBLIC },
|
||||
target: {
|
||||
server: Server.HTTP_PRIVATE,
|
||||
behavior: {
|
||||
preflight: PreflightBehavior.success(token()),
|
||||
response: ResponseBehavior.allowCrossOrigin(),
|
||||
},
|
||||
},
|
||||
expected: WorkerFetchTestResult.FAILURE,
|
||||
}), "public https to private: failure.");
|
||||
|
||||
promise_test(t => workerBlobFetchTest(t, {
|
||||
source: { server: Server.HTTPS_PUBLIC },
|
||||
target: {
|
||||
server: Server.HTTP_LOCAL,
|
||||
behavior: {
|
||||
preflight: PreflightBehavior.success(token()),
|
||||
response: ResponseBehavior.allowCrossOrigin(),
|
||||
},
|
||||
},
|
||||
expected: WorkerFetchTestResult.FAILURE,
|
||||
}), "public https to local: failure.");
|
|
@ -1,7 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<link rel=author href="mailto:xiaochengh@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<link rel=match href="popover-anchor-change-display-ref.html">
|
||||
<script src="resources/popover-utils.js"></script>
|
||||
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
<meta charset="utf-8">
|
||||
<title>Tests that a popover can be anchored to an unrendered element.</title>
|
||||
<link rel=author href="mailto:xiaochengh@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<link rel=author href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<link rel=match href="popover-anchor-display-ref.html">
|
||||
<link rel=stylesheet href="/fonts/ahem.css">
|
||||
<script src="resources/popover-utils.js"></script>
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<link rel="author" href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<link rel=author href="mailto:xiaochengh@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
|
||||
<button id=main-menu-button>Show menu</button>
|
||||
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<link rel=author href="mailto:xiaochengh@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<link rel=match href="popover-anchor-nested-display-ref.html">
|
||||
|
||||
<button id=main-menu-button popovertoggletarget=main-menu>Show menu</button>
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
<meta charset="utf-8" />
|
||||
<title>Popover anchor nesting</title>
|
||||
<link rel="author" href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
<html class="reftest-wait">
|
||||
<meta charset="utf-8">
|
||||
<link rel=author href="mailto:xiaochengh@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<link rel=match href="popover-anchor-scroll-display-ref.html">
|
||||
|
||||
<div class=spacer style="height: 200px"></div>
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="stylesheet" href="resources/popover-styles.css">
|
||||
|
||||
<div class=topmost></div>
|
||||
<div class=fake-popover>This is a popover</div>
|
||||
|
||||
|
||||
<style>
|
||||
.fake-popover {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
margin: 1em;
|
||||
/* The animated property */
|
||||
left: 100px;
|
||||
}
|
||||
.topmost {
|
||||
position:fixed;
|
||||
top:0;
|
||||
left:0;
|
||||
width:1000px;
|
||||
height:1000px;
|
||||
background:green;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
</style>
|
|
@ -1,98 +0,0 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<link rel=author href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-actions.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="resources/popover-utils.js"></script>
|
||||
<script src="/common/gc.js"></script>
|
||||
|
||||
<dialog>I am a dialog</dialog>
|
||||
|
||||
<style>
|
||||
[popover].animation {
|
||||
left: 0px;
|
||||
}
|
||||
[popover].animation:open {
|
||||
animation: move 1000s;
|
||||
}
|
||||
@keyframes move {
|
||||
from { left: 0px; }
|
||||
to { left: 200px; }
|
||||
}
|
||||
|
||||
[popover].transition {
|
||||
opacity: 0;
|
||||
transition: opacity 5s;
|
||||
}
|
||||
[popover].transition:open {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
[popover] {
|
||||
top: 200px;
|
||||
}
|
||||
[popover]::backdrop {
|
||||
background-color: rgba(255,0,0,0.2);
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
function rAF() {
|
||||
return new Promise(resolve => requestAnimationFrame(resolve));
|
||||
}
|
||||
function addPopover(classname) {
|
||||
const popover = document.createElement('div');
|
||||
popover.popover = 'auto';
|
||||
popover.classList = classname;
|
||||
popover.textContent = 'This is a popover';
|
||||
document.body.appendChild(popover);
|
||||
return popover;
|
||||
}
|
||||
promise_test(async () => {
|
||||
let popover = addPopover("animation");
|
||||
let dialog = document.querySelector('dialog');
|
||||
popover.showPopover(); // No animations here
|
||||
await rAF();
|
||||
popover.hidePopover(); // Start animations
|
||||
await rAF();
|
||||
popover.remove();
|
||||
await garbageCollect();
|
||||
await rAF();
|
||||
// This test passes if it does not crash.
|
||||
},'Ensure no crashes if running animations are immediately cancelled (document removal)');
|
||||
|
||||
promise_test(async (t) => {
|
||||
let popover = addPopover("animation");
|
||||
let dialog = document.querySelector('dialog');
|
||||
popover.showPopover(); // No animations here
|
||||
await rAF();
|
||||
popover.hidePopover(); // Start animations
|
||||
await rAF();
|
||||
dialog.showModal(); // Immediately hide popover
|
||||
t.add_cleanup(() => dialog.close());
|
||||
await rAF();
|
||||
popover.remove();
|
||||
await garbageCollect();
|
||||
await rAF();
|
||||
// This test passes if it does not crash.
|
||||
},'Ensure no crashes if running animations are immediately cancelled (dialog showModal)');
|
||||
|
||||
promise_test(async (t) => {
|
||||
let popover = addPopover("transition");
|
||||
let dialog = document.querySelector('dialog');
|
||||
let button = document.createElement('button');
|
||||
t.add_cleanup(() => {popover.remove();button.remove();});
|
||||
document.body.appendChild(button);
|
||||
button.addEventListener('click',() => dialog.show());
|
||||
popover.showPopover(); // No animations here
|
||||
await rAF();
|
||||
await clickOn(button);
|
||||
await rAF();
|
||||
// This test passes if it does not crash.
|
||||
},'Ensure no crashes if running transitions are immediately cancelled (button click)');
|
||||
</script>
|
|
@ -1,57 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="reftest-wait">
|
||||
<meta charset="utf-8">
|
||||
<link rel=author href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=match href="popover-animated-display-ref.html">
|
||||
|
||||
<div popover>This is a popover</div>
|
||||
<div class=topmost></div>
|
||||
|
||||
<style>
|
||||
[popover] {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
margin: 1em;
|
||||
left: 0;
|
||||
transition: left 20s steps(2, jump-end) -10s;
|
||||
}
|
||||
[popover]:open {
|
||||
left: 200px;
|
||||
}
|
||||
.topmost {
|
||||
position:fixed;
|
||||
z-index: 999999;
|
||||
top:0;
|
||||
left:0;
|
||||
width:1000px;
|
||||
height:1000px;
|
||||
background:green;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
window.onload = () => {
|
||||
requestAnimationFrame(() => {
|
||||
requestAnimationFrame(() => {
|
||||
// This will show the popover, hide the popover, and start the transition.
|
||||
const popover = document.querySelector('[popover]');
|
||||
popover.showPopover();
|
||||
popover.getAnimations()[0].finish();
|
||||
if (getComputedStyle(popover).left != "200px")
|
||||
popover.remove();
|
||||
popover.hidePopover();
|
||||
document.getAnimations()[0].ready.then(() => {
|
||||
requestAnimationFrame(() => {
|
||||
requestAnimationFrame(() => {
|
||||
// Take a screenshot now.
|
||||
document.documentElement.classList.remove('reftest-wait');
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
</script>
|
|
@ -1,16 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<div class=topmost></div>
|
||||
|
||||
<style>
|
||||
.topmost {
|
||||
position:fixed;
|
||||
top:0;
|
||||
left:0;
|
||||
width:1000px;
|
||||
height:1000px;
|
||||
background:green;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
</style>
|
|
@ -1,56 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="reftest-wait">
|
||||
<meta charset="utf-8">
|
||||
<link rel=author href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=match href="popover-animated-hide-finishes-ref.html">
|
||||
|
||||
<div popover>This is a popover</div>
|
||||
<div class=topmost></div>
|
||||
|
||||
<style>
|
||||
[popover] {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
margin: 1em;
|
||||
left: 0;
|
||||
/* Immediate transition: */
|
||||
transition: left 1s -1s;
|
||||
}
|
||||
[popover]:open {
|
||||
left: 200px;
|
||||
}
|
||||
[popover]::backdrop {
|
||||
background-color: red;
|
||||
}
|
||||
.topmost {
|
||||
position:fixed;
|
||||
z-index: 999999;
|
||||
top:0;
|
||||
left:0;
|
||||
width:1000px;
|
||||
height:1000px;
|
||||
background:green;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
window.onload = () => {
|
||||
requestAnimationFrame(() => {
|
||||
requestAnimationFrame(() => {
|
||||
// This will show the popover, hide the popover, and start the hide transition,
|
||||
// which should immediately finish.
|
||||
document.querySelector('[popover]').showPopover();
|
||||
document.querySelector('[popover]').hidePopover();
|
||||
requestAnimationFrame(() => {
|
||||
requestAnimationFrame(() => {
|
||||
// Take a screenshot now.
|
||||
document.documentElement.classList.remove('reftest-wait');
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
</script>
|
|
@ -1,52 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="reftest-wait">
|
||||
<meta charset="utf-8">
|
||||
<link rel=author href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=match href="popover-animated-display-ref.html">
|
||||
|
||||
<div popover>This is a popover</div>
|
||||
<div class=topmost></div>
|
||||
|
||||
<style>
|
||||
[popover] {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
margin: 1em;
|
||||
left: 0;
|
||||
transition: left 20s steps(2, jump-end) -10s;
|
||||
}
|
||||
[popover]:open {
|
||||
left: 200px;
|
||||
}
|
||||
.topmost {
|
||||
position:fixed;
|
||||
z-index: 999999;
|
||||
top:0;
|
||||
left:0;
|
||||
width:1000px;
|
||||
height:1000px;
|
||||
background:green;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
window.onload = () => {
|
||||
requestAnimationFrame(() => {
|
||||
requestAnimationFrame(() => {
|
||||
// This will show the popover, and start the transition.
|
||||
document.querySelector('[popover]').showPopover();
|
||||
document.getAnimations()[0].ready.then(() => {
|
||||
requestAnimationFrame(() => {
|
||||
requestAnimationFrame(() => {
|
||||
// Take a screenshot now.
|
||||
document.documentElement.classList.remove('reftest-wait');
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
</script>
|
|
@ -1,230 +0,0 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<link rel=author href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/popover-utils.js"></script>
|
||||
|
||||
<body>
|
||||
<style>
|
||||
.animation { opacity: 0; }
|
||||
.animation:open { opacity: 1; }
|
||||
.animation:not(:open) { animation: fade-out 1000s; }
|
||||
@keyframes fade-out {
|
||||
from { opacity: 1; }
|
||||
to { opacity: 0; }
|
||||
}
|
||||
|
||||
.animation>div>div { left: 0; }
|
||||
.animation:not(:open)>div>div { animation: rotate 1000s; color:red;}
|
||||
@keyframes rotate {
|
||||
from { transform: rotate(0); }
|
||||
to { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
[popover] { top: 200px; }
|
||||
[popover]::backdrop { background-color: rgba(255,0,0,0.2); }
|
||||
</style>
|
||||
|
||||
<script>
|
||||
function createPopover(t,type) {
|
||||
const popover = document.createElement('div');
|
||||
popover.popover = 'auto';
|
||||
popover.classList = type;
|
||||
const div = document.createElement('div');
|
||||
const descendent = div.appendChild(document.createElement('div'));
|
||||
descendent.appendChild(document.createTextNode("Descendent element"));
|
||||
popover.append("This is a pop up",div);
|
||||
document.body.appendChild(popover);
|
||||
t.add_cleanup(() => popover.remove());
|
||||
return {popover, descendent};
|
||||
}
|
||||
promise_test(async (t) => {
|
||||
const {popover, descendent} = createPopover(t,'animation');
|
||||
assert_false(isElementVisible(popover));
|
||||
assert_equals(descendent.parentElement.parentElement,popover);
|
||||
assert_true(popover.matches(':closed'));
|
||||
assert_false(popover.matches(':open'));
|
||||
popover.showPopover();
|
||||
assert_false(popover.matches(':closed'));
|
||||
assert_true(popover.matches(':open'));
|
||||
assert_true(isElementVisible(popover));
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,0);
|
||||
popover.hidePopover();
|
||||
const animations = popover.getAnimations({subtree: true});
|
||||
assert_equals(animations.length,2,'There should be two animations running');
|
||||
assert_false(popover.matches(':open'),'popover should not match :open as soon as hidden');
|
||||
assert_false(popover.matches(':closed'),'popover should not match :closed until animations complete');
|
||||
assert_true(isElementVisible(popover),'but animations should keep the popover visible');
|
||||
assert_true(isElementVisible(descendent),'The descendent should also be visible');
|
||||
await waitForRender();
|
||||
await waitForRender();
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,2,'The animations should still be running');
|
||||
assert_true(isElementVisible(popover),'Popover should still be visible due to animation');
|
||||
animations.forEach(animation => animation.finish()); // Force the animations to finish
|
||||
await waitForRender(); // Wait one frame
|
||||
assert_true(popover.matches(':closed'),'The pop up should now match :closed');
|
||||
assert_false(popover.matches(':open'),'The pop up still shouldn\'t match :open');
|
||||
assert_false(isElementVisible(popover),'The pop up should now be invisible');
|
||||
assert_false(isElementVisible(descendent),'The descendent should also be invisible');
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,0);
|
||||
},'Descendent animations should keep the pop up visible until the animation ends');
|
||||
|
||||
promise_test(async (t) => {
|
||||
const {popover, descendent} = createPopover(t,'');
|
||||
assert_equals(popover.classList.length, 0);
|
||||
assert_false(isElementVisible(popover));
|
||||
popover.showPopover();
|
||||
assert_true(popover.matches(':open'));
|
||||
assert_true(isElementVisible(popover));
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,0);
|
||||
// Start an animation on the popover and its descendent.
|
||||
popover.animate([{opacity: 1},{opacity: 0}],{duration: 1000000,iterations: 1});
|
||||
descendent.animate([{transform: 'rotate(0)'},{transform: 'rotate(360deg)'}],1000000);
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,2);
|
||||
// Then hide the popover.
|
||||
popover.hidePopover();
|
||||
assert_false(popover.matches(':open'),'pop up should not match :open as soon as hidden');
|
||||
assert_true(popover.matches(':closed'),'pop up should match :closed immediately');
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,2,'animations should still be running');
|
||||
await waitForRender();
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,2,'animations should still be running');
|
||||
assert_false(isElementVisible(popover),'Pre-existing animations should not keep the pop up visible');
|
||||
},'Pre-existing animations should *not* keep the pop up visible until the animation ends');
|
||||
|
||||
promise_test(async (t) => {
|
||||
const {popover, descendent} = createPopover(t,'');
|
||||
popover.showPopover();
|
||||
assert_true(isElementVisible(popover));
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,0);
|
||||
let animation;
|
||||
popover.addEventListener('beforetoggle', (e) => {
|
||||
if (e.newState !== "closed")
|
||||
return;
|
||||
animation = popover.animate([{opacity: 1},{opacity: 0}],1000000);
|
||||
});
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,0,'There should be no animations yet');
|
||||
popover.hidePopover();
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,1,'the hide animation should now be running');
|
||||
assert_true(!!animation);
|
||||
assert_true(isElementVisible(popover),'The animation should keep the popover visible');
|
||||
animation.finish();
|
||||
await waitForRender();
|
||||
assert_false(isElementVisible(popover),'Once the animation ends, the popover is hidden');
|
||||
},'It should be possible to use the "beforetoggle" event handler to animate the hide');
|
||||
|
||||
|
||||
promise_test(async (t) => {
|
||||
const {popover, descendent} = createPopover(t,'');
|
||||
const dialog = document.body.appendChild(document.createElement('dialog'));
|
||||
t.add_cleanup(() => dialog.remove());
|
||||
popover.showPopover();
|
||||
assert_true(isElementVisible(popover));
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,0);
|
||||
let animation;
|
||||
popover.addEventListener('beforetoggle', (e) => {
|
||||
if (e.newState !== "closed")
|
||||
return;
|
||||
animation = popover.animate([{opacity: 1},{opacity: 0}],1000000);
|
||||
});
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,0,'There should be no animations yet');
|
||||
dialog.showModal(); // Force hide the popover
|
||||
await waitForRender();
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,1,'the hide animation should now be running');
|
||||
assert_true(isElementVisible(popover),'And the animation should keep the popover visible');
|
||||
animation.finish();
|
||||
await waitForRender();
|
||||
assert_false(isElementVisible(popover),'Once the animation ends, the popover is hidden');
|
||||
},'It should be possible to use the "beforetoggle" event handler to animate the hide, even when the hide is due to dialog.showModal');
|
||||
|
||||
promise_test(async (t) => {
|
||||
const {popover, descendent} = createPopover(t,'');
|
||||
popover.showPopover();
|
||||
assert_true(isElementVisible(popover));
|
||||
popover.addEventListener('beforetoggle', (e) => e.preventDefault());
|
||||
popover.hidePopover();
|
||||
await waitForRender();
|
||||
assert_false(isElementVisible(popover),'Even if hide event is cancelled, the popover still closes');
|
||||
},'toggle event cannot be cancelled');
|
||||
|
||||
promise_test(async (t) => {
|
||||
const {popover, descendent} = createPopover(t,'animation');
|
||||
assert_false(isElementVisible(popover));
|
||||
popover.showPopover();
|
||||
assert_false(popover.matches(':closed'));
|
||||
assert_true(popover.matches(':open'));
|
||||
assert_true(isElementVisible(popover));
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,0);
|
||||
popover.popover = 'manual';
|
||||
const animations = popover.getAnimations({subtree: true});
|
||||
assert_equals(animations.length,2,'There should be two animations running');
|
||||
assert_false(popover.matches(':open'),'popover should not match :open as soon as hidden');
|
||||
assert_false(popover.matches(':closed'),'popover should not match :closed until animations complete');
|
||||
assert_true(isElementVisible(popover),'but animations should keep the popover visible');
|
||||
animations.forEach(animation => animation.finish()); // Force the animations to finish
|
||||
await waitForRender(); // Wait one frame
|
||||
assert_true(popover.matches(':closed'),'The pop up should now match :closed');
|
||||
assert_false(popover.matches(':open'),'The pop up still shouldn\'t match :open');
|
||||
assert_false(isElementVisible(popover),'The pop up should now be invisible');
|
||||
},'Closing animations are triggered by changing the popover type');
|
||||
|
||||
promise_test(async (t) => {
|
||||
const {popover, descendent} = createPopover(t,'');
|
||||
popover.showPopover();
|
||||
assert_true(isElementVisible(popover));
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,0);
|
||||
popover.addEventListener('beforetoggle', (e) => {
|
||||
if (e.newState !== "closed")
|
||||
return;
|
||||
popover.animate([{opacity: 1},{opacity: 0}],1000000);
|
||||
});
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,0,'There should be no animations yet');
|
||||
popover.hidePopover();
|
||||
await waitForRender();
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,1,'the hide animation should now be running');
|
||||
assert_true(isElementVisible(popover),'The popover should still be visible because the animation hasn\'t ended.');
|
||||
const animation = popover.getAnimations({subtree: true})[0];
|
||||
|
||||
animation.dispatchEvent(new Event('finish'));
|
||||
await waitForRender();
|
||||
assert_true(isElementVisible(popover),'Synthetic finish events should not stop the animation, so the popover should still be visible.');
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,1,'the hide animation should still be running');
|
||||
|
||||
animation.dispatchEvent(new Event('cancel'));
|
||||
await waitForRender();
|
||||
assert_true(isElementVisible(popover),'Synthetic cancel events should not stop the animation, so the popover should still be visible.');
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,1,'the hide animation should still be running');
|
||||
},'animation finish/cancel events must be trusted in order to finish closing the popover.');
|
||||
|
||||
promise_test(async (t) => {
|
||||
const {popover, descendent} = createPopover(t,'');
|
||||
popover.showPopover();
|
||||
popover.addEventListener('beforetoggle', (e) => {
|
||||
if (e.newState !== "closed")
|
||||
return;
|
||||
popover.animate([{opacity: 1},{opacity: 0}],1000000);
|
||||
});
|
||||
popover.hidePopover();
|
||||
await waitForRender();
|
||||
assert_true(isElementVisible(popover),'The popover should still be visible because the animation hasn\'t ended.');
|
||||
assert_equals(popover.getAnimations({subtree: true}).length,1,'There should be one animation running');
|
||||
const animation = popover.getAnimations({subtree: true})[0];
|
||||
let new_animation;
|
||||
const listener = () => {new_animation = popover.animate([{opacity: 1},{opacity: 0}],1000000)};
|
||||
animation.addEventListener('finish',listener,{capture:true});
|
||||
animation.addEventListener('cancel',listener,{capture:true});
|
||||
popover.addEventListener('animationfinish',listener,{capture:true});
|
||||
popover.addEventListener('animationcancel',listener,{capture:true});
|
||||
assert_true(isElementVisible(popover),'The popover should still be visible.');
|
||||
assert_equals(new_animation, undefined,'New animation should not be started yet.');
|
||||
animation.finish();
|
||||
await waitForRender(); // Wait one frame
|
||||
assert_true(popover.matches(':closed'),'The pop up should now match :closed');
|
||||
assert_false(popover.matches(':open'),'The pop up still shouldn\'t match :open');
|
||||
assert_false(isElementVisible(popover),'The pop up should now be invisible');
|
||||
assert_not_equals(new_animation, animation);
|
||||
assert_equals(popover.getAnimations({subtree: true})[0],new_animation,'The new animation should now be running');
|
||||
},'Capturing event listeners can\'t affect popover animations.');
|
||||
</script>
|
|
@ -2,7 +2,8 @@
|
|||
<meta charset="utf-8" />
|
||||
<title>Popover element appearance</title>
|
||||
<link rel="author" href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<link rel="match" href="popover-appearance-ref.html">
|
||||
|
||||
<style>
|
||||
|
|
|
@ -32,16 +32,8 @@
|
|||
<dialog open>Dialog without popover attribute</dialog>
|
||||
</div>
|
||||
|
||||
<div popover class=animated>Animated popover</div>
|
||||
<div id=outside></div>
|
||||
<style>
|
||||
[popover].animated {
|
||||
opacity: 0;
|
||||
transition: opacity 10s;
|
||||
}
|
||||
[popover].animated:open {
|
||||
opacity: 1;
|
||||
}
|
||||
[popover] {
|
||||
inset:auto;
|
||||
top:0;
|
||||
|
@ -106,11 +98,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("InvalidStateError",() => nonPopover.showPopover(),'Calling showPopover on a non-popover should throw InvalidStateError');
|
||||
assert_throws_dom("NotSupportedError",() => nonPopover.showPopover(),'Calling showPopover on a non-popover should throw NotSupported');
|
||||
assertPopoverVisibility(nonPopover, /*isPopover*/false, expectVisible, 'Calling showPopover on a non-popover should leave it visible');
|
||||
assert_throws_dom("InvalidStateError",() => nonPopover.hidePopover(),'Calling hidePopover on a non-popover should throw InvalidStateError');
|
||||
assert_throws_dom("NotSupportedError",() => nonPopover.hidePopover(),'Calling hidePopover on a non-popover should throw NotSupported');
|
||||
assertPopoverVisibility(nonPopover, /*isPopover*/false, expectVisible, 'Calling hidePopover on a non-popover should leave it visible');
|
||||
assert_throws_dom("InvalidStateError",() => nonPopover.togglePopover(),'Calling togglePopover on a non-popover should throw InvalidStateError');
|
||||
assert_throws_dom("NotSupportedError",() => nonPopover.togglePopover(),'Calling togglePopover on a non-popover should throw NotSupported');
|
||||
assertPopoverVisibility(nonPopover, /*isPopover*/false, expectVisible, 'Calling togglePopover on a non-popover should leave it visible');
|
||||
}
|
||||
|
||||
|
@ -406,28 +398,6 @@ window.onload = () => {
|
|||
});
|
||||
});
|
||||
|
||||
promise_test(async () => {
|
||||
const popover = document.querySelector('[popover].animated');
|
||||
assert_true(!!popover);
|
||||
assert_false(isElementVisible(popover));
|
||||
popover.showPopover();
|
||||
assert_true(popover.matches(':open'));
|
||||
assert_false(popover.matches(':closed'));
|
||||
assert_true(getComputedStyle(popover).opacity < 0.1,'Animations should start on show');
|
||||
assert_throws_dom("InvalidStateError",() => popover.showPopover(),'Calling showPopover on a popover that is in the process of animating show should throw InvalidStateError');
|
||||
await finishAnimations(popover);
|
||||
assert_true(getComputedStyle(popover).opacity > 0.9);
|
||||
assert_true(isElementVisible(popover));
|
||||
popover.hidePopover();
|
||||
assert_false(popover.matches(':open'));
|
||||
assert_false(popover.matches(':closed'),'Not :closed until animations finish');
|
||||
assert_true(getComputedStyle(popover).opacity > 0.9,'Animations should start on hide');
|
||||
assert_throws_dom("InvalidStateError",() => popover.hidePopover(),'Calling hidePopover on a popover that is in the process of animating hide should throw InvalidStateError');
|
||||
assert_throws_dom("InvalidStateError",() => popover.showPopover(),'Calling showPopover on a popover that is in the process of animating hide should throw InvalidStateError');
|
||||
await finishAnimations(popover);
|
||||
assert_true(popover.matches(':closed'),':closed should match once animations finish');
|
||||
},'Exceptions are thrown even when show/hide are animated');
|
||||
|
||||
done();
|
||||
};
|
||||
</script>
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
<meta charset="utf-8" />
|
||||
<title>Popover ::backdrop pseudo element appearance</title>
|
||||
<link rel="author" href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<link rel="match" href="popover-backdrop-appearance-ref.html">
|
||||
|
||||
<style>
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
<meta charset="utf-8" />
|
||||
<title>Popover show event</title>
|
||||
<link rel="author" href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
<meta charset="utf-8" />
|
||||
<title>Dialog-Popover appearance</title>
|
||||
<link rel="author" href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<link rel="match" href="popover-dialog-appearance-ref.html">
|
||||
|
||||
<p>Both dialogs should have the same shades of background.</p>
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
<meta charset="utf-8" />
|
||||
<title>Dialog-Popover crash</title>
|
||||
<link rel="author" href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-actions.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<link rel="author" href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
<meta charset="utf-8" />
|
||||
<title>Popover events</title>
|
||||
<link rel="author" href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/popover-utils.js"></script>
|
||||
|
@ -20,7 +21,7 @@ function getPopoverAndSignal(t) {
|
|||
window.onload = () => {
|
||||
for(const method of ["listener","attribute"]) {
|
||||
promise_test(async t => {
|
||||
const popover = document.querySelector('[popover]');
|
||||
const {popover,signal} = getPopoverAndSignal(t);
|
||||
assert_false(popover.matches(':open'));
|
||||
let showCount = 0;
|
||||
let afterShowCount = 0;
|
||||
|
@ -59,10 +60,9 @@ window.onload = () => {
|
|||
};
|
||||
switch (method) {
|
||||
case "listener":
|
||||
const {signal} = getPopoverAndSignal(t);
|
||||
// These events bubble.
|
||||
document.addEventListener('beforetoggle', listener, {signal});
|
||||
document.addEventListener('toggle', listener, {signal});
|
||||
// These events do *not* bubble.
|
||||
popover.addEventListener('beforetoggle', listener, {signal});
|
||||
popover.addEventListener('toggle', listener, {signal});
|
||||
break;
|
||||
case "attribute":
|
||||
assert_false(popover.hasAttribute('onbeforetoggle'));
|
||||
|
|
|
@ -54,15 +54,6 @@
|
|||
border: 2px solid black;
|
||||
top:150px;
|
||||
left:150px;
|
||||
opacity: 0;
|
||||
}
|
||||
[popover]:not(:open) {
|
||||
/* Add a *hide* transition to all popovers, to make sure animations don't
|
||||
affect focus management */
|
||||
transition: opacity 10s;
|
||||
}
|
||||
[popover]:open {
|
||||
opacity: 1;
|
||||
}
|
||||
:focus-within { border: 5px dashed red; }
|
||||
:focus { border: 5px solid lime; }
|
||||
|
@ -90,10 +81,6 @@
|
|||
t.add_cleanup(() => priorFocus.remove());
|
||||
return priorFocus;
|
||||
}
|
||||
async function finishAnimationsAndVerifyHide(popover) {
|
||||
await finishAnimations(popover);
|
||||
assert_false(isElementVisible(popover),'After animations are finished, the popover should be hidden');
|
||||
}
|
||||
function activateAndVerify(popover) {
|
||||
const testName = popover.getAttribute('data-test');
|
||||
promise_test(async t => {
|
||||
|
@ -113,7 +100,7 @@
|
|||
assert_equals(document.activeElement, expectedFocusedElement, `${testName} activated by popover.showPopover()`);
|
||||
popover.hidePopover();
|
||||
assert_equals(document.activeElement, priorFocus, 'prior element should get focus on hide, or if focus didn\'t shift on show, focus should stay where it was');
|
||||
await finishAnimationsAndVerifyHide(popover);
|
||||
assert_false(isElementVisible(popover));
|
||||
|
||||
// Hit Escape:
|
||||
priorFocus.focus();
|
||||
|
@ -122,7 +109,7 @@
|
|||
assert_equals(document.activeElement, expectedFocusedElement, `${testName} activated by popover.showPopover()`);
|
||||
await sendEscape();
|
||||
assert_equals(document.activeElement, priorFocus, 'prior element should get focus after Escape');
|
||||
await finishAnimationsAndVerifyHide(popover);
|
||||
assert_false(isElementVisible(popover));
|
||||
|
||||
// Move focus into the popover, then hit Escape:
|
||||
let containedButton = popover.querySelector('button');
|
||||
|
@ -134,7 +121,7 @@
|
|||
assert_equals(document.activeElement, containedButton);
|
||||
await sendEscape();
|
||||
assert_equals(document.activeElement, priorFocus, 'prior element should get focus after Escape');
|
||||
await finishAnimationsAndVerifyHide(popover);
|
||||
assert_false(isElementVisible(popover));
|
||||
}
|
||||
|
||||
// Change the popover type:
|
||||
|
@ -145,7 +132,7 @@
|
|||
popover.popover = 'hint';
|
||||
assert_false(popover.matches(':open'), 'Changing the popover type should hide the popover');
|
||||
assert_equals(document.activeElement, priorFocus, 'prior element should get focus when the type is changed');
|
||||
await finishAnimationsAndVerifyHide(popover);
|
||||
assert_false(isElementVisible(popover));
|
||||
popover.popover = 'auto';
|
||||
|
||||
// Remove from the document:
|
||||
|
@ -167,7 +154,7 @@
|
|||
dialog.showModal();
|
||||
assert_false(popover.matches(':open'), 'Opening a modal dialog should hide the popover');
|
||||
assert_not_equals(document.activeElement, priorFocus, 'prior element should *not* get focus when a modal dialog is shown');
|
||||
await finishAnimationsAndVerifyHide(popover);
|
||||
assert_false(isElementVisible(popover));
|
||||
dialog.close();
|
||||
dialog.remove();
|
||||
|
||||
|
@ -181,7 +168,7 @@
|
|||
// Make sure Escape works in the invoker case:
|
||||
await sendEscape();
|
||||
assert_equals(document.activeElement, priorFocus, 'prior element should get focus after Escape (via invoker)');
|
||||
await finishAnimationsAndVerifyHide(popover);
|
||||
assert_false(isElementVisible(popover));
|
||||
|
||||
// Make sure we can directly focus the (already open) popover:
|
||||
priorFocus.focus();
|
||||
|
@ -193,7 +180,7 @@
|
|||
button.click(); // Button is set to toggle the popover
|
||||
assert_false(popover.matches(':open'));
|
||||
assert_equals(document.activeElement, priorFocus, 'prior element should get focus on button-toggled hide');
|
||||
await finishAnimationsAndVerifyHide(popover);
|
||||
assert_false(isElementVisible(popover));
|
||||
}, "Popover focus test: " + testName);
|
||||
|
||||
promise_test(async t => {
|
||||
|
@ -210,7 +197,7 @@
|
|||
await clickOn(button); // This will *not* light dismiss, but will "toggle" the popover.
|
||||
assert_false(popover.matches(':open'));
|
||||
assert_equals(document.activeElement, priorFocus, 'focus should return to the prior focus');
|
||||
await finishAnimationsAndVerifyHide(popover);
|
||||
assert_false(isElementVisible(popover));
|
||||
|
||||
// Same thing, but the button is contained within the popover
|
||||
button.removeAttribute('popovertoggletarget');
|
||||
|
@ -227,7 +214,7 @@
|
|||
await clickOn(button);
|
||||
assert_false(popover.matches(':open'), 'clicking button should hide the popover');
|
||||
assert_equals(document.activeElement, priorFocus, 'Contained button should return focus to the previously focused element');
|
||||
await finishAnimationsAndVerifyHide(popover);
|
||||
assert_false(isElementVisible(popover));
|
||||
|
||||
// Same thing, but the button is unrelated (no popovertoggletarget)
|
||||
button = document.createElement('button');
|
||||
|
@ -238,7 +225,7 @@
|
|||
await clickOn(button); // This will light dismiss the popover, focus the prior focus, then focus this button.
|
||||
assert_false(popover.matches(':open'), 'clicking button should hide the popover (via light dismiss)');
|
||||
assert_equals(document.activeElement, button, 'Focus should go to unrelated button on light dismiss');
|
||||
await finishAnimationsAndVerifyHide(popover);
|
||||
assert_false(isElementVisible(popover));
|
||||
}, "Popover button click focus test: " + testName);
|
||||
|
||||
promise_test(async t => {
|
||||
|
@ -259,7 +246,7 @@
|
|||
assert_equals(document.activeElement, newFocus, 'focus should not change when prior focus is removed');
|
||||
popover.hidePopover();
|
||||
assert_not_equals(document.activeElement, priorFocus, 'focused element has been removed');
|
||||
await finishAnimationsAndVerifyHide(popover);
|
||||
assert_false(isElementVisible(popover));
|
||||
document.body.appendChild(priorFocus); // Put it back
|
||||
|
||||
// Move the prior focus inside the (already open) popover
|
||||
|
@ -271,12 +258,7 @@
|
|||
assert_true(popover.contains(priorFocus));
|
||||
assert_true(popover.matches(':open'), 'popover should stay open');
|
||||
popover.hidePopover();
|
||||
await waitForRender();
|
||||
assert_true(isElementVisible(popover),'Animations should keep the popover visible');
|
||||
assert_not_equals(getComputedStyle(popover).display,'none','Animations should keep the popover visible');
|
||||
assert_equals(document.activeElement, priorFocus, 'focused element gets focused');
|
||||
await finishAnimationsAndVerifyHide(popover);
|
||||
assert_equals(getComputedStyle(popover).display,'none','Animations have ended, popover should be hidden');
|
||||
assert_false(isElementVisible(popover));
|
||||
assert_not_equals(document.activeElement, priorFocus, 'focused element is display:none inside the popover');
|
||||
document.body.appendChild(priorFocus); // Put it back
|
||||
}, "Popover corner cases test: " + testName);
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<link rel=author href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<link rel=match href="popover-hidden-display-ref.html">
|
||||
<meta name=fuzzy content="0-1;0-15">
|
||||
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<link rel=author href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<link rel=match href="popover-inside-display-none-ref.html">
|
||||
|
||||
No popover should be displayed here.<p>
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
<meta charset="utf-8" />
|
||||
<title>Popover invoking attribute</title>
|
||||
<link rel="author" href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<meta name="timeout" content="long">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
<meta charset="utf-8" />
|
||||
<title>Popover should *not* light dismiss on scroll</title>
|
||||
<link rel="author" href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<link rel=help href="https://github.com/openui/open-ui/issues/240">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
<meta charset="utf-8" />
|
||||
<title>Popover=manual crash test</title>
|
||||
<link rel="author" href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-actions.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
<meta charset="utf-8" />
|
||||
<title>Popover keyboard focus behaviors</title>
|
||||
<link rel="author" href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<link rel=author href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<link rel=match href="popover-open-display-ref.html">
|
||||
|
||||
<div popover>This is a popover</div>
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<link rel=author href="mailto:masonf@chromium.org">
|
||||
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
|
||||
<link rel=help href="https://open-ui.org/components/popover.research.explainer">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html">
|
||||
<link rel=match href="popover-open-overflow-display-ref.html">
|
||||
|
||||
<div id=container>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue