Update web-platform-tests to revision 7cb66930f16381536cec572cd3f4f86c7bbb6787

This commit is contained in:
WPT Sync Bot 2020-05-19 08:19:06 +00:00
parent c183f95297
commit 9cff065d01
80 changed files with 1357 additions and 359 deletions

View file

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

View file

@ -2,3 +2,6 @@
[Hit test intersecting scaled box] [Hit test intersecting scaled box]
expected: FAIL expected: FAIL
[Hit test within unscaled box]
expected: FAIL

View file

@ -2,6 +2,3 @@
[listeners are called when <iframe> is resized] [listeners are called when <iframe> is resized]
expected: FAIL expected: FAIL
[listeners are called correct number of times]
expected: FAIL

View file

@ -318,12 +318,15 @@
[<iframe>: combined response Content-Type: */* text/html] [<iframe>: combined response Content-Type: */* text/html]
expected: FAIL expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;x=" text/plain] [<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL expected: FAIL
[<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*]
expected: FAIL

View file

@ -56,12 +56,9 @@
[separate text/javascript x/x] [separate text/javascript x/x]
expected: FAIL expected: FAIL
[separate text/javascript;charset=windows-1252 error text/javascript]
expected: FAIL
[separate text/javascript error]
expected: FAIL
[separate text/javascript;charset=windows-1252 text/javascript] [separate text/javascript;charset=windows-1252 text/javascript]
expected: FAIL expected: FAIL
[separate text/javascript ]
expected: FAIL

View file

