mirror of
https://github.com/servo/servo.git
synced 2025-07-30 10:40:27 +01:00
Auto merge of #26753 - servo-wpt-sync:wpt_update_02-06-2020, r=jdm
Sync WPT with upstream (02-06-2020) Automated downstream sync of changes from upstream as of 02-06-2020. [no-wpt-sync] r? @servo-wpt-sync
This commit is contained in:
commit
af85d2fd20
73 changed files with 726 additions and 152 deletions
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-floats-003.html]
|
||||||
|
[Miss float below something else]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-floats-004.html]
|
||||||
|
[Miss float below something else]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-floats-005.html]
|
||||||
|
[Miss clipped float]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[min-height-applies-to-013.xht]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[min-height-applies-to-014.xht]
|
||||||
|
expected: FAIL
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,3 @@
|
||||||
[test the top of layer]
|
[test the top of layer]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test some point of the element: top left corner]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[elementsFromPoint-invalid-cases.html]
|
|
||||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -321,15 +321,18 @@
|
||||||
[<iframe>: combined response Content-Type: */* text/html]
|
[<iframe>: combined response Content-Type: */* text/html]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html */*]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html */*]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/plain */*]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -56,6 +56,6 @@
|
||||||
[separate text/javascript x/x]
|
[separate text/javascript x/x]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[separate text/javascript;charset=windows-1252 error text/javascript]
|
[separate text/javascript error]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -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%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[traverse_the_history_1.html]
|
||||||
|
[Multiple history traversals from the same task]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[traverse_the_history_2.html]
|
[traverse_the_history_3.html]
|
||||||
[Multiple history traversals, last would be aborted]
|
[Multiple history traversals, last would be aborted]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
[embedded-opener-remove-frame.html]
|
[embedded-opener-remove-frame.html]
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[opener of discarded nested browsing context]
|
[opener of discarded nested browsing context]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[opener of discarded auxiliary browsing context]
|
[opener of discarded auxiliary browsing context]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[event_loadstart.html]
|
||||||
|
expected: TIMEOUT
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_nonescaping-1.html]
|
[iframe_sandbox_popups_nonescaping-1.html]
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[module-static-import-delayed.html]
|
|
||||||
[document.write in an imported module]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
[017.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[origin of the script that invoked the method, about:blank]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
[017.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[origin of the script that invoked the method, about:blank]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
[018.html]
|
|
||||||
expected: TIMEOUT
|
|
||||||
[origin of the script that invoked the method, javascript:]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
|
@ -678,6 +678,15 @@
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"scroll-animations": {
|
||||||
|
"null-scroll-source-crash.html": [
|
||||||
|
"5ffc522d68e751995e6183a49f85d2ca7378f66d",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
"selection": {
|
"selection": {
|
||||||
"selection-select-all-move-input-crash.html": [
|
"selection-select-all-move-input-crash.html": [
|
||||||
"6f692dc5e7d69a30a407f107268c9e012efcd9e3",
|
"6f692dc5e7d69a30a407f107268c9e012efcd9e3",
|
||||||
|
@ -50633,7 +50642,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"c414-flt-fit-000.xht": [
|
"c414-flt-fit-000.xht": [
|
||||||
"099c67163544bff7daaddfe7b08db543620a2a4e",
|
"15a53e4aa02b1ec7ec69a42f1df4eeca02f98999",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
[
|
[
|
||||||
|
@ -81744,6 +81753,32 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"min-height-applies-to-013.xht": [
|
||||||
|
"ec0137bba43dc40496ad6cd3a0f09748d410e1da",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/reference/pass_if_square_96px_black.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"min-height-applies-to-014.xht": [
|
||||||
|
"48ccd1914fd7835bc066332149b967969853a2be",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/reference/pass_if_square_96px_black.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"min-height-applies-to-015.xht": [
|
"min-height-applies-to-015.xht": [
|
||||||
"158c9a29c7c924517f8e3e21bbeaac23fe70bed6",
|
"158c9a29c7c924517f8e3e21bbeaac23fe70bed6",
|
||||||
[
|
[
|
||||||
|
@ -237521,6 +237556,19 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"scroll-animations": {
|
"scroll-animations": {
|
||||||
|
"animation-with-animatable-interface.html": [
|
||||||
|
"4c3fa027fd073e5e86eafd8d10dc898ab0fb88a5",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/scroll-animations/animation-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"animation-with-display-none.html": [
|
"animation-with-display-none.html": [
|
||||||
"310cb5fc8b0ca7c0ab042a1aecf664528dc3b5eb",
|
"310cb5fc8b0ca7c0ab042a1aecf664528dc3b5eb",
|
||||||
[
|
[
|
||||||
|
@ -272566,7 +272614,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"c414-flt-fit-000-ref.xht": [
|
"c414-flt-fit-000-ref.xht": [
|
||||||
"ae8e72079a6d60287e093aa330c08dd7062d7bcd",
|
"49f2b02d99895d35897daaad5e719ae5cd1421d1",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"c414-flt-fit-001-ref.xht": [
|
"c414-flt-fit-001-ref.xht": [
|
||||||
|
@ -330696,7 +330744,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"load-into-the-iframe.html": [
|
"load-into-the-iframe.html": [
|
||||||
"05a80be73745465ddcd65bc5745a674824974590",
|
"9e08eb587ab38283b53034128ca36c82b545d03f",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"navigation-changed-iframe.html": [
|
"navigation-changed-iframe.html": [
|
||||||
|
@ -333975,10 +334023,6 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"interfaces": {
|
"interfaces": {
|
||||||
"BackgroundSync.idl": [
|
|
||||||
"c52dcdb89843e80e9bd89591df76ba26f7172dab",
|
|
||||||
[]
|
|
||||||
],
|
|
||||||
"CSP.idl": [
|
"CSP.idl": [
|
||||||
"e427ae8801a7863a59d9507d384e075e34bd4731",
|
"e427ae8801a7863a59d9507d384e075e34bd4731",
|
||||||
[]
|
[]
|
||||||
|
@ -334047,6 +334091,10 @@
|
||||||
"cf3d75125402197f7b1a52b4a38fe9acc168643f",
|
"cf3d75125402197f7b1a52b4a38fe9acc168643f",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"background-sync.idl": [
|
||||||
|
"c52dcdb89843e80e9bd89591df76ba26f7172dab",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"badging.idl": [
|
"badging.idl": [
|
||||||
"01481820935a08675e4bef734aada27b3151e814",
|
"01481820935a08675e4bef734aada27b3151e814",
|
||||||
[]
|
[]
|
||||||
|
@ -334821,7 +334869,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"lint.ignore": [
|
"lint.ignore": [
|
||||||
"078a706f079c3cfc2a88dbd8ce9b3b290d1ffcfb",
|
"9d057e76edc3bb6a94adcff9c897ef48e2235e3c",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"loading": {
|
"loading": {
|
||||||
|
@ -334882,6 +334930,12 @@
|
||||||
[]
|
[]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"manifest": {
|
||||||
|
"META.yml": [
|
||||||
|
"013fc58a29fa7f83e5e6a034d3a343bc87ab629d",
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
"mathml": {
|
"mathml": {
|
||||||
"META.yml": [
|
"META.yml": [
|
||||||
"5aea9088d744bfa835ca91217c9a6d9f60253e3e",
|
"5aea9088d744bfa835ca91217c9a6d9f60253e3e",
|
||||||
|
@ -341603,6 +341657,10 @@
|
||||||
"39149915cc573b3f8a5e0e01a10729494aec59f1",
|
"39149915cc573b3f8a5e0e01a10729494aec59f1",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"embed-navigation-is-not-intercepted-iframe.html": [
|
||||||
|
"5e86f67735f778c590eeb5fd29567dbb23033055",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"embedded-content-from-server.html": [
|
"embedded-content-from-server.html": [
|
||||||
"ff50a9c752690d6726d0cd6d9820947f1bc5d4b0",
|
"ff50a9c752690d6726d0cd6d9820947f1bc5d4b0",
|
||||||
[]
|
[]
|
||||||
|
@ -342175,6 +342233,10 @@
|
||||||
"0aeb81951ede48c62780fe723013b2ad77ffe336",
|
"0aeb81951ede48c62780fe723013b2ad77ffe336",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"object-navigation-is-not-intercepted-iframe.html": [
|
||||||
|
"5c8ab79a500a93ce04e6704e5762eacd717c4f71",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"onactivate-throw-error-from-nested-event-worker.js": [
|
"onactivate-throw-error-from-nested-event-worker.js": [
|
||||||
"7c97014fd042affbd38d77fa538d8a584d7c72f7",
|
"7c97014fd042affbd38d77fa538d8a584d7c72f7",
|
||||||
[]
|
[]
|
||||||
|
@ -344501,7 +344563,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"README.md": [
|
"README.md": [
|
||||||
"9342aded298bdd0e5daac12289c78163d1d5bec5",
|
"2203727ef96f313cd7c5e6afb766a07b70969cec",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"__init__.py": [
|
"__init__.py": [
|
||||||
|
@ -344509,7 +344571,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"commands.json": [
|
"commands.json": [
|
||||||
"15182cc9e6531d5a5ba3d42c9f00821946c5e8a3",
|
"421b0a636c2593bb3aa133b133373b54be6796ea",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"documentation": {
|
"documentation": {
|
||||||
|
@ -344519,7 +344581,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"frontend.py": [
|
"frontend.py": [
|
||||||
"59a1cff2ebd0efda06fadd144a84b5d35b2d81c8",
|
"6d35d4c3826311da2b36b9f2efe6dd7bfd0cc7a8",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"retry.py": [
|
"retry.py": [
|
||||||
|
@ -344891,7 +344953,7 @@
|
||||||
],
|
],
|
||||||
"quic": {
|
"quic": {
|
||||||
"README.md": [
|
"README.md": [
|
||||||
"5a64b701cfb85900c219463624e6afa299a3813d",
|
"ef1d66e3220285f8b1eb0e0a7d188a09350c3fd8",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"__init__.py": [
|
"__init__.py": [
|
||||||
|
@ -350113,7 +350175,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"run.py": [
|
"run.py": [
|
||||||
"a9fdeada1ec780a50093f221673cf406864e36c2",
|
"95d9369f2a888657c23315d8d97b9eb636e3db96",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"testfiles.py": [
|
"testfiles.py": [
|
||||||
|
@ -350138,7 +350200,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"test_run.py": [
|
"test_run.py": [
|
||||||
"ef58ec41b2b4cfc14955b701627d047af78f29bc",
|
"d533977e0c7436010ec9d81c826dd6f8453a9785",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"test_testfiles.py": [
|
"test_testfiles.py": [
|
||||||
|
@ -352045,7 +352107,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"keyframe-tests.js": [
|
"keyframe-tests.js": [
|
||||||
"3cf3cf22bf8666a3800dfd3cc3cd4e37c7f7598e",
|
"43e0d7575f2cc47294e2435f311e26c66bb52a36",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"keyframe-utils.js": [
|
"keyframe-utils.js": [
|
||||||
|
@ -357794,7 +357856,7 @@
|
||||||
"testharness": {
|
"testharness": {
|
||||||
"BackgroundSync": {
|
"BackgroundSync": {
|
||||||
"idlharness.https.any.js": [
|
"idlharness.https.any.js": [
|
||||||
"120477a51e61ad32f629e991a12e8bc99c4dbb7e",
|
"29fb87b8263e87a0d570c874a9531e64d5d76b83",
|
||||||
[
|
[
|
||||||
"BackgroundSync/idlharness.https.any.html",
|
"BackgroundSync/idlharness.https.any.html",
|
||||||
{
|
{
|
||||||
|
@ -401818,6 +401880,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"text-overflow-ellipsis-self-painting.html": [
|
||||||
|
"2810f8dae1810f3385fe978f0066210cfc24fdf6",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"text-overflow-ellipsis-width-001.html": [
|
"text-overflow-ellipsis-width-001.html": [
|
||||||
"2042111588254242c202527589507b40ef0c3538",
|
"2042111588254242c202527589507b40ef0c3538",
|
||||||
[
|
[
|
||||||
|
@ -455975,7 +456044,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"iframe_sandbox_allow_top_navigation-1.html": [
|
"iframe_sandbox_allow_top_navigation-1.html": [
|
||||||
"feb876608aca54d9bbe9113a9e5a28fa1d2e0ee2",
|
"b033ec44d24e106a265bf480296f09cbe3e27c32",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -455989,7 +456058,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"iframe_sandbox_allow_top_navigation-3.html": [
|
"iframe_sandbox_allow_top_navigation-3.html": [
|
||||||
"c7c56d670e5a32884b39e4034f83f5443cd76290",
|
"c3e5dc1fd6a0c5786dfeed57699bbf37901fa08e",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -468677,6 +468746,15 @@
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"manifest": {
|
||||||
|
"link-rel-manifest.html": [
|
||||||
|
"8eb39703a082daedc921b156287b014eaf836665",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
"mathml": {
|
"mathml": {
|
||||||
"presentation-markup": {
|
"presentation-markup": {
|
||||||
"direction": {
|
"direction": {
|
||||||
|
@ -474818,6 +474896,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"parent-no-child-bad-subdomain.sub.https.html": [
|
||||||
|
"2653dabd980b8caf65cf84b4765a2cfc0c4cb5c9",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"parent-no-child-yes-same.sub.https.html": [
|
"parent-no-child-yes-same.sub.https.html": [
|
||||||
"4239e1644638b04d330ff70f8a27e97f5af88ab0",
|
"4239e1644638b04d330ff70f8a27e97f5af88ab0",
|
||||||
[
|
[
|
||||||
|
@ -474832,6 +474917,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"parent-no-child-yes-with-params-subdomain.sub.https.html": [
|
||||||
|
"164a19ff381f9f351af805cf8ff73ddac92bafb1",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"parent-no-child1-no-child2-yes-children-different.sub.https.html": [
|
"parent-no-child1-no-child2-yes-children-different.sub.https.html": [
|
||||||
"3c879391a4571398a4254a15906411d5e844c596",
|
"3c879391a4571398a4254a15906411d5e844c596",
|
||||||
[
|
[
|
||||||
|
@ -491849,7 +491941,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"embed-and-object-are-not-intercepted.https.html": [
|
"embed-and-object-are-not-intercepted.https.html": [
|
||||||
"34556a785aea6810243ca473fc40066d16265116",
|
"581dbeca9772268ab85a2b50d8f7f45cf61e781f",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -509905,7 +509997,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"animate.html": [
|
"animate.html": [
|
||||||
"00e68b429621f65e68285bda2fa04ccb39f3f8e9",
|
"dad633ba9a2ca0ed10574c973b036f76b738d0db",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -535897,20 +535989,6 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"min-height-applies-to-013.xht": [
|
|
||||||
"13ddef79ec10b58218885d267dc47f4e5ae90ec9",
|
|
||||||
[
|
|
||||||
null,
|
|
||||||
{}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"min-height-applies-to-014.xht": [
|
|
||||||
"2abb772d9b53644c2d46d2bbbf100273cf38258a",
|
|
||||||
[
|
|
||||||
null,
|
|
||||||
{}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"min-width-014.xht": [
|
"min-width-014.xht": [
|
||||||
"611e40506bcc1e0ecfcce3ad84ea005efa221b9d",
|
"611e40506bcc1e0ecfcce3ad84ea005efa221b9d",
|
||||||
[
|
[
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-floats-003.html]
|
||||||
|
[Miss float below something else]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-floats-004.html]
|
||||||
|
[Miss float below something else]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-floats-005.html]
|
||||||
|
[Miss clipped float]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[min-height-applies-to-013.xht]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[min-height-applies-to-014.xht]
|
||||||
|
expected: FAIL
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[text-overflow-ellipsis-self-painting.html]
|
||||||
|
[CSS Basic User Interface Test: ellipsis when there are self-painting objects]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -21,6 +21,3 @@
|
||||||
[test the top of layer]
|
[test the top of layer]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test some point of the element: top left corner]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[elementsFromPoint-invalid-cases.html]
|
|
||||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -321,15 +321,18 @@
|
||||||
[<iframe>: combined response Content-Type: */* text/html]
|
[<iframe>: combined response Content-Type: */* text/html]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html */*]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html */*]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/plain */*]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -56,6 +56,6 @@
|
||||||
[separate text/javascript x/x]
|
[separate text/javascript x/x]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[separate text/javascript;charset=windows-1252 error text/javascript]
|
[separate text/javascript error]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -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%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[traverse_the_history_1.html]
|
||||||
|
[Multiple history traversals from the same task]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[traverse_the_history_2.html]
|
[traverse_the_history_3.html]
|
||||||
[Multiple history traversals, last would be aborted]
|
[Multiple history traversals, last would be aborted]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[embedded-opener-remove-frame.html]
|
[embedded-opener-remove-frame.html]
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[opener and "removed" embedded documents]
|
[opener and "removed" embedded documents]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -7,5 +7,5 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[opener of discarded auxiliary browsing context]
|
[opener of discarded auxiliary browsing context]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[iframe_sandbox_popups_nonescaping-1.html]
|
[iframe_sandbox_popups_nonescaping-1.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[module-static-import-delayed.html]
|
|
||||||
[document.write in an imported module]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
5
tests/wpt/metadata/webmessaging/with-ports/017.html.ini
Normal file
5
tests/wpt/metadata/webmessaging/with-ports/017.html.ini
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
[017.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[origin of the script that invoked the method, about:blank]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
[017.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[origin of the script that invoked the method, about:blank]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
[018.html]
|
|
||||||
expected: TIMEOUT
|
|
||||||
[origin of the script that invoked the method, javascript:]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
|
@ -4,10 +4,10 @@
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
// https://wicg.github.io/BackgroundSync/spec/
|
// https://wicg.github.io/background-sync/spec/
|
||||||
|
|
||||||
idl_test(
|
idl_test(
|
||||||
['BackgroundSync'],
|
['background-sync'],
|
||||||
['service-workers', 'html', 'dom'],
|
['service-workers', 'html', 'dom'],
|
||||||
idlArray => {
|
idlArray => {
|
||||||
const isServiceWorker = location.pathname.includes('.serviceworker.');
|
const isServiceWorker = location.pathname.includes('.serviceworker.');
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
<style type="text/css"><![CDATA[
|
<style type="text/css"><![CDATA[
|
||||||
table
|
table
|
||||||
{
|
{
|
||||||
|
font: 16px monospace;
|
||||||
border-collapse: separate;
|
border-collapse: separate;
|
||||||
border: blue solid medium;
|
border: blue solid medium;
|
||||||
border-spacing: 0px;
|
border-spacing: 0px;
|
||||||
|
@ -33,7 +34,6 @@
|
||||||
|
|
||||||
td
|
td
|
||||||
{
|
{
|
||||||
color: navy;
|
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
]]></style>
|
]]></style>
|
||||||
|
|
|
@ -10,8 +10,8 @@
|
||||||
<link rel="match" href="c414-flt-fit-000-ref.xht" />
|
<link rel="match" href="c414-flt-fit-000-ref.xht" />
|
||||||
|
|
||||||
<style type="text/css"><![CDATA[
|
<style type="text/css"><![CDATA[
|
||||||
div { border: solid blue; padding: 1em; width: 14em; margin: 10px; }
|
div { font: 16px monospace; border: solid blue; padding: 1em; width: 14em; margin: 10px; }
|
||||||
div p { margin: 0; width: 5em; float: left; color: navy; }
|
div p { margin: 0; width: 5em; float: left; }
|
||||||
]]></style>
|
]]></style>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
<p> 2 </p>
|
<p> 2 </p>
|
||||||
<p> 4 </p>
|
<p> 4 </p>
|
||||||
3
|
3
|
||||||
5                    
|
5 <!-- the font is set to monospace so we know how wide a nbsp is -->
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
<link rel="author" title="Microsoft" href="http://www.microsoft.com/" />
|
<link rel="author" title="Microsoft" href="http://www.microsoft.com/" />
|
||||||
<link rel="help" href="http://www.w3.org/TR/CSS21/visudet.html#propdef-min-height" />
|
<link rel="help" href="http://www.w3.org/TR/CSS21/visudet.html#propdef-min-height" />
|
||||||
<link rel="help" href="http://www.w3.org/TR/CSS21/visudet.html#min-max-heights" />
|
<link rel="help" href="http://www.w3.org/TR/CSS21/visudet.html#min-max-heights" />
|
||||||
|
<link rel="match" href="../../reference/pass_if_square_96px_black.html" />
|
||||||
<meta name="flags" content="" />
|
<meta name="flags" content="" />
|
||||||
<meta name="assert" content="The 'min-height' property applies to elements with 'display' set to 'table'." />
|
<meta name="assert" content="The 'min-height' property applies to elements with 'display' set to 'table'." />
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
|
@ -36,4 +37,4 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
<link rel="author" title="Microsoft" href="http://www.microsoft.com/" />
|
<link rel="author" title="Microsoft" href="http://www.microsoft.com/" />
|
||||||
<link rel="help" href="http://www.w3.org/TR/CSS21/visudet.html#propdef-min-height" />
|
<link rel="help" href="http://www.w3.org/TR/CSS21/visudet.html#propdef-min-height" />
|
||||||
<link rel="help" href="http://www.w3.org/TR/CSS21/visudet.html#min-max-heights" />
|
<link rel="help" href="http://www.w3.org/TR/CSS21/visudet.html#min-max-heights" />
|
||||||
|
<link rel="match" href="../../reference/pass_if_square_96px_black.html" />
|
||||||
<meta name="flags" content="" />
|
<meta name="flags" content="" />
|
||||||
<meta name="assert" content="The 'min-height' property applies to elements with 'display' set to 'inline-table'." />
|
<meta name="assert" content="The 'min-height' property applies to elements with 'display' set to 'inline-table'." />
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
|
@ -36,4 +37,4 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>CSS Basic User Interface Test: ellipsis when there are self-painting objects</title>
|
||||||
|
<link rel="help" href="http://www.w3.org/TR/css3-ui/#text-overflow">
|
||||||
|
<link rel="help" href="https://crbug.com/1005645">
|
||||||
|
<link rel="author" href="mailto:kojii@chromium.org">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<style>
|
||||||
|
.test {
|
||||||
|
width: 5ch;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.ellipsis {
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
span {
|
||||||
|
display: inline-block;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
background: red;
|
||||||
|
opacity: 0.3;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<body>
|
||||||
|
<div id="test" class="test ellipsis">1234567890 <span></span></div>
|
||||||
|
<div id="ref" class="test">1234567890 <span></span></div>
|
||||||
|
<script>
|
||||||
|
test(() => {
|
||||||
|
const ref_element = document.getElementById('ref');
|
||||||
|
const test_element = document.getElementById('test');
|
||||||
|
assert_equals(test_element.scrollWidth, ref_element.scrollWidth);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
|
@ -8,7 +8,6 @@
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<iframe sandbox="allow-top-navigation allow-scripts"></iframe>
|
|
||||||
<script>
|
<script>
|
||||||
// We are the main test page. Open a popup, so that we can
|
// We are the main test page. Open a popup, so that we can
|
||||||
// can experiment navigation of the top frame.
|
// can experiment navigation of the top frame.
|
||||||
|
@ -17,7 +16,8 @@
|
||||||
assert_equals(e.data, "can navigate");
|
assert_equals(e.data, "can navigate");
|
||||||
e.source.close();
|
e.source.close();
|
||||||
}));
|
}));
|
||||||
window.open("support/load-into-the-iframe.html");
|
let sandbox = "allow-top-navigation allow-scripts";
|
||||||
|
window.open("support/load-into-the-iframe.html?sandbox=" + sandbox);
|
||||||
}, "Frames with `allow-top-navigation` should be able to navigate the top frame.");
|
}, "Frames with `allow-top-navigation` should be able to navigate the top frame.");
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -9,10 +9,6 @@
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- Specifying both allow-top-navigation and
|
|
||||||
allow-top-navigation-by-user-activation is a document conformance
|
|
||||||
error: allow-top-navigation-by-user-activation will have no effect. -->
|
|
||||||
<iframe sandbox="allow-top-navigation allow-top-navigation-by-user-activation allow-scripts"></iframe>
|
|
||||||
<script>
|
<script>
|
||||||
// We are the main test page. Open a popup, so that we can
|
// We are the main test page. Open a popup, so that we can
|
||||||
// can experiment navigation of the top frame.
|
// can experiment navigation of the top frame.
|
||||||
|
@ -21,7 +17,11 @@
|
||||||
assert_equals(e.data, "can navigate");
|
assert_equals(e.data, "can navigate");
|
||||||
e.source.close();
|
e.source.close();
|
||||||
}));
|
}));
|
||||||
window.open("support/load-into-the-iframe.html");
|
// Specifying both allow-top-navigation and
|
||||||
|
// allow-top-navigation-by-user-activation is a document conformance
|
||||||
|
// error: allow-top-navigation-by-user-activation will have no effect.
|
||||||
|
let sandbox = "allow-top-navigation allow-top-navigation-by-user-activation allow-scripts";
|
||||||
|
window.open("support/load-into-the-iframe.html?sandbox=" + sandbox);
|
||||||
}, "Frames with `allow-top-navigation` should be able to navigate the top frame even when `allow-top-navigation-by-user-activation` is set.");
|
}, "Frames with `allow-top-navigation` should be able to navigate the top frame even when `allow-top-navigation-by-user-activation` is set.");
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -7,13 +7,18 @@
|
||||||
<body>
|
<body>
|
||||||
<iframe sandbox="allow-scripts"></iframe>
|
<iframe sandbox="allow-scripts"></iframe>
|
||||||
<script>
|
<script>
|
||||||
|
let frame = document.querySelector("iframe");
|
||||||
|
let sandbox = new URL(location.href).searchParams.get("sandbox");
|
||||||
|
if (sandbox) {
|
||||||
|
frame.sandbox = sandbox;
|
||||||
|
}
|
||||||
// We're the popup (i.e. a top frame). Load into the iframe the page
|
// We're the popup (i.e. a top frame). Load into the iframe the page
|
||||||
// trying to modifying the top frame and transmit the result to our
|
// trying to modifying the top frame and transmit the result to our
|
||||||
// opener.
|
// opener.
|
||||||
onmessage = function(e) {
|
onmessage = function(e) {
|
||||||
opener.postMessage(e.data, "*")
|
opener.postMessage(e.data, "*")
|
||||||
}
|
}
|
||||||
document.querySelector("iframe").src = "iframe-that-performs-top-navigation-on-popup.html";
|
frame.src = "iframe-that-performs-top-navigation-on-popup.html";
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -757,6 +757,7 @@ TESTHARNESS-IN-OTHER-TYPE: html/semantics/interactive-elements/the-summary-eleme
|
||||||
TESTHARNESS-IN-OTHER-TYPE: html/semantics/text-level-semantics/the-ruby-element/rt-without-ruby-crash.html
|
TESTHARNESS-IN-OTHER-TYPE: html/semantics/text-level-semantics/the-ruby-element/rt-without-ruby-crash.html
|
||||||
TESTHARNESS-IN-OTHER-TYPE: portals/portals-no-frame-crash.html
|
TESTHARNESS-IN-OTHER-TYPE: portals/portals-no-frame-crash.html
|
||||||
TESTHARNESS-IN-OTHER-TYPE: quirks/table-replaced-descendant-percentage-height-crash.html
|
TESTHARNESS-IN-OTHER-TYPE: quirks/table-replaced-descendant-percentage-height-crash.html
|
||||||
|
TESTHARNESS-IN-OTHER-TYPE: scroll-animations/null-scroll-source-crash.html
|
||||||
TESTHARNESS-IN-OTHER-TYPE: svg/extensibility/foreignObject/foreign-object-circular-filter-reference-crash.html
|
TESTHARNESS-IN-OTHER-TYPE: svg/extensibility/foreignObject/foreign-object-circular-filter-reference-crash.html
|
||||||
TESTHARNESS-IN-OTHER-TYPE: svg/extensibility/foreignObject/foreign-object-under-clip-path-crash.html
|
TESTHARNESS-IN-OTHER-TYPE: svg/extensibility/foreignObject/foreign-object-under-clip-path-crash.html
|
||||||
TESTHARNESS-IN-OTHER-TYPE: svg/extensibility/foreignObject/foreign-object-under-defs-crash.html
|
TESTHARNESS-IN-OTHER-TYPE: svg/extensibility/foreignObject/foreign-object-under-defs-crash.html
|
||||||
|
|
5
tests/wpt/web-platform-tests/manifest/META.yml
Normal file
5
tests/wpt/web-platform-tests/manifest/META.yml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
spec: https://w3c.github.io/manifest/
|
||||||
|
suggested_reviewers:
|
||||||
|
- marcoscaceres
|
||||||
|
- mgiuca
|
||||||
|
- kenchris
|
11
tests/wpt/web-platform-tests/manifest/link-rel-manifest.html
Normal file
11
tests/wpt/web-platform-tests/manifest/link-rel-manifest.html
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>Test that "manifest" is a supported value for the `rel` of a `link`</title>
|
||||||
|
<link rel="help" href="https://w3c.github.io/manifest">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script>
|
||||||
|
test(() => {
|
||||||
|
const result = document.createElement("link").relList.supports("manifest")
|
||||||
|
assert_true(result, "Expected true if manifest is supported as a link relationship");
|
||||||
|
}, 'link element supports a rel value of "manifest".');
|
||||||
|
</script>
|
|
@ -0,0 +1,33 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Parent is not isolated, child attempts to isolate but uses a bad header value, child is a subdomain of the parent</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
|
||||||
|
<div id="log"></div>
|
||||||
|
|
||||||
|
<script type="module">
|
||||||
|
import { insertIframe, sendWasmModule, setBothDocumentDomains } from "./resources/helpers.mjs";
|
||||||
|
|
||||||
|
for (const badValue of ["", "?0", "true", "\"?1\"", "1", "?2", "(?1)"]) {
|
||||||
|
let frameWindow;
|
||||||
|
promise_test(async () => {
|
||||||
|
frameWindow = await insertIframe("{{hosts[][www]}}", badValue);
|
||||||
|
}, `"${badValue}": frame insertion`);
|
||||||
|
|
||||||
|
// Since the header values are bad there should be no isolation
|
||||||
|
|
||||||
|
promise_test(async () => {
|
||||||
|
const whatHappened = await sendWasmModule(frameWindow);
|
||||||
|
|
||||||
|
assert_equals(whatHappened, "WebAssembly.Module message received");
|
||||||
|
}, `"${badValue}": message event must occur for`);
|
||||||
|
|
||||||
|
promise_test(async () => {
|
||||||
|
await setBothDocumentDomains(frameWindow);
|
||||||
|
|
||||||
|
// Must not throw
|
||||||
|
frameWindow.document;
|
||||||
|
}, `"${badValue}": setting document.domain must give sync access`);
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,34 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Parent is not isolated, child is isolated using parameters on its structured header, child is a subdomain of the parent</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
|
||||||
|
<div id="log"></div>
|
||||||
|
|
||||||
|
<script type="module">
|
||||||
|
import { insertIframe, sendWasmModule, setBothDocumentDomains } from "./resources/helpers.mjs";
|
||||||
|
|
||||||
|
let frameWindow;
|
||||||
|
promise_setup(async () => {
|
||||||
|
frameWindow = await insertIframe("{{hosts[][www]}}", "?1;param1;param2=value2");
|
||||||
|
});
|
||||||
|
|
||||||
|
// Since they're different-origin, the child's isolation request is respected,
|
||||||
|
// so the parent ends up in the site-keyed agent cluster and the child in the
|
||||||
|
// origin-keyed one.
|
||||||
|
|
||||||
|
promise_test(async () => {
|
||||||
|
const whatHappened = await sendWasmModule(frameWindow);
|
||||||
|
|
||||||
|
assert_equals(whatHappened, "messageerror");
|
||||||
|
}, "messageerror event must occur");
|
||||||
|
|
||||||
|
promise_test(async () => {
|
||||||
|
await setBothDocumentDomains(frameWindow);
|
||||||
|
|
||||||
|
assert_throws_dom("SecurityError", DOMException, () => {
|
||||||
|
frameWindow.document;
|
||||||
|
});
|
||||||
|
}, "setting document.domain should no-op instead of giving sync access");
|
||||||
|
</script>
|
|
@ -0,0 +1,70 @@
|
||||||
|
<html class="reftest-wait">
|
||||||
|
<title>Scroll-linked animation with Animatable interface</title>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/scroll-animations/">
|
||||||
|
<meta name="assert" content="ScrollTimeline should work with animatable
|
||||||
|
interface">
|
||||||
|
<link rel="match" href="animation-ref.html">
|
||||||
|
|
||||||
|
<script src="/web-animations/testcommon.js"></script>
|
||||||
|
<script src="/common/reftest-wait.js"></script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
#box {
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
background-color: green;
|
||||||
|
}
|
||||||
|
|
||||||
|
#covered {
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
background-color: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
#scroller {
|
||||||
|
overflow: auto;
|
||||||
|
height: 100px;
|
||||||
|
width: 100px;
|
||||||
|
will-change: transform;
|
||||||
|
/* force compositing */
|
||||||
|
}
|
||||||
|
|
||||||
|
#contents {
|
||||||
|
height: 1000px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div id="box"></div>
|
||||||
|
<div id="covered"></div>
|
||||||
|
<div id="scroller">
|
||||||
|
<div id="contents"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const scroller = document.getElementById('scroller');
|
||||||
|
const scroll_timeline = new ScrollTimeline({
|
||||||
|
scrollSource: scroller,
|
||||||
|
timeRange: 1000
|
||||||
|
});
|
||||||
|
const box = document.getElementById('box');
|
||||||
|
const animation = box.animate(
|
||||||
|
[
|
||||||
|
{ transform: 'translateY(0)', opacity: 1 },
|
||||||
|
{ transform: 'translateY(200px)', opacity: 0 }
|
||||||
|
], {
|
||||||
|
duration: 1000,
|
||||||
|
timeline: scroll_timeline
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
animation.ready.then(() => {
|
||||||
|
// Move the scroller to the halfway point.
|
||||||
|
const maxScroll = scroller.scrollHeight - scroller.clientHeight;
|
||||||
|
scroller.scrollTop = 0.5 * maxScroll;
|
||||||
|
|
||||||
|
waitForAnimationFrames(2).then(_ => {
|
||||||
|
takeScreenshot();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1088319">
|
||||||
|
<meta name="assert" content="Playing animation with null scroll source should not crash.">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<style>
|
||||||
|
html {
|
||||||
|
overflow: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
overflow: scroll;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div id="box"></div>
|
||||||
|
<script>
|
||||||
|
test(() => {
|
||||||
|
const effect = new KeyframeEffect(box, []);
|
||||||
|
const timeline = new ScrollTimeline({
|
||||||
|
timeRange: 1000
|
||||||
|
});
|
||||||
|
const animation = new Animation(effect, timeline);
|
||||||
|
assert_equals(document.scrollingElement, null,
|
||||||
|
"This test relies on scrolling element being nil");
|
||||||
|
animation.play();
|
||||||
|
}, "Playing animation with null scroll source should not crash");
|
||||||
|
</script>
|
|
@ -75,4 +75,30 @@ promise_test(t => {
|
||||||
});
|
});
|
||||||
}, 'requests for OBJECT elements of an image should not be intercepted by service workers');
|
}, 'requests for OBJECT elements of an image should not be intercepted by service workers');
|
||||||
|
|
||||||
|
promise_test(t => {
|
||||||
|
let frame;
|
||||||
|
return with_iframe('resources/object-navigation-is-not-intercepted-iframe.html')
|
||||||
|
.then(f => {
|
||||||
|
frame = f;
|
||||||
|
t.add_cleanup(() => { frame.remove(); });
|
||||||
|
return frame.contentWindow.test_promise;
|
||||||
|
})
|
||||||
|
.then(result => {
|
||||||
|
assert_equals(result, 'request for embedded content was not intercepted');
|
||||||
|
});
|
||||||
|
}, 'post-load navigation of OBJECT elements should not be intercepted by service workers');
|
||||||
|
|
||||||
|
|
||||||
|
promise_test(t => {
|
||||||
|
let frame;
|
||||||
|
return with_iframe('resources/embed-navigation-is-not-intercepted-iframe.html')
|
||||||
|
.then(f => {
|
||||||
|
frame = f;
|
||||||
|
t.add_cleanup(() => { frame.remove(); });
|
||||||
|
return frame.contentWindow.test_promise;
|
||||||
|
})
|
||||||
|
.then(result => {
|
||||||
|
assert_equals(result, 'request for embedded content was not intercepted');
|
||||||
|
});
|
||||||
|
}, 'post-load navigation of EMBED elements should not be intercepted by service workers');
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>iframe for embed-and-object-are-not-intercepted test</title>
|
||||||
|
<body>
|
||||||
|
<script>
|
||||||
|
// The EMBED element will call this with the result about whether the EMBED
|
||||||
|
// request was intercepted by the service worker.
|
||||||
|
var report_result;
|
||||||
|
|
||||||
|
// Our parent (the root frame of the test) will examine this to get the result.
|
||||||
|
var test_promise = new Promise(resolve => {
|
||||||
|
report_result = resolve;
|
||||||
|
});
|
||||||
|
|
||||||
|
let el = document.createElement('embed');
|
||||||
|
el.src = "/common/blank.html";
|
||||||
|
el.addEventListener('load', _ => {
|
||||||
|
window[0].location = "/service-workers/service-worker/resources/embedded-content-from-server.html";
|
||||||
|
}, { once: true });
|
||||||
|
document.body.appendChild(el);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
|
@ -0,0 +1,24 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>iframe for embed-and-object-are-not-intercepted test</title>
|
||||||
|
<body>
|
||||||
|
<script>
|
||||||
|
// The OBJECT element will call this with the result about whether the OBJECT
|
||||||
|
// request was intercepted by the service worker.
|
||||||
|
var report_result;
|
||||||
|
|
||||||
|
// Our parent (the root frame of the test) will examine this to get the result.
|
||||||
|
var test_promise = new Promise(resolve => {
|
||||||
|
report_result = resolve;
|
||||||
|
});
|
||||||
|
|
||||||
|
let el = document.createElement('object');
|
||||||
|
el.data = "/common/blank.html";
|
||||||
|
el.addEventListener('load', _ => {
|
||||||
|
window[0].location = "/service-workers/service-worker/resources/embedded-content-from-server.html";
|
||||||
|
}, { once: true });
|
||||||
|
document.body.appendChild(el);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
|
@ -4,15 +4,13 @@ images must be updated as well. Doing this requires you be part of the
|
||||||
'webplatformtests' organization on Docker Hub; ping @Hexcles or @stephenmcgruer
|
'webplatformtests' organization on Docker Hub; ping @Hexcles or @stephenmcgruer
|
||||||
if you are not a member.
|
if you are not a member.
|
||||||
|
|
||||||
In this directory, run the following, where `<tag>` is of the form
|
The tag for a new docker image is of the form
|
||||||
`webplatformtests/wpt:{current-version + 0.01}`:
|
`webplatformtests/wpt:{current-version + 0.01}`
|
||||||
|
|
||||||
```sh
|
To update the docker image:
|
||||||
# --pull forces Docker to get the newest base image.
|
|
||||||
docker build --pull -t <tag> .
|
|
||||||
docker push <tag>
|
|
||||||
```
|
|
||||||
|
|
||||||
Then update the following Taskcluster configurations to use the new image:
|
* Update the following Taskcluster configurations to use the new image:
|
||||||
* `.taskcluster.yml` (the decision task)
|
- `.taskcluster.yml` (the decision task)
|
||||||
* `tools/ci/tc/tasks/test.yml` (all the other tasks)
|
- `tools/ci/tc/tasks/test.yml` (all the other tasks)
|
||||||
|
|
||||||
|
* Run `wpt docker-push`
|
||||||
|
|
|
@ -1,6 +1,26 @@
|
||||||
{
|
{
|
||||||
"docker-run": {"path": "frontend.py", "script": "run", "parser": "parser_run", "help": "Run wpt docker image",
|
"docker-run": {
|
||||||
"virtualenv": false},
|
"path": "frontend.py",
|
||||||
"docker-build": {"path": "frontend.py", "script": "build", "help": "Build wpt docker image",
|
"script": "run",
|
||||||
"virtualenv": false}
|
"parser": "parser_run",
|
||||||
|
"help": "Run wpt docker image",
|
||||||
|
"virtualenv": false
|
||||||
|
},
|
||||||
|
"docker-build": {
|
||||||
|
"path": "frontend.py",
|
||||||
|
"script": "build",
|
||||||
|
"help": "Build wpt docker image",
|
||||||
|
"virtualenv": false
|
||||||
|
},
|
||||||
|
"docker-push": {
|
||||||
|
"path": "frontend.py",
|
||||||
|
"script": "push",
|
||||||
|
"parser": "parser_push",
|
||||||
|
"help": "Build and push wpt docker image",
|
||||||
|
"virtualenv": true,
|
||||||
|
"install": [
|
||||||
|
"requests",
|
||||||
|
"pyyaml"
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +1,111 @@
|
||||||
import argparse
|
import argparse
|
||||||
import subprocess
|
import logging
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from six import iteritems
|
||||||
|
|
||||||
here = os.path.abspath(os.path.dirname(__file__))
|
here = os.path.abspath(os.path.dirname(__file__))
|
||||||
wpt_root = os.path.abspath(os.path.join(here, os.pardir, os.pardir))
|
wpt_root = os.path.abspath(os.path.join(here, os.pardir, os.pardir))
|
||||||
|
|
||||||
def build(*args, **kwargs):
|
logger = logging.getLogger()
|
||||||
|
|
||||||
|
|
||||||
|
def build(tag="wpt:local", *args, **kwargs):
|
||||||
subprocess.check_call(["docker",
|
subprocess.check_call(["docker",
|
||||||
"build",
|
"build",
|
||||||
"--pull",
|
"--pull",
|
||||||
"--tag", "wpt:local",
|
"--tag", tag,
|
||||||
here])
|
here])
|
||||||
|
|
||||||
|
|
||||||
|
def parser_push():
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("--tag", action="store",
|
||||||
|
help="Tag to use (default is taken from .taskcluster.yml)")
|
||||||
|
parser.add_argument("--force", action="store_true",
|
||||||
|
help="Ignore warnings and push anyway")
|
||||||
|
return parser
|
||||||
|
|
||||||
|
|
||||||
|
def walk_yaml(root, target):
|
||||||
|
rv = []
|
||||||
|
if isinstance(root, list):
|
||||||
|
for value in root:
|
||||||
|
if isinstance(value, (dict, list)):
|
||||||
|
rv.extend(walk_yaml(value, target))
|
||||||
|
elif isinstance(root, dict):
|
||||||
|
for key, value in iteritems(root):
|
||||||
|
if isinstance(value, (dict, list)):
|
||||||
|
rv.extend(walk_yaml(value, target))
|
||||||
|
elif key == target:
|
||||||
|
rv.append(value)
|
||||||
|
return rv
|
||||||
|
|
||||||
|
|
||||||
|
def read_image_name():
|
||||||
|
import yaml
|
||||||
|
with open(os.path.join(wpt_root, ".taskcluster.yml")) as f:
|
||||||
|
taskcluster_data = yaml.safe_load(f)
|
||||||
|
taskcluster_values = set(walk_yaml(taskcluster_data, "image"))
|
||||||
|
with open(os.path.join(wpt_root, "tools", "ci", "tc", "tasks", "test.yml")) as f:
|
||||||
|
test_data = yaml.safe_load(f)
|
||||||
|
tests_value = test_data["components"]["wpt-base"]["image"]
|
||||||
|
return taskcluster_values, tests_value
|
||||||
|
|
||||||
|
|
||||||
|
def lookup_tag(tag):
|
||||||
|
import requests
|
||||||
|
org, repo_version = tag.split("/", 1)
|
||||||
|
repo, version = repo_version.rsplit(":", 1)
|
||||||
|
resp = requests.get("https://hub.docker.com/v2/repositories/%s/%s/tags/%s" %
|
||||||
|
(org, repo, version))
|
||||||
|
if resp.status_code == 200:
|
||||||
|
return True
|
||||||
|
if resp.status_code == 404:
|
||||||
|
return False
|
||||||
|
resp.raise_for_status()
|
||||||
|
|
||||||
|
|
||||||
|
def push(venv, tag=None, force=False, *args, **kwargs):
|
||||||
|
taskcluster_tags, tests_tag = read_image_name()
|
||||||
|
|
||||||
|
taskcluster_tag = taskcluster_tags.pop()
|
||||||
|
|
||||||
|
error_log = logger.warning if force else logger.error
|
||||||
|
if len(taskcluster_tags) != 0 or tests_tag != taskcluster_tag:
|
||||||
|
error_log("Image names in .taskcluster.yml and tools/ci/tc/tasks/test.yml "
|
||||||
|
"don't match.")
|
||||||
|
if not force:
|
||||||
|
sys.exit(1)
|
||||||
|
if tag is not None and tag != taskcluster_tag:
|
||||||
|
error_log("Supplied tag doesn't match .taskcluster.yml or "
|
||||||
|
"tools/ci/tc/tasks/test.yml; remember to update before pushing")
|
||||||
|
if not force:
|
||||||
|
sys.exit(1)
|
||||||
|
if tag is None:
|
||||||
|
logger.info("Using tag %s from .taskcluster.yml" % taskcluster_tag)
|
||||||
|
tag = taskcluster_tag
|
||||||
|
|
||||||
|
tag_re = re.compile(r"webplatformtests/wpt:\d\.\d+")
|
||||||
|
if not tag_re.match(tag):
|
||||||
|
error_log("Tag doesn't match expected format webplatformtests/wpt:0.x")
|
||||||
|
if not force:
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
if lookup_tag(tag):
|
||||||
|
# No override for this case
|
||||||
|
logger.critical("Tag %s already exists" % tag)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
build(tag)
|
||||||
|
subprocess.check_call(["docker",
|
||||||
|
"push",
|
||||||
|
tag])
|
||||||
|
|
||||||
|
|
||||||
def parser_run():
|
def parser_run():
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument("--rebuild", action="store_true", help="Force rebuild of image")
|
parser.add_argument("--rebuild", action="store_true", help="Force rebuild of image")
|
||||||
|
|
|
@ -11,20 +11,23 @@ authors can implement custom handlers by putting python scripts in
|
||||||
## Custom Handlers
|
## Custom Handlers
|
||||||
The QuicTransportServer calls functions defined in each handler script.
|
The QuicTransportServer calls functions defined in each handler script.
|
||||||
|
|
||||||
- handle_client_indication is called during the client indication process.
|
- `handle_client_indication` is called during the client indication process.
|
||||||
This function is called with three arguments:
|
This function is called with three arguments:
|
||||||
|
|
||||||
- connection: aioquic.asyncio.QuicConnectionProtocol
|
- `connection`: [`aioquic.asyncio.QuicConnectionProtocol`](protocol)
|
||||||
- origin: str The origin of the initiator.
|
- `origin`: `str` The origin of the initiator.
|
||||||
- query: Dict[str, str] The dictionary of query parameters of the URL of the
|
- `query`: `Dict[str, str]` The dictionary of query parameters of the URL of the
|
||||||
connection.
|
connection.
|
||||||
|
|
||||||
A handler can abort the client indication process either by raising an
|
A handler can abort the client indication process either by raising an
|
||||||
exception or closing the connection.
|
exception or closing the connection.
|
||||||
|
|
||||||
- handle_event is called when a QuicEvent arrives.
|
- `handle_event` is called when a [`QuicEvent`](event) arrives.
|
||||||
- connection: aioquic.asyncio.QuicConnectionProtocol
|
- `connection`: [`aioquic.asyncio.QuicConnectionProtocol`](protocol)
|
||||||
- event: aioquic.quic.events.QuicEvent
|
- `event`: [`aioquic.quic.events.QuicEvent`](event)
|
||||||
|
|
||||||
This function is not called until the client indication process finishes
|
This function is not called until the client indication process finishes
|
||||||
successfully.
|
successfully.
|
||||||
|
|
||||||
|
[protocol]: https://aioquic.readthedocs.io/en/latest/asyncio.html#aioquic.asyncio.QuicConnectionProtocol
|
||||||
|
[event]: https://aioquic.readthedocs.io/en/latest/quic.html#module-aioquic.quic.events
|
||||||
|
|
|
@ -156,11 +156,10 @@ class BrowserSetup(object):
|
||||||
name = None
|
name = None
|
||||||
browser_cls = None
|
browser_cls = None
|
||||||
|
|
||||||
def __init__(self, venv, prompt=True, sub_product=None):
|
def __init__(self, venv, prompt=True):
|
||||||
self.browser = self.browser_cls(logger)
|
self.browser = self.browser_cls(logger)
|
||||||
self.venv = venv
|
self.venv = venv
|
||||||
self.prompt = prompt
|
self.prompt = prompt
|
||||||
self.sub_product = sub_product
|
|
||||||
|
|
||||||
def prompt_install(self, component):
|
def prompt_install(self, component):
|
||||||
if not self.prompt:
|
if not self.prompt:
|
||||||
|
@ -588,8 +587,10 @@ class Sauce(BrowserSetup):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
def setup_kwargs(self, kwargs):
|
def setup_kwargs(self, kwargs):
|
||||||
kwargs.set_if_none("sauce_browser", self.sub_product[0])
|
if kwargs["sauce_browser"] is None:
|
||||||
kwargs.set_if_none("sauce_version", self.sub_product[1])
|
raise WptrunError("Missing required argument --sauce-browser")
|
||||||
|
if kwargs["sauce_version"] is None:
|
||||||
|
raise WptrunError("Missing required argument --sauce-version")
|
||||||
kwargs["test_types"] = ["testharness", "reftest"]
|
kwargs["test_types"] = ["testharness", "reftest"]
|
||||||
|
|
||||||
|
|
||||||
|
@ -719,9 +720,7 @@ def setup_wptrunner(venv, prompt=True, install_browser=False, **kwargs):
|
||||||
|
|
||||||
kwargs = utils.Kwargs(iteritems(kwargs))
|
kwargs = utils.Kwargs(iteritems(kwargs))
|
||||||
|
|
||||||
product_parts = kwargs["product"].split(":")
|
kwargs["product"] = kwargs["product"].replace("-", "_")
|
||||||
kwargs["product"] = product_parts[0].replace("-", "_")
|
|
||||||
sub_product = product_parts[1:]
|
|
||||||
|
|
||||||
check_environ(kwargs["product"])
|
check_environ(kwargs["product"])
|
||||||
args_general(kwargs)
|
args_general(kwargs)
|
||||||
|
@ -729,7 +728,7 @@ def setup_wptrunner(venv, prompt=True, install_browser=False, **kwargs):
|
||||||
if kwargs["product"] not in product_setup:
|
if kwargs["product"] not in product_setup:
|
||||||
raise WptrunError("Unsupported product %s" % kwargs["product"])
|
raise WptrunError("Unsupported product %s" % kwargs["product"])
|
||||||
|
|
||||||
setup_cls = product_setup[kwargs["product"]](venv, prompt, sub_product)
|
setup_cls = product_setup[kwargs["product"]](venv, prompt)
|
||||||
setup_cls.install_requirements()
|
setup_cls.install_requirements()
|
||||||
|
|
||||||
affected_revish = kwargs.pop("affected", None)
|
affected_revish = kwargs.pop("affected", None)
|
||||||
|
|
|
@ -69,5 +69,6 @@ def test_setup_wptrunner(venv, logger, product):
|
||||||
kwargs["binary"] = sys.argv[0]
|
kwargs["binary"] = sys.argv[0]
|
||||||
kwargs["webdriver_binary"] = sys.argv[0]
|
kwargs["webdriver_binary"] = sys.argv[0]
|
||||||
if kwargs["product"] == "sauce":
|
if kwargs["product"] == "sauce":
|
||||||
kwargs["product"] = "sauce:firefox:63"
|
kwargs["sauce_browser"] = "firefox"
|
||||||
|
kwargs["sauce_version"] = "63"
|
||||||
run.setup_wptrunner(venv, **kwargs)
|
run.setup_wptrunner(venv, **kwargs)
|
||||||
|
|
|
@ -202,6 +202,18 @@ async_test(t => {
|
||||||
}, 'Element.animate() correctly sets the Animation\'s timeline when ' +
|
}, 'Element.animate() correctly sets the Animation\'s timeline when ' +
|
||||||
'triggered on an element in a different document');
|
'triggered on an element in a different document');
|
||||||
|
|
||||||
|
for (const subtest of gAnimationTimelineTests) {
|
||||||
|
test(t => {
|
||||||
|
const anim = createDiv(t).animate(null, { timeline: subtest.timeline });
|
||||||
|
assert_not_equals(anim, null,
|
||||||
|
'An animation sohuld be created');
|
||||||
|
assert_equals(anim.timeline, subtest.expectedTimeline,
|
||||||
|
'Animation timeline should be '+
|
||||||
|
subtest.expectedTimelineDescription);
|
||||||
|
}, 'Element.animate() correctly sets the Animation\'s timeline '
|
||||||
|
+ subtest.description + ' in KeyframeAnimationOptions.');
|
||||||
|
}
|
||||||
|
|
||||||
test(t => {
|
test(t => {
|
||||||
const anim = createDiv(t).animate(null, 2000);
|
const anim = createDiv(t).animate(null, 2000);
|
||||||
assert_equals(anim.playState, 'running');
|
assert_equals(anim.playState, 'running');
|
||||||
|
|
|
@ -796,3 +796,32 @@ const gInvalidKeyframeEffectOptionTests = [
|
||||||
{ desc: 'a variable easing', input: { easing: 'var(--x)' } },
|
{ desc: 'a variable easing', input: { easing: 'var(--x)' } },
|
||||||
{ desc: 'a multi-value easing', input: { easing: 'ease-in-out, ease-out' } },
|
{ desc: 'a multi-value easing', input: { easing: 'ease-in-out, ease-out' } },
|
||||||
];
|
];
|
||||||
|
|
||||||
|
// There is currently only ScrollTimeline that can be constructed and used here
|
||||||
|
// beyond document timeline. Given that ScrollTimeline is not stable as of yet
|
||||||
|
// it's tested in scroll-animations/animation-with-animatable-interface.html.
|
||||||
|
const gAnimationTimelineTests = [
|
||||||
|
{
|
||||||
|
expectedTimeline: document.timeline,
|
||||||
|
expectedTimelineDescription: 'document.timeline',
|
||||||
|
description: 'with no timeline parameter'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
timeline: undefined,
|
||||||
|
expectedTimeline: document.timeline,
|
||||||
|
expectedTimelineDescription: 'document.timeline',
|
||||||
|
description: 'with undefined timeline'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
timeline: null,
|
||||||
|
expectedTimeline: null,
|
||||||
|
expectedTimelineDescription: 'null',
|
||||||
|
description: 'with null timeline'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
timeline: document.timeline,
|
||||||
|
expectedTimeline: document.timeline,
|
||||||
|
expectedTimelineDescription: 'document.timeline',
|
||||||
|
description: 'with DocumentTimeline'
|
||||||
|
},
|
||||||
|
];
|
Loading…
Add table
Add a link
Reference in a new issue