Auto merge of #28241 - servo-wpt-sync:wpt_update_05-03-2021, r=jdm

Sync WPT with upstream (05-03-2021)

Automated downstream sync of changes from upstream as of 05-03-2021.
[no-wpt-sync]
r? @servo-wpt-sync
This commit is contained in:
bors-servo 2021-03-05 19:02:41 -05:00 committed by GitHub
commit c220d886c2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
65 changed files with 620 additions and 460 deletions

View file

@ -4,7 +4,7 @@
expected: TIMEOUT
[Opening a blob URL in a new window immediately before revoking it works.]
expected: FAIL
expected: TIMEOUT
[Fetching a blob URL immediately before revoking it works in an iframe.]
expected: FAIL

View file

@ -86,129 +86,6 @@
[background-position length(px) / events]
expected: FAIL
[background-color color(rgba) / events]
expected: FAIL
[border-top-width length(pt) / events]
expected: FAIL
[border-top-width length(pc) / events]
expected: FAIL
[border-top-width length(px) / events]
expected: FAIL
[border-top-width length(em) / events]
expected: FAIL
[border-top-width length(ex) / events]
expected: FAIL
[border-top-width length(mm) / events]
expected: FAIL
[border-top-width length(cm) / events]
expected: FAIL
[border-top-width length(in) / events]
expected: FAIL
[border-right-width length(pt) / events]
expected: FAIL
[border-right-width length(pc) / events]
expected: FAIL
[border-right-width length(px) / events]
expected: FAIL
[border-right-width length(em) / events]
expected: FAIL
[border-right-width length(ex) / events]
expected: FAIL
[border-right-width length(mm) / events]
expected: FAIL
[border-right-width length(cm) / events]
expected: FAIL
[border-right-width length(in) / events]
expected: FAIL
[border-bottom-width length(pt) / events]
expected: FAIL
[border-bottom-width length(pc) / events]
expected: FAIL
[border-bottom-width length(px) / events]
expected: FAIL
[border-bottom-width length(em) / events]
expected: FAIL
[border-bottom-width length(ex) / events]
expected: FAIL
[border-bottom-width length(mm) / events]
expected: FAIL
[border-bottom-width length(cm) / events]
expected: FAIL
[border-bottom-width length(in) / events]
expected: FAIL
[border-left-width length(pt) / events]
expected: FAIL
[border-left-width length(pc) / events]
expected: FAIL
[border-left-width length(px) / events]
expected: FAIL
[border-left-width length(em) / events]
expected: FAIL
[border-left-width length(ex) / events]
expected: FAIL
[border-left-width length(mm) / events]
expected: FAIL
[border-left-width length(cm) / events]
expected: FAIL
[border-left-width length(in) / events]
expected: FAIL
[border-top-color color(rgba) / events]
expected: FAIL
[border-right-color color(rgba) / events]
expected: FAIL
[border-bottom-color color(rgba) / events]
expected: FAIL
[border-left-color color(rgba) / events]
expected: FAIL
[padding-bottom length(pt) / events]
expected: FAIL
[padding-bottom length(pc) / events]
expected: FAIL
[padding-bottom length(px) / events]
expected: FAIL
[padding-bottom length(em) / events]
expected: FAIL
[padding-bottom length(ex) / events]
expected: FAIL

View file

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

View file