@ -11,6 +11,3 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!] [X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL expected: FAIL
[X-Content-Type-Options%3A%20%2Cnosniff]
expected: FAIL

View file

@ -1,16 +1,20 @@
[supported-elements.html] [supported-elements.html]
expected: TIMEOUT
[Contenteditable element should support autofocus] [Contenteditable element should support autofocus]
expected: FAIL expected: FAIL
[Host element with delegatesFocus including no focusable descendants should be skipped] [Host element with delegatesFocus including no focusable descendants should be skipped]
expected: FAIL expected: NOTRUN
[Element with tabindex should support autofocus] [Element with tabindex should support autofocus]
expected: FAIL expected: TIMEOUT
[Area element should support autofocus] [Area element should support autofocus]
expected: FAIL expected: NOTRUN
[Host element with delegatesFocus should support autofocus] [Host element with delegatesFocus should support autofocus]
expected: FAIL expected: NOTRUN
[Non-HTMLElement should not support autofocus]
expected: NOTRUN

View file

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

View file

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

View file

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

View file

@ -1,4 +0,0 @@
[077.html]
[ adding several types of scripts through the DOM and removing some of them confuses scheduler ]
expected: FAIL

View file

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

View file

@ -3,3 +3,6 @@
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] [The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: TIMEOUT expected: TIMEOUT
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: FAIL

View file

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

View file

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

View file

@ -1,3 +1,9 @@
[abort.any.serviceworker.html]
expected: ERROR
[abort.any.sharedworker.html]
expected: ERROR
[abort.any.worker.html] [abort.any.worker.html]
[abort after connect should do nothing] [abort after connect should do nothing]
expected: FAIL expected: FAIL
@ -9,12 +15,6 @@
expected: FAIL expected: FAIL
[abort.any.sharedworker.html]
expected: ERROR
[abort]
expected: FAIL
[abort.any.html] [abort.any.html]
[abort after connect should do nothing] [abort after connect should do nothing]
expected: FAIL expected: FAIL
@ -25,9 +25,3 @@
[abort before constructing should prevent connection] [abort before constructing should prevent connection]
expected: FAIL expected: FAIL
[abort.any.serviceworker.html]
expected: ERROR
[abort]
expected: FAIL

View file

@ -10,12 +10,6 @@
[backpressure-receive.any.serviceworker.html] [backpressure-receive.any.serviceworker.html]
expected: ERROR expected: ERROR
[backpressure-receive]
expected: FAIL
[backpressure-receive.any.sharedworker.html] [backpressure-receive.any.sharedworker.html]
expected: ERROR expected: ERROR
[backpressure-receive]
expected: FAIL

View file

@ -1,21 +1,15 @@
[backpressure-send.any.serviceworker.html]
expected: ERROR
[backpressure-send]
expected: FAIL
[backpressure-send.any.sharedworker.html] [backpressure-send.any.sharedworker.html]
expected: ERROR expected: ERROR
[backpressure-send]
expected: FAIL
[backpressure-send.any.worker.html]
[backpressure should be applied to sent messages]
expected: FAIL
[backpressure-send.any.html] [backpressure-send.any.html]
[backpressure should be applied to sent messages] [backpressure should be applied to sent messages]
expected: FAIL expected: FAIL
[backpressure-send.any.serviceworker.html]
expected: ERROR
[backpressure-send.any.worker.html]
[backpressure should be applied to sent messages]
expected: FAIL

View file

@ -1,88 +1,5 @@
[close.any.html] [close.any.sharedworker.html]
[unspecified close code with non-empty reason should set code to 1000] expected: ERROR
expected: FAIL
[canceling the readable with an invalid code should be ignored]
expected: FAIL
[close() with an overlong reason should throw]
expected: FAIL
[close() with invalid code 5000 should throw]
expected: FAIL
[aborting the writable with a DOMException should be ignored]
expected: FAIL
[close() with invalid code 999 should throw]
expected: FAIL
[canceling the readable with a DOMException should be ignored]
expected: FAIL
[close(true) should throw a TypeError]
expected: FAIL
[canceling the readable with a reason but no code should be ignored]
expected: FAIL
[closing the writable should result in a clean close]
expected: FAIL
[close during handshake should work]
expected: FAIL
[canceling the readable should result in a clean close]
expected: FAIL
[aborting the writable with an invalid code should be ignored]
expected: FAIL
[aborting the writable with a code and reason should use them]
expected: FAIL
[canceling the readable with a code and reason should use them]
expected: FAIL
[canceling the readable with a code should send that code]
expected: FAIL
[close() with invalid code 2999 should throw]
expected: FAIL
[aborting the writable with a reason but no code should be ignored]
expected: FAIL
[aborting the writable with an invalid reason should be ignored]
expected: FAIL
[writer close() promise should not resolve until handshake completes]
expected: FAIL
[aborting the writable with a code should send that code]
expected: FAIL
[canceling the readable with an invalid reason should be ignored]
expected: FAIL
[close() with invalid code 1001 should throw]
expected: FAIL
[close code should be sent to server and reflected back]
expected: FAIL
[no close argument should send empty Close frame]
expected: FAIL
[unspecified close code with empty reason should send empty Close frame]
expected: FAIL
[aborting the writable should result in a clean close]
expected: FAIL
[unspecified close code should send empty Close frame]
expected: FAIL
[close.any.worker.html] [close.any.worker.html]
[unspecified close code with non-empty reason should set code to 1000] [unspecified close code with non-empty reason should set code to 1000]
@ -172,12 +89,89 @@
[close.any.serviceworker.html] [close.any.serviceworker.html]
expected: ERROR expected: ERROR
[close]
[close.any.html]
[unspecified close code with non-empty reason should set code to 1000]
expected: FAIL expected: FAIL
[canceling the readable with an invalid code should be ignored]
[close.any.sharedworker.html] expected: FAIL
expected: ERROR
[close] [close() with an overlong reason should throw]
expected: FAIL
[close() with invalid code 5000 should throw]
expected: FAIL
[aborting the writable with a DOMException should be ignored]
expected: FAIL
[close() with invalid code 999 should throw]
expected: FAIL
[canceling the readable with a DOMException should be ignored]
expected: FAIL
[close(true) should throw a TypeError]
expected: FAIL
[canceling the readable with a reason but no code should be ignored]
expected: FAIL
[closing the writable should result in a clean close]
expected: FAIL
[close during handshake should work]
expected: FAIL
[canceling the readable should result in a clean close]
expected: FAIL
[aborting the writable with an invalid code should be ignored]
expected: FAIL
[aborting the writable with a code and reason should use them]
expected: FAIL
[canceling the readable with a code and reason should use them]
expected: FAIL
[canceling the readable with a code should send that code]
expected: FAIL
[close() with invalid code 2999 should throw]
expected: FAIL
[aborting the writable with a reason but no code should be ignored]
expected: FAIL
[aborting the writable with an invalid reason should be ignored]
expected: FAIL
[writer close() promise should not resolve until handshake completes]
expected: FAIL
[aborting the writable with a code should send that code]
expected: FAIL
[canceling the readable with an invalid reason should be ignored]
expected: FAIL
[close() with invalid code 1001 should throw]
expected: FAIL
[close code should be sent to server and reflected back]
expected: FAIL
[no close argument should send empty Close frame]
expected: FAIL
[unspecified close code with empty reason should send empty Close frame]
expected: FAIL
[aborting the writable should result in a clean close]
expected: FAIL
[unspecified close code should send empty Close frame]
expected: FAIL expected: FAIL

View file

@ -1,34 +1,8 @@
[constructor.any.worker.html] [constructor.any.serviceworker.html]
[constructing with a valid URL should work] expected: ERROR
expected: FAIL
[setting a protocol in the constructor should work]
expected: FAIL
[wss.connection should resolve to the right types]
expected: FAIL
[constructing with no URL should throw]
expected: FAIL
[constructing with invalid options should throw]
expected: FAIL
[connection failure should reject the promises]
expected: FAIL
[protocols should be required to be a list]
expected: FAIL
[constructing with an invalid URL should throw]
expected: FAIL
[constructor.any.sharedworker.html] [constructor.any.sharedworker.html]
expected: ERROR expected: ERROR
[constructor]
expected: FAIL
[constructor.any.html] [constructor.any.html]
[constructing with a valid URL should work] [constructing with a valid URL should work]
@ -56,8 +30,28 @@
expected: FAIL expected: FAIL
[constructor.any.serviceworker.html] [constructor.any.worker.html]
expected: ERROR [constructing with a valid URL should work]
[constructor] expected: FAIL
[setting a protocol in the constructor should work]
expected: FAIL
[wss.connection should resolve to the right types]
expected: FAIL
[constructing with no URL should throw]
expected: FAIL
[constructing with invalid options should throw]
expected: FAIL
[connection failure should reject the promises]
expected: FAIL
[protocols should be required to be a list]
expected: FAIL
[constructing with an invalid URL should throw]
expected: FAIL expected: FAIL

View file

@ -122800,6 +122800,19 @@
] ]
}, },
"css-borders": { "css-borders": {
"borders-on-sub-unit-sized-elements.html": [
"1aff3c9a6b22a8bbaebf8c6b91dfdcc8a6a08e44",
[
null,
[
[
"/css/css-borders/reference/borders-on-sub-unit-sized-elements-ref.html",
"=="
]
],
{}
]
],
"subpixel-borders-with-child-border-box-sizing.html": [ "subpixel-borders-with-child-border-box-sizing.html": [
"0f469e4eb42a8bb9708897a7829c92403b92196d", "0f469e4eb42a8bb9708897a7829c92403b92196d",
[ [
@ -122971,6 +122984,97 @@
{} {}
] ]
], ],
"break-between-avoid-000.html": [
"4816be7ae7d5d2a0bc2ea736d8af6b91027b134d",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square-only.html",
"=="
]
],
{}
]
],
"break-between-avoid-001.html": [
"b26f04abaf4ae7bd27d635c719a8402106300690",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square-only.html",
"=="
]
],
{}
]
],
"break-between-avoid-002.html": [
"14fa2c3832adb9ffa3caf0270ea48a9107a0a93a",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square-only.html",
"=="
]
],
{}
]
],
"break-between-avoid-003.html": [
"de738d145ff5919eccdcea3aa924be92c51f26d8",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square-only.html",
"=="
]
],
{}
]
],
"break-between-avoid-004.html": [
"71545b76c03bf07b6075b1e358ab1dc597621e47",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square-only.html",
"=="
]
],
{}
]
],
"break-between-avoid-005.html": [
"f42110a6c4eda93a78227b65dd5ad2ea8b2e110e",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square-only.html",
"=="
]
],
{}
]
],
"break-between-avoid-006.html": [
"91e05b5a9287e076517175fb421a2f37da21b34e",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square-only.html",
"=="
]
],
{}
]
],
"fieldset-001.html": [ "fieldset-001.html": [
"d320fe15bebcfbdd332ee9411b548dab60f8fba6", "d320fe15bebcfbdd332ee9411b548dab60f8fba6",
[ [
@ -155931,7 +156035,20 @@
] ]
], ],
"scrollbar-empty-001.html": [ "scrollbar-empty-001.html": [
"7910f4de950f70e0bd5ba3afcad8596876fdeaef", "0b2eebb569929f1ec19ef086d03e63e281fc5900",
[
null,
[
[
"/css/reference/blank.html",
"=="
]
],
{}
]
],
"scrollbar-empty-002.html": [
"490146cad20d171b3ac3608ba676765bc41ea923",
[ [
null, null,
[ [
@ -190297,6 +190414,19 @@
{} {}
] ]
], ],
"outline-negative-offset-composited-scroll.html": [
"4abde0e80425dffaec3a99b1d8ec94aefdb6bc94",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"outline-offset-001.html": [ "outline-offset-001.html": [
"a131e96e29ef8d6dd0f3cbbc03235ede4f71e014", "a131e96e29ef8d6dd0f3cbbc03235ede4f71e014",
[ [
@ -286691,6 +286821,10 @@
}, },
"css-borders": { "css-borders": {
"reference": { "reference": {
"borders-on-sub-unit-sized-elements-ref.html": [
"19233778ed87c6153924a153e5fdaadc5925a057",
[]
],
"subpixel-borders-with-child-border-box-sizing-ref.html": [ "subpixel-borders-with-child-border-box-sizing-ref.html": [
"b2311d5ba083cf7760af5d57003b7777b472ded1", "b2311d5ba083cf7760af5d57003b7777b472ded1",
[] []
@ -323270,7 +323404,7 @@
[] []
], ],
"tests2d.yaml": [ "tests2d.yaml": [
"2bbc1986e2376afe1f8f2ca5b54c5368dceae272", "a22d1b740ad9aff61252ecb4a5341da971ecc583",
[] []
], ],
"tests2dtext.yaml": [ "tests2dtext.yaml": [
@ -332932,7 +333066,7 @@
[] []
], ],
"badging.idl": [ "badging.idl": [
"fe17fa087013e400e48076ce9f0422fe17171b7f", "01481820935a08675e4bef734aada27b3151e814",
[] []
], ],
"battery-status.idl": [ "battery-status.idl": [
@ -332960,7 +333094,7 @@
[] []
], ],
"cookie-store.idl": [ "cookie-store.idl": [
"88719369760e4b0da19ae18c4016d2ea5b3ffbe4", "b32cf6b9d8d8ed005a24293796a4aaf5f824ad07",
[] []
], ],
"cors-rfc1918.idl": [ "cors-rfc1918.idl": [
@ -333412,7 +333546,7 @@
[] []
], ],
"wai-aria.idl": [ "wai-aria.idl": [
"845e2ef6cf84aa6fafbfdcadf167e440eaadd668", "ef8fd6342a59c3584536e6ec491ad20c2208c51d",
[] []
], ],
"wasm-js-api.idl": [ "wasm-js-api.idl": [
@ -338986,7 +339120,7 @@
[] []
], ],
"testharness.js": [ "testharness.js": [
"bd7a8bab0057ed3290ea49635b05f0be50236f29", "cf361bac3920ef1b34a1861fcc4f886d442e21a3",
[] []
], ],
"testharness.js.headers": [ "testharness.js.headers": [
@ -343413,7 +343547,7 @@
[] []
], ],
"lint.py": [ "lint.py": [
"6a5359bfb8a87728068fee64a69ba1de0c62e94d", "c56720d9a3f712b184ce1491fa8cb85a3746197a",
[] []
], ],
"rules.py": [ "rules.py": [
@ -343655,7 +343789,7 @@
[] []
], ],
"item.py": [ "item.py": [
"6601f9c719e040219e45bc7d0dce8c4a77a2734c", "ee07f0d1d797175374b169a468b4c2c8505796da",
[] []
], ],
"log.py": [ "log.py": [
@ -343667,7 +343801,7 @@
[] []
], ],
"sourcefile.py": [ "sourcefile.py": [
"f36ce1ab3304d7ae7b7ae1da9c25e0d7c1a3846f", "c374ba050434e89b5c915d21da42550d16ed3b7d",
[] []
], ],
"testpaths.py": [ "testpaths.py": [
@ -343692,7 +343826,7 @@
[] []
], ],
"test_sourcefile.py": [ "test_sourcefile.py": [
"a8fbc27071408da061e7e166026f0baa0cb518e1", "4d2080a70283be308898536708993c0843cfcebb",
[] []
], ],
"test_utils.py": [ "test_utils.py": [
@ -343875,7 +344009,7 @@
[] []
], ],
"serve.py": [ "serve.py": [
"45bfd4766ebcd278ab068f9632471c5c23a3c3f1", "0e5090c2eef80abd774797771297df2759265c59",
[] []
], ],
"test_functional.py": [ "test_functional.py": [
@ -349718,7 +349852,7 @@
[] []
], ],
"wpttest.py": [ "wpttest.py": [
"4b43b73610a591808aec938932eca228c08342bf", "6b0fab6eebaf505ffd20710e1a2ca46e3d6f59de",
[] []
] ]
}, },
@ -352589,7 +352723,7 @@
[] []
] ]
}, },
"stream-tentative": { "stream.tentative": {
"README.md": [ "README.md": [
"6c5158877417a3271ff0179449eace740cf157a1", "6c5158877417a3271ff0179449eace740cf157a1",
[] []
@ -383975,6 +384109,13 @@
{} {}
] ]
], ],
"relayout-input.html": [
"b95601c04c5cff8078896598ae5225776dc237dc",
[
null,
{}
]
],
"shrinking-column-flexbox.html": [ "shrinking-column-flexbox.html": [
"680dc7eb7f36e508437fab444660d58d03f00bfe", "680dc7eb7f36e508437fab444660d58d03f00bfe",
[ [
@ -429340,6 +429481,13 @@
{} {}
] ]
], ],
"proxy-getOwnPropertyDescriptor.html": [
"c3db82f8502e8a6c989204449a6e4ac960a46681",
[
null,
{}
]
],
"security-window": { "security-window": {
"window-security.https.html": [ "window-security.https.html": [
"ad8f177f37d2ad97d4923dd73855e03f08b587b6", "ad8f177f37d2ad97d4923dd73855e03f08b587b6",
@ -430566,7 +430714,7 @@
] ]
], ],
"2d.drawImage.canvas.html": [ "2d.drawImage.canvas.html": [
"3f1573e6e9c50686843ceef3ba0569424dbf2e48", "18348d27bfcdd1b1aa323976e6163e64f62e225a",
[ [
null, null,
{} {}
@ -463135,7 +463283,7 @@
] ]
], ],
"bailout-side-effects-ignore-opens-during-unload.window.js": [ "bailout-side-effects-ignore-opens-during-unload.window.js": [
"6b80ecacf8f640ff94209dbd915049e261214eac", "98ffba20a1a17ce12881c68a736db5a81d3e3289",
[ [
"html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-side-effects-ignore-opens-during-unload.window.html", "html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-side-effects-ignore-opens-during-unload.window.html",
{ {
@ -493046,7 +493194,7 @@
}, },
"storage-access-api": { "storage-access-api": {
"hasStorageAccess.sub.window.js": [ "hasStorageAccess.sub.window.js": [
"b8b9e492d2590a016fd32d48396e7c5e3f20d989", "21400e68619a051bb25a4989d3b981504db7c5d9",
[ [
"storage-access-api/hasStorageAccess.sub.window.html", "storage-access-api/hasStorageAccess.sub.window.html",
{ {
@ -498677,8 +498825,15 @@
{} {}
] ]
], ],
"attribute-value-unaffected-by-animation.html": [ "attribute-value-unaffected-by-animation-001.html": [
"55ebb0a3c9a019f921bf585bc83a0b3a1ff3422a", "21271ff0308f189b5ecc29d84bbb408f3135840e",
[
null,
{}
]
],
"attribute-value-unaffected-by-animation-002.html": [
"29878d02cbd7594213d8f42c0406d988e1fe37b9",
[ [
null, null,
{} {}
@ -513256,6 +513411,13 @@
{} {}
] ]
], ],
"split.https.html": [
"102771e23a536848f00249166ece10217766a380",
[
null,
{}
]
],
"video-codecs.https.html": [ "video-codecs.https.html": [
"a4905ae441a912797788d6d0b065a6c861d708b8", "a4905ae441a912797788d6d0b065a6c861d708b8",
[ [
@ -516950,11 +517112,11 @@
] ]
] ]
}, },
"stream-tentative": { "stream.tentative": {
"abort.any.js": [ "abort.any.js": [
"09664f31ea6fa34f6df20f3aafe0b3ecaf39a7c3", "09664f31ea6fa34f6df20f3aafe0b3ecaf39a7c3",
[ [
"websockets/stream-tentative/abort.any.html", "websockets/stream.tentative/abort.any.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -516977,7 +517139,7 @@
} }
], ],
[ [
"websockets/stream-tentative/abort.any.serviceworker.html", "websockets/stream.tentative/abort.any.serviceworker.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -517000,7 +517162,7 @@
} }
], ],
[ [
"websockets/stream-tentative/abort.any.sharedworker.html", "websockets/stream.tentative/abort.any.sharedworker.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -517023,7 +517185,7 @@
} }
], ],
[ [
"websockets/stream-tentative/abort.any.worker.html", "websockets/stream.tentative/abort.any.worker.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -517049,7 +517211,7 @@
"backpressure-receive.any.js": [ "backpressure-receive.any.js": [
"22705c6ed11d60148bfc41590e7e335f9351ef79", "22705c6ed11d60148bfc41590e7e335f9351ef79",
[ [
"websockets/stream-tentative/backpressure-receive.any.html", "websockets/stream.tentative/backpressure-receive.any.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -517073,7 +517235,7 @@
} }
], ],
[ [
"websockets/stream-tentative/backpressure-receive.any.serviceworker.html", "websockets/stream.tentative/backpressure-receive.any.serviceworker.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -517097,7 +517259,7 @@
} }
], ],
[ [
"websockets/stream-tentative/backpressure-receive.any.sharedworker.html", "websockets/stream.tentative/backpressure-receive.any.sharedworker.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -517121,7 +517283,7 @@
} }
], ],
[ [
"websockets/stream-tentative/backpressure-receive.any.worker.html", "websockets/stream.tentative/backpressure-receive.any.worker.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -517148,7 +517310,7 @@
"backpressure-send.any.js": [ "backpressure-send.any.js": [
"6619a0b08f3ee39e1845d69c20ca3ae7c2d4ca5f", "6619a0b08f3ee39e1845d69c20ca3ae7c2d4ca5f",
[ [
"websockets/stream-tentative/backpressure-send.any.html", "websockets/stream.tentative/backpressure-send.any.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -517172,7 +517334,7 @@
} }
], ],
[ [
"websockets/stream-tentative/backpressure-send.any.serviceworker.html", "websockets/stream.tentative/backpressure-send.any.serviceworker.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -517196,7 +517358,7 @@
} }
], ],
[ [
"websockets/stream-tentative/backpressure-send.any.sharedworker.html", "websockets/stream.tentative/backpressure-send.any.sharedworker.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -517220,7 +517382,7 @@
} }
], ],
[ [
"websockets/stream-tentative/backpressure-send.any.worker.html", "websockets/stream.tentative/backpressure-send.any.worker.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -517247,7 +517409,7 @@
"close.any.js": [ "close.any.js": [
"0e6149e7a635eb649910fbd813228f36f7eb0283", "0e6149e7a635eb649910fbd813228f36f7eb0283",
[ [
"websockets/stream-tentative/close.any.html", "websockets/stream.tentative/close.any.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -517266,7 +517428,7 @@
} }
], ],
[ [
"websockets/stream-tentative/close.any.serviceworker.html", "websockets/stream.tentative/close.any.serviceworker.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -517285,7 +517447,7 @@
} }
], ],
[ [
"websockets/stream-tentative/close.any.sharedworker.html", "websockets/stream.tentative/close.any.sharedworker.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -517304,7 +517466,7 @@
} }
], ],
[ [
"websockets/stream-tentative/close.any.worker.html", "websockets/stream.tentative/close.any.worker.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -517326,7 +517488,7 @@
"constructor.any.js": [ "constructor.any.js": [
"24f96cc308252be2467bc73f027994542c92987c", "24f96cc308252be2467bc73f027994542c92987c",
[ [
"websockets/stream-tentative/constructor.any.html", "websockets/stream.tentative/constructor.any.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -517345,7 +517507,7 @@
} }
], ],
[ [
"websockets/stream-tentative/constructor.any.serviceworker.html", "websockets/stream.tentative/constructor.any.serviceworker.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -517364,7 +517526,7 @@
} }
], ],
[ [
"websockets/stream-tentative/constructor.any.sharedworker.html", "websockets/stream.tentative/constructor.any.sharedworker.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -517383,7 +517545,7 @@
} }
], ],
[ [
"websockets/stream-tentative/constructor.any.worker.html", "websockets/stream.tentative/constructor.any.worker.html",
{ {
"script_metadata": [ "script_metadata": [
[ [
@ -519517,7 +519679,7 @@
] ]
], ],
"xrSession_visibilityState.https.html": [ "xrSession_visibilityState.https.html": [
"e7a6041036f9d7c06133c602c976a87c8868dc3e", "2311792d0fd0e748bed709bfc90682682d44d9fd",
[ [
null, null,
{} {}

View file

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

View file

@ -2,3 +2,6 @@
[Hit test intersecting scaled box] [Hit test intersecting scaled box]
expected: FAIL expected: FAIL
[Hit test within unscaled box]
expected: FAIL

View file

@ -2,6 +2,3 @@
[listeners are called when <iframe> is resized] [listeners are called when <iframe> is resized]
expected: FAIL expected: FAIL
[listeners are called correct number of times]
expected: FAIL

View file

@ -318,12 +318,15 @@
[<iframe>: combined response Content-Type: */* text/html] [<iframe>: combined response Content-Type: */* text/html]
expected: FAIL expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;x=" text/plain] [<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL expected: FAIL
[<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*]
expected: FAIL

View file

@ -56,12 +56,9 @@
[separate text/javascript x/x] [separate text/javascript x/x]
expected: FAIL expected: FAIL
[separate text/javascript;charset=windows-1252 error text/javascript]
expected: FAIL
[separate text/javascript error]
expected: FAIL
[separate text/javascript;charset=windows-1252 text/javascript] [separate text/javascript;charset=windows-1252 text/javascript]
expected: FAIL expected: FAIL
[separate text/javascript ]
expected: FAIL

View file

@ -11,6 +11,3 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!] [X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL expected: FAIL
[X-Content-Type-Options%3A%20%2Cnosniff]
expected: FAIL

View file

@ -1,16 +1,20 @@
[supported-elements.html] [supported-elements.html]
expected: TIMEOUT
[Contenteditable element should support autofocus] [Contenteditable element should support autofocus]
expected: FAIL expected: FAIL
[Element with tabindex should support autofocus] [Element with tabindex should support autofocus]
expected: FAIL expected: TIMEOUT
[Host element with delegatesFocus including no focusable descendants should be skipped] [Host element with delegatesFocus including no focusable descendants should be skipped]
expected: FAIL expected: NOTRUN
[Area element should support autofocus] [Area element should support autofocus]
expected: FAIL expected: NOTRUN
[Host element with delegatesFocus should support autofocus] [Host element with delegatesFocus should support autofocus]
expected: FAIL expected: NOTRUN
[Non-HTMLElement should not support autofocus]
expected: NOTRUN

View file

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

View file

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

View file

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

View file

@ -1,4 +0,0 @@
[077.html]
[ adding several types of scripts through the DOM and removing some of them confuses scheduler ]
expected: FAIL

View file

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

View file

@ -4,3 +4,6 @@
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] [The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: TIMEOUT expected: TIMEOUT
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: FAIL

View file

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

View file

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

View file

@ -0,0 +1,27 @@
[abort.any.serviceworker.html]
expected: ERROR
[abort.any.sharedworker.html]
expected: ERROR
[abort.any.worker.html]
[abort after connect should do nothing]
expected: FAIL
[abort during handshake should work]
expected: FAIL
[abort before constructing should prevent connection]
expected: FAIL
[abort.any.html]
[abort after connect should do nothing]
expected: FAIL
[abort during handshake should work]
expected: FAIL
[abort before constructing should prevent connection]
expected: FAIL

View file

@ -0,0 +1,15 @@
[backpressure-receive.any.html]
[backpressure should be applied to received messages]
expected: FAIL
[backpressure-receive.any.worker.html]
[backpressure should be applied to received messages]
expected: FAIL
[backpressure-receive.any.serviceworker.html]
expected: ERROR
[backpressure-receive.any.sharedworker.html]
expected: ERROR

View file

@ -0,0 +1,15 @@
[backpressure-send.any.sharedworker.html]
expected: ERROR
[backpressure-send.any.html]
[backpressure should be applied to sent messages]
expected: FAIL
[backpressure-send.any.serviceworker.html]
expected: ERROR
[backpressure-send.any.worker.html]
[backpressure should be applied to sent messages]
expected: FAIL

View file

@ -0,0 +1,177 @@
[close.any.sharedworker.html]
expected: ERROR
[close.any.worker.html]
[unspecified close code with non-empty reason should set code to 1000]
expected: FAIL
[canceling the readable with an invalid code should be ignored]
expected: FAIL
[close() with an overlong reason should throw]
expected: FAIL
[close() with invalid code 5000 should throw]
expected: FAIL
[aborting the writable with a DOMException should be ignored]
expected: FAIL
[close() with invalid code 999 should throw]
expected: FAIL
[canceling the readable with a DOMException should be ignored]
expected: FAIL
[close(true) should throw a TypeError]
expected: FAIL
[canceling the readable with a reason but no code should be ignored]
expected: FAIL
[closing the writable should result in a clean close]
expected: FAIL
[close during handshake should work]
expected: FAIL
[canceling the readable should result in a clean close]
expected: FAIL
[aborting the writable with an invalid code should be ignored]
expected: FAIL
[aborting the writable with a code and reason should use them]
expected: FAIL
[canceling the readable with a code and reason should use them]
expected: FAIL
[canceling the readable with a code should send that code]
expected: FAIL
[close() with invalid code 2999 should throw]
expected: FAIL
[aborting the writable with a reason but no code should be ignored]
expected: FAIL
[aborting the writable with an invalid reason should be ignored]
expected: FAIL
[writer close() promise should not resolve until handshake completes]
expected: FAIL
[aborting the writable with a code should send that code]
expected: FAIL
[canceling the readable with an invalid reason should be ignored]
expected: FAIL
[close() with invalid code 1001 should throw]
expected: FAIL
[close code should be sent to server and reflected back]
expected: FAIL
[no close argument should send empty Close frame]
expected: FAIL
[unspecified close code with empty reason should send empty Close frame]
expected: FAIL
[aborting the writable should result in a clean close]
expected: FAIL
[unspecified close code should send empty Close frame]
expected: FAIL
[close.any.serviceworker.html]
expected: ERROR
[close.any.html]
[unspecified close code with non-empty reason should set code to 1000]
expected: FAIL
[canceling the readable with an invalid code should be ignored]
expected: FAIL
[close() with an overlong reason should throw]
expected: FAIL
[close() with invalid code 5000 should throw]
expected: FAIL
[aborting the writable with a DOMException should be ignored]
expected: FAIL
[close() with invalid code 999 should throw]
expected: FAIL
[canceling the readable with a DOMException should be ignored]
expected: FAIL
[close(true) should throw a TypeError]
expected: FAIL
[canceling the readable with a reason but no code should be ignored]
expected: FAIL
[closing the writable should result in a clean close]
expected: FAIL
[close during handshake should work]
expected: FAIL
[canceling the readable should result in a clean close]
expected: FAIL
[aborting the writable with an invalid code should be ignored]
expected: FAIL
[aborting the writable with a code and reason should use them]
expected: FAIL
[canceling the readable with a code and reason should use them]
expected: FAIL
[canceling the readable with a code should send that code]
expected: FAIL
[close() with invalid code 2999 should throw]
expected: FAIL
[aborting the writable with a reason but no code should be ignored]
expected: FAIL
[aborting the writable with an invalid reason should be ignored]
expected: FAIL
[writer close() promise should not resolve until handshake completes]
expected: FAIL
[aborting the writable with a code should send that code]
expected: FAIL
[canceling the readable with an invalid reason should be ignored]
expected: FAIL
[close() with invalid code 1001 should throw]
expected: FAIL
[close code should be sent to server and reflected back]
expected: FAIL
[no close argument should send empty Close frame]
expected: FAIL
[unspecified close code with empty reason should send empty Close frame]
expected: FAIL
[aborting the writable should result in a clean close]
expected: FAIL
[unspecified close code should send empty Close frame]
expected: FAIL

View file

@ -0,0 +1,57 @@
[constructor.any.serviceworker.html]
expected: ERROR
[constructor.any.sharedworker.html]
expected: ERROR
[constructor.any.html]
[constructing with a valid URL should work]
expected: FAIL
[setting a protocol in the constructor should work]
expected: FAIL
[wss.connection should resolve to the right types]
expected: FAIL
[constructing with no URL should throw]
expected: FAIL
[constructing with invalid options should throw]
expected: FAIL
[connection failure should reject the promises]
expected: FAIL
[protocols should be required to be a list]
expected: FAIL
[constructing with an invalid URL should throw]
expected: FAIL
[constructor.any.worker.html]
[constructing with a valid URL should work]
expected: FAIL
[setting a protocol in the constructor should work]
expected: FAIL
[wss.connection should resolve to the right types]
expected: FAIL
[constructing with no URL should throw]
expected: FAIL
[constructing with invalid options should throw]
expected: FAIL
[connection failure should reject the promises]
expected: FAIL
[protocols should be required to be a list]
expected: FAIL
[constructing with an invalid URL should throw]
expected: FAIL

View file

@ -0,0 +1,52 @@
<!DOCTYPE html>
<html>
<title>CSS Borders: Borders appear when the element is smaller than 1/2 a pixel</title>
<link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#border-width">
<link rel="match" href="reference/borders-on-sub-unit-sized-elements-ref.html">
<meta name="assert" content="Borders on elements smaller than one pixel in size
should still appear." />
<head>
<style>
#right {
position: absolute;
top: 10px;
left: 65px;
width: 0.25px;
height: 50px;
border-right: 1px dashed black;
}
#left {
position: absolute;
top: 10px;
left: 5px;
width: 0.25px;
height: 50px;
border-left: 1px dashed black;
}
#top {
position: absolute;
top: 5px;
left: 10px;
width: 50px;
height: 0.25px;
border-top: 1px dashed black;
}
#bottom {
position: absolute;
top: 65px;
left: 10px;
width: 50px;
height: 0.25px;
border-bottom: 1px dashed black;
}
</style>
</head>
<body>
<div id="top"></div>
<div id="right"></div>
<div id="bottom"></div>
<div id="left"></div>
</body>
</html>

View file

@ -0,0 +1,49 @@
<!DOCTYPE html>
<html>
<title>CSS Borders: Borders appear when the element is smaller than 1/2 a pixel, reference</title>
<link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#border-width">
<head>
<style>
#right {
position: absolute;
top: 10px;
left: 65px;
width: 0px;
height: 50px;
border-right: 1px dashed black;
}
#left {
position: absolute;
top: 10px;
left: 5px;
width: 0px;
height: 50px;
border-left: 1px dashed black;
}
#top {
position: absolute;
top: 5px;
left: 10px;
width: 50px;
height: 0px;
border-top: 1px dashed black;
}
#bottom {
position: absolute;
top: 65px;
left: 10px;
width: 50px;
height: 0px;
border-bottom: 1px dashed black;
}
</style>
</head>
<body>
<div id="top"></div>
<div id="right"></div>
<div id="bottom"></div>
<div id="left"></div>
</body>
</html>

