Update web-platform-tests to revision 5fe9625d7445a6b88640f830d90dd5489c4bda05

This commit is contained in:
WPT Sync Bot 2020-08-06 08:21:26 +00:00
parent 39c3f46375
commit 92d17be4fe
104 changed files with 2429 additions and 236 deletions

View file

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

View file

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

View file

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

View file

@ -1,4 +0,0 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

@ -315,18 +315,18 @@
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
[<iframe>: combined response Content-Type: text/plain;charset=gbk text/html]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL

View file

@ -53,6 +53,9 @@
[combined text/javascript ]
expected: FAIL
[separate text/javascript; charset=windows-1252 text/javascript]
[separate text/javascript x/x]
expected: FAIL
[separate text/javascript;charset=windows-1252 text/javascript]
expected: FAIL

View file

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

View file

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

View file

@ -1,5 +0,0 @@
[skip-another-top-level-browsing-context.html]
expected: TIMEOUT
[Autofocus elements queued in another top-level browsing context's documents should be skipped.]
expected: TIMEOUT

View file

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

View file

@ -171,6 +171,3 @@
[XHTML img usemap="#hash-id"]
expected: FAIL
[HTML (standards) IMG usemap="no-hash-name"]
expected: FAIL

View file

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,4 @@
[form-double-submit-3.html]
[<button> should have the same double-submit protection as <input type=submit>]
expected: FAIL

View file

@ -1,4 +0,0 @@
[form-double-submit.html]
[default submit action should supersede onclick submit()]
expected: FAIL

View file

@ -0,0 +1,4 @@
[iframe_005.html]
[document.write external script into iframe write back into parent]
expected: FAIL

View file

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

View file

@ -0,0 +1,59 @@
[tee.any.sharedworker.html]
expected: ERROR
[tee.any.worker.html]
expected: TIMEOUT
[ReadableStreamTee should not pull more chunks than can fit in the branch queue]
expected: NOTRUN
[ReadableStream teeing: canceling branch1 should finish when branch2 reads until end of stream]
expected: TIMEOUT
[ReadableStream teeing: canceling branch1 should finish when original stream errors]
expected: NOTRUN
[ReadableStreamTee should only pull enough to fill the emptiest queue]
expected: NOTRUN
[ReadableStreamTee stops pulling when original stream errors while both branches are reading]
expected: NOTRUN
[ReadableStreamTee stops pulling when original stream errors while branch 1 is reading]
expected: NOTRUN
[ReadableStreamTee stops pulling when original stream errors while branch 2 is reading]
expected: NOTRUN
[ReadableStreamTee should not pull when original is already errored]
expected: NOTRUN
[tee.any.serviceworker.html]
expected: ERROR
[tee.any.html]
expected: TIMEOUT
[ReadableStreamTee should not pull more chunks than can fit in the branch queue]
expected: NOTRUN
[ReadableStream teeing: canceling branch1 should finish when branch2 reads until end of stream]
expected: TIMEOUT
[ReadableStream teeing: canceling branch1 should finish when original stream errors]
expected: NOTRUN
[ReadableStreamTee should only pull enough to fill the emptiest queue]
expected: NOTRUN
[ReadableStreamTee stops pulling when original stream errors while both branches are reading]
expected: NOTRUN
[ReadableStreamTee stops pulling when original stream errors while branch 1 is reading]
expected: NOTRUN
[ReadableStreamTee stops pulling when original stream errors while branch 2 is reading]
expected: NOTRUN
[ReadableStreamTee should not pull when original is already errored]
expected: NOTRUN

View file

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

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,2 +0,0 @@
[Worker-constructor.html]
expected: ERROR

View file

@ -0,0 +1,49 @@
[exception-in-onerror.html]
[Throw in setTimeout(string): classic: listener]
expected: FAIL
[Throw in setTimeout(function): module: listener]
expected: FAIL
[Throw in worker initialization: classic: handler]
expected: FAIL
[Throw in message handler: classic: listener]
expected: FAIL
[Throw in setTimeout(function): classic: handler]
expected: FAIL
[Throw in message handler: module: handler]
expected: FAIL
[Throw in setTimeout(function): module: handler]
expected: FAIL
[Throw in worker initialization: module: handler]
expected: FAIL
[Throw in setTimeout(string): module: listener]
expected: FAIL
[Throw in message handler: classic: handler]
expected: FAIL
[Throw in worker initialization: classic: listener]
expected: FAIL
[Throw in message handler: module: listener]
expected: FAIL
[Throw in setTimeout(string): module: handler]
expected: FAIL
[Throw in setTimeout(function): classic: listener]
expected: FAIL
[Throw in worker initialization: module: listener]
expected: FAIL
[Throw in setTimeout(string): classic: handler]
expected: FAIL

View file

@ -1,8 +1,7 @@
[shared-worker-in-data-url-context.window.html]
expected: TIMEOUT
[Create a shared worker in a data url frame]
expected: FAIL
[Create a data url shared worker in a data url frame]
expected: TIMEOUT
expected: FAIL

View file

@ -144109,6 +144109,136 @@
{}
]
],
"grid-item-no-aspect-ratio-stretch-1.html": [
"1b5ae0a6ad80610515ed53f5ea34e812fe040d27",
[
null,
[
[
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-1-ref.html",
"=="
]
],
{}
]
],
"grid-item-no-aspect-ratio-stretch-10.html": [
"6d8d7e848c24d6da176334b56f6b8af03341d374",
[
null,
[
[
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8-ref.html",
"=="
]
],
{}
]
],
"grid-item-no-aspect-ratio-stretch-2.html": [
"5371e560a5f80eae466485ccd89486c33d741190",
[
null,
[
[
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-2-ref.html",
"=="
]
],
{}
]
],
"grid-item-no-aspect-ratio-stretch-3.html": [
"e2b05bd21664eaa61e4ec3a2abb74f431c8fdc1c",
[
null,
[
[
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-3-ref.html",
"=="
]
],
{}
]
],
"grid-item-no-aspect-ratio-stretch-4.html": [
"1cf2849dad3d067b7d097ab76a775e213e836d10",
[
null,
[
[
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4-ref.html",
"=="
]
],
{}
]
],
"grid-item-no-aspect-ratio-stretch-5.html": [
"3000e9d97a1002b41753ca651a0313e090f42bf8",
[
null,
[
[
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5-ref.html",
"=="
]
],
{}
]
],
"grid-item-no-aspect-ratio-stretch-6.html": [
"655040eb446497916470875c7312bfa81d343148",
[
null,
[
[
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6-ref.html",
"=="
]
],
{}
]
],
"grid-item-no-aspect-ratio-stretch-7.html": [
"29dec490b79ac5ee7c21af8013c0917b0642221b",
[
null,
[
[
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-7-ref.html",
"=="
]
],
{}
]
],
"grid-item-no-aspect-ratio-stretch-8.html": [
"933ddd0504efe9a3202d3ded7f661b5cacd1a2c4",
[
null,
[
[
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8-ref.html",
"=="
]
],
{}
]
],
"grid-item-no-aspect-ratio-stretch-9.html": [
"367adae9eb74d5975170ec94893ae84ad1046f0d",
[
null,
[
[
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8-ref.html",
"=="
]
],
{}
]
],
"grid-item-self-baseline-001.html": [
"ccc50c764975906b59f54aa1205a4513149e85f2",
[
@ -159992,6 +160122,19 @@
{}
]
],
"paint-function-this-value.https.html": [
"216913899a931e8144d8a647eccb8ba01037f737",
[
null,
[
[
"/css/css-paint-api/parse-input-arguments-ref.html",
"=="
]
],
{}
]
],
"paint2d-composite.https.html": [
"d654ba49aad6048f88e6ddb6750554dc22b860fb",
[
@ -270699,12 +270842,8 @@
"6d1eedb1fcbfda2bf27f74af1b34763adc62d599",
[]
],
"not-embeddable-frame.html": [
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
[]
],
"not-embeddable-frame.html.sub.headers": [
"beecdb765cd02cc6f15700d773e66e8844b941da",
"not-embeddable-frame.py": [
"50f9c83cf5c2343535f36348459ab8144dbe8cd7",
[]
],
"redirect-throw-function.sub.py": [
@ -302477,6 +302616,38 @@
"d167a5f1542b5a71b51ce06b806a2f9425d7f6ab",
[]
],
"grid-item-no-aspect-ratio-stretch-1-ref.html": [
"6a7862c9acb626a72fda6138fdabd05a37e865ac",
[]
],
"grid-item-no-aspect-ratio-stretch-2-ref.html": [
"69d59e85a3c7134064f516d9e1a32ccb00dc1960",
[]
],
"grid-item-no-aspect-ratio-stretch-3-ref.html": [
"7ee8a2d6bdccc5f50b9f1444cb92a23febe9f81d",
[]
],
"grid-item-no-aspect-ratio-stretch-4-ref.html": [
"9edb8aa76f8fd40302a8dcac27db19b51f2c56b0",
[]
],
"grid-item-no-aspect-ratio-stretch-5-ref.html": [
"6a3446534a1a5e42952f521c9b1634284c4e594b",
[]
],
"grid-item-no-aspect-ratio-stretch-6-ref.html": [
"33f472e71b853651285ff7248226ed4be6c1a603",
[]
],
"grid-item-no-aspect-ratio-stretch-7-ref.html": [
"0d60375f560f3a2d379bd90eac4a062e0a7f420a",
[]
],
"grid-item-no-aspect-ratio-stretch-8-ref.html": [
"09dd27321ab5790927104ccadb4d002dba4f67a7",
[]
],
"grid-item-self-baseline-001-ref.html": [
"6eadf9a02a55822a54fa44715d80bece93997b0f",
[]
@ -322761,7 +322932,7 @@
[]
],
"index.md": [
"90a67c21fce2d1546544c0540d3158fd5bf16a26",
"c1d2fe17a31508d65a9b46da5bb93b3329648ad9",
[]
],
"lint-tool.md": [
@ -322831,7 +323002,7 @@
[]
],
"testharness.md": [
"1e9772a401796da1a9a15f1fea9958843c64dc7e",
"1037eaca03c702383c0b9caab07fa98cdec4b4c0",
[]
],
"tools.md": [
@ -330371,7 +330542,7 @@
[]
],
"dispatcher.py": [
"2617361b0b369bd9efd3aedd42a88f8f46906fe3",
"e77583e479f9506b3f6a5b53293ae25dc3cae8f1",
[]
],
"executor.html": [
@ -350648,7 +350819,7 @@
[]
],
"github_checks_output.py": [
"d799be911660f566701be5ebc3b90caf117075e2",
"16d399002984e0b9daf8a0239b49bedbea50914b",
[]
],
"sink_task.py": [
@ -351253,7 +351424,7 @@
[]
],
"commands.json": [
"a5457b55a3308d47fac178aedd6282d93b36120f",
"ed1d72e60ec33c3b550308bc55eacbf96e0be4c4",
[]
],
"serve.py": [
@ -351261,7 +351432,7 @@
[]
],
"test_functional.py": [
"894479d111c90dad925c683cb0e93ac13fc68619",
"5a918c2ee473e55886dfc70878d3df17b728e6f1",
[]
],
"test_serve.py": [
@ -357049,7 +357220,7 @@
[]
],
"commands.json": [
"a47ab40d72847d5f536e0ac2e02eb3fe0fea233a",
"51f66d0decb09d7a17493ca72a5f13f829d04f3b",
[]
],
"create.py": [
@ -357118,7 +357289,7 @@
[]
],
"test_wpt.py": [
"b5ae79d13112bec1a4f264686338204ba3d62abc",
"0b6aff42d57d7dc8bb4ba936c86b913f58cba791",
[]
]
},
@ -357139,7 +357310,7 @@
[]
],
"wpt.py": [
"395db0394da67caa8bdc1ad9e689e583175192b0",
"efa985c7cc1740eb0fd6e5a80f9e89e24cf75d37",
[]
]
},
@ -358137,7 +358308,7 @@
[]
],
"test_stash.py": [
"1c4c9ad933a37746623a0195f553ad8cfe70688f",
"0b960c1e9f8609dcbd82dbb333434fe0d2700185",
[]
]
},
@ -363523,7 +363694,7 @@
},
"onerror": {
"exception-in-onerror.js": [
"2bf4124cb74b5fa34302ffddce7e44b953d0d472",
"61a95dda51f7e74c3fdff46fcfd09d7f2305dbe5",
[]
],
"handled.js": [
@ -384934,8 +385105,15 @@
}
]
],
"report-frame-ancestors-with-x-frame-options.sub.html": [
"0c58a5efd54ceda6ad5f906b02862976c40f65cd",
[
null,
{}
]
],
"report-frame-ancestors.sub.html": [
"a5aa1661c1085a61bedfe88b41ee389f62f577d2",
"cd7bbcb9731009651c1646907e55e137e9d5fdb5",
[
null,
{}
@ -415517,7 +415695,7 @@
},
"events": {
"AddEventListenerOptions-once.html": [
"ae750702c79d0e2f493537ade1c78558987f536e",
"361c838b736258642c0bf5f26f243544edf2224b",
[
null,
{}
@ -417157,6 +417335,13 @@
{}
]
],
"MutationObserver-callback-arguments.html": [
"d64758cb4fa00d25ad3dafe576a0098c902922b7",
[
null,
{}
]
],
"MutationObserver-characterData.html": [
"addaef03da1ac64ce9e6a6b1c5d244933b2c7f7b",
[
@ -457943,10 +458128,12 @@
]
],
"reporting-observer.html": [
"4d1eda941ae50ce4482c692dafe749ef9e455ac6",
"decad097b6d29acabb6252497f68658002c3478e",
[
null,
{}
{
"timeout": "long"
}
]
]
},
@ -460738,7 +460925,7 @@
]
],
"fieldset-flexbox.html": [
"07c73554e59ccb576e590192e923de6b7100e1ae",
"9e1c9ed152fb6597891b310f6a492d57ae136441",
[
null,
{}
@ -461384,7 +461571,7 @@
"pragma-directives": {
"attr-meta-http-equiv-refresh": {
"allow-scripts-flag-changing-1.html": [
"3bf8cfb6cc8949ec30f3491660f01fb452307ccb",
"196f6d0409a9cc97104f6c15fc7855fb549bfebe",
[
null,
{}
@ -476545,6 +476732,13 @@
{}
]
],
"observer-callback-arguments.html": [
"6e816969d00641af4da1c86d7b7bafc4a3ffbc3b",
[
null,
{}
]
],
"observer-exceptions.html": [
"126790f290d9480dcda7eed6e1b2989ffcc6a70f",
[
@ -477343,6 +477537,20 @@
{}
]
],
"child-shift-with-parent-overflow-hidden.html": [
"d69e55a51b8088ca0a94f3975155646d21792d88",
[
null,
{}
]
],
"child-shift-with-parent.html": [
"7271af6d4a04fbbafebe2b20b372f6f41b31b3a9",
[
null,
{}
]
],
"clip-negative-bottom-margin.html": [
"2c329d9fcd66d86bf8c350c2ee419e28ef6596f4",
[
@ -477380,6 +477588,20 @@
{}
]
],
"inline-flow-shift-vertical-rl.html": [
"a89cad145b277bb7a92b30781a63de18fb76c42f",
[
null,
{}
]
],
"inline-flow-shift.html": [
"0385f29c2f9796818daf38ba5cad2aec7ba4b550",
[
null,
{}
]
],
"local-shift-without-viewport-shift.html": [
"37729f1c13c298b5a2d95c46b7a4f199d8943022",
[
@ -477401,6 +477623,13 @@
{}
]
],
"outline.html": [
"1fed8e92f5e4b60cd83646405b6bd77e673c076f",
[
null,
{}
]
],
"partially-clipped-visual-rect.html": [
"3b18b98dd93312c37b9e2f25918df50266a09243",
[
@ -487210,6 +487439,15 @@
}
]
],
"pointerevent_mouse-pointer-preventdefault.html": [
"a727325a5b1d0e7d4f02899a98cfc5d457e106a4",
[
null,
{
"testdriver": true
}
]
],
"pointerevent_mouse-pointer-updown-events.html": [
"a5433aab535f075b58844481a44588cb578a6bf0",
[
@ -508087,7 +508325,7 @@
]
],
"tee.any.js": [
"b6a95368aa5e64df6ca9e15c034a1b4288883622",
"55d4532ff83929b53db7791be52de8a98743d0f8",
[
null,
{
@ -531672,6 +531910,13 @@
{}
]
],
"render_state_update.https.html": [
"2f28d442ec9889ae9cf6d54b70e1c4c64b862a0f",
[
null,
{}
]
],
"render_state_vertical_fov_immersive.https.html": [
"485438cabf6a633df42a0f94c04922e7274013e1",
[
@ -533668,7 +533913,7 @@
},
"onerror": {
"exception-in-onerror.html": [
"840433d3d894b1a298bbd5bbe2ea14f9fdd81ef4",
"d8aa02a01b8c841b2db575a1b7a77388d66d3dda",
[
null,
{}

View file

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

View file

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

View file

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

View file

@ -1,4 +0,0 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

@ -315,18 +315,18 @@
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
[<iframe>: combined response Content-Type: text/plain;charset=gbk text/html]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL

View file

@ -53,6 +53,9 @@
[combined text/javascript ]
expected: FAIL
[separate text/javascript; charset=windows-1252 text/javascript]
[separate text/javascript x/x]
expected: FAIL
[separate text/javascript;charset=windows-1252 text/javascript]
expected: FAIL

View file

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

View file

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

View file

@ -1,5 +0,0 @@
[skip-another-top-level-browsing-context.html]
expected: TIMEOUT
[Autofocus elements queued in another top-level browsing context's documents should be skipped.]
expected: TIMEOUT

View file

@ -1,5 +1,4 @@
[supported-elements.html]
expected: TIMEOUT
[Contenteditable element should support autofocus]
expected: FAIL
@ -7,14 +6,11 @@
expected: FAIL
[Host element with delegatesFocus including no focusable descendants should be skipped]
expected: NOTRUN
expected: FAIL
[Area element should support autofocus]
expected: NOTRUN
expected: FAIL
[Host element with delegatesFocus should support autofocus]
expected: NOTRUN
[Non-HTMLElement should not support autofocus]
expected: TIMEOUT
expected: FAIL

View file

@ -0,0 +1,2 @@
[fieldset-flexbox.html]
expected: CRASH

View file

@ -172,6 +172,3 @@
[XHTML img usemap="http://example.org/#garbage-before-hash-id"]
expected: FAIL
[HTML (standards) IMG usemap="no-hash-name"]
expected: FAIL

View file

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,4 @@
[form-double-submit-3.html]
[<button> should have the same double-submit protection as <input type=submit>]
expected: FAIL

View file

@ -1,4 +0,0 @@
[form-double-submit.html]
[default submit action should supersede onclick submit()]
expected: FAIL

View file

@ -0,0 +1,4 @@
[iframe_005.html]
[document.write external script into iframe write back into parent]
expected: FAIL

View file

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

View file

@ -2,34 +2,58 @@
expected: ERROR
[tee.any.worker.html]
expected: ERROR
expected: TIMEOUT
[ReadableStreamTee should not pull more chunks than can fit in the branch queue]
expected: FAIL
expected: NOTRUN
[ReadableStreamTee stops pulling when original stream errors while branch 1 is reading]
expected: FAIL
expected: NOTRUN
[ReadableStreamTee stops pulling when original stream errors while both branches are reading]
expected: FAIL
expected: NOTRUN
[ReadableStreamTee stops pulling when original stream errors while branch 2 is reading]
expected: FAIL
expected: NOTRUN
[ReadableStream teeing: canceling branch1 should finish when branch2 reads until end of stream]
expected: TIMEOUT
[ReadableStream teeing: canceling branch1 should finish when original stream errors]
expected: NOTRUN
[ReadableStreamTee should only pull enough to fill the emptiest queue]
expected: NOTRUN
[ReadableStreamTee should not pull when original is already errored]
expected: NOTRUN
[tee.any.serviceworker.html]
expected: ERROR
[tee.any.html]
expected: ERROR
expected: TIMEOUT
[ReadableStreamTee should not pull more chunks than can fit in the branch queue]
expected: FAIL
expected: NOTRUN
[ReadableStreamTee stops pulling when original stream errors while branch 1 is reading]
expected: FAIL
expected: NOTRUN
[ReadableStreamTee stops pulling when original stream errors while both branches are reading]
expected: FAIL
expected: NOTRUN
[ReadableStreamTee stops pulling when original stream errors while branch 2 is reading]
expected: FAIL
expected: NOTRUN
[ReadableStream teeing: canceling branch1 should finish when branch2 reads until end of stream]
expected: TIMEOUT
[ReadableStream teeing: canceling branch1 should finish when original stream errors]
expected: NOTRUN
[ReadableStreamTee should only pull enough to fill the emptiest queue]
expected: NOTRUN
[ReadableStreamTee should not pull when original is already errored]
expected: NOTRUN

View file

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

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,2 +0,0 @@
[Worker-constructor.html]
expected: ERROR

View file

@ -0,0 +1,49 @@
[exception-in-onerror.html]
[Throw in setTimeout(string): classic: listener]
expected: FAIL
[Throw in setTimeout(function): module: listener]
expected: FAIL
[Throw in worker initialization: classic: handler]
expected: FAIL
[Throw in message handler: classic: listener]
expected: FAIL
[Throw in setTimeout(function): classic: handler]
expected: FAIL
[Throw in message handler: module: handler]
expected: FAIL
[Throw in setTimeout(function): module: handler]
expected: FAIL
[Throw in worker initialization: module: handler]
expected: FAIL
[Throw in setTimeout(string): module: listener]
expected: FAIL
[Throw in message handler: classic: handler]
expected: FAIL
[Throw in worker initialization: classic: listener]
expected: FAIL
[Throw in message handler: module: listener]
expected: FAIL
[Throw in setTimeout(string): module: handler]
expected: FAIL
[Throw in setTimeout(function): classic: listener]
expected: FAIL
[Throw in worker initialization: module: listener]
expected: FAIL
[Throw in setTimeout(string): classic: handler]
expected: FAIL

View file

@ -1,8 +1,7 @@
[shared-worker-in-data-url-context.window.html]
expected: TIMEOUT
[Create a shared worker in a data url frame]
expected: FAIL
[Create a data url shared worker in a data url frame]
expected: TIMEOUT
expected: FAIL

View file

@ -0,0 +1,4 @@
[getBoundingClientRect.html]
[getBoundingClientRect 1]
expected: FAIL

View file

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<title>Reporting works with report-only frame-ancestors even if frame is blocked by X-Frame-Options</title>
</head>
<body>
<iframe src="./support/not-embeddable-frame.py?reportID={{$id:uuid()}}&reportOnly=true&xFrameOptions=DENY"></iframe>
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=frame-ancestors&reportID={{$id}}'></script>
</body>
</html>

View file

@ -6,7 +6,7 @@
<title>Reporting works with frame-ancestors</title>
</head>
<body>
<iframe src="./support/not-embeddable-frame.html?reportID={{$id:uuid()}}"></iframe>
<iframe src="./support/not-embeddable-frame.py?reportID={{$id:uuid()}}"></iframe>
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=frame-ancestors&reportID={{$id}}'></script>
</body>
</html>

View file

@ -1,5 +0,0 @@
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0, false
Pragma: no-cache
Content-Security-Policy: frame-ancestors 'none'; report-uri ../../support/report.py?op=put&reportID={{GET[reportID]}}

View file

@ -0,0 +1,10 @@
def main(request, response):
headers = []
if request.GET.first(b'xFrameOptions', None):
headers.append((b'X-Frame-Options', request.GET[b'xFrameOptions']))
csp_header = b'Content-Security-Policy-Report-Only' \
if request.GET.first(b'reportOnly', None) == 'true' else b'Content-Security-Policy'
headers.append((csp_header, b"frame-ancestors 'none'; report-uri ../../support/report.py?op=put&reportID=" + request.GET[b'reportID']))
return headers, b'{}'

View file

@ -0,0 +1,39 @@
<!doctype html>
<meta charset="utf-8">
<title>CSS Test Reference</title>
<style>
body {
line-height: 0;
}
div {
display: inline-block;
height: 250px;
width: 350px;
background: purple;
margin: 10px;
}
svg {
display: block;
background: green;
}
.justify {
width: 350px;
}
.align {
height: 250px;
}
</style>
<div>
<svg class="align justify"></svg>
</div>
<div>
<svg class="align"></svg>
</div>
<div>
<svg class="justify"></svg>
</div>
<div>
<svg></svg>
</div>

View file

@ -0,0 +1,45 @@
<!doctype html>
<meta charset="utf-8">
<title>stretching works for replaced items with no aspect ratio</title>
<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://drafts.csswg.org/css-grid">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
<link rel="match" href="grid-item-no-aspect-ratio-stretch-1-ref.html">
<style>
body {
line-height: 0;
}
div {
display: inline-grid;
height: 250px;
width: 350px;
background: purple;
margin: 10px;
vertical-align: top;
}
svg {
background: green;
}
.justify {
justify-self: stretch;
}
.align {
align-self: stretch;
}
</style>
<div>
<svg class="align justify"></svg>
</div>
<div>
<svg class="align"></svg>
</div>
<div>
<svg class="justify"></svg>
</div>
<div>
<svg></svg>
</div>

View file

@ -0,0 +1,50 @@
<!doctype html>
<meta charset="utf-8">
<title>stretching works for replaced items with no aspect ratio</title>
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://drafts.csswg.org/css-grid">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
<link rel="match" href="grid-item-no-aspect-ratio-stretch-8-ref.html">
<style>
body {
line-height: 0;
}
div {
display: inline-grid;
height: 250px;
width: 350px;
background: grey;
margin: 10px;
vertical-align: top;
}
.justify {
justify-self: stretch;
}
.align {
align-self: stretch;
}
</style>
<div>
<img class="align justify">
</div>
<div>
<img class="align">
</div>
<div>
<img class="justify">
</div>
<div>
<img>
</div>
<script>
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="0px" height="0px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
var imgs = document.querySelectorAll('img');
for (var i = 0; i < imgs.length; ++i) {
var img = imgs[i];
img.src = url;
}
</script>

View file

@ -0,0 +1,53 @@
<!doctype html>
<meta charset="utf-8">
<title>Reference: stretching works for replaced items with no aspect ratio</title>
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<style>
body {
line-height: 0;
}
div {
display: inline-block;
height: 250px;
width: 350px;
background: grey;
margin: 10px;
vertical-align: top;
}
img {
display: block;
width: 300px;
height: 150px;
}
.justify {
width: 350px;
}
.align {
height: 250px;
}
</style>
<div>
<img class="align justify">
</div>
<div>
<img class="align" style="width:20px">
</div>
<div>
<img class="justify">
</div>
<div>
<img style="width:20px">
</div>
<script>
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
var imgs = document.querySelectorAll('img');
for (var i = 0; i < imgs.length; ++i) {
var img = imgs[i];
img.src = url;
}
</script>

View file

@ -0,0 +1,50 @@
<!doctype html>
<meta charset="utf-8">
<title>stretching works for replaced items with no aspect ratio</title>
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://drafts.csswg.org/css-grid">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
<link rel="match" href="grid-item-no-aspect-ratio-stretch-2-ref.html">
<style>
body {
line-height: 0;
}
div {
display: inline-grid;
height: 250px;
width: 350px;
background: grey;
margin: 10px;
vertical-align: top;
}
.justify {
justify-self: stretch;
}
.align {
align-self: stretch;
}
</style>
<div>
<img class="align justify">
</div>
<div>
<img class="align">
</div>
<div>
<img class="justify">
</div>
<div>
<img>
</div>
<script>
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
var imgs = document.querySelectorAll('img');
for (var i = 0; i < imgs.length; ++i) {
var img = imgs[i];
img.src = url;
}
</script>

View file

@ -0,0 +1,53 @@
<!doctype html>
<meta charset="utf-8">
<title>Reference: stretching works for replaced items with no aspect ratio</title>
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<style>
body {
line-height: 0;
}
div {
display: inline-block;
height: 250px;
width: 350px;
background: grey;
margin: 10px;
vertical-align: top;
}
img {
display: block;
width: 300px;
height: 150px;
}
.justify {
width: 350px;
}
.align {
height: 250px;
}
</style>
<div>
<img class="align justify">
</div>
<div>
<img class="align">
</div>
<div>
<img class="justify" style="height:20px">
</div>
<div>
<img style="height:20px">
</div>
<script>
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" height="20px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
var imgs = document.querySelectorAll('img');
for (var i = 0; i < imgs.length; ++i) {
var img = imgs[i];
img.src = url;
}
</script>

View file

@ -0,0 +1,50 @@
<!doctype html>
<meta charset="utf-8">
<title>stretching works for replaced items with no aspect ratio</title>
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://drafts.csswg.org/css-grid">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
<link rel="match" href="grid-item-no-aspect-ratio-stretch-3-ref.html">
<style>
body {
line-height: 0;
}
div {
display: inline-grid;
height: 250px;
width: 350px;
background: grey;
margin: 10px;
vertical-align: top;
}
.justify {
justify-self: stretch;
}
.align {
align-self: stretch;
}
</style>
<div>
<img class="align justify">
</div>
<div>
<img class="align">
</div>
<div>
<img class="justify">
</div>
<div>
<img>
</div>
<script>
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" height="20px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
var imgs = document.querySelectorAll('img');
for (var i = 0; i < imgs.length; ++i) {
var img = imgs[i];
img.src = url;
}
</script>

View file

@ -0,0 +1,53 @@
<!doctype html>
<meta charset="utf-8">
<title>Reference: stretching works for replaced items with no aspect ratio</title>
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<style>
body {
line-height: 0;
}
div {
display: inline-block;
height: 250px;
width: 350px;
background: grey;
margin: 10px;
vertical-align: top;
}
img {
display: block;
width: 300px;
height: 150px;
}
.justify {
width: 350px;
}
.align {
height: 250px;
}
</style>
<div>
<img class="align justify">
</div>
<div>
<img class="align" style="width:10px">
</div>
<div>
<img class="justify" style="height:20px">
</div>
<div>
<img style="width:10px; height:20px">
</div>
<script>
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 100"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
var imgs = document.querySelectorAll('img');
for (var i = 0; i < imgs.length; ++i) {
var img = imgs[i];
img.src = url;
}
</script>

View file

@ -0,0 +1,50 @@
<!doctype html>
<meta charset="utf-8">
<title>stretching works for replaced items with no aspect ratio</title>
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://drafts.csswg.org/css-grid">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
<link rel="match" href="grid-item-no-aspect-ratio-stretch-4-ref.html">
<style>
body {
line-height: 0;
}
div {
display: inline-grid;
height: 250px;
width: 350px;
background: grey;
margin: 10px;
vertical-align: top;
}
.justify {
justify-self: stretch;
}
.align {
align-self: stretch;
}
</style>
<div>
<img class="align justify">
</div>
<div>
<img class="align">
</div>
<div>
<img class="justify">
</div>
<div>
<img>
</div>
<script>
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 50 100"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
var imgs = document.querySelectorAll('img');
for (var i = 0; i < imgs.length; ++i) {
var img = imgs[i];
img.src = url;
}
</script>

View file

@ -0,0 +1,53 @@
<!doctype html>
<meta charset="utf-8">
<title>Reference: stretching works for replaced items with no aspect ratio</title>
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<style>
body {
line-height: 0;
}
div {
display: inline-block;
height: 250px;
width: 350px;
background: grey;
margin: 10px;
vertical-align: top;
}
img {
display: block;
width: 300px;
height: 150px;
}
.justify {
width: 350px;
}
.align {
height: 250px;
}
</style>
<div>
<img class="align justify">
</div>
<div>
<img class="align" style="width:20px">
</div>
<div>
<img class="justify" style="width:350px; height:40px">
</div>
<div>
<img style="width:20px; height:40px">
</div>
<script>
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 100"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
var imgs = document.querySelectorAll('img');
for (var i = 0; i < imgs.length; ++i) {
var img = imgs[i];
img.src = url;
}
</script>

View file

@ -0,0 +1,50 @@
<!doctype html>
<meta charset="utf-8">
<title>stretching works for replaced items with no aspect ratio</title>
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://drafts.csswg.org/css-grid">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
<link rel="match" href="grid-item-no-aspect-ratio-stretch-5-ref.html">
<style>
body {
line-height: 0;
}
div {
display: inline-grid;
height: 250px;
width: 350px;
background: grey;
margin: 10px;
vertical-align: top;
}
.justify {
justify-self: stretch;
}
.align {
align-self: stretch;
}
</style>
<div>
<img class="align justify">
</div>
<div>
<img class="align">
</div>
<div>
<img class="justify">
</div>
<div>
<img>
</div>
<script>
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20px" viewBox="0 0 50 100"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
var imgs = document.querySelectorAll('img');
for (var i = 0; i < imgs.length; ++i) {
var img = imgs[i];
img.src = url;
}
</script>

View file

@ -0,0 +1,54 @@
<!doctype html>
<meta charset="utf-8">
<title>Reference: stretching works for replaced items with no aspect ratio</title>
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<style>
body {
line-height: 0;
}
div {
display: inline-block;
height: 250px;
width: 350px;
background: grey;
margin: 10px;
vertical-align: top;
}
img {
display: block;
width: 300px;
height: 150px;
background: blue;
}
.justify {
width: 350px;
}
.align {
height: 250px;
}
</style>
<div>
<img class="align justify">
</div>
<div>
<img class="align" style="width:0px">
</div>
<div>
<img class="justify" style="height:20px">
</div>
<div>
<img style="width:0px; height:20px">
</div>
<script>
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg"></svg>'
var imgs = document.querySelectorAll('img');
for (var i = 0; i < imgs.length; ++i) {
var img = imgs[i];
img.src = url;
}
</script>

View file

@ -0,0 +1,51 @@
<!doctype html>
<meta charset="utf-8">
<title>stretching works for replaced items with no aspect ratio</title>
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://drafts.csswg.org/css-grid">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
<link rel="match" href="grid-item-no-aspect-ratio-stretch-6-ref.html">
<style>
body {
line-height: 0;
}
div {
display: inline-grid;
height: 250px;
width: 350px;
background: grey;
margin: 10px;
vertical-align: top;
}
img { background: blue; }
.justify {
justify-self: stretch;
}
.align {
align-self: stretch;
}
</style>
<div>
<img class="align justify">
</div>
<div>
<img class="align">
</div>
<div>
<img class="justify">
</div>
<div>
<img>
</div>
<script>
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="0px" height="20px" viewBox="0 0 50 100"></svg>'
var imgs = document.querySelectorAll('img');
for (var i = 0; i < imgs.length; ++i) {
var img = imgs[i];
img.src = url;
}
</script>

View file

@ -0,0 +1,54 @@
<!doctype html>
<meta charset="utf-8">
<title>Reference: stretching works for replaced items with no aspect ratio</title>
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<style>
body {
line-height: 0;
}
div {
display: inline-block;
height: 250px;
width: 350px;
background: grey;
margin: 10px;
vertical-align: top;
}
img {
display: block;
width: 300px;
height: 150px;
background: blue;
}
.justify {
width: 350px;
}
.align {
height: 250px;
}
</style>
<div>
<img class="align justify">
</div>
<div>
<img class="align" style="width:20px">
</div>
<div>
<img class="justify" style="height:0px">
</div>
<div>
<img style="width:20px; height:0px">
</div>
<script>
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg"></svg>'
var imgs = document.querySelectorAll('img');
for (var i = 0; i < imgs.length; ++i) {
var img = imgs[i];
img.src = url;
}
</script>

View file

@ -0,0 +1,51 @@
<!doctype html>
<meta charset="utf-8">
<title>stretching works for replaced items with no aspect ratio</title>
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://drafts.csswg.org/css-grid">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
<link rel="match" href="grid-item-no-aspect-ratio-stretch-7-ref.html">
<style>
body {
line-height: 0;
}
div {
display: inline-grid;
height: 250px;
width: 350px;
background: grey;
margin: 10px;
vertical-align: top;
}
img { background: blue; }
.justify {
justify-self: stretch;
}
.align {
align-self: stretch;
}
</style>
<div>
<img class="align justify">
</div>
<div>
<img class="align">
</div>
<div>
<img class="justify">
</div>
<div>
<img>
</div>
<script>
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20px" height="0px" viewBox="0 0 50 100"></svg>'
var imgs = document.querySelectorAll('img');
for (var i = 0; i < imgs.length; ++i) {
var img = imgs[i];
img.src = url;
}
</script>

View file

@ -0,0 +1,27 @@
<!doctype html>
<meta charset="utf-8">
<title>Reference: stretching works for replaced items with no aspect ratio</title>
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<style>
body {
line-height: 0;
}
div {
display: inline-block;
height: 250px;
width: 350px;
background: grey;
margin: 10px;
vertical-align: top;
}
</style>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>

View file

@ -0,0 +1,50 @@
<!doctype html>
<meta charset="utf-8">
<title>stretching works for replaced items with no aspect ratio</title>
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://drafts.csswg.org/css-grid">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
<link rel="match" href="grid-item-no-aspect-ratio-stretch-8-ref.html">
<style>
body {
line-height: 0;
}
div {
display: inline-grid;
height: 250px;
width: 350px;
background: grey;
margin: 10px;
vertical-align: top;
}
.justify {
justify-self: stretch;
}
.align {
align-self: stretch;
}
</style>
<div>
<img class="align justify">
</div>
<div>
<img class="align">
</div>
<div>
<img class="justify">
</div>
<div>
<img>
</div>
<script>
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="0px" height="20px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
var imgs = document.querySelectorAll('img');
for (var i = 0; i < imgs.length; ++i) {
var img = imgs[i];
img.src = url;
}
</script>

View file

@ -0,0 +1,50 @@
<!doctype html>
<meta charset="utf-8">
<title>stretching works for replaced items with no aspect ratio</title>
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://drafts.csswg.org/css-grid">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
<link rel="match" href="grid-item-no-aspect-ratio-stretch-8-ref.html">
<style>
body {
line-height: 0;
}
div {
display: inline-grid;
height: 250px;
width: 350px;
background: grey;
margin: 10px;
vertical-align: top;
}
.justify {
justify-self: stretch;
}
.align {
align-self: stretch;
}
</style>
<div>
<img class="align justify">
</div>
<div>
<img class="align">
</div>
<div>
<img class="justify">
</div>
<div>
<img>
</div>
<script>
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20px" height="0px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
var imgs = document.querySelectorAll('img');
for (var i = 0; i < imgs.length; ++i) {
var img = imgs[i];
img.src = url;
}
</script>

View file

@ -0,0 +1,43 @@
<!DOCTYPE html>
<html class="reftest-wait">
<meta charset="utf-8">
<title>Paint callback is invoked with `this` value of `paintInstance`</title>
<link rel="help" href="https://drafts.css-houdini.org/css-paint-api-1/#invoke-a-paint-callback">
<link rel="match" href="parse-input-arguments-ref.html">
<style>
.container {
width: 100px;
height: 100px;
}
#canvas-geometry {
background-image: paint(geometry);
}
</style>
<script src="/common/reftest-wait.js"></script>
<script src="/common/worklet-reftest.js"></script>
<body>
<div id="canvas-geometry" class="container"></div>
<script id="code" type="text/worklet">
let paintInstance;
registerPaint('geometry', class {
constructor() {
paintInstance = this;
}
paint(ctx, geom) {
if (this === paintInstance)
ctx.fillStyle = 'green';
else
ctx.fillStyle = 'red';
ctx.fillRect(0, 0, geom.width, geom.height);
}
});
</script>
<script>
importWorkletAndTerminateTestAfterAsyncPaint(CSS.paintWorklet, document.getElementById('code').textContent);
</script>
</body>
</html>

View file

@ -8,43 +8,14 @@ testing plan](making-a-testing-plan) will help you decide what to write.
There's also a load of [general guidelines](general-guidelines) that apply to all tests.
```eval_rst
.. toctree::
:maxdepth: 1
## Test Types
general-guidelines
ahem
assumptions
crashtest
css-metadata
css-user-styles
file-names
h2tests
lint-tool
making-a-testing-plan
manual
reftest-tutorial
reftests
print-reftests
rendering
server-features
submission-process
testdriver
testdriver-extension-tutorial
testharness
testharness-tutorial
tools
visual
wdspec
test-templates
github-intro
```
There are various different ways of writing tests:
## Test Type
Tests in this project use a few different approaches to verify expected
behavior. The tests can be classified based on the way they express
expectations:
* [JavaScript tests (testharness.js)](testharness) are preferred for testing APIs and may be used
for other features too. They are built with the testharness.js unit testing framework, and consist
of assertions written in JavaScript. A high-level [testharness.js tutorial](testharness-tutorial)
is available.
* Rendering tests should be used to verify that the browser graphically
displays pages as expected. See the [rendering test guidelines](rendering)
@ -53,7 +24,8 @@ expectations:
* [Reftests](reftests) should be used to test rendering and layout. They
consist of two or more pages with assertions as to whether they render
identically or not.
identically or not. A high-level [reftest tutorial](reftest-tutorial) is available. A
[print reftests](print-reftests) variant is available too.
* [Visual tests](visual) should be used for checking rendering where there is
a large number of conforming renderings such that reftests are impractical.
@ -61,10 +33,6 @@ expectations:
screenshot can be taken and compared to an expected rendering for that user
agent on that platform.
* [testharness.js](testharness) tests should be used (where possible!) for
testing everything else. They are built with the testharness.js unit testing
framework, and consist of assertions written in JavaScript.
* [Crashtests](crashtest) tests are used to check that the browser is
able to load a given document without crashing or experiencing other
low-level issues (asserts, leaks, etc.). They pass if the load
@ -78,14 +46,6 @@ expectations:
tested using any of the above. They consist of a page that needs manual
interaction or verification of the final result.
In general, there is a strong preference towards reftests and testharness.js
tests types (as they can be easily run without human interaction), so they
should be used in preference to the others even if it results in a
somewhat cumbersome test; there is a far weaker preference between the
two test types, and it is at times advisable to use testharness.js tests
for things which would typically be tested using reftests but for
which it would be overly cumbersome.
See [file names](file-names) for test types and features determined by the file names,
and [server features](server-features) for advanced testing features.
@ -94,3 +54,37 @@ and [server features](server-features) for advanced testing features.
Once you've written tests, please submit them using
the [typical GitHub Pull Request workflow](submission-process); please
make sure you run the [`lint` script](lint-tool) before opening a pull request!
## Table of Contents
```eval_rst
.. toctree::
:maxdepth: 1
general-guidelines
making-a-testing-plan
testharness
testharness-tutorial
rendering
reftests
reftest-tutorial
print-reftests
visual
crashtest
wdspec
manual
file-names
server-features
submission-process
lint-tool
ahem
assumptions
css-metadata
css-user-styles
h2tests
testdriver
testdriver-extension-tutorial
tools
test-templates
github-intro
```

View file

@ -1,4 +1,4 @@
# testharness.js Tests
# JavaScript Tests (testharness.js)
```eval_rst
.. toctree::

View file

@ -78,4 +78,21 @@ test(function() {
assert_equals(invoked_count, 0, "The handler should have been removed");
}, "Once listener should be added / removed like normal listeners");
test(function() {
var invoked_count = 0;
for (let n = 4; n > 0; n--) {
document.addEventListener('test', (e) => {
invoked_count++;
e.stopImmediatePropagation();
}, {once: true});
}
for (let n = 4; n > 0; n--) {
document.dispatchEvent(new Event('test'));
}
assert_equals(invoked_count, 4, "The listeners should be invoked");
}, "Multiple once listeners should be invoked even if the stopImmediatePropagation is set");
</script>

View file

@ -0,0 +1,31 @@
<!DOCTYPE HTML>
<meta charset=utf-8>
<title>MutationObserver: callback arguments</title>
<link rel="help" href="https://dom.spec.whatwg.org/#notify-mutation-observers">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="mo-target"></div>
<div id="log"></div>
<script>
"use strict";
async_test(t => {
const moTarget = document.querySelector("#mo-target");
const mo = new MutationObserver(function(records, observer) {
t.step(() => {
assert_equals(this, mo);
assert_equals(arguments.length, 2);
assert_true(Array.isArray(records));
assert_equals(records.length, 1);
assert_true(records[0] instanceof MutationRecord);
assert_equals(observer, mo);
mo.disconnect();
t.done();
});
});
mo.observe(moTarget, {attributes: true});
moTarget.className = "trigger-mutation";
}, "Callback is invoked with |this| value of MutationObserver and two arguments");
</script>

View file

@ -1,3 +1,6 @@
<!doctype html>
<meta charset="utf-8">
<meta name="timeout" content="long">
<title>
Check the ReportingObserver(s) are notified about the coop-access-violation
events.
@ -12,8 +15,10 @@
const directory = "/html/cross-origin-opener-policy/reporting";
const executor_path = directory + "/resources/executor.html?pipe=";
const https = get_host_info().HTTPS_ORIGIN;
const same_origin = get_host_info().HTTPS_ORIGIN;
const cross_site = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
const corp_header = '|header(Cross-Origin-Resource-Policy,cross-origin)';
promise_test(async t => {
// This test window.
@ -22,13 +27,13 @@ promise_test(async t => {
// The "opener" window, using COOP-Report-Only and a reporter.
const opener_token = token();
const opener_reportTo = reportToHeaders(token());
const opener_url = https + executor_path + opener_reportTo.header +
const opener_url = same_origin + executor_path + opener_reportTo.header +
opener_reportTo.coopReportOnlySameOriginHeader + coep_header +
`&uuid=${opener_token}`;
// The "openee" window, NOT using COOP.
const openee_token = token();
const openee_url = https + executor_path + `&uuid=${openee_token}`;
const openee_url = same_origin + executor_path + `&uuid=${openee_token}`;
// 1. Create the opener window.
window.open(opener_url);
@ -82,12 +87,12 @@ promise_test(async t => {
// The "opener" window, NOT using COOP.
const opener_token = token();
const opener_url = https + executor_path + `&uuid=${opener_token}`;
const opener_url = same_origin + executor_path + `&uuid=${opener_token}`;
// The "openee" window, using COOP-Report-Only and a reporter.
const openee_token = token();
const openee_reportTo = reportToHeaders(token());
const openee_url = https + executor_path + openee_reportTo.header +
const openee_url = same_origin + executor_path + openee_reportTo.header +
openee_reportTo.coopReportOnlySameOriginHeader + coep_header +
`&uuid=${openee_token}`;
@ -132,4 +137,126 @@ promise_test(async t => {
let report_access_to = JSON.parse(await receive(this_window_token));
assert_equals(report_access_to.length, 0, "Unexpected report received.");
}, "Openee COOP");
promise_test(async t => {
// This test window.
const this_window_token = token();
// The "opener" window, using COOP-Report-Only and a reporter.
const opener_token = token();
const opener_reportTo = reportToHeaders(token());
const opener_url = same_origin + executor_path + opener_reportTo.header +
opener_reportTo.coopReportOnlySameOriginHeader + coep_header +
`&uuid=${opener_token}`;
// The "opener's iframe", same-origin with its parent.
const opener_iframe_token = token();
const opener_iframe_url = same_origin + executor_path + coep_header +
`&uuid=${opener_iframe_token}`;
// The "openee" window, NOT using COOP.
const openee_token = token();
const openee_url = same_origin + executor_path + coep_header +
`&uuid=${openee_token}`;
// 1. Create the opener window.
window.open(opener_url);
t.add_cleanup(() => send(opener_token, "window.close();"));
// 2. The opener opens an iframe, and install a ReportingObserver to catch
// future accesses.
send(opener_token, `
iframe = document.createElement("iframe");
iframe.src = "${opener_iframe_url}";
document.body.appendChild(iframe);
let observer = new ReportingObserver(reports => {
send("${this_window_token}", JSON.stringify(reports));
observer.disconnect();
});
observer.observe();
`);
// 3. The iframe opens the openee.
send(opener_iframe_token, `openee = window.open('${openee_url}');`);
t.add_cleanup(() => send(openee_token, `window.close();`));
// 4. Wait for the openee to load its document.
send(openee_token, `send("${this_window_token}", "Ready");`);
assert_equals(await receive(this_window_token), "Ready");
// 4. The opener's iframe tries to access the openee. This is an
// "access-from-coop-page" from a same-origin iframe, so the
// ReportingObserver(s) are notified.
send(opener_iframe_token, `tryAccess(openee);`);
let reports = await receive(this_window_token);
assert_not_equals(reports, "timeout", "No report received.");
reports = JSON.parse(reports);
assert_equals(reports.length, 1, "No report received.");
assert_equals(reports[0].type, "coop-access-violation");
assert_equals(reports[0].url, opener_url.replace(/"/g, '%22'));
assert_true(reports[0].body.sourceFile.includes("try-access.js"));
assert_equals(reports[0].body.lineNumber, 6);
assert_equals(reports[0].body.columnNumber, 7);
assert_equals(reports[0].body.property, "blur");
}, "Access from same-origin iframe")
promise_test(async t => {
// This test window.
const this_window_token = token();
// The "opener" window, using COOP-Report-Only and a reporter.
const opener_token = token();
const opener_reportTo = reportToHeaders(token());
const opener_url = same_origin + executor_path + opener_reportTo.header +
opener_reportTo.coopReportOnlySameOriginHeader + coep_header +
`&uuid=${opener_token}`;
// The "opener's iframe", same-origin with its parent.
const opener_iframe_token = token();
const opener_iframe_url = cross_site + executor_path + coep_header +
corp_header +
`&uuid=${opener_iframe_token}`;
// The "openee" window, NOT using COOP.
const openee_token = token();
const openee_url = same_origin + executor_path + coep_header +
`&uuid=${openee_token}`;
// 1. Create the opener window.
window.open(opener_url);
t.add_cleanup(() => send(opener_token, "window.close();"));
// 2. The opener opens an iframe, and install a ReportingObserver to catch
// future accesses.
send(opener_token, `
iframe = document.createElement("iframe");
iframe.src = "${opener_iframe_url}";
document.body.appendChild(iframe);
let observer = new ReportingObserver(reports => {
send("${this_window_token}", JSON.stringify(reports));
observer.disconnect();
});
observer.observe();
`);
// 3. The iframe opens the openee.
send(opener_iframe_token, `openee = window.open('${openee_url}');`);
t.add_cleanup(() => send(openee_token, `window.close();`));
// 4. Wait for the openee to load its document.
send(openee_token, `send("${this_window_token}", "Ready");`);
assert_equals(await receive(this_window_token), "Ready");
// 5. The opener's iframe tries to access the openee. This is an
// "access-from-coop-page" from a cross-site iframe. The ReportingObservers
// from the main document aren't notified.
send(opener_iframe_token, `tryAccess(openee);`);
let reports = await receive(this_window_token);
assert_equals(reports, "timeout", "Unexpected report received.");
}, "Access from cross-site iframe")
</script>

View file

@ -9,12 +9,19 @@ def main(request, response):
return b''
uuid = request.GET[b'uuid']
stash = request.server.stash;
with stash.lock:
queue = stash.take(uuid)
if queue is None:
queue = []
if request.method == u'POST':
return request.server.stash.put(uuid, request.body)
else:
body = request.server.stash.take(uuid)
if body is None:
return b'not ready'
if request.method == u'POST':
queue.append(request.body)
ret = b'done'
else:
return body
if len(queue) == 0:
ret = b'not ready'
else:
ret = queue.pop(0)
stash.put(uuid, queue)
return ret;

View file

@ -81,4 +81,15 @@ legend {
testElm.querySelector('div').offsetTop, 'offsetTop')
}, "Inline flex");
test(() => {
const testElm = document.getElementById('test');
testElm.style.flexDirection = 'row';
const item0 = testElm.querySelectorAll('div')[0];
const item1 = testElm.querySelectorAll('div')[1];
assert_equals(item0.offsetTop, item1.offsetTop);
testElm.style.flexDirection = 'column';
assert_true(item0.offsetTop < item1.offsetTop);
}, "Dynamic change of flex-direction");
</script>

View file

@ -33,7 +33,10 @@ destIFrame.onload = () => {
++destLoadCount;
if (destLoadCount === 2) {
assert_unreached("The iframe into which the meta was moved must not refresh");
// destIFrame doesn't have the sandboxed automatic features browsing context
// flag sets, thus navigated.
assert_equals(destIFrame.contentDocument.body.textContent.trim(), "foo");
done();
}
maybeStartTest();
@ -41,9 +44,6 @@ destIFrame.onload = () => {
function maybeStartTest() {
if (sourceLoadCount === 1 && destLoadCount === 1) {
// Test that no refreshes occur within 3 seconds
step_timeout(done, 3000);
const meta = sourceIFrame.contentDocument.querySelector("meta");
destIFrame.contentDocument.body.appendChild(meta);
}

View file

@ -0,0 +1,28 @@
<!DOCTYPE HTML>
<meta charset=utf-8>
<title>IntersectionObserver: callback arguments</title>
<link rel="help" href="https://w3c.github.io/IntersectionObserver/#notify-intersection-observers-algo">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
"use strict";
async_test(t => {
const io = new IntersectionObserver(function(entries, observer) {
t.step(() => {
assert_equals(this, io);
assert_equals(arguments.length, 2);
assert_true(Array.isArray(entries));
assert_equals(entries.length, 1);
assert_true(entries[0] instanceof IntersectionObserverEntry);
assert_equals(observer, io);
io.disconnect();
t.done();
});
});
io.observe(document.body);
}, "Callback is invoked with |this| value of IntersectionObserver and two arguments");
</script>

View file

@ -0,0 +1,32 @@
<!DOCTYPE html>
<title>Layout Instability: parent (with overflow:hidden) and child moved together</title>
<link rel="help" href="https://wicg.github.io/layout-instability/" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/util.js"></script>
<div id="parent" style="position: relative; width: 200px; height: 200px;
border: 50px solid blue; overflow: hidden">
<div id="child" style="height: 400px"></div>
</div>
<script>
promise_test(async () => {
const watcher = new ScoreWatcher;
// Wait for the initial render to complete.
await waitForAnimationFrames(2);
// Modify the position of the div.
const parent = document.querySelector("#parent");
parent.style.top = '100px';
// Only the parent area should be reported.
const expectedScore = computeExpectedScore(300 * (300 + 100), 100);
// Observer fires after the frame is painted.
assert_equals(watcher.score, 0);
await watcher.promise;
assert_equals(watcher.score, expectedScore);
}, 'Parent (with overflow:hidden) and child moved together.');
</script>

View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<title>Layout Instability: parent/child moved together</title>
<link rel="help" href="https://wicg.github.io/layout-instability/" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/util.js"></script>
<div id="parent" style="position: relative; width: 100px; height: 100px; border: 100px solid blue">
<div id="child" style="height: 300px"></div>
</div>
<script>
promise_test(async () => {
const watcher = new ScoreWatcher;
// Wait for the initial render to complete.
await waitForAnimationFrames(2);
// Modify the position of the div.
const parent = document.querySelector("#parent");
parent.style.top = '100px';
// If the implementation reports child and parent separately
// (overlapping are should be excluded):
const expectedScoreMin = computeExpectedScore(300 * (300 + 100) + 100 * 100, 100);
// If the implementation reports parent bounding box (including child):
const expectedScoreMax = computeExpectedScore(300 * (400 + 100), 100);
// Observer fires after the frame is painted.
assert_equals(watcher.score, 0);
await watcher.promise;
assert_between_inclusive(watcher.score, expectedScoreMin, expectedScoreMax);
}, 'Parent/child movement.');
</script>

View file

@ -0,0 +1,44 @@
<!DOCTYPE html>
<title>Layout Instability: vertical-rl inline/text movement is detected</title>
<link rel="help" href="https://wicg.github.io/layout-instability/" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/util.js"></script>
<body style="writing-mode: vertical-rl">
<div style="height: 200px; font-size: 20px; line-height: 25px">
1AAAAAAA<br>
2AAAAAAA<br>
3AAAAAAA<br>
<div id="inline-block" style="display: inline-block; width: 50px">4AAAAAAA</div><br>
5AAAAAAA<br>
6AAAAAAA<br>
7AAAAAAA<br>
</div>
<script>
promise_test(async () => {
const watcher = new ScoreWatcher;
// Wait for the initial render to complete.
await waitForAnimationFrames(2);
// Modify the position of the div.
const inline_block = document.querySelector("#inline-block");
inline_block.style.width = '100px';
// The lines below the inline-block are shifted down by 50px.
// The implementation may measure the real width of the shifted text
// or use the available width (i.e. width of the containing block).
// Also tolerate extra 10% error.
const text_width = inline_block.offsetWidth;
const expectedScoreMin = computeExpectedScore(text_width * (30 * 3 + 50), 50) * 0.9;
const expectedScoreMax = computeExpectedScore(200 * (30 * 3 + 50), 50) * 1.1;
// Observer fires after the frame is painted.
assert_equals(watcher.score, 0);
await watcher.promise;
assert_between_exclusive(watcher.score, expectedScoreMin, expectedScoreMax);
}, 'Vertical-rl inline flow movement.');
</script>
</body>

View file

@ -0,0 +1,42 @@
<!DOCTYPE html>
<title>Layout Instability: inline/text movement is detected</title>
<link rel="help" href="https://wicg.github.io/layout-instability/" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/util.js"></script>
<div style="width: 200px; font-size: 20px; line-height: 25px">
1AAAAAAA<br>
2AAAAAAA<br>
3AAAAAAA<br>
<div id="inline-block" style="display: inline-block; height: 50px">4AAAAAAA</div><br>
5AAAAAAA<br>
6AAAAAAA<br>
7AAAAAAA<br>
</div>
<script>
promise_test(async () => {
const watcher = new ScoreWatcher;
// Wait for the initial render to complete.
await waitForAnimationFrames(2);
// Modify the position of the div.
const inline_block = document.querySelector("#inline-block");
inline_block.style.height = '100px';
// The lines below the inline-block are shifted down by 50px.
// The implementation may measure the real width of the shifted text
// or use the available width (i.e. width of the containing block).
// Also tolerate extra 10% error.
const text_width = inline_block.offsetWidth;
const expectedScoreMin = computeExpectedScore(text_width * (30 * 3 + 50), 50) * 0.9;
const expectedScoreMax = computeExpectedScore(200 * (30 * 3 + 50), 50) * 1.1;
// Observer fires after the frame is painted.
assert_equals(watcher.score, 0);
await watcher.promise;
assert_between_exclusive(watcher.score, expectedScoreMin, expectedScoreMax);
}, 'Inline flow movement.');
</script>

View file

@ -0,0 +1,21 @@
<!DOCTYPE html>
<title>Layout Instability: outline doesn't contribute to layout shift</title>
<link rel="help" href="https://wicg.github.io/layout-instability/" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/util.js"></script>
<div id="target" style="width: 300px; height: 300px"></div>
<script>
promise_test(async () => {
const watcher = new ScoreWatcher;
// Wait for the initial render to complete.
await waitForAnimationFrames(2);
// Add outline for target. This should not generate a shift.
target.style.outline = "10px solid blue";
await waitForAnimationFrames(3);
assert_equals(watcher.score, 0);
}, "Outline.");
</script>

View file

@ -0,0 +1,199 @@
<!DOCTYPE HTML>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script type="text/javascript" src="../pointerevent_support.js"></script>
<style>
div.box {
margin: 10px;
padding: 50px;
float: left;
}
</style>
<h1>Verifies the effect of pointer event prevent-default on following pointer & mouse events.</h1>
<div id="target" class="box" style="background-color:green;">
</div>
<script>
var receivedEvents = [];
var mouseEventList = ["mousedown", "mouseup", "mouseenter", "mouseleave", "mouseover", "mouseout", "mousemove"];
var pointerEventList = ["pointerdown", "pointerup", "pointerenter", "pointerleave", "pointerover", "pointerout", "pointermove"];
var preventDefaultList = ["none"].concat(pointerEventList);
var eventToPreventDefault = "";
var seqNo = 0;
function init() {
var targetDiv = document.getElementById("target");
mouseEventList.forEach(function(eventName) {
targetDiv.addEventListener(eventName, function(event) {
++seqNo;
receivedEvents.push(`${seqNo}.${eventName}@target`);
});
});
pointerEventList.forEach(function(eventName) {
targetDiv.addEventListener(eventName, function(event) {
var preventDefaultMsg = "";
if (event.type == eventToPreventDefault) {
event.preventDefault();
preventDefaultMsg = "_prevented_default";
}
++seqNo;
receivedEvents.push(`${seqNo}.${eventName}@target${preventDefaultMsg}`);
});
});
}
var expectedEvents = new Map([
["none", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target",
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target",
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
"13.pointermove@target", "14.mousemove@target", "15.pointerout@target",
"16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target",
"19.pointerover@target", "20.pointerenter@target", "21.mouseover@target",
"22.mouseenter@target", "23.pointermove@target", "24.mousemove@target",
"25.pointerup@target", "26.mouseup@target", "27.pointerout@target",
"28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"
]],
["pointerdown", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target",
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
"7.pointerdown@target_prevented_default", "8.pointerup@target",
"9.pointerdown@target_prevented_default",
"10.pointermove@target", "11.pointerout@target", "12.pointerleave@target",
"13.mouseout@target", "14.mouseleave@target", "15.pointerover@target",
"16.pointerenter@target", "17.mouseover@target", "18.mouseenter@target",
"19.pointermove@target", "20.pointerup@target", "21.pointerout@target",
"22.pointerleave@target", "23.mouseout@target", "24.mouseleave@target"
]],
["pointerup", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target",
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target_prevented_default",
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
"13.pointermove@target", "14.mousemove@target", "15.pointerout@target",
"16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target",
"19.pointerover@target", "20.pointerenter@target", "21.mouseover@target",
"22.mouseenter@target", "23.pointermove@target", "24.mousemove@target",
"25.pointerup@target_prevented_default", "26.mouseup@target", "27.pointerout@target",
"28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]],
["pointerenter", ["1.pointerover@target", "2.pointerenter@target_prevented_default", "3.mouseover@target",
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target",
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
"13.pointermove@target", "14.mousemove@target", "15.pointerout@target",
"16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target",
"19.pointerover@target", "20.pointerenter@target_prevented_default", "21.mouseover@target",
"22.mouseenter@target", "23.pointermove@target", "24.mousemove@target",
"25.pointerup@target", "26.mouseup@target", "27.pointerout@target",
"28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]],
["pointerleave", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target",
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target",
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
"13.pointermove@target", "14.mousemove@target", "15.pointerout@target",
"16.pointerleave@target_prevented_default", "17.mouseout@target", "18.mouseleave@target",
"19.pointerover@target", "20.pointerenter@target", "21.mouseover@target",
"22.mouseenter@target", "23.pointermove@target", "24.mousemove@target",
"25.pointerup@target", "26.mouseup@target", "27.pointerout@target",
"28.pointerleave@target_prevented_default", "29.mouseout@target", "30.mouseleave@target"]],
["pointerover", ["1.pointerover@target_prevented_default", "2.pointerenter@target", "3.mouseover@target",
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target",
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
"13.pointermove@target", "14.mousemove@target", "15.pointerout@target",
"16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target",
"19.pointerover@target_prevented_default", "20.pointerenter@target", "21.mouseover@target",
"22.mouseenter@target", "23.pointermove@target", "24.mousemove@target",
"25.pointerup@target", "26.mouseup@target", "27.pointerout@target",
"28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]],
["pointerout", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target",
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target",
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
"13.pointermove@target", "14.mousemove@target", "15.pointerout@target_prevented_default",
"16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target",
"19.pointerover@target", "20.pointerenter@target", "21.mouseover@target",
"22.mouseenter@target", "23.pointermove@target", "24.mousemove@target",
"25.pointerup@target", "26.mouseup@target", "27.pointerout@target_prevented_default",
"28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]],
["pointermove", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target",
"4.mouseenter@target", "5.pointermove@target_prevented_default", "6.mousemove@target",
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target",
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
"13.pointermove@target_prevented_default", "14.mousemove@target", "15.pointerout@target",
"16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target",
"19.pointerover@target", "20.pointerenter@target", "21.mouseover@target",
"22.mouseenter@target", "23.pointermove@target_prevented_default", "24.mousemove@target",
"25.pointerup@target", "26.mouseup@target", "27.pointerout@target",
"28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]]
]);
async function runTestForDefaultEvent(preventDefaultEvent) {
promise_test((test)=>
new Promise(async (resolve, reject)=>{
test.add_cleanup(()=>{
receivedEvents = [];
seqNo = 0;
eventToPreventDefault = "";
});
eventToPreventDefault = preventDefaultEvent;
try{
// if awaited Promise rejects then fail the test
await performActions(test, preventDefaultEvent);
}
catch(e){
reject(e);
}
test.step(()=>{
assert_array_equals(expectedEvents.get(preventDefaultEvent), receivedEvents);});
resolve();
}), `Verifies the effect of pointer event prevent-default on ${preventDefaultEvent}`);
}
async function runTests(){
// create one test for each event in preventDefaultList
// run all tests one by one
preventDefaultList.forEach(preventDefaultEvent=>runTestForDefaultEvent(preventDefaultEvent));
}
function performActions(test, preventDefaultEvent){
let targetDiv = document.getElementById("target");
let rect = targetDiv.getBoundingClientRect();
let x1 = Math.ceil(rect.left - 3);
let y1 = Math.ceil(rect.top - 5);
let x2 = Math.ceil(rect.left + 3);
let y2 = Math.ceil(rect.top + 5);
let eventWatcher = new EventWatcher(test, targetDiv, ["mouseleave"], ()=>waitForAnimationFrames(900));
// wait for all expected events to happen.
// Because each test ends with mouseleave and there are 2 mouseleave events,
// we use EventWatcher to wait for the two mouseleave events to happen
let donePromise = eventWatcher.wait_for(["mouseleave", "mouseleave"], { record: 'all' });
let actionsPromise = new test_driver.Actions()
.pointerMove(0, 0)
// start with mouse outside target
.pointerMove(x1, y1)
// move into target and click
.pointerMove(x2, y2)
.pointerDown()
.pointerUp()
// drag out of and into target & release within target
.pointerDown()
.pointerMove(x2+5, y2+5)
.pointerMove(x1, y1)
.pointerMove(x2, y2)
.pointerUp()
// move outside target again
.pointerMove(x1, y1)
.send();
return Promise.all([donePromise, actionsPromise]);
}
init();
runTests();
</script>

View file

@ -317,6 +317,57 @@ promise_test(t => {
}, 'ReadableStream teeing: erroring the original should immediately error the branches');
promise_test(async t => {
let controller;
const rs = new ReadableStream({
start(c) {
controller = c;
}
});
const [reader1, reader2] = rs.tee().map(branch => branch.getReader());
const cancelPromise = reader2.cancel();
controller.enqueue('a');
const read1 = await reader1.read();
assert_object_equals(read1, { value: 'a', done: false }, 'first read() from branch1 should fulfill with the chunk');
controller.close();
const read2 = await reader1.read();
assert_object_equals(read2, { value: undefined, done: true }, 'second read() from branch1 should be done');
await Promise.all([
reader1.closed,
cancelPromise
]);
}, 'ReadableStream teeing: canceling branch1 should finish when branch2 reads until end of stream');
promise_test(async t => {
let controller;
const theError = { name: 'boo!' };
const rs = new ReadableStream({
start(c) {
controller = c;
}
});
const [reader1, reader2] = rs.tee().map(branch => branch.getReader());
const cancelPromise = reader2.cancel();
controller.error(theError);
await Promise.all([
promise_rejects_exactly(t, theError, reader1.read()),
cancelPromise
]);
}, 'ReadableStream teeing: canceling branch1 should finish when original stream errors');
test(t => {
// Copy original global.

View file

@ -21,7 +21,7 @@ def get_gh_checks_outputter(kwargs):
"""Return the outputter for GitHub Checks output, if enabled.
:param kwargs: The arguments passed to the program (to look for the
--github_checks_text_file flag)
github_checks_text_file field)
"""
global __outputter
if kwargs['github_checks_text_file'] and __outputter is None:

View file

@ -12,7 +12,6 @@
"parser": "get_parser",
"help": "Run wptserve server for WAVE",
"virtualenv": true,
"install": ["ua-parser"],
"requirements": ["../wave/requirements.txt"]
}
}

View file

@ -9,6 +9,7 @@ try:
import Queue as queue # noqa: N813
except ImportError:
import queue
import sys
import tempfile
import threading
@ -45,6 +46,8 @@ def tempfile_name():
os.remove(name)
@pytest.mark.skipif(sys.version_info >= (3, 8) and sys.platform == 'darwin',
reason="multiprocessing test hangs in Python 3.8 on macOS (#24880)")
def test_subprocess_exit(server_subprocesses, tempfile_name):
timeout = 30

View file

@ -6,7 +6,6 @@
"help": "Run tests in a browser",
"virtualenv": true,
"install": [
"requests",
"zstandard"
],
"requirements": [
@ -25,9 +24,6 @@
"parser": "create_parser_update",
"help": "Update expectations files from raw logs.",
"virtualenv": true,
"install": [
"requests"
],
"requirements": [
"../wptrunner/requirements.txt"
]
@ -51,6 +47,7 @@
"script": "run",
"parser": "get_parser",
"help": "Install browser components",
"virtualenv": true,
"install": [
"mozinstall"
]

View file

@ -188,6 +188,8 @@ def test_run_zero_tests():
@pytest.mark.slow
@pytest.mark.remote_network
@pytest.mark.skipif(sys.version_info >= (3, 8) and sys.platform == 'darwin',
reason="multiprocessing test hangs in Python 3.8 on macOS (#24880)")
def test_run_failing_test():
"""Failing tests should be reported with a non-zero exit status unless the
`--no-fail-on-unexpected` option has been specified."""
@ -211,6 +213,8 @@ def test_run_failing_test():
@pytest.mark.slow
@pytest.mark.remote_network
@pytest.mark.skipif(sys.version_info >= (3, 8) and sys.platform == 'darwin',
reason="multiprocessing test hangs in Python 3.8 on macOS (#24880)")
def test_run_verify_unstable(temp_test):
"""Unstable tests should be reported with a non-zero exit status. Stable
tests should be reported with a zero exit status."""

View file

@ -38,6 +38,8 @@ def load_commands():
"requirements": [os.path.join(base_dir, item)
for item in props.get("requirements", [])]
}
if rv[command]["install"] or rv[command]["requirements"]:
assert rv[command]["virtualenv"]
return rv

Some files were not shown because too many files have changed in this diff Show more