@ -309,21 +309,12 @@
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
expected: NOTRUN
[<iframe>: separate response Content-Type: text/plain */*]
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: */* text/html]
[<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*]
expected: FAIL
[<iframe>: combined 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;x=" text/plain]
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL

View file

@ -56,6 +56,3 @@
[separate text/javascript x/x]
expected: FAIL
[separate text/javascript ]
expected: FAIL

View file

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

View file

@ -1,2 +0,0 @@
[cross-origin-objects-on-new-window.html]
expected: TIMEOUT

View file

@ -1,5 +1,4 @@
[supported-elements.html]
expected: TIMEOUT
[Contenteditable element should support autofocus]
expected: FAIL
@ -10,7 +9,7 @@
expected: FAIL
[Area element should support autofocus]
expected: TIMEOUT
expected: FAIL
[Host element with delegatesFocus should support autofocus]
expected: FAIL

View file

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

View file

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

View file

@ -1,5 +1,4 @@
[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: TIMEOUT
expected: FAIL

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

View file

@ -1,22 +1,10 @@
[select-event.html]
[textarea: selectionStart a second time (must not fire select)]
expected: FAIL
[input type search: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[input type password: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type text: selectionStart a second time (must not fire select)]
expected: FAIL
[input type text: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[input type search: setRangeText() a second time (must not fire select)]
expected: FAIL
[input type search: selectionStart a second time (must not fire select)]
expected: FAIL
@ -35,30 +23,54 @@
[input type text: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type search: selectionEnd a second time (must not fire select)]
expected: FAIL
[input type tel: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type tel: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type url: selectionStart a second time (must not fire select)]
expected: FAIL
[input type url: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type password: select() a second time (must not fire select)]
expected: FAIL
[input type password: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type password: selectionStart out of range a second time (must not fire select)]
[textarea: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type password: selectionEnd out of range a second time (must not fire select)]
[textarea: setRangeText() a second time (must not fire select)]
expected: FAIL
[textarea: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type text: selectionEnd a second time (must not fire select)]
expected: FAIL
[input type text: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type text: setRangeText() a second time (must not fire select)]
expected: FAIL
[input type search: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type search: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type search: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type tel: setRangeText() a second time (must not fire select)]
expected: FAIL
[input type url: select() a second time (must not fire select)]
expected: FAIL
[input type url: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type url: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type password: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL

View file

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

View file

@ -608,3 +608,15 @@
[X SNR (40.857403325570765 dB) is not greater than or equal to 65.737. Got 40.857403325570765.]
expected: FAIL
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[15240\]\t-1.5116663102269030e+17\t3.3531737327575684e-1\t1.5116663102269030e+17\t4.5081657877110515e+17\t9.0957000000000003e-5\n\t[15241\]\t4.5846281857315040e-41\t3.9367997646331787e-1\t3.9367997646331787e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 1.5116663102269030e+17 at index of 15240.\n\tMax RelError of 4.5081657877110515e+17 at index of 15240.\n]
expected: FAIL
[X SNR (-300.1550327414167 dB) is not greater than or equal to 85.58. Got -300.1550327414167.]
expected: FAIL
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[7189\]\t-1.5847874412465357e+17\t-9.8956179618835449e-1\t1.5847874412465357e+17\t1.6015042692138099e+17\t3.8985999999999999e-3\n\t[7190\]\t-8.8409073650836945e-2\t-9.9664616584777832e-1\t9.0823709219694138e-1\t9.1129341918891205e-1\t3.8985999999999999e-3\n\tMax AbsError of 1.5847874412465357e+17 at index of 7189.\n\tMax RelError of 1.6015042692138099e+17 at index of 7189.\n]
expected: FAIL
[X SNR (-300.5653344749286 dB) is not greater than or equal to 65.737. Got -300.5653344749286.]
expected: FAIL

View file

@ -1,5 +1,4 @@
[audiocontext-not-fully-active.html]
expected: TIMEOUT
[frame in navigated remote-site frame]
expected: FAIL

View file

@ -1,5 +1,4 @@
[user_prompts.py]
expected: ERROR
[test_accept_and_notify[capabilities0-prompt-\]]
expected: FAIL

View file

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

View file

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

View file

@ -1,5 +1,4 @@
[import-in-moduleworker.html]
expected: ERROR
[Base URL in module dedicated workers: import]
expected: FAIL

View file

@ -1,5 +1,4 @@
[sharedworker-in-worker.html]
expected: ERROR
[Base URL in workers: new SharedWorker()]
expected: FAIL

View file

@ -7,7 +7,7 @@
expected: FAIL
[Opening a blob URL in a new window immediately before revoking it works.]
expected: FAIL
expected: TIMEOUT
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
expected: TIMEOUT

View file

@ -17296,13 +17296,6 @@
{}
]
],
"pointerevent_pointerId_scope-manual.html": [
"3640cb6f6bba67b51f96c857a4deb811a495845d",
[
null,
{}
]
],
"pointerevent_pointerleave_pen-manual.html": [
"d0d8dd3682513fa44659573f02aa3eb9044c5605",
[
@ -128779,6 +128772,84 @@
{}
]
],
"transform-000.html": [
"7f8bfa8ca4a33ac9e87a7f7b83b26b791cede0fa",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"transform-001.html": [
"37985dd3f0e633566751fe879915038d13b3967f",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"transform-002.html": [
"10c62cd45c89c840f81e12ec96d6430eb50bed43",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"transform-003.html": [
"1879bab38331cc40457e214878dcdc004db6ff89",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"transform-004.html": [
"df7e92ac5d79edcf62dfb66c849990dfd6ec118b",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"transform-005.html": [
"83f674f8fd306027b305cf8092c28040ce836461",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"widows-001.html": [
"eb453ee64d8cfa1bcee456d614b64a3d67be122e",
[
@ -187171,7 +187242,7 @@
]
],
"flex-aspect-ratio-025.html": [
"fa9ce8ebce69f02e6b13d9d2233d1e3b46c7f1ab",
"c4ff8110d7bed7079c864ddf192f8242932e588d",
[
null,
[
@ -187184,7 +187255,7 @@
]
],
"flex-aspect-ratio-026.html": [
"1df14468632baa8ffd03d690f7ddaa618acd7bf6",
"c4a250818bb7786e2f395922d28e3c7519b4ea3a",
[
null,
[
@ -187196,6 +187267,19 @@
{}
]
],
"flex-aspect-ratio-027.html": [
"c10f1f3f7048bc891ec8d73a70342a994213b565",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"grid-aspect-ratio-001.html": [
"ce91fe4e4e8b2bb7f610fb230a292f59188ff95b",
[
@ -187717,7 +187801,7 @@
]
],
"replaced-element-003.html": [
"f1c8dd07e146074cd055cd2bc107b2e0abb5fcc9",
"83187fcd459582de54ca1b98c25295e0993d3235",
[
null,
[
@ -187726,7 +187810,23 @@
"=="
]
],
{}
{
"fuzzy": [
[
null,
[
[
0,
3
],
[
0,
5000
]
]
]
]
}
]
],
"replaced-element-004.html": [
@ -338614,7 +338714,7 @@
[]
],
"reftests.md": [
"9f3165ced4c4e754680124a1e8722af15b9893eb",
"135fc20074df49a81345c3ebe3849fae52f68cb6",
[]
],
"rendering.md": [
@ -346690,7 +346790,7 @@
],
"resources": {
"common.js": [
"45fd93503c0ede4a07014997b0c0f04095b1cf6a",
"932adfd09854377165be745e885e835f8b9ef64c",
[]
],
"dispatcher.js": [
@ -360650,7 +360750,7 @@
[]
],
"pointerevent_pointerId_scope-iframe.html": [
"ab33560b35216ea0976d1c037650122d9336ae39",
"c1fa22aa4ce29903815c52b7539310980cfcbc82",
[]
],
"pointerevent_pointercapture-iframe.html": [
@ -380139,7 +380239,7 @@
[]
],
"fixtures.py": [
"7cb91ca62c238eaa7907e283077699f3897f6d2e",
"0ecfcdbb2427a997d652e88bb00d7ce8733ffd28",
[]
],
"helpers.py": [
@ -441603,7 +441703,7 @@
]
],
"aria-element-reflection.tentative.html": [
"fc20df6696e975d368b5e18cfad776c4284615fe",
"44fc68acfd619dd729380681fe6e137d05a2817b",
[
null,
{}
@ -489528,7 +489628,14 @@
]
],
"iframe-load-cookie.tentative.https.html": [
"b4520f8b952f33252a236f9b15ff708c07799c84",
"c3e3e2f18a90479e7cf596f5e542596ed15d1c08",
[
null,
{}
]
],
"iframe-local-storage.tentative.https.html": [
"0ef477c87bf5e56516b9f1b9188ae81efa9674d8",
[
null,
{}
@ -522415,6 +522522,15 @@
{}
]
],
"pointerevent_pointerId_scope.html": [
"e3651b9d3477d264bba6a56b4de00c566ef32f82",
[
null,
{
"testdriver": true
}
]
],
"pointerevent_pointercancel_touch.html": [
"b09ddd740a6d6775806731c8e069a4674e3b12e3",
[
@ -552230,7 +552346,7 @@
]
],
"mousemove-between.html": [
"1ddab541586b3990dec003314887865e0427b539",
"f9c422cc9364f793d8cdcb88d1a0379812953aba",
[
null,
{
@ -562545,7 +562661,7 @@
]
],
"image-decoder.any.js": [
"f33a60a1f6ca28851a8d85d6ffbbc6c6566140a0",
"2c13b72cbd1ad2bc823806675430c67f7507be74",
[
"webcodecs/image-decoder.any.html",
{

View file

@ -56,129 +56,6 @@
[background-position length(px) / events]
expected: FAIL
[background-color color(rgba) / events]
expected: FAIL
[border-top-width length(pt) / events]
expected: FAIL
[border-top-width length(pc) / events]
expected: FAIL
[border-top-width length(px) / events]
expected: FAIL
[border-top-width length(em) / events]
expected: FAIL
[border-top-width length(ex) / events]
expected: FAIL
[border-top-width length(mm) / events]
expected: FAIL
[border-top-width length(cm) / events]
expected: FAIL
[border-top-width length(in) / events]
expected: FAIL
[border-right-width length(pt) / events]
expected: FAIL
[border-right-width length(pc) / events]
expected: FAIL
[border-right-width length(px) / events]
expected: FAIL
[border-right-width length(em) / events]
expected: FAIL
[border-right-width length(ex) / events]
expected: FAIL
[border-right-width length(mm) / events]
expected: FAIL
[border-right-width length(cm) / events]
expected: FAIL
[border-right-width length(in) / events]
expected: FAIL
[border-bottom-width length(pt) / events]
expected: FAIL
[border-bottom-width length(pc) / events]
expected: FAIL
[border-bottom-width length(px) / events]
expected: FAIL
[border-bottom-width length(em) / events]
expected: FAIL
[border-bottom-width length(ex) / events]
expected: FAIL
[border-bottom-width length(mm) / events]
expected: FAIL
[border-bottom-width length(cm) / events]
expected: FAIL
[border-bottom-width length(in) / events]
expected: FAIL
[border-left-width length(pt) / events]
expected: FAIL
[border-left-width length(pc) / events]
expected: FAIL
[border-left-width length(px) / events]
expected: FAIL
[border-left-width length(em) / events]
expected: FAIL
[border-left-width length(ex) / events]
expected: FAIL
[border-left-width length(mm) / events]
expected: FAIL
[border-left-width length(cm) / events]
expected: FAIL
[border-left-width length(in) / events]
expected: FAIL
[border-top-color color(rgba) / events]
expected: FAIL
[border-right-color color(rgba) / events]
expected: FAIL
[border-bottom-color color(rgba) / events]
expected: FAIL
[border-left-color color(rgba) / events]
expected: FAIL
[padding-bottom length(pt) / events]
expected: FAIL
[padding-bottom length(pc) / events]
expected: FAIL
[padding-bottom length(px) / events]
expected: FAIL
[padding-bottom length(em) / events]
expected: FAIL
[padding-bottom length(ex) / events]
expected: FAIL

View file

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

View file

@ -309,21 +309,12 @@
[fetch(): separate response Content-Type: text/plain ]
expected: NOTRUN
[<iframe>: separate response Content-Type: text/plain */*]
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: */* text/html]
[<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*]
expected: FAIL
[<iframe>: combined 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;x=" text/plain]
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL

View file

@ -56,6 +56,3 @@
[separate text/javascript x/x]
expected: FAIL
[separate text/javascript ]
expected: FAIL

View file

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

View file

@ -1,2 +0,0 @@
[cross-origin-objects-on-new-window.html]
expected: TIMEOUT

View file

@ -1,5 +1,4 @@
[supported-elements.html]
expected: TIMEOUT
[Contenteditable element should support autofocus]
expected: FAIL
@ -10,7 +9,7 @@
expected: FAIL
[Area element should support autofocus]
expected: TIMEOUT
expected: FAIL
[Host element with delegatesFocus should support autofocus]
expected: FAIL

View file

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

View file

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

View file

@ -1,6 +1,5 @@
[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: TIMEOUT
expected: FAIL

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

View file

@ -1,22 +1,10 @@
[select-event.html]
[textarea: selectionStart a second time (must not fire select)]
expected: FAIL
[input type search: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[input type password: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type text: selectionStart a second time (must not fire select)]
expected: FAIL
[input type text: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[input type search: setRangeText() a second time (must not fire select)]
expected: FAIL
[input type search: selectionStart a second time (must not fire select)]
expected: FAIL
@ -35,30 +23,54 @@
[input type text: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type search: selectionEnd a second time (must not fire select)]
expected: FAIL
[input type tel: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type tel: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type url: selectionStart a second time (must not fire select)]
expected: FAIL
[input type url: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type password: select() a second time (must not fire select)]
expected: FAIL
[input type password: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type password: selectionStart out of range a second time (must not fire select)]
[textarea: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type password: selectionEnd out of range a second time (must not fire select)]
[textarea: setRangeText() a second time (must not fire select)]
expected: FAIL
[textarea: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type text: selectionEnd a second time (must not fire select)]
expected: FAIL
[input type text: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type text: setRangeText() a second time (must not fire select)]
expected: FAIL
[input type search: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type search: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type search: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type tel: setRangeText() a second time (must not fire select)]
expected: FAIL
[input type url: select() a second time (must not fire select)]
expected: FAIL
[input type url: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type url: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type password: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL

View file

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

View file

@ -836,3 +836,15 @@
[X SNR (40.857403325570765 dB) is not greater than or equal to 65.737. Got 40.857403325570765.]
expected: FAIL
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[15240\]\t-1.5116663102269030e+17\t3.3531737327575684e-1\t1.5116663102269030e+17\t4.5081657877110515e+17\t9.0957000000000003e-5\n\t[15241\]\t4.5846281857315040e-41\t3.9367997646331787e-1\t3.9367997646331787e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 1.5116663102269030e+17 at index of 15240.\n\tMax RelError of 4.5081657877110515e+17 at index of 15240.\n]
expected: FAIL
[X SNR (-300.1550327414167 dB) is not greater than or equal to 85.58. Got -300.1550327414167.]
expected: FAIL
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[7189\]\t-1.5847874412465357e+17\t-9.8956179618835449e-1\t1.5847874412465357e+17\t1.6015042692138099e+17\t3.8985999999999999e-3\n\t[7190\]\t-8.8409073650836945e-2\t-9.9664616584777832e-1\t9.0823709219694138e-1\t9.1129341918891205e-1\t3.8985999999999999e-3\n\tMax AbsError of 1.5847874412465357e+17 at index of 7189.\n\tMax RelError of 1.6015042692138099e+17 at index of 7189.\n]
expected: FAIL
[X SNR (-300.5653344749286 dB) is not greater than or equal to 65.737. Got -300.5653344749286.]
expected: FAIL

View file

@ -1,5 +1,4 @@
[audiocontext-not-fully-active.html]
expected: TIMEOUT
[frame in navigated remote-site frame]
expected: FAIL

View file

@ -1,5 +1,4 @@
[user_prompts.py]
expected: ERROR
[test_accept_and_notify[capabilities0-prompt-\]]
expected: FAIL

View file

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

View file

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

View file

@ -1,5 +1,4 @@
[import-in-moduleworker.html]
expected: ERROR
[Base URL in module dedicated workers: import]
expected: FAIL

View file

@ -1,5 +1,4 @@
[sharedworker-in-worker.html]
expected: ERROR
[Base URL in workers: new SharedWorker()]
expected: FAIL

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#transforms">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<style>
.relpos {
position: relative;
left: -60px;
background: green;
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div style="inline-size:100px; block-size:100px; columns:4; column-fill:auto; column-gap:0; background:red;">
<div style="block-size:50px; background:green;"></div>
<div style="will-change:transform; transform:translateX(60px);">
<div class="relpos" style="block-size:100px;"></div>
<div class="relpos" style="block-size:100px;"></div>
<div class="relpos" style="block-size:150px;"></div>
</div>
</div>

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#transforms">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<style>
.relpos {
position: relative;
top: -60px;
background: green;
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div style="writing-mode:vertical-lr; inline-size:100px; block-size:100px; columns:4; column-fill:auto; column-gap:0; background:red;">
<div style="block-size:50px; background:green;"></div>
<div style="will-change:transform; transform:translateY(60px);">
<div class="relpos" style="block-size:100px;"></div>
<div class="relpos" style="block-size:100px;"></div>
<div class="relpos" style="block-size:150px;"></div>
</div>
</div>

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#transforms">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<style>
.relpos {
position: relative;
top: -60px;
background: green;
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div style="writing-mode:vertical-rl; inline-size:100px; block-size:100px; columns:4; column-fill:auto; column-gap:0; background:red;">
<div style="block-size:50px; background:green;"></div>
<div style="will-change:transform; transform:translateY(60px);">
<div class="relpos" style="block-size:100px;"></div>
<div class="relpos" style="block-size:100px;"></div>
<div class="relpos" style="block-size:150px;"></div>
</div>
</div>

View file

@ -0,0 +1,21 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#transforms">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<style>
.relpos {
position: relative;
left: -60px;
top: -50px;
background: green;
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div style="inline-size:100px; block-size:100px; columns:4; column-fill:auto; column-gap:0; background:red;">
<div style="block-size:50px; background:green;"></div>
<div style="will-change:transform; transform:translate(60px, 50px);">
<div class="relpos" style="block-size:100px;"></div>
<div class="relpos" style="block-size:100px;"></div>
<div class="relpos" style="block-size:150px;"></div>
</div>
</div>

View file

@ -0,0 +1,21 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#transforms">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<style>
.relpos {
position: relative;
left: -60px;
top: -50px;
background: green;
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div style="writing-mode:vertical-lr; inline-size:100px; block-size:100px; columns:4; column-fill:auto; column-gap:0; background:red;">
<div style="block-size:50px; background:green;"></div>
<div style="will-change:transform; transform:translate(60px, 50px);">
<div class="relpos" style="block-size:100px;"></div>
<div class="relpos" style="block-size:100px;"></div>
<div class="relpos" style="block-size:150px;"></div>
</div>
</div>

View file

@ -0,0 +1,21 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#transforms">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<style>
.relpos {
position: relative;
left: -60px;
top: -50px;
background: green;
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div style="writing-mode:vertical-rl; inline-size:100px; block-size:100px; columns:4; column-fill:auto; column-gap:0; background:red;">
<div style="block-size:50px; background:green;"></div>
<div style="will-change:transform; transform:translate(60px, 50px);">
<div class="relpos" style="block-size:100px;"></div>
<div class="relpos" style="block-size:100px;"></div>
<div class="relpos" style="block-size:150px;"></div>
</div>
</div>

View file

@ -14,6 +14,7 @@
.item {
background: green;
padding-top: 15px;
padding-left: 10px;
box-sizing: border-box;
}
</style>
@ -49,25 +50,25 @@
because its value contains 'auto'. -->
<div class="flexContainer" style="width: auto;">
<!-- The content-box height 10px is transferred to the main axis,
yielding a resolved flex base size of 200px. -->
<div class="item" style="min-width:0; height: 25px; aspect-ratio: auto 20/1;"></div>
yielding a resolved flex base size of 190px. -->
<div class="item" style="min-width:0; height: 25px; aspect-ratio: auto 19/1;"></div>
</div>
<div class="flexContainer">
<!-- The content-box height 10px is transferred to the main axis,
yielding a resolved min-width:auto of 200px. -->
<div class="item" style="height: 25px; aspect-ratio: auto 20/1;"></div>
yielding a resolved min-width:auto of 190px. -->
<div class="item" style="height: 25px; aspect-ratio: auto 19/1;"></div>
</div>
<div class="flexContainer">
<!-- The content-box min-height 10px is transferred to the main axis,
yielding a resolved min-width:auto of 200px. -->
<div class="item" style="min-height: 25px; aspect-ratio: auto 20/1;"></div>
yielding a resolved min-width:auto of 190px. -->
<div class="item" style="min-height: 25px; aspect-ratio: auto 19/1;"></div>
</div>
<div class="flexContainer">
<!-- The content-box height 10px (clamped by max-height) is transferred
to the main axis, yielding a resolved min-width:auto of 200px. -->
<div class="item" style="max-height: 25px; height: 100px; aspect-ratio: auto 20/1;"></div>
to the main axis, yielding a resolved min-width:auto of 190px. -->
<div class="item" style="max-height: 25px; height: 100px; aspect-ratio: auto 19/1;"></div>
</div>
</html>

View file

@ -15,6 +15,7 @@
.item {
background: green;
padding-left: 15px;
padding-top: 10px;
box-sizing: border-box;
}
.item > div {
@ -53,25 +54,25 @@
because its value contains 'auto'. -->
<div class="flexContainer" style="height: auto;">
<!-- The content-box width 10px is transferred to the main axis,
yielding a resolved flex base size of 200px. -->
<div class="item" style="min-height:0; width: 25px; aspect-ratio: auto 1/20;"><div></div></div>
yielding a resolved flex base size of 190px. -->
<div class="item" style="min-height:0; width: 25px; aspect-ratio: auto 1/19;"><div></div></div>
</div>
<div class="flexContainer">
<!-- The content-box width 10px is transferred to the main axis,
yielding a resolved min-height:auto of 200px. -->
<div class="item" style="width: 25px; aspect-ratio: auto 1/20;"><div></div></div>
yielding a resolved min-height:auto of 190px. -->
<div class="item" style="width: 25px; aspect-ratio: auto 1/19;"><div></div></div>
</div>
<div class="flexContainer">
<!-- The content-box min-width 10px is transferred to the main axis,
yielding a resolved min-height:auto of 200px. -->
<div class="item" style="min-width: 25px; aspect-ratio: auto 1/20;"><div></div></div>
yielding a resolved min-height:auto of 190px. -->
<div class="item" style="min-width: 25px; aspect-ratio: auto 1/19;"><div></div></div>
</div>
<div class="flexContainer">
<!-- The content-box width 10px (clamped by max-width) is transferred to the main axis,
yielding a resolved min-height:auto of 200px. -->
<div class="item" style="max-width: 25px; width: 100px; aspect-ratio: auto 1/20;"><div></div></div>
yielding a resolved min-height:auto of 190px. -->
<div class="item" style="max-width: 25px; width: 100px; aspect-ratio: auto 1/19;"><div></div></div>
</div>
</html>

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<title>CSS aspect-ratio: Row flexbox and transferred min/max-size</title>
<link rel="author" title="Google LLC" href="https://www.google.com/">
<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#aspect-ratio">
<link rel="match" href="../../reference/ref-filled-green-100px-square.xht" />
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div style="display: flex; flex-direction: row;">
<div style="background: green; width: 40px; height: 50px;" ></div>
<div style="background: green; width: 60px; max-height: 50px; aspect-ratio: 1/1;"></div>
</div>
<div style="display: flex; flex-direction: row;">
<div style="background: green; width: 40px; height: 50px;" ></div>
<div style="background: green; width: 60px; height: 60px; max-height: 50px; aspect-ratio: 1/1;"></div>
</div>

View file

@ -3,6 +3,9 @@
<link rel="author" title="Google LLC" href="https://www.google.com/">
<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#aspect-ratio">
<link rel="match" href="../../reference/ref-filled-green-100px-square.xht" />
<!-- The pixel values from the video can be slightly different; allow for
fuzzy matching. -->
<meta name="fuzzy" content="0-3;0-5000">
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>

View file

@ -162,6 +162,22 @@ One meta element is required per reference requiring a unique
fuzziness value, but any unprefixed value will automatically be
applied to any ref that doesn't have a more specific value.
### Debugging fuzzy reftests
When debugging a fuzzy reftest via `wpt run`, it can be useful to know what the
allowed and detected differences were. Many of the output logger options will
provide this information. For example, by passing `--log-mach=-` for a run of a
hypothetical failing test, one might get:
```
0:08.15 TEST_START: /foo/bar.html
0:09.70 INFO Found 250 pixels different, maximum difference per channel 6 on page 1
0:09.70 INFO Allowed 0-100 pixels different, maximum difference per channel 0-0
0:09.70 TEST_END: FAIL, expected PASS - /foo/bar.html ['f83385ed9c9bea168108b8c448366678c7941627']
```
For other logging flags, see the output of `wpt run --help`.
## Limitations
In some cases, a test cannot be a reftest. For example, there is no

View file

@ -708,4 +708,17 @@
}, "Cross-document references and moves.");
</script>
<!-- TODO(chrishall): add additional GC test covering:
if an element is in an invalid scope but attached to the document, it's
not GC'd;
-->
<!-- TODO(chrishall): add additional GC test covering:
if an element is not attached to the document, but is in a tree fragment
which is not GC'd because there is a script reference to another element
in the tree fragment, and the relationship is valid because it is between
two elements in that tree fragment, the relationship is exposed *and* the
element is not GC'd
-->
</html>

View file

@ -12,31 +12,6 @@ const cookie_key = "coep_credentialless_iframe_load_cookie";
const cookie_same_origin = "same_origin";
const cookie_cross_origin = "cross_origin";
// Open a new window with a given |origin|, loaded with COEP:credentialless. The
// new document will execute any scripts sent toward the token it returns.
const newCredentiallessWindow = (origin) => {
const main_document_token = token();
const url = origin + executor_path + coep_credentialless +
`&uuid=${main_document_token}`;
const w = window.open(url);
add_completion_callback(() => w.close());
return main_document_token;
};
// Create a new iframe, loaded with COEP:credentialless.
// The new document will execute any scripts sent toward the token it returns.
const newCredentiallessIframe = (parent_token, child_origin) => {
const sub_document_token = token();
const iframe_url = child_origin + executor_path + coep_credentialless +
`&uuid=${sub_document_token}`;
send(parent_token, `
let iframe = document.createElement("iframe");
iframe.src = "${iframe_url}";
document.body.appendChild(iframe);
`)
return sub_document_token;
};
// Fetch a resource, returns the HTTP request cookies.
const cookieFromResource = async (document_token, resource_origin) => {
const resource_token = token();

View file

@ -0,0 +1,61 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="/common/utils.js"></script>
<script src="./resources/common.js"></script>
<script src="./resources/dispatcher.js"></script>
<script>
const same_origin = get_host_info().HTTPS_ORIGIN;
const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
const local_storage_key = "coep_credentialless_iframe_local_storage";
const local_storage_same_origin = "same_origin";
const local_storage_cross_origin = "cross_origin";
promise_test_parallel(async test => {
// Add an item in the localStorage on same_origin.
localStorage.setItem(local_storage_key, local_storage_same_origin);
// Add an item in the localStorage on cross_origin.
{
const w_token = token();
const w_url = cross_origin + executor_path + `&uuid=${w_token}`;
const w = window.open(w_url);
const reply_token = token();
send(w_token, `
localStorage.setItem("${local_storage_key}",
"${local_storage_cross_origin}");
send("${reply_token}", "done");
`);
assert_equals(await receive(reply_token), "done");
w.close();
}
let credentialless_window = newCredentiallessWindow(same_origin);
promise_test_parallel(async test => {
let iframe = newCredentiallessIframe(credentialless_window, same_origin);
let reply_token = token();
send(iframe, `
let value = localStorage.getItem("${local_storage_key}");
send("${reply_token}", value);
`)
assert_equals(
await receive(reply_token),
local_storage_same_origin
);
}, "same_origin iframe can access the localStorage");
promise_test_parallel(async test => {
let iframe = newCredentiallessIframe(credentialless_window, cross_origin);
let reply_token = token();
send(iframe, `
let value = localStorage.getItem("${local_storage_key}");
send("${reply_token}", value);
`)
assert_equals(await receive(reply_token), "")
}, "cross_origin iframe can't access the localStorage");
}, "Setup")
</script>

View file

@ -40,3 +40,29 @@ let parseCookies = function(headers_json) {
return acc;
}, {});
}
// Open a new window with a given |origin|, loaded with COEP:credentialless. The
// new document will execute any scripts sent toward the token it returns.
const newCredentiallessWindow = (origin) => {
const main_document_token = token();
const url = origin + executor_path + coep_credentialless +
`&uuid=${main_document_token}`;
const w = window.open(url);
add_completion_callback(() => w.close());
return main_document_token;
};
// Create a new iframe, loaded with COEP:credentialless.
// The new document will execute any scripts sent toward the token it returns.
const newCredentiallessIframe = (parent_token, child_origin) => {
const sub_document_token = token();
const iframe_url = child_origin + executor_path + coep_credentialless +
`&uuid=${sub_document_token}`;
send(parent_token, `
let iframe = document.createElement("iframe");
iframe.src = "${iframe_url}";
document.body.appendChild(iframe);
`)
return sub_document_token;
};

View file

@ -11,6 +11,9 @@ http://www.w3.org/wiki/PointerEvents/TestAssertions
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<!-- Additional helper script for common checks across event types -->
<script type="text/javascript" src="pointerevent_support.js"></script>
<script>
@ -22,8 +25,10 @@ http://www.w3.org/wiki/PointerEvents/TestAssertions
add_completion_callback(showPointerTypes);
var detected_pointertypes = {};
function run() {
async function run() {
var target0 = document.getElementById("target0");
var innerframe = document.getElementById("innerframe");
var target1 = innerframe.contentWindow.document.getElementsByTagName("div")[0];
var pointerover_pointerId = null;
var pointerover_pointerType = null;
@ -42,9 +47,11 @@ http://www.w3.org/wiki/PointerEvents/TestAssertions
}
on_event(window, "message", function(event) {
var pe_event = JSON.parse(event.data);
receivedEventsInnerFrame[pe_event.type] = 1;
checkPointerId(pe_event, true);
if (event.source != innerframe.contentWindow) {
return;
}
receivedEventsInnerFrame[event.data.type] = 1;
checkPointerId(event.data, true);
if (Object.keys(receivedEvents).length == eventList.length && Object.keys(receivedEventsInnerFrame).length == eventList.length)
test_pointerEvent.done();
});
@ -59,7 +66,17 @@ http://www.w3.org/wiki/PointerEvents/TestAssertions
}
receivedEvents[event.type] = 1;
});
});
});
var iframeRect = innerframe.getClientRects()[0];
var rect = target1.getClientRects()[0];
var center_x = Math.round(iframeRect.left + (rect.left + rect.right) / 2);
var center_y = Math.round(iframeRect.top + (rect.top + rect.bottom) / 2);
await new test_driver.Actions()
.pointerMove(0, 0, {origin: target0})
.pointerMove(center_x, center_y)
.pointerMove(center_y, center_y + 100)
.send();
}
</script>
</head>

View file

@ -22,7 +22,7 @@ http://www.w3.org/wiki/PointerEvents/TestAssertions
'type' : event.type,
'pointerType' : event.pointerType
};
top.postMessage(JSON.stringify(pass_data), "*");
top.postMessage(pass_data, "*");
});
});
}

View file

@ -115,11 +115,17 @@ window.onload = async function() {
// Inject mouse inputs.
await new test_driver.Actions()
.pointerMove(b_rect.right + 10, center_b_y)
.pause(50)
.pointerMove(0, 0, {origin: b})
.pause(50)
.pointerMove(b_rect.right + 10, center_b_y)
.pause(50)
.pointerMove(a_rect.right + 10, center_b_y)
.pause(50)
.pointerMove(c_rect.right + 10, center_c_y)
.pause(50)
.pointerMove(0, 0, {origin: c})
.pause(50)
.pointerMove(c_rect.right + 20, c_rect.bottom + 20)
.send();
};

View file

@ -85,3 +85,18 @@ promise_test(t => {
promise_test(t => {
return testFourColorsDecode('four-colors.gif', 'image/gif');
}, 'Test GIF image decoding.');
promise_test(t => {
return fetch('four-colors.png').then(response => {
let decoder = new ImageDecoder({data: response.body, type: 'junk/type'});
return promise_rejects_dom(t, 'NotSupportedError', decoder.decode());
});
}, 'Test invalid mime type rejects decode() requests');
promise_test(t => {
return fetch('four-colors.png').then(response => {
let decoder = new ImageDecoder({data: response.body, type: 'junk/type'});
return promise_rejects_dom(
t, 'NotSupportedError', decoder.decodeMetadata());
});
}, 'Test invalid mime type rejects decodeMetadata() requests');

View file

@ -123,6 +123,21 @@ def configuration():
}
async def reset_current_session_if_necessary(caps, request_bidi):
global _current_session
# If there is a session with different capabilities active or the current session
# is of different type than the one we would like to create, end it now.
if _current_session is not None:
is_bidi = isinstance(_current_session, webdriver.BidiSession)
if is_bidi != request_bidi or not _current_session.match(caps):
if is_bidi:
await _current_session.end()
else:
_current_session.end()
_current_session = None
@pytest.fixture(scope="function")
async def session(capabilities, configuration, request):
"""Create and start a session for a test that does not itself test session creation.
@ -139,17 +154,7 @@ async def session(capabilities, configuration, request):
deep_update(caps, capabilities)
caps = {"alwaysMatch": caps}
is_cur_bidi = isinstance(_current_session, webdriver.BidiSession)
# If there is a session with different capabilities active or the current session
# is of different type than the one we would like to create, end it now.
if _current_session is not None:
is_bidi = isinstance(_current_session, webdriver.BidiSession)
if is_bidi or caps != _current_session.requested_capabilities:
if is_bidi:
await _current_session.end()
else:
_current_session.end()
_current_session = None
await reset_current_session_if_necessary(caps, False)
if _current_session is None:
_current_session = webdriver.Session(
@ -188,21 +193,13 @@ async def bidi_session(capabilities, configuration, request):
deep_update(caps, capabilities)
caps = {"alwaysMatch": caps}
if _current_session is not None:
is_bidi = isinstance(_current_session, webdriver.BidiSession)
if not is_bidi or not _current_session.match(caps):
if is_bidi:
await _current_session.end()
else:
_current_session.end()
_current_session = None
await reset_current_session_if_necessary(caps, True)
if _current_session is None:
_current_session = webdriver.BidiSession(
configuration["host"],
configuration["port"],
capabilities=caps)
try:
await _current_session.start()