View file

@ -0,0 +1,19 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#unforced-breaks">
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
<meta name="assert" content="Three blocks could fit in the first fragmentainer, but there's a break-before:avoid between the third and fourth block, so we should break between the second and third">
<style>
.square {
height: 50px;
break-inside: avoid;
background:green;
}
</style>
<p>Test passes if there is a filled green square.</p>
<div style="columns:2; column-fill:auto; column-gap:0; width:100px; height:160px;">
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square" style="break-before:avoid;"></div>
</div>

View file

@ -0,0 +1,19 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#unforced-breaks">
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
<meta name="assert" content="Three blocks could fit in the first fragmentainer, but there's a break-after:avoid between the third and fourth block, so we should break between the second and third">
<style>
.square {
height: 50px;
break-inside: avoid;
background:green;
}
</style>
<p>Test passes if there is a filled green square.</p>
<div style="columns:2; column-fill:auto; column-gap:0; width:100px; height:160px;">
<div class="square"></div>
<div class="square"></div>
<div class="square" style="break-after:avoid;"></div>
<div class="square"></div>
</div>

View file

@ -0,0 +1,33 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#unforced-breaks">
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
<meta name="assert" content="Need to violate break-before:avoid and break-after:avoid if there are no better breakpoints">
<style>
.container {
break-before: avoid;
break-after: avoid;
}
.square {
display: inline-block;
vertical-align: top;
width: 100%;
height: 50px;
background:green;
}
</style>
<p>Test passes if there is a filled green square.</p>
<div style="columns:2; column-fill:auto; column-gap:0; width:100px; height:120px;">
<div class="container">
<div class="square"></div>
</div>
<div class="container">
<div class="square"></div>
</div>
<div class="container">
<div class="square"></div>
</div>
<div class="container">
<div class="square"></div>
</div>
</div>

View file

@ -0,0 +1,25 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#unforced-breaks">
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
<meta name="assert" content="The best breakpoint may be inside content we're already past when running out of space">
<style>
.square {
height: 50px;
break-inside: avoid;
background:green;
}
</style>
<p>Test passes if there is a filled green square.</p>
<div style="columns:2; column-fill:auto; column-gap:0; width:100px; height:160px;">
<div>
<div class="square"></div>
<div>
<div>
<div class="square"></div>
<div class="square"></div>
</div>
</div>
</div>
<div class="square" style="break-before:avoid;"></div>
</div>

View file

@ -0,0 +1,31 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#unforced-breaks">
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
<meta name="assert" content="Violate orphans/widows requirements rather than break-before:avoid and break-after:avoid">
<style>
.container {
break-before: avoid;
break-after: avoid;
}
.square {
display: inline-block;
vertical-align: top;
width: 100%;
height: 50px;
background:green;
}
</style>
<p>Test passes if there is a filled green square.</p>
<div style="columns:2; column-fill:auto; column-gap:0; width:100px; height:120px; orphans:2; widows:2;">
<div class="container">
<div class="square"></div>
</div>
<div class="container">
<div class="square"></div>
<div class="square"></div>
</div>
<div class="container">
<div class="square"></div>
</div>
</div>

View file

@ -0,0 +1,19 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#unforced-breaks">
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
<meta name="assert" content="A forced break trumps break avoidance preferences">
<style>
.square {
height: 50px;
break-inside: avoid;
background:green;
}
</style>
<p>Test passes if there is a filled green square.</p>
<div style="columns:2; column-fill:auto; column-gap:0; width:100px; height:110px;">
<div class="square"></div>
<div class="square" style="break-after:column;"></div>
<div class="square" style="break-before:avoid;"></div>
<div class="square"></div>
</div>

View file

@ -0,0 +1,27 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#unforced-breaks">
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
<meta name="assert" content="A forced break trumps break avoidance preferences">
<style>
.square {
height: 50px;
break-inside: avoid;
background:green;
}
</style>
<p>Test passes if there is a filled green square.</p>
<div style="columns:2; column-fill:auto; column-gap:0; width:100px; height:110px;">
<div class="square"></div>
<div>
<div>
<div class="square" style="break-after:column;"></div>
</div>
</div>
<div>
<div>
<div class="square" style="break-before:avoid;"></div>
</div>
</div>
<div class="square"></div>
</div>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<link rel="help" href="https://crbug.com/1082447" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<div style="display: flex; width: 100px;">
<input id="target" style="position: relative; height: 20px; flex: 1; width: 0px;" data-expected-width="100" />
</div>
<script>
test(function() {
document.body.offsetTop;
document.getElementById('target').value = 'text';
checkLayout('#target');
});
</script>

View file

@ -2,6 +2,8 @@
<title>overflow-y: scroll on an empty element doesn't cause it to gain height</title> <title>overflow-y: scroll on an empty element doesn't cause it to gain height</title>
<link rel="help" href="https://drafts.csswg.org/css-overflow/#propdef-overflow-y"> <link rel="help" href="https://drafts.csswg.org/css-overflow/#propdef-overflow-y">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1365806"> <link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1365806">
<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="match" href="/css/reference/blank.html"> <link rel="match" href="/css/reference/blank.html">
<style> <style>
div { div {

View file

@ -0,0 +1,20 @@
<!doctype html>
<title>overflow:auto containers shouldn't grow due to scrollbars, even if there's out of flow content that overflows</title>
<link rel="help" href="https://drafts.csswg.org/css-overflow/#propdef-overflow-y">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1637511">
<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="match" href="/css/reference/blank.html">
<!--
If we create a horizontal scrollbar it'd cause overflow in the vertical
direction as well, due to the svg's aspect-ratio.
-->
<div style="width: 300px;">
<div style="overflow:auto">
<div style="height: 0; position: relative;">
<svg style="top: 0; left: 0; position: absolute" width="300" height="300"></svg>
</div>
</div>
</div>

View file

@ -0,0 +1,24 @@
<!doctype html>
<title>CSS-UI test: outline-offset width negative values on scroller</title>
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<link rel=help href="https://drafts.csswg.org/css-ui-3/#outline-props">
<style>
#container {
width: 100px;
height: 100px;
background: red;
will-change: transform;
overflow: scroll;
outline: solid 50px green;
outline-offset: -50px;
}
#child {
position: relative;
will-change: transform;
height: 1000px;
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div id="container">
<div id="child"></div>
</div>

View file

@ -0,0 +1,126 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>getOwnPropertyDescriptor() is correct for Proxy with host object target</title>
<link rel="help" href="https://html.spec.whatwg.org/multipage/#window">
<link rel="help" href="https://heycam.github.io/webidl/#Unforgeable">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
'use strict';
const assert_accessor_descriptor_equals = (actual, expected) => {
assert_equals(actual.get, expected.get, 'get');
assert_equals(actual.set, expected.set, 'set');
assert_equals(actual.enumerable, expected.enumerable, 'enumerable');
assert_equals(actual.configurable, expected.configurable, 'configurable');
};
const assert_data_descriptor_equals = (actual, expected) => {
assert_equals(actual.value, expected.value, 'value');
assert_equals(actual.writable, expected.writable, 'writable');
assert_equals(actual.enumerable, expected.enumerable, 'enumerable');
assert_equals(actual.configurable, expected.configurable, 'configurable');
};
test(() => {
const windowProxy = new Proxy(window, {});
name = 'old_name';
const descriptor = Object.getOwnPropertyDescriptor(windowProxy, 'name');
assert_equals(descriptor.get.call(window), 'old_name');
descriptor.set.call(window, 'new_name');
assert_equals(name, 'new_name');
assert_true(descriptor.enumerable);
assert_true(descriptor.configurable);
}, 'Window target, no trap, "name" attribute');
test(() => {
let trapCalls = 0;
const windowProxy = new Proxy(window, {
getOwnPropertyDescriptor(...args) {
trapCalls++;
return Reflect.getOwnPropertyDescriptor(...args);
},
});
assert_accessor_descriptor_equals(
Object.getOwnPropertyDescriptor(windowProxy, 'document'),
Object.getOwnPropertyDescriptor(window, 'document')
);
assert_equals(trapCalls, 1);
}, 'Window target, forwarding trap, [Unforgeable] "document" attribute');
test(() => {
const trapResult = {get() {}, set(_val) {}, enumerable: false, configurable: true};
const windowProxy = new Proxy(new Proxy(window, {}), {
getOwnPropertyDescriptor: () => trapResult,
});
assert_accessor_descriptor_equals(
Object.getOwnPropertyDescriptor(windowProxy, 'onclick'),
trapResult
);
}, 'Window proxy target, custom trap, "onclick" event handler attribute');
test(() => {
let trapCalls = 0;
const documentProxy = new Proxy(document, {
getOwnPropertyDescriptor(...args) {
trapCalls++;
return Reflect.getOwnPropertyDescriptor(...args);
},
});
assert_accessor_descriptor_equals(
Object.getOwnPropertyDescriptor(documentProxy, 'location'),
Object.getOwnPropertyDescriptor(document, 'location')
);
assert_equals(trapCalls, 1);
}, 'Document target, forwarding trap, [Unforgeable] "location" attribute');
test(() => {
const trapResult = {value: 4, writable: false, enumerable: true, configurable: true};
const documentProxy = new Proxy(new Proxy(document, {}), {
getOwnPropertyDescriptor: () => trapResult,
});
assert_data_descriptor_equals(
Object.getOwnPropertyDescriptor(documentProxy, 'foo'),
trapResult
);
}, 'Document proxy target, custom trap, non-existent value attribute');
test(() => {
const locationProxy = new Proxy(location, {});
location.hash = '#old';
const descriptor = Object.getOwnPropertyDescriptor(locationProxy, 'hash');
assert_equals(descriptor.get.call(location), '#old');
descriptor.set.call(location, '#new');
assert_equals(location.hash, '#new');
assert_true(descriptor.enumerable);
assert_false(descriptor.configurable);
}, 'Location target, no trap, [Unforgeable] "hash" attribute');
test(() => {
let trapCalls = 0;
const locationProxy = new Proxy(new Proxy(location, {}), {
getOwnPropertyDescriptor(...args) {
trapCalls++;
return Reflect.getOwnPropertyDescriptor(...args);
},
});
assert_data_descriptor_equals(
Object.getOwnPropertyDescriptor(locationProxy, 'reload'),
Object.getOwnPropertyDescriptor(location, 'reload')
);
assert_equals(trapCalls, 1);
}, 'Location proxy target, forwarding trap, [Unforgeable] "reload" method');
</script>
</body>
</html>

View file

@ -34,6 +34,13 @@ _assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2);
_assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); _assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2);
_assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); _assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2);
ctx.drawImage(document.createElement('canvas'), 0, 0);
_assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2);
_assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2);
_assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2);
_assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2);
}); });
</script> </script>

View file

@ -8886,6 +8886,13 @@
@assert pixel 99,0 ==~ 0,255,0,255; @assert pixel 99,0 ==~ 0,255,0,255;
@assert pixel 0,49 ==~ 0,255,0,255; @assert pixel 0,49 ==~ 0,255,0,255;
@assert pixel 99,49 ==~ 0,255,0,255; @assert pixel 99,49 ==~ 0,255,0,255;
ctx.drawImage(document.createElement('canvas'), 0, 0);
@assert pixel 0,0 ==~ 0,255,0,255;
@assert pixel 99,0 ==~ 0,255,0,255;
@assert pixel 0,49 ==~ 0,255,0,255;
@assert pixel 99,49 ==~ 0,255,0,255;
expected: green expected: green
- name: 2d.drawImage.self.1 - name: 2d.drawImage.self.1

View file

@ -6,20 +6,12 @@ for (const ev of ["unload", "beforeunload", "pagehide"]) {
t.add_cleanup(() => iframe.remove()); t.add_cleanup(() => iframe.remove());
iframe.src = "/common/blank.html"; iframe.src = "/common/blank.html";
iframe.onload = t.step_func(() => { iframe.onload = t.step_func(() => {
iframe.contentWindow.addEventListener(ev, t.step_func(() => { iframe.contentWindow.addEventListener(ev, t.step_func_done(() => {
// Here, the entry settings object could still be the iframe's. Delay
// it in such a way that ensures the entry settings object is the
// top-level page's, but without delaying too much that the
// ignore-opens-during-unload counter becomes decremented. A microtask
// is perfect as it's executed immediately in "clean up after running
// script".
Promise.resolve().then(t.step_func_done(() => {
const origURL = iframe.contentDocument.URL; const origURL = iframe.contentDocument.URL;
assertDocumentIsReadyForSideEffectsTest(iframe.contentDocument, `ignore-opens-during-unload counter is greater than 0 during ${ev} event`); assertDocumentIsReadyForSideEffectsTest(iframe.contentDocument, `ignore-opens-during-unload counter is greater than 0 during ${ev} event`);
assert_equals(iframe.contentDocument.open(), iframe.contentDocument); assert_equals(iframe.contentDocument.open(), iframe.contentDocument);
assertOpenHasNoSideEffects(iframe.contentDocument, origURL, `ignore-opens-during-unload counter is greater than 0 during ${ev} event`); assertOpenHasNoSideEffects(iframe.contentDocument, origURL, `ignore-opens-during-unload counter is greater than 0 during ${ev} event`);
})); }));
}));
iframe.src = "about:blank"; iframe.src = "about:blank";
}); });
}, `document.open bailout should not have any side effects (ignore-opens-during-unload is greater than 0 during ${ev} event)`); }, `document.open bailout should not have any side effects (ignore-opens-during-unload is greater than 0 during ${ev} event)`);

View file

@ -1,7 +1,7 @@
// GENERATED CONTENT - DO NOT EDIT // GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into reffy-reports // Content was automatically extracted by Reffy into reffy-reports
// (https://github.com/tidoust/reffy-reports) // (https://github.com/tidoust/reffy-reports)
// Source: Badging API (https://wicg.github.io/badging/) // Source: Badging API (https://w3c.github.io/badging/)
// Methods only exposed on documents. // Methods only exposed on documents.
[SecureContext] [SecureContext]

View file

@ -44,7 +44,6 @@ dictionary CookieStoreSetOptions {
DOMTimeStamp? expires = null; DOMTimeStamp? expires = null;
USVString? domain = null; USVString? domain = null;
USVString path = "/"; USVString path = "/";
boolean secure = true;
CookieSameSite sameSite = "strict"; CookieSameSite sameSite = "strict";
}; };

View file

@ -4,12 +4,12 @@
// Source: Accessible Rich Internet Applications (WAI-ARIA) 1.2 (https://rawgit.com/w3c/aria/master/) // Source: Accessible Rich Internet Applications (WAI-ARIA) 1.2 (https://rawgit.com/w3c/aria/master/)
interface mixin AccessibilityRole { interface mixin AccessibilityRole {
attribute DOMString? role; attribute DOMString role;
}; };
Element includes AccessibilityRole; Element includes AccessibilityRole;
interface mixin AriaAttributes { interface mixin AriaAttributes {
attribute Element? ariaActiveDescendantElement;
attribute DOMString? ariaAtomic; attribute DOMString? ariaAtomic;
attribute DOMString? ariaAutoComplete; attribute DOMString? ariaAutoComplete;
attribute DOMString? ariaBusy; attribute DOMString? ariaBusy;
@ -18,28 +18,28 @@ interface mixin AriaAttributes {
attribute DOMString? ariaColIndex; attribute DOMString? ariaColIndex;
attribute DOMString? ariaColIndexText; attribute DOMString? ariaColIndexText;
attribute DOMString? ariaColSpan; attribute DOMString? ariaColSpan;
attribute FrozenArray<Element>? ariaControlsElements;
attribute DOMString? ariaCurrent; attribute DOMString? ariaCurrent;
attribute FrozenArray<Element>? ariaDescribedByElements;
attribute DOMString? ariaDescription; attribute DOMString? ariaDescription;
attribute FrozenArray<Element>? ariaDetailsElements;
attribute DOMString? ariaDisabled; attribute DOMString? ariaDisabled;
attribute Element? ariaErrorMessageElement;
attribute DOMString? ariaExpanded; attribute DOMString? ariaExpanded;
attribute FrozenArray<Element>? ariaFlowToElements;
attribute DOMString? ariaHasPopup; attribute DOMString? ariaHasPopup;
attribute DOMString? ariaHidden; attribute DOMString? ariaHidden;
attribute DOMString? ariaInvalid; attribute DOMString? ariaInvalid;
attribute DOMString? ariaKeyShortcuts; attribute DOMString? ariaKeyShortcuts;
attribute DOMString? ariaLabel; attribute DOMString? ariaLabel;
attribute FrozenArray<Element>? ariaLabelledByElements;
attribute DOMString? ariaLevel; attribute DOMString? ariaLevel;
attribute DOMString? ariaLive; attribute DOMString? ariaLive;
attribute DOMString? ariaModal; attribute DOMString? ariaModal;
attribute DOMString? ariaMultiLine; attribute DOMString? ariaMultiLine;
attribute DOMString? ariaMultiSelectable; attribute DOMString? ariaMultiSelectable;
attribute DOMString? ariaOrientation; attribute DOMString? ariaOrientation;
attribute FrozenArray<Element>? ariaOwnsElements;
attribute DOMString? ariaPlaceholder; attribute DOMString? ariaPlaceholder;
attribute DOMString? ariaPosInSet; attribute DOMString? ariaPosInSet;
attribute DOMString? ariaPressed; attribute DOMString? ariaPressed;

View file

@ -1190,6 +1190,8 @@ policies and contribution forms [3].
} }
expose(assert_in_array, "assert_in_array"); expose(assert_in_array, "assert_in_array");
// This function was deprecated in July of 2015.
// See https://github.com/web-platform-tests/wpt/issues/2033
function assert_object_equals(actual, expected, description) function assert_object_equals(actual, expected, description)
{ {
assert(typeof actual === "object" && actual !== null, "assert_object_equals", description, assert(typeof actual === "object" && actual !== null, "assert_object_equals", description,

View file

@ -55,7 +55,7 @@ if (topLevelDocument) {
RunTestsInIFrame("hasStorageAccess.sub.window.html?testCase=same-origin-frame&rootdocument=false"); RunTestsInIFrame("hasStorageAccess.sub.window.html?testCase=same-origin-frame&rootdocument=false");
// Create a test with a single-child cross-origin iframe. // Create a test with a single-child cross-origin iframe.
RunTestsInIFrame("http://{{domains[www]}}:{{ports[http][0]}}/storage-access-api/hasStorageAccess.sub.window.html?testCase=cross-origin-frame&allowed=false&rootdocument=false"); RunTestsInIFrame("http://{{domains[www]}}:{{ports[http][0]}}/storage-access-api/hasStorageAccess.sub.window.html?testCase=cross-origin-frame&rootdocument=false");
// Validate the nested-iframe scenario where the same-origin frame containing // Validate the nested-iframe scenario where the same-origin frame containing
// the tests is not the first child. // the tests is not the first child.
@ -63,5 +63,5 @@ if (topLevelDocument) {
// Validate the nested-iframe scenario where the cross-origin frame containing // Validate the nested-iframe scenario where the cross-origin frame containing
// the tests is not the first child. // the tests is not the first child.
RunTestsInNestedIFrame("http://{{domains[www]}}:{{ports[http][0]}}/storage-access-api/hasStorageAccess.sub.window.html?testCase=nested-cross-origin-frame&allowed=false&rootdocument=false"); RunTestsInNestedIFrame("http://{{domains[www]}}:{{ports[http][0]}}/storage-access-api/hasStorageAccess.sub.window.html?testCase=nested-cross-origin-frame&rootdocument=false");
} }

View file

@ -1,5 +1,5 @@
<!doctype html> <!doctype html>
<title>An animation of an attribute does not change the DOM attribute value</title> <title>An animation of an attribute ('class') does not change the DOM attribute value</title>
<link rel="help" href="https://www.w3.org/TR/2001/REC-smil-animation-20010904/#BasicAnim"> <link rel="help" href="https://www.w3.org/TR/2001/REC-smil-animation-20010904/#BasicAnim">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>

View file

@ -0,0 +1,21 @@
<!doctype html>
<title>An animation of an attribute ('orient') does not change the DOM attribute value</title>
<link rel="help" href="https://www.w3.org/TR/2001/REC-smil-animation-20010904/#BasicAnim">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<svg>
<marker orient="90">
<set attributeName="orient" to="auto"/>
</rect>
</svg>
<script>
async_test(t => {
onload = t.step_func(() => {
requestAnimationFrame(t.step_func_done(() => {
let marker = document.querySelector('marker');
marker.orientAngle.baseVal.valueInSpecifiedUnits = 180;
assert_equals(marker.getAttribute('orient'), '180');
}));
});
});
</script>

View file

@ -652,7 +652,7 @@ broken_python_metadata = re.compile(br"#\s*META:")
def check_global_metadata(value): def check_global_metadata(value):
# type: (str) -> Iterable[Tuple[Type[rules.Rule], Tuple[Any, ...]]] # type: (str) -> Iterable[Tuple[Type[rules.Rule], Tuple[Any, ...]]]
global_values = {item.strip() for item in value.split(b",") if item.strip()} global_values = {item.strip().decode("utf8") for item in value.split(b",") if item.strip()}
# TODO: this could check for duplicates and such # TODO: this could check for duplicates and such
for global_value in global_values: for global_value in global_values:

View file

@ -212,7 +212,7 @@ class TestharnessTest(URLManifestItem):
if self.quic is not None: if self.quic is not None:
rv[-1]["quic"] = self.quic rv[-1]["quic"] = self.quic
if self.script_metadata: if self.script_metadata:
rv[-1]["script_metadata"] = [(k.decode('utf8'), v.decode('utf8')) for (k,v) in self.script_metadata] rv[-1]["script_metadata"] = [(k, v) for (k,v) in self.script_metadata]
return rv return rv

View file

@ -56,9 +56,9 @@ def replace_end(s, old, new):
def read_script_metadata(f, regexp): def read_script_metadata(f, regexp):
# type: (BinaryIO, Pattern[bytes]) -> Iterable[Tuple[bytes, bytes]] # type: (BinaryIO, Pattern[bytes]) -> Iterable[Tuple[Text, Text]]
""" """
Yields any metadata (pairs of bytestrings) from the file-like object `f`, Yields any metadata (pairs of strings) from the file-like object `f`,
as specified according to a supplied regexp. as specified according to a supplied regexp.
`regexp` - Regexp containing two groups containing the metadata name and `regexp` - Regexp containing two groups containing the metadata name and
@ -70,25 +70,25 @@ def read_script_metadata(f, regexp):
if not m: if not m:
break break
yield (m.groups()[0], m.groups()[1]) yield (m.groups()[0].decode("utf8"), m.groups()[1].decode("utf8"))
_any_variants = { _any_variants = {
b"window": {"suffix": ".any.html"}, "window": {"suffix": ".any.html"},
b"serviceworker": {"force_https": True}, "serviceworker": {"force_https": True},
b"sharedworker": {}, "sharedworker": {},
b"dedicatedworker": {"suffix": ".any.worker.html"}, "dedicatedworker": {"suffix": ".any.worker.html"},
b"worker": {"longhand": {b"dedicatedworker", b"sharedworker", b"serviceworker"}}, "worker": {"longhand": {"dedicatedworker", "sharedworker", "serviceworker"}},
b"jsshell": {"suffix": ".any.js"}, "jsshell": {"suffix": ".any.js"},
} # type: Dict[bytes, Dict[str, Any]] } # type: Dict[Text, Dict[Text, Any]]
def get_any_variants(item): def get_any_variants(item):
# type: (bytes) -> Set[bytes] # type: (Text) -> Set[Text]
""" """
Returns a set of variants (bytestrings) defined by the given keyword. Returns a set of variants (strings) defined by the given keyword.
""" """
assert isinstance(item, binary_type), item assert isinstance(item, text_type), item
variant = _any_variants.get(item, None) variant = _any_variants.get(item, None)
if variant is None: if variant is None:
@ -98,46 +98,46 @@ def get_any_variants(item):
def get_default_any_variants(): def get_default_any_variants():
# type: () -> Set[bytes] # type: () -> Set[Text]
""" """
Returns a set of variants (bytestrings) that will be used by default. Returns a set of variants (strings) that will be used by default.
""" """
return set({b"window", b"dedicatedworker"}) return set({"window", "dedicatedworker"})
def parse_variants(value): def parse_variants(value):
# type: (bytes) -> Set[bytes] # type: (Text) -> Set[Text]
""" """
Returns a set of variants (bytestrings) defined by a comma-separated value. Returns a set of variants (strings) defined by a comma-separated value.
""" """
assert isinstance(value, binary_type), value assert isinstance(value, text_type), value
if value == b"": if value == "":
return get_default_any_variants() return get_default_any_variants()
globals = set() globals = set()
for item in value.split(b","): for item in value.split(","):
item = item.strip() item = item.strip()
globals |= get_any_variants(item) globals |= get_any_variants(item)
return globals return globals
def global_suffixes(value): def global_suffixes(value):
# type: (bytes) -> Set[Tuple[bytes, bool]] # type: (Text) -> Set[Tuple[Text, bool]]
""" """
Yields tuples of the relevant filename suffix (a string) and whether the Yields tuples of the relevant filename suffix (a string) and whether the
variant is intended to run in a JS shell, for the variants defined by the variant is intended to run in a JS shell, for the variants defined by the
given comma-separated value. given comma-separated value.
""" """
assert isinstance(value, binary_type), value assert isinstance(value, text_type), value
rv = set() rv = set()
global_types = parse_variants(value) global_types = parse_variants(value)
for global_type in global_types: for global_type in global_types:
variant = _any_variants[global_type] variant = _any_variants[global_type]
suffix = variant.get("suffix", ".any.%s.html" % global_type.decode("utf-8")) suffix = variant.get("suffix", ".any.%s.html" % global_type)
rv.add((suffix, global_type == b"jsshell")) rv.add((suffix, global_type == "jsshell"))
return rv return rv
@ -462,7 +462,7 @@ class SourceFile(object):
@cached_property @cached_property
def script_metadata(self): def script_metadata(self):
# type: () -> Optional[List[Tuple[bytes, bytes]]] # type: () -> Optional[List[Tuple[Text, Text]]]
if self.name_is_worker or self.name_is_multi_global or self.name_is_window: if self.name_is_worker or self.name_is_multi_global or self.name_is_window:
regexp = js_meta_re regexp = js_meta_re
elif self.name_is_webdriver: elif self.name_is_webdriver:
@ -479,7 +479,7 @@ class SourceFile(object):
"""The timeout of a test or reference file. "long" if the file has an extended timeout """The timeout of a test or reference file. "long" if the file has an extended timeout
or None otherwise""" or None otherwise"""
if self.script_metadata: if self.script_metadata:
if any(m == (b"timeout", b"long") for m in self.script_metadata): if any(m == ("timeout", "long") for m in self.script_metadata):
return "long" return "long"
if self.root is None: if self.root is None:
@ -641,8 +641,8 @@ class SourceFile(object):
script_metadata = self.script_metadata script_metadata = self.script_metadata
assert script_metadata is not None assert script_metadata is not None
for (key, value) in script_metadata: for (key, value) in script_metadata:
if key == b"variant": if key == "variant":
rv.append(value.decode("utf-8")) rv.append(value)
else: else:
for element in self.variant_nodes: for element in self.variant_nodes:
if "content" in element.attrib: if "content" in element.attrib:
@ -691,7 +691,7 @@ class SourceFile(object):
(`script_metadata()`). (`script_metadata()`).
""" """
if self.script_metadata: if self.script_metadata:
if any(m == (b"quic", b"true") for m in self.script_metadata): if any(m == ("quic", "true") for m in self.script_metadata):
return True return True
if self.root is None: if self.root is None:
@ -864,11 +864,11 @@ class SourceFile(object):
)] )]
elif self.name_is_multi_global: elif self.name_is_multi_global:
globals = b"" globals = u""
script_metadata = self.script_metadata script_metadata = self.script_metadata
assert script_metadata is not None assert script_metadata is not None
for (key, value) in script_metadata: for (key, value) in script_metadata:
if key == b"global": if key == "global":
globals = value globals = value
break break
@ -992,9 +992,9 @@ class SourceFile(object):
if drop_cached and "__cached_properties__" in self.__dict__: if drop_cached and "__cached_properties__" in self.__dict__:
cached_properties = self.__dict__["__cached_properties__"] cached_properties = self.__dict__["__cached_properties__"]
for key in cached_properties: for prop in cached_properties:
if key in self.__dict__: if prop in self.__dict__:
del self.__dict__[key] del self.__dict__[prop]
del self.__dict__["__cached_properties__"] del self.__dict__["__cached_properties__"]
return rv return rv

View file

@ -180,7 +180,7 @@ importScripts('/resources/testharness.js')
test()""" test()"""
metadata = list(read_script_metadata(BytesIO(contents), js_meta_re)) metadata = list(read_script_metadata(BytesIO(contents), js_meta_re))
assert metadata == [(b"timeout", b"long")] assert metadata == [("timeout", "long")]
s = create("html/test.worker.js", contents=contents) s = create("html/test.worker.js", contents=contents)
assert s.name_is_worker assert s.name_is_worker
@ -197,7 +197,7 @@ def test_window_long_timeout():
test()""" test()"""
metadata = list(read_script_metadata(BytesIO(contents), js_meta_re)) metadata = list(read_script_metadata(BytesIO(contents), js_meta_re))
assert metadata == [(b"timeout", b"long")] assert metadata == [("timeout", "long")]
s = create("html/test.window.js", contents=contents) s = create("html/test.window.js", contents=contents)
assert s.name_is_window assert s.name_is_window
@ -278,7 +278,7 @@ def test_python_long_timeout():
metadata = list(read_script_metadata(BytesIO(contents), metadata = list(read_script_metadata(BytesIO(contents),
python_meta_re)) python_meta_re))
assert metadata == [(b"timeout", b"long")] assert metadata == [("timeout", "long")]
s = create("webdriver/test.py", contents=contents) s = create("webdriver/test.py", contents=contents)
assert s.name_is_webdriver assert s.name_is_webdriver
@ -322,7 +322,7 @@ importScripts('/resources/testharness.js')
test()""" test()"""
metadata = list(read_script_metadata(BytesIO(contents), js_meta_re)) metadata = list(read_script_metadata(BytesIO(contents), js_meta_re))
assert metadata == [(b"timeout", b"long")] assert metadata == [("timeout", "long")]
s = create("html/test.any.js", contents=contents) s = create("html/test.any.js", contents=contents)
assert s.name_is_multi_global assert s.name_is_multi_global
@ -447,14 +447,14 @@ test()"""
@pytest.mark.parametrize("input,expected", [ @pytest.mark.parametrize("input,expected", [
(b"""//META: foo=bar\n""", [(b"foo", b"bar")]), (b"""//META: foo=bar\n""", [("foo", "bar")]),
(b"""// META: foo=bar\n""", [(b"foo", b"bar")]), (b"""// META: foo=bar\n""", [("foo", "bar")]),
(b"""// META: foo=bar\n""", [(b"foo", b"bar")]), (b"""// META: foo=bar\n""", [("foo", "bar")]),
(b"""\n// META: foo=bar\n""", []), (b"""\n// META: foo=bar\n""", []),
(b""" // META: foo=bar\n""", []), (b""" // META: foo=bar\n""", []),
(b"""// META: foo=bar\n// META: baz=quux\n""", [(b"foo", b"bar"), (b"baz", b"quux")]), (b"""// META: foo=bar\n// META: baz=quux\n""", [("foo", "bar"), ("baz", "quux")]),
(b"""// META: foo=bar\n\n// META: baz=quux\n""", [(b"foo", b"bar")]), (b"""// META: foo=bar\n\n// META: baz=quux\n""", [("foo", "bar")]),
(b"""// META: foo=bar\n// Start of the test\n// META: baz=quux\n""", [(b"foo", b"bar")]), (b"""// META: foo=bar\n// Start of the test\n// META: baz=quux\n""", [("foo", "bar")]),
(b"""// META:\n""", []), (b"""// META:\n""", []),
(b"""// META: foobar\n""", []), (b"""// META: foobar\n""", []),
]) ])

View file

@ -178,9 +178,9 @@ class HtmlWrapperHandler(WrapperHandler):
def check_exposure(self, request): def check_exposure(self, request):
if self.global_type: if self.global_type:
globals = b"" globals = u""
for (key, value) in self._get_metadata(request): for (key, value) in self._get_metadata(request):
if key == b"global": if key == "global":
globals = value globals = value
break break
@ -189,23 +189,23 @@ class HtmlWrapperHandler(WrapperHandler):
self.global_type) self.global_type)
def _meta_replacement(self, key, value): def _meta_replacement(self, key, value):
if key == b"timeout": if key == "timeout":
if value == b"long": if value == "long":
return '<meta name="timeout" content="long">' return '<meta name="timeout" content="long">'
if key == b"title": if key == "title":
value = value.decode('utf-8').replace("&", "&amp;").replace("<", "&lt;") value = value.replace("&", "&amp;").replace("<", "&lt;")
return '<title>%s</title>' % value return '<title>%s</title>' % value
return None return None
def _script_replacement(self, key, value): def _script_replacement(self, key, value):
if key == b"script": if key == "script":
attribute = value.decode('utf-8').replace("&", "&amp;").replace('"', "&quot;") attribute = value.replace("&", "&amp;").replace('"', "&quot;")
return '<script src="%s"></script>' % attribute return '<script src="%s"></script>' % attribute
return None return None
class WorkersHandler(HtmlWrapperHandler): class WorkersHandler(HtmlWrapperHandler):
global_type = b"dedicatedworker" global_type = "dedicatedworker"
path_replace = [(".any.worker.html", ".any.js", ".any.worker.js"), path_replace = [(".any.worker.html", ".any.js", ".any.worker.js"),
(".worker.html", ".worker.js")] (".worker.html", ".worker.js")]
wrapper = """<!doctype html> wrapper = """<!doctype html>
@ -234,7 +234,7 @@ class WindowHandler(HtmlWrapperHandler):
class AnyHtmlHandler(HtmlWrapperHandler): class AnyHtmlHandler(HtmlWrapperHandler):
global_type = b"window" global_type = "window"
path_replace = [(".any.html", ".any.js")] path_replace = [(".any.html", ".any.js")]
wrapper = """<!doctype html> wrapper = """<!doctype html>
<meta charset=utf-8> <meta charset=utf-8>
@ -254,7 +254,7 @@ self.GLOBAL = {
class SharedWorkersHandler(HtmlWrapperHandler): class SharedWorkersHandler(HtmlWrapperHandler):
global_type = b"sharedworker" global_type = "sharedworker"
path_replace = [(".any.sharedworker.html", ".any.js", ".any.worker.js")] path_replace = [(".any.sharedworker.html", ".any.js", ".any.worker.js")]
wrapper = """<!doctype html> wrapper = """<!doctype html>
<meta charset=utf-8> <meta charset=utf-8>
@ -269,7 +269,7 @@ fetch_tests_from_worker(new SharedWorker("%(path)s%(query)s"));
class ServiceWorkersHandler(HtmlWrapperHandler): class ServiceWorkersHandler(HtmlWrapperHandler):
global_type = b"serviceworker" global_type = "serviceworker"
path_replace = [(".any.serviceworker.html", ".any.js", ".any.worker.js")] path_replace = [(".any.serviceworker.html", ".any.js", ".any.worker.js")]
wrapper = """<!doctype html> wrapper = """<!doctype html>
<meta charset=utf-8> <meta charset=utf-8>
@ -307,11 +307,11 @@ done();
return None return None
def _script_replacement(self, key, value): def _script_replacement(self, key, value):
if key == b"script": if key == "script":
attribute = value.decode('utf-8').replace("\\", "\\\\").replace('"', '\\"') attribute = value.replace("\\", "\\\\").replace('"', '\\"')
return 'importScripts("%s")' % attribute return 'importScripts("%s")' % attribute
if key == b"title": if key == "title":
value = value.decode('utf-8').replace("\\", "\\\\").replace('"', '\\"') value = value.replace("\\", "\\\\").replace('"', '\\"')
return 'self.META_TITLE = "%s";' % value return 'self.META_TITLE = "%s";' % value
return None return None

View file

@ -411,7 +411,7 @@ class TestharnessTest(Test):
quic = manifest_item.quic if hasattr(manifest_item, "quic") else False quic = manifest_item.quic if hasattr(manifest_item, "quic") else False
script_metadata = manifest_item.script_metadata or [] script_metadata = manifest_item.script_metadata or []
scripts = [v for (k, v) in script_metadata scripts = [v for (k, v) in script_metadata
if k in (b"script", "script")] if k == "script"]
return cls(manifest_file.tests_root, return cls(manifest_file.tests_root,
manifest_item.url, manifest_item.url,
inherit_metadata, inherit_metadata,

View file

@ -0,0 +1,80 @@
<!doctype html>
<meta charset=utf-8>
<title>RTCPeerConnection BUNDLE</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../RTCPeerConnection-helper.js"></script>
<script src="/webrtc/third_party/sdp/sdp.js"></script>
<script>
'use strict';
promise_test(async t => {
const caller = new RTCPeerConnection();
t.add_cleanup(() => caller.close());
const calleeAudio = new RTCPeerConnection();
t.add_cleanup(() => calleeAudio.close());
const calleeVideo = new RTCPeerConnection();
t.add_cleanup(() => calleeVideo.close());
const stream = await getNoiseStream({audio: true, video: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
stream.getTracks().forEach(track => caller.addTrack(track, stream));
let metadataToBeLoaded;
calleeVideo.ontrack = (e) => {
const stream = e.streams[0];
const v = document.createElement('video');
v.autoplay = true;
v.srcObject = stream;
v.id = stream.id
metadataToBeLoaded = new Promise((resolve) => {
v.addEventListener('loadedmetadata', () => {
resolve();
});
});
};
caller.addEventListener('icecandidate', (e) => {
// route depending on sdpMlineIndex
if (e.candidate) {
const target = e.candidate.sdpMLineIndex === 0 ? calleeAudio : calleeVideo;
target.addIceCandidate({sdpMid: e.candidate.sdpMid, candidate: e.candidate.candidate});
}
});
calleeAudio.addEventListener('icecandidate', (e) => {
if (e.candidate) {
caller.addIceCandidate({sdpMid: e.candidate.sdpMid, candidate: e.candidate.candidate});
}
});
calleeVideo.addEventListener('icecandidate', (e) => {
if (e.candidate) {
caller.addIceCandidate({sdpMid: e.candidate.sdpMid, candidate: e.candidate.candidate});
}
});
const offer = await caller.createOffer();
const sections = SDPUtils.splitSections(offer.sdp);
// remove the a=group:BUNDLE from the SDP when signaling.
const bundle = SDPUtils.matchPrefix(sections[0], 'a=group:BUNDLE')[0];
sections[0] = sections[0].replace(bundle + '\r\n', '');
const audioSdp = sections[0] + sections[1];
const videoSdp = sections[0] + sections[2];
await calleeAudio.setRemoteDescription({type: 'offer', sdp: audioSdp});
await calleeVideo.setRemoteDescription({type: 'offer', sdp: videoSdp});
await caller.setLocalDescription(offer);
const answerAudio = await calleeAudio.createAnswer();
const answerVideo = await calleeVideo.createAnswer();
const audioSections = SDPUtils.splitSections(answerAudio.sdp);
const videoSections = SDPUtils.splitSections(answerVideo.sdp);
const sdp = audioSections[0] + audioSections[1] + videoSections[1];
await caller.setRemoteDescription({type: 'answer', sdp});
await calleeAudio.setLocalDescription(answerAudio);
await calleeVideo.setLocalDescription(answerVideo);
await metadataToBeLoaded;
assert_equals(calleeAudio.connectionState, 'connected');
assert_equals(calleeVideo.connectionState, 'connected');
}, 'Connect audio and video to two independent PeerConnections');
</script>

View file

@ -16,7 +16,7 @@ let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE;
let testFunction = function(session, fakeDeviceController, t) { let testFunction = function(session, fakeDeviceController, t) {
let eventWatcher = new EventWatcher( let eventWatcher = new EventWatcher(
t, session, ["visibilitychange", "visibilitychange", "framefired", "watcherdone"]); t, session, ["visibilitychange", "framefired", "watcherdone"]);
let eventPromise = eventWatcher.wait_for( let eventPromise = eventWatcher.wait_for(
["visibilitychange", "visibilitychange", "framefired", "watcherdone"]); ["visibilitychange", "visibilitychange", "framefired", "watcherdone"]);