Update web-platform-tests to revision a4482f355e2848f4623cf46f521cb9b3bca56129

This commit is contained in:
WPT Sync Bot 2020-04-14 08:19:18 +00:00
parent 33a74a4f4e
commit 10cafa3df2
86 changed files with 1024 additions and 172 deletions

View file

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

View file

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

View file

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

View file

@ -1,2 +1,2 @@
[no-transition-from-ua-to-blocking-stylesheet.html] [no-transition-from-ua-to-blocking-stylesheet.html]
expected: TIMEOUT expected: FAIL

View file

@ -1,4 +0,0 @@
[elementFromPoint-001.html]
[CSSOM View - 5 - extensions to the Document interface]
expected: FAIL

View file

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

View file

@ -0,0 +1,4 @@
[elementsFromPoint-invalid-cases.html]
[The root element is the last element returned for otherwise empty queries within the viewport]
expected: FAIL

View file

@ -0,0 +1,4 @@
[cssstyledeclaration-csstext.html]
[cssText on computed style declaration returns the empty string]
expected: FAIL

View file

@ -0,0 +1,4 @@
[cssstyledeclaration-custom-properties.html]
[Custom properties are included in computed style]
expected: FAIL

View file

@ -0,0 +1,2 @@
[fecomposite-non-zero-inoffset-001.html]
expected: FAIL

View file

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

View file

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

View file

@ -11,6 +11,3 @@
[X-Content-Type-Options%3A%20nosniff%0C] [X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL expected: FAIL
[X-Content-Type-Options%3A%20'NosniFF']
expected: FAIL

View file

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

View file

@ -7,7 +7,7 @@
expected: NOTRUN expected: NOTRUN
[Element with tabindex should support autofocus] [Element with tabindex should support autofocus]
expected: TIMEOUT expected: FAIL
[Area element should support autofocus] [Area element should support autofocus]
expected: NOTRUN expected: NOTRUN
@ -16,5 +16,5 @@
expected: NOTRUN expected: NOTRUN
[Non-HTMLElement should not support autofocus] [Non-HTMLElement should not support autofocus]
expected: NOTRUN expected: TIMEOUT

View file

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

View file

@ -1,5 +1,4 @@
[promise-job-entry.html] [promise-job-entry.html]
expected: TIMEOUT
[Fulfillment handler on fulfilled promise] [Fulfillment handler on fulfilled promise]
expected: FAIL expected: FAIL
@ -16,5 +15,5 @@
expected: FAIL expected: FAIL
[Fulfillment handler on pending-then-fulfilled promise] [Fulfillment handler on pending-then-fulfilled promise]
expected: TIMEOUT expected: FAIL

View file

@ -74,3 +74,6 @@
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44065 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 15080.\n\t[15080\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n] [X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44065 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 15080.\n\t[15080\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL expected: FAIL
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44059 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 17285.\n\t[17285\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 12348.\n\t[12348\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL

View file

@ -122,3 +122,9 @@
[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[31080\]\t-6.7816996732928000e+14\t5.6332010030746460e-1\t6.7816996732928063e+14\t1.2038802928550393e+15\t9.0957000000000003e-5\n\t[31081\]\t4.5854689648100989e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.7816996732928063e+14 at index of 31080.\n\tMax RelError of 1.2038802928550393e+15 at index of 31080.\n] [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[31080\]\t-6.7816996732928000e+14\t5.6332010030746460e-1\t6.7816996732928063e+14\t1.2038802928550393e+15\t9.0957000000000003e-5\n\t[31081\]\t4.5854689648100989e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.7816996732928063e+14 at index of 31080.\n\tMax RelError of 1.2038802928550393e+15 at index of 31080.\n]
expected: FAIL expected: FAIL
[X SNR (45.01863889941501 dB) is not greater than or equal to 85.58. Got 45.01863889941501.]
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[31080\]\t5.6092996914003379e-10\t5.6332010030746460e-1\t5.6332009974653463e-1\t9.9999999900424297e-1\t9.0957000000000003e-5\n\t[31081\]\t4.5875709125065861e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31081.\n]
expected: FAIL

View file

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

View file

@ -61,6 +61,20 @@
] ]
}, },
"css-flexbox": { "css-flexbox": {
"negative-flex-margins-crash.html": [
"8bcc566c0f702ef6a8e581bb6790476c71f19bcb",
[
null,
{}
]
],
"negative-flex-rounding-crash.html": [
"ad69cc059ec705a9856f2c170827b9df18f1662c",
[
null,
{}
]
],
"padding-overflow-crash.html": [ "padding-overflow-crash.html": [
"fd0c333fabadb073b9977a63de6a8c5c3ed79042", "fd0c333fabadb073b9977a63de6a8c5c3ed79042",
[ [
@ -143793,6 +143807,32 @@
{} {}
] ]
], ],
"grid-layout-stale-001.html": [
"bb81546678cea67020c2f46a470098d6454981d9",
[
null,
[
[
"/css/css-grid/grid-model/reference/grid-layout-stale-001-ref.html",
"=="
]
],
{}
]
],
"grid-layout-stale-002.html": [
"ea11cd5c5cb5e869493adb908892c3b8f8d7c35d",
[
null,
[
[
"/css/css-grid/grid-model/reference/grid-layout-stale-002-ref.html",
"=="
]
],
{}
]
],
"grid-margins-no-collapse-001.html": [ "grid-margins-no-collapse-001.html": [
"764cca9ced0077a7376b506f3ef8ca39d8072202", "764cca9ced0077a7376b506f3ef8ca39d8072202",
[ [
@ -203865,6 +203905,19 @@
{} {}
] ]
], ],
"fecomposite-non-zero-inoffset-001.html": [
"b2d71cfa981a4a93b0fa9ad0c41d9351c2889956",
[
null,
[
[
"/css/filter-effects/reference/fecomposite-non-zero-inoffset-001-ref.html",
"=="
]
],
{}
]
],
"filter-cb-abspos-inline-001.html": [ "filter-cb-abspos-inline-001.html": [
"6f99c48d5f34761ba1bc1ce7dbdfd927469ac65a", "6f99c48d5f34761ba1bc1ce7dbdfd927469ac65a",
[ [
@ -204372,6 +204425,19 @@
{} {}
] ]
], ],
"remove-filter-repaint.html": [
"a9af9db34eeaf10235521514f8c17ceca858924e",
[
null,
[
[
"/css/filter-effects/reference/remove-filter-repaint-ref.html",
"=="
]
],
{}
]
],
"root-element-with-opacity-filter-001.html": [ "root-element-with-opacity-filter-001.html": [
"577e2bd4c032799a159c1c7542812e66081bfcea", "577e2bd4c032799a159c1c7542812e66081bfcea",
[ [
@ -263055,6 +263121,12 @@
} }
} }
}, },
"contenteditable": {
"META.yml": [
"3618b8d29d08c2315f6480c0e02578bb4784b344",
[]
]
},
"cookie-store": { "cookie-store": {
"META.yml": [ "META.yml": [
"46da8a9fb654cc685e1ba928d2b7adef9c20d4c8", "46da8a9fb654cc685e1ba928d2b7adef9c20d4c8",
@ -294272,6 +294344,14 @@
"100x100-grey-box.html": [ "100x100-grey-box.html": [
"0592f6d2ce582c3c89b9d7f5278eed9458531c3c", "0592f6d2ce582c3c89b9d7f5278eed9458531c3c",
[] []
],
"grid-layout-stale-001-ref.html": [
"3ade075c99cc2009aabc018aa4181b0ff930bea3",
[]
],
"grid-layout-stale-002-ref.html": [
"5d4d996106d13a060cf192efb134e1c74aae024d",
[]
] ]
} }
}, },
@ -308288,6 +308368,10 @@
"cf2c997f6c0d60cac9896c0b0014189cea7790bc", "cf2c997f6c0d60cac9896c0b0014189cea7790bc",
[] []
], ],
"fecomposite-non-zero-inoffset-001-ref.html": [
"e4900ad0476a208ec82950a80fb36d1481bd8c09",
[]
],
"filter-effect-remove-unattached-ref.html": [ "filter-effect-remove-unattached-ref.html": [
"5f9f7a76ec71bfa5abe4a0a82bc126af8fa0ad5a", "5f9f7a76ec71bfa5abe4a0a82bc126af8fa0ad5a",
[] []
@ -308332,6 +308416,10 @@
"91326ef585e6910cd499ad2d6650f18fca486921", "91326ef585e6910cd499ad2d6650f18fca486921",
[] []
], ],
"remove-filter-repaint-ref.html": [
"bde2a93360b62fcf877c270815f252b5ea0c3191",
[]
],
"root-element-with-opacity-filter-001-ref.html": [ "root-element-with-opacity-filter-001-ref.html": [
"cd16e54c8e5b73b02585c606d0133bb36c821b31", "cd16e54c8e5b73b02585c606d0133bb36c821b31",
[] []
@ -346994,7 +347082,7 @@
[] []
], ],
"keys.py": [ "keys.py": [
"d4072f5a3f33d8422825e1fdc4f017ed7d79993b", "26825f04148befabc9a7b6ae71f1d8313a437e38",
[] []
], ],
"mouse.py": [ "mouse.py": [
@ -347075,11 +347163,11 @@
[] []
], ],
"asserts.py": [ "asserts.py": [
"f65137463b48f94fd0c5f2383b1a7c35bcd1de54", "5bd7f5b38e7a344fb2a1f7c40090fb5edd28c4d4",
[] []
], ],
"authentication.py": [ "authentication.py": [
"6f880f3c85165295bf9e98aa4e4adba2eca88cbd", "1e88a9e730d0805f8e6562a2dae7829b4baa349c",
[] []
], ],
"defaults.py": [ "defaults.py": [
@ -347087,7 +347175,7 @@
[] []
], ],
"fixtures.py": [ "fixtures.py": [
"ab2aaf4e75d96492d9c6419ab11d567205652b8f", "80ccfddf3d15ad739f7eca6a77fac79e2dcdcaef",
[] []
], ],
"helpers.py": [ "helpers.py": [
@ -347095,15 +347183,15 @@
[] []
], ],
"http_request.py": [ "http_request.py": [
"5e46d97017e14ba009d4d1ed6d62bb5012f48d15", "895d1319ac0ac8b9a63defcb73f303c4a31e80bd",
[] []
], ],
"image.py": [ "image.py": [
"81dd933943f78b4bad69967c26729b70b992acb6", "6149ccccbe3252e5c1c2bc37ba3dd3103ffbf9b6",
[] []
], ],
"inline.py": [ "inline.py": [
"b65b9cb8b11d27ee4c947a5c2ba5b59cd3853c78", "15bc26e54c68d4ce7c76133f597f4da50eb2e298",
[] []
], ],
"merge_dictionaries.py": [ "merge_dictionaries.py": [
@ -350038,7 +350126,7 @@
[] []
], ],
"webxr_test_constants_fake_world.js": [ "webxr_test_constants_fake_world.js": [
"4e2adc633fd88bc13a4ab62bee86b4f3fbd19479", "7e428e21550f6a52461cb8470dee0aa44e3f4578",
[] []
], ],
"webxr_util.js": [ "webxr_util.js": [
@ -377712,6 +377800,15 @@
] ]
} }
}, },
"contenteditable": {
"plaintext-only.html": [
"cb8308edcc49a98be5c34c9614bc61b69e44f784",
[
null,
{}
]
]
},
"cookie-store": { "cookie-store": {
"change_eventhandler_for_document_cookie.tentative.https.window.js": [ "change_eventhandler_for_document_cookie.tentative.https.window.js": [
"0a8b1bd21efc9b0ac69468ad81c306757e5b18ff", "0a8b1bd21efc9b0ac69468ad81c306757e5b18ff",
@ -382417,6 +382514,41 @@
null, null,
{} {}
] ]
],
"revert-val-006.html": [
"2b238f6d7e53b35cbdfe98c1fcac3625b9cfd72e",
[
null,
{}
]
],
"revert-val-007.html": [
"38078fcfa9ad2a064ead3a2e30db3d6790d265be",
[
null,
{}
]
],
"revert-val-008.html": [
"77cceae7a3f044c8d11b1616f9f54469f18d1aca",
[
null,
{}
]
],
"revert-val-009.html": [
"e9683e90f44a378f16fda177cf2b8cb64d530921",
[
null,
{}
]
],
"revert-val-010.html": [
"58449e9132b786a2f489a1517b1be3becadaddbf",
[
null,
{}
]
] ]
}, },
"css-color": { "css-color": {
@ -383279,7 +383411,7 @@
] ]
], ],
"flexitem-stretch-image.html": [ "flexitem-stretch-image.html": [
"dd0f8d4f76f1f3dbaf67629315c8e39d73f01df3", "ff3163f6f3d31684db6b22c603f081b6d7c94cfb",
[ [
null, null,
{} {}
@ -387406,6 +387538,13 @@
] ]
] ]
}, },
"grid-tracks-stretched-with-different-flex-factors-sum.html": [
"f2c1d5e95a2df428432f30fc651b4bf06ae15322",
[
null,
{}
]
],
"inheritance.html": [ "inheritance.html": [
"eee86f70300d4280531235c813589dc3c399c58c", "eee86f70300d4280531235c813589dc3c399c58c",
[ [
@ -390334,7 +390473,7 @@
] ]
], ],
"registered-property-revert.html": [ "registered-property-revert.html": [
"3d0473ea4397fab0440355a11eb0bff941a50323", "33c395d2c2f6f5f9ca868963b8fb3c4d7f593d28",
[ [
null, null,
{} {}
@ -401358,7 +401497,14 @@
] ]
], ],
"cssstyledeclaration-csstext.html": [ "cssstyledeclaration-csstext.html": [
"30d9bd87bde562a827a367241497fdbc34360a9f", "afd54263bfe0ddd6325a82e0c47f663015dbf67c",
[
null,
{}
]
],
"cssstyledeclaration-custom-properties.html": [
"92cf2c847dceda660ebedd2d8ae798e33b3b1d3b",
[ [
null, null,
{} {}
@ -438665,7 +438811,7 @@
}, },
"the-label-element": { "the-label-element": {
"clicking-interactive-content.html": [ "clicking-interactive-content.html": [
"60a80fad9d2aebf284e252949fba7b2bb15af134", "c448df0a38073019112f7f805904a6ec3bd6ef20",
[ [
null, null,
{} {}
@ -438679,7 +438825,7 @@
] ]
], ],
"clicking-noninteractive-unlabelable-content.html": [ "clicking-noninteractive-unlabelable-content.html": [
"233168f5664cf972ad579ae4ccba7f674c965d25", "be74ed68330c1f97069e05ed70a2e4908ef6f3c2",
[ [
null, null,
{} {}
@ -468536,6 +468682,13 @@
{} {}
] ]
], ],
"subresource-integrity-partial-image.html": [
"3abc8399219688f075deec3bf1551188d29f07b9",
[
null,
{}
]
],
"subresource-integrity.html": [ "subresource-integrity.html": [
"7a35e3bc85eb454f847d1087eaf00cb73b891fb4", "7a35e3bc85eb454f847d1087eaf00cb73b891fb4",
[ [
@ -510489,7 +510642,7 @@
] ]
], ],
"xrRay_constructor.https.html": [ "xrRay_constructor.https.html": [
"08f20142e38e9366bd016fb92666b5136128fef6", "d4d727785f1eb5487765249cf6c58dbe1111f3c5",
[ [
null, null,
{} {}
@ -539889,7 +540042,7 @@
}, },
"add_cookie": { "add_cookie": {
"add.py": [ "add.py": [
"c1a886aafa71757d5efccb3953d2c30a96a14a34", "30804c1dd8ec89f573d3af657de27fe1fe5d9597",
[ [
null, null,
{} {}
@ -540151,7 +540304,7 @@
}, },
"execute_async_script": { "execute_async_script": {
"collections.py": [ "collections.py": [
"14848da7e2966939c1efb75eb2b66d389f0b3d38", "484a247cffd9a12acd8024f48fa3db7de59db8d3",
[ [
null, null,
{} {}
@ -540190,7 +540343,7 @@
}, },
"execute_script": { "execute_script": {
"collections.py": [ "collections.py": [
"f939713c8064d5826e4439acc6b1803ac0a25950", "be0b3a018c505dc26bb2b44969617a9b9daa0793",
[ [
null, null,
{} {}
@ -540378,7 +540531,7 @@
}, },
"get_alert_text": { "get_alert_text": {
"get.py": [ "get.py": [
"d6fdda2d1ed08ecceb5863d78ce915c19d4846fb", "ad0058e0326454147c3b7202daea39864159fd46",
[ [
null, null,
{} {}
@ -540387,7 +540540,7 @@
}, },
"get_current_url": { "get_current_url": {
"get.py": [ "get.py": [
"39c28c612161e30b114298c7d5eed5ccd60d78d4", "c22e3d410c350248f5eb109e2ab332747e64a453",
[ [
null, null,
{} {}
@ -540513,7 +540666,7 @@
}, },
"get_named_cookie": { "get_named_cookie": {
"get.py": [ "get.py": [
"9ea29c8994eb471882ae0ce68aa48b854ba35b99", "1fd5f9f144969419571ab1193e314670925d1fa8",
[ [
null, null,
{} {}
@ -540742,7 +540895,7 @@
}, },
"new_session": { "new_session": {
"create_alwaysMatch.py": [ "create_alwaysMatch.py": [
"097764e4a999f1def552c5f21fefda3508623385", "a4cc9efc02e2a9c61fb8a79eecd5dcff49ca21a6",
[ [
null, null,
{ {
@ -540751,7 +540904,7 @@
] ]
], ],
"create_firstMatch.py": [ "create_firstMatch.py": [
"f00f6042b085dc09876f67ae650ff62ceb3eb76a", "ec671530f79692c04135ec441426f0044a72e8bc",
[ [
null, null,
{ {
@ -540769,7 +540922,7 @@
] ]
], ],
"invalid_capabilities.py": [ "invalid_capabilities.py": [
"f31ce3b8b6fd5f8e4a9ff4d0137debdb7dacdea4", "afdcea0daf706ca32a875db1eb367db0bd2046a7",
[ [
null, null,
{} {}
@ -540799,7 +540952,7 @@
] ]
], ],
"response.py": [ "response.py": [
"16c526ae10bea0540c91a9f7c2291488e4a26119", "dc1328998810faacf74f1b94b54ed59f48e84e4d",
[ [
null, null,
{} {}
@ -541054,7 +541207,7 @@
}, },
"status": { "status": {
"status.py": [ "status.py": [
"f0df16a1ee17d22e6293af049876810bb4073929", "1f0f1bc4fe7746f34080cc537701020e4c5b2292",
[ [
null, null,
{} {}
@ -541063,14 +541216,14 @@
}, },
"switch_to_frame": { "switch_to_frame": {
"cross_origin.py": [ "cross_origin.py": [
"4425a3ab901fef0effb2fc94ca3611e57f2ba51c", "905f1eb56dce07ea82e0de7c5755e2e1b50ed152",
[ [
null, null,
{} {}
] ]
], ],
"switch.py": [ "switch.py": [
"67b855a96d963ab03efa9495052767ec033b346f", "f9b0e6fc1fcd16c9f9e66b05149930f6ee0ae346",
[ [
null, null,
{} {}

View file

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

View file

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

View file

@ -1,2 +1,2 @@
[no-transition-from-ua-to-blocking-stylesheet.html] [no-transition-from-ua-to-blocking-stylesheet.html]
expected: TIMEOUT expected: FAIL

View file

@ -1,4 +0,0 @@
[elementFromPoint-001.html]
[CSSOM View - 5 - extensions to the Document interface]
expected: FAIL

View file

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

View file

@ -0,0 +1,4 @@
[elementsFromPoint-invalid-cases.html]
[The root element is the last element returned for otherwise empty queries within the viewport]
expected: FAIL

View file

@ -0,0 +1,4 @@
[cssstyledeclaration-csstext.html]
[cssText on computed style declaration returns the empty string]
expected: FAIL

View file

@ -0,0 +1,4 @@
[cssstyledeclaration-custom-properties.html]
[Custom properties are included in computed style]
expected: FAIL

View file

@ -0,0 +1,2 @@
[fecomposite-non-zero-inoffset-001.html]
expected: FAIL

View file

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

View file

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

View file

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

View file

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

View file

@ -4,7 +4,7 @@
expected: FAIL expected: FAIL
[Element with tabindex should support autofocus] [Element with tabindex should support autofocus]
expected: TIMEOUT expected: FAIL
[Host element with delegatesFocus including no focusable descendants should be skipped] [Host element with delegatesFocus including no focusable descendants should be skipped]
expected: NOTRUN expected: NOTRUN
@ -16,5 +16,5 @@
expected: NOTRUN expected: NOTRUN
[Non-HTMLElement should not support autofocus] [Non-HTMLElement should not support autofocus]
expected: NOTRUN expected: TIMEOUT

View file

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

View file

@ -1,5 +1,4 @@
[promise-job-entry.html] [promise-job-entry.html]
expected: TIMEOUT
[Fulfillment handler on fulfilled promise] [Fulfillment handler on fulfilled promise]
expected: FAIL expected: FAIL
@ -16,5 +15,5 @@
expected: FAIL expected: FAIL
[Fulfillment handler on pending-then-fulfilled promise] [Fulfillment handler on pending-then-fulfilled promise]
expected: TIMEOUT expected: FAIL

View file

@ -143,3 +143,6 @@
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44065 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 15080.\n\t[15080\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n] [X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44065 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 15080.\n\t[15080\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL expected: FAIL
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44059 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 17285.\n\t[17285\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 12348.\n\t[12348\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL

View file

@ -353,3 +353,9 @@
[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[31080\]\t-6.7816996732928000e+14\t5.6332010030746460e-1\t6.7816996732928063e+14\t1.2038802928550393e+15\t9.0957000000000003e-5\n\t[31081\]\t4.5854689648100989e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.7816996732928063e+14 at index of 31080.\n\tMax RelError of 1.2038802928550393e+15 at index of 31080.\n] [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[31080\]\t-6.7816996732928000e+14\t5.6332010030746460e-1\t6.7816996732928063e+14\t1.2038802928550393e+15\t9.0957000000000003e-5\n\t[31081\]\t4.5854689648100989e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.7816996732928063e+14 at index of 31080.\n\tMax RelError of 1.2038802928550393e+15 at index of 31080.\n]
expected: FAIL expected: FAIL
[X SNR (45.01863889941501 dB) is not greater than or equal to 85.58. Got 45.01863889941501.]
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[31080\]\t5.6092996914003379e-10\t5.6332010030746460e-1\t5.6332009974653463e-1\t9.9999999900424297e-1\t9.0957000000000003e-5\n\t[31081\]\t4.5875709125065861e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31081.\n]
expected: FAIL

View file

@ -0,0 +1,3 @@
spec: https://w3c.github.io/contentEditable/
suggested_reviewers:
- marcoscaceres

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>contenteditable="plaintext-only" should exist</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="txt" contenteditable="plaintext-only"></div>
<script>
test(function() {
const txt = document.getElementById('txt');
assert_true(txt.isContentEditable);
assert_equals(txt.contentEditable, 'plaintext-only');
}, 'plaintext-only is an accepted attribute value for contenteditable');
test(function() {
const txt = document.createElement('div');
assert_false(txt.isContentEditable);
txt.contentEditable = 'plaintext-only';
assert_true(txt.isContentEditable);
assert_equals(txt.contentEditable, 'plaintext-only');
}, 'plaintext-only can be assigned to contenteditable dynamically');
</script>

View file

@ -0,0 +1,28 @@
<!DOCTYPE html>
<title>CSS Cascade: 'revert' keyword in keyframe animations</title>
<link rel="help" href="https://drafts.csswg.org/css-cascade/#default">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
@keyframes test {
from { margin-top: 0px; }
50% { margin-top: revert; }
to { margin-top: 0px; }
}
#h1 {
margin-top: 0px;
animation: test linear 1000s -500s;
}
</style>
<h1 id=h1></h1>
<h1 id=ref></h1>
<script>
test(function() {
let actual = getComputedStyle(h1).marginTop;
let expected = getComputedStyle(ref).marginTop;
// This test assumes that the UA style sheet sets a non-0px value on
// <h1> elements:
assert_not_equals(expected, '0px');
assert_equals(actual, expected);
}, 'The revert keyword works with @keyframes');
</script>

View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<title>CSS Cascade: 'revert' in keyframe animations on identical elements</title>
<link rel="help" href="https://drafts.csswg.org/css-cascade/#default">
<link rel="help" href="https://crbug.com/1065387">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
@keyframes test {
from { margin-top: revert; }
to { margin-top: 100px; }
}
.anim {
margin-top: 0px;
animation: test linear 1s paused;
}
</style>
<h1 class="anim"></h1>
<h1 class="anim"></h1>
<h1 class="anim"></h1>
<h1 id=ref></h1>
<script>
test(function() {
// This querySelectorAll includes #ref, but that's OK.
let targets = document.querySelectorAll('h1');
for (let t of targets) {
let actual = getComputedStyle(t).marginTop;
let expected = getComputedStyle(ref).marginTop;
// This test assumes that the UA style sheet sets a non-0px value on
// <h1> elements:
assert_not_equals(expected, '0px');
assert_equals(actual, expected);
}
}, 'A @keyframe animation with revert works when applied to multiple identical elements');
</script>

View file

@ -0,0 +1,32 @@
<!DOCTYPE html>
<title>CSS Cascade: 'revert' in final keyframe of web animation</title>
<link rel="help" href="https://drafts.csswg.org/css-cascade/#default">
<link rel="help" href="https://crbug.com/1065387">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<h1 id=h1></h1>
<h1 id=ref></h1>
<script>
test(function() {
let expected_lower = parseInt(getComputedStyle(ref).marginTop);
let expected_upper = expected_lower * 2;
h1.animate([
{ marginTop: `${expected_lower * 4}px` },
{ marginTop: `${expected_lower * 3}px` },
{ marginTop: `${expected_lower * 2}px` },
{ marginTop: 'revert' },
], {
duration: 4000,
delay: -3500,
}).pause();
let actual = parseInt(getComputedStyle(h1).marginTop);
// This test assumes that the UA style sheet sets a non-0px value on
// <h1> elements:
assert_not_equals(expected_lower, 0);
assert_not_equals(expected_upper, 0);
assert_between_exclusive(actual, expected_lower, expected_upper);
}, 'The revert keyword works in the final frame of a web animation');
</script>

View file

@ -0,0 +1,30 @@
<!DOCTYPE html>
<title>CSS Cascade: 'revert' in implicit keyframes</title>
<link rel="help" href="https://drafts.csswg.org/css-cascade/#default">
<link rel="help" href="https://crbug.com/1065387">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<h1 id=h1></h1>
<h1 id=ref></h1>
<script>
test(function() {
let expected_lower = parseInt(getComputedStyle(ref).marginTop);
let expected_upper = expected_lower * 2;
h1.style = `margin-top: ${expected_lower * 1000}px; margin-top: revert;`;
h1.animate([
{ marginTop: `${expected_upper}px` },
], {
duration: 1000,
delay: -500,
}).pause();
let actual = parseInt(getComputedStyle(h1).marginTop);
// This test assumes that the UA style sheet sets a non-0px value on
// <h1> elements:
assert_not_equals(expected_lower, 0);
assert_not_equals(expected_upper, 0);
assert_between_exclusive(actual, expected_lower, expected_upper);
}, 'The revert keyword works in implicit keyframes');
</script>

View file

@ -0,0 +1,36 @@
<!DOCTYPE html>
<title>CSS Cascade: 'revert' appearing in setKeyframes</title>
<link rel="help" href="https://drafts.csswg.org/css-cascade/#default">
<link rel="help" href="https://drafts.csswg.org/web-animations-1/#dom-keyframeeffect-setkeyframes">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<h1 id=h1></h1>
<script>
test(function() {
let original = parseInt(getComputedStyle(h1).marginTop);
// This test assumes that the UA style sheet sets a non-0px value on
// <h1> elements:
assert_not_equals(original, 0);
let animation = h1.animate([
{ marginTop: `${original*4}px` },
{ marginTop: `${original*8}px` },
], {
duration: 1000000,
delay: -500000,
easing: 'steps(2, end)'
});
let animated = parseInt(getComputedStyle(h1).marginTop);
assert_equals(animated, original*6);
animation.effect.setKeyframes([
{ marginTop: 'revert' },
{ marginTop: `${original*3}px` },
]);
let animated_revert = parseInt(getComputedStyle(h1).marginTop);
assert_equals(animated_revert, original*2);
}, 'The revert works when appearing in setKeyframes');
</script>

View file

@ -28,8 +28,8 @@ to fit the size of flexitem according to flex values.">
<div id=log></div> <div id=log></div>
<div class="flexbox"> <div class="flexbox">
<img data-expected-display="block" data-expected-width="345" style="flex: 1 0 auto;" src="support/100x100-blue.png"> <img data-expected-display="block" data-expected-width="345" data-expected-height="345" style="flex: 1 0 auto;" src="support/100x100-blue.png">
<img data-expected-display="block" data-expected-width="255" data-expected-height="100" style="flex: 1 0 auto;" src="support/10x10-green.png"> <img data-expected-display="block" data-expected-width="255" data-expected-height="345" style="flex: 1 0 auto;" src="support/10x10-green.png">
</div> </div>
</body> </body>

View file

@ -0,0 +1,21 @@
<!DOCTYPE html>
<title>CSS Flexbox: Crash caused by negative width in flex box</title>
<link rel="author" title="Christian Biesinger" href="mailto:cbiesinger@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#box-model">
<link rel="issue" href="https://crbug.com/490423">
<meta name="assert" content="Check that crash doesn't happen in flex box with negative margin.">
<style>
div {
display: flex;
}
.inner {
margin-left: -4em;
}
</style>
<div>
<div>
<div class="inner">PASS if we don't assert</div>
</div>
</div>

View file

@ -0,0 +1,46 @@
<!DOCTYPE html>
<title>CSS Flexbox: Crash caused by rounding error in flex-shrink</title>
<link rel="author" title="Tony Chang" href="mailto:tony@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#resolve-flexible-lengths">
<link rel="issue" href="https://bugs.webkit.org/show_bug.cgi?id=97606">
<meta name="assert" content="Check that crash doesn't happen in flex-shrink due to floating point precision errors.">
<style>
.math {
display: inline-flex;
}
.math > * {
padding-bottom: 0.35em;
}
.mfrac {
display: inline-flex;
flex-direction: column;
}
.mfrac > :first-child {
margin-block-end: 0.2em;
}
.mfrac > :last-child {
margin-block-start: 0.2em;
}
.x {
line-height: 9px;
}
.y {
line-height: 12px;
}
</style>
<div class=math>
<div class=mfrac>
<div class=mfrac>
<div class=x>x</div>
<div class=y>y</div>
</div>
<div class=mfrac>
<div class=mfrac>
<div class=x>x</div>
<div class=y>y</div>
</div>
<div class=x>z</div>
</div>
</div>
</div>

View file

@ -0,0 +1,42 @@
<!doctype html>
<title>CSS Grid: Do not add non-children of the grid into the grid container</title>
<link rel="author" title="Sergio Villar" href="mailto:svillar@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-grid">
<link rel="help" href="https://crbug.com/313293">
<link rel="match" href="reference/grid-layout-stale-001-ref.html">
<meta name="assert" content="Check that we do not add non-children of the grid into the grid representation."/>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<style>
embed { position: absolute; }
.c1 { animation-delay: 45762s; }
</style>
<p>This test passes if it doesn't crash and it matches the reference.</p>
<div style="display: grid;">
<embed type="something-not-js">
</div>
<script>
function keyPress(key) {
let actions = new test_driver.Actions()
.keyDown(key)
.keyUp(key);
return actions.send();
}
function crash() {
var highlight = document.createElementNS("http://www.w3.org/1999/xhtml", "highlight");
highlight.setAttribute("class", "c1");
document.body.appendChild(highlight);
for (i=0; i != 8; i++)
keyPress("\t");
keyPress("X");
}
document.addEventListener("DOMContentLoaded", crash, false);
</script>

View file

@ -0,0 +1,30 @@
<!DOCTYPE html>
<title>CSS Grid: Do not leave stale pointers into the grid container</title>
<link rel="author" title="Sergio Villar" href="mailto:svillar@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-grid">
<link rel="help" href="https://crbug.com/313293">
<link rel="match" href="reference/grid-layout-stale-002-ref.html">
<meta name="assert" content="Check that we don't leave stale pointers into the internal grid representation."/>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<p>This test passes if it doesn't crash and it matches the reference.</p>
<span style="display: grid" contenteditable=plaintext-only></span>
<script>
function keyPress(key) {
let actions = new test_driver.Actions()
.keyDown(key)
.keyUp(key);
return actions.send();
}
function crash() {
keyPress("\t");
keyPress("X");
document.designMode = 'on';
document.execCommand("InsertHTML", false, "<div>");
}
document.addEventListener("DOMContentLoaded", crash, false);
</script>

View file

@ -0,0 +1,13 @@
<!doctype html>
<title>CSS Grid: Do not add non-children of the grid into the grid container</title>
<style>
embed { position: absolute; }
.c1 { animation-delay: 45762s; }
</style>
<p>This test passes if it doesn't crash and it matches the reference.</p>
<div style="display: grid;">
<embed type="something-not-js">
</div>
<highlight class="c1"></highlight>

View file

@ -0,0 +1,4 @@
<!DOCTYPE html>
<title>CSS Grid: Do not leave stale pointers into the grid container</title>
<p>This test passes if it doesn't crash and it matches the reference.</p>
<span style="display: grid" contenteditable=plaintext-only></span>

View file

@ -0,0 +1,57 @@
<!DOCTYPE html>
<title>CSS Grid: 'stretch' content alignment on flex tracks.</title>
<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#content-distribution">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#valdef-align-content-stretch">
<meta name="assert" content="This test ensures that using flex tracks and 'stretch' value for the content alignment css properties work properly."/>
<link href="/css/support/grid.css" rel="stylesheet"/>
<link href="/css/support/alignment.css" rel="stylesheet"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<style>
body {
margin: 0;
}
.grid {
position: relative;
width: 200px;
height: 300px;
}
.fractionFlexTracks {
grid-template-columns: auto 0.25fr;
grid-template-rows: 0.2fr auto;
}
.flexTracks {
grid-template-columns: auto 1fr;
grid-template-rows: 1.5fr auto;
}
</style>
</head>
<body onload="checkLayout('.grid')">
<div style="position: relative">
<p>When the sum of all track's flex factor is < 1, they don't exhaust the available space, which is used to stretch the 'auto' sized tracks.</p>
<div class="grid fractionFlexTracks contentStretch" data-expected-width="200" data-expected-height="300">
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="150" data-expected-height="60"></div>
<div class="firstRowSecondColumn" data-offset-x="150" data-offset-y="0" data-expected-width="50" data-expected-height="60"></div>
<div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="60" data-expected-width="150" data-expected-height="240"></div>
<div class="secondRowSecondColumn" data-offset-x="150" data-offset-y="60" data-expected-width="50" data-expected-height="240"></div>
</div>
</div>
<div style="position: relative">
<p>When the sum of all track's flex factor is >= 1, they exhaust the available space, hence the 'stretch' alignment is not applied to the 'auto' sized tracks.</p>
<div class="grid flexTracks contentStretch" data-expected-width="200" data-expected-height="300">
<div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="0" data-expected-height="300"></div>
<div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="0" data-expected-width="200" data-expected-height="300"></div>
<div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="300" data-expected-width="0" data-expected-height="0"></div>
<div class="secondRowSecondColumn" data-offset-x="0" data-offset-y="300" data-expected-width="200" data-expected-height="0"></div>
</div>
</div>
</body>

View file

@ -14,11 +14,33 @@
--inherited: revert; --inherited: revert;
--non-inherited: revert; --non-inherited: revert;
} }
@keyframes revert_animation {
from {
--animated-inherited: revert;
--animated-non-inherited: revert;
}
to {
--animated-inherited: 100px;
--animated-non-inherited: 100px;
}
}
#animated_parent {
--animated-inherited: 0px;
}
#animated_child {
animation: revert_animation 10s -5s linear paused;
}
</style> </style>
<div id=parent> <div id=parent>
<div id=child> <div id=child>
</div> </div>
</div> </div>
<div id=animated_parent>
<div id=animated_child>
</div>
</div>
<script> <script>
CSS.registerProperty({ CSS.registerProperty({
@ -35,6 +57,20 @@ CSS.registerProperty({
inherits: false inherits: false
}); });
CSS.registerProperty({
name: "--animated-non-inherited",
syntax: "<length>",
initialValue: "0px",
inherits: false
});
CSS.registerProperty({
name: "--animated-inherited",
syntax: "<length>",
initialValue: "10000px",
inherits: true
});
test(function(){ test(function(){
let cs = getComputedStyle(child); let cs = getComputedStyle(child);
assert_equals(cs.getPropertyValue('--inherited'), '10px'); assert_equals(cs.getPropertyValue('--inherited'), '10px');
@ -45,4 +81,14 @@ test(function(){
assert_equals(cs.getPropertyValue('--non-inherited'), '0px'); assert_equals(cs.getPropertyValue('--non-inherited'), '0px');
}, 'Non-inherited registered custom property can be reverted'); }, 'Non-inherited registered custom property can be reverted');
test(function(){
let cs = getComputedStyle(animated_child);
assert_equals(cs.getPropertyValue('--animated-non-inherited'), '50px');
}, 'Non-inherited registered custom property can be reverted in animation');
test(function(){
let cs = getComputedStyle(animated_child);
assert_equals(cs.getPropertyValue('--animated-inherited'), '50px');
}, 'Inherited registered custom property can be reverted in animation');
</script> </script>

View file

@ -97,6 +97,18 @@
}, 'invalid property does not appear'); }, 'invalid property does not appear');
// https://github.com/w3c/csswg-drafts/issues/1033
test(function() {
var elm = newElm();
var style = elm.style;
style.color = 'red';
style.unknown = 'unknown';
style.fontSize = '10pt';
assert_not_equals(getComputedStyle(elm).length, 0, "Should have a style");
assert_equals(getComputedStyle(elm).cssText, "", "cssText is empty");
}, 'cssText on computed style declaration returns the empty string');
</script> </script>
</body> </body>
</html> </html>

View file

@ -0,0 +1,19 @@
<!doctype html>
<title>CSS Test: computed style declaration includes custom properties.</title>
<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
<link rel="author" href="https://mozilla.org" title="Mozilla">
<link rel="help" href="https://drafts.csswg.org/cssom/#dom-window-getcomputedstyle">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/1316">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div style="--foo:bar"></div>
<div></div>
<script>
test(function() {
let withCustom = getComputedStyle(document.querySelector("div"));
let withoutCustom = getComputedStyle(document.querySelector("div + div"));
assert_equals(withCustom.getPropertyValue("--foo"), "bar", "Should be returned from getPropertyValue");
assert_equals(withCustom.length, withoutCustom.length + 1, "Should show up in .length");
assert_equals(withCustom[withCustom.length - 1], "--foo", "Should be after all the non-custom properties");
}, "Custom properties are included in computed style");
</script>

View file

@ -0,0 +1,21 @@
<!DOCTYPE html>
<title>CSS Filters: Correct destination rectangle in feComposite</title>
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#FilterProperty">
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#feMorphologyElement">
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#feFloodElement">
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#feCompositeElement">
<link rel="issue" href="https://bugs.chromium.org/p/chromium/issues/detail?id=391200">
<link rel="match" href="reference/fecomposite-non-zero-inoffset-001-ref.html">
<meta name="assert" content="This test ensures that feComposite with 'operator=in' works properly on the correct destination rectangle.">
<body>
<div style="filter: url('#filter'); width: 100px; height: 100px; padding: 1px;">
<div style="background-color: red; width: 98px; height: 98px;"></div>
</div>
<svg width="0" height="0">
<filter id="filter">
<feFlood result="outlineColor" flood-color="green"/>
<feMorphology in="SourceAlpha" operator="dilate" radius="1"/>
<feComposite operator="in" in="outlineColor"/>
</filter>
</svg>
</body>

View file

@ -0,0 +1,4 @@
<!DOCTYPE html>
<body>
<div style="width: 100px; height: 100px; background-color: green;"></div>
</body>

View file

@ -0,0 +1,41 @@
<!DOCTYPE html>
<html>
<head>
<title>CSS Filters: Repaint a compositing layer</title>
<style>
.backdrop {
position: absolute;
top: 0;
left: 0;
height: 100px;
width: 100px;
background-color: silver;
}
.overlay {
position: absolute;
top: 50px;
left: 50px;
width: 400px;
height: 100px;
background: gray;
box-shadow: 0 0 4px black;
}
.play {
font-size: 36pt;
background-color: navy;
color: white;
}
.composited {
will-change: transform;
}
</style>
</head>
<body>
<div class="composited backdrop"></div>
<div class="overlay">
<span id="play" class="play changed">this should be visible</span>
</div>
</body>
</html>

View file

@ -0,0 +1,60 @@
<!DOCTYPE html>
<html>
<head>
<title>CSS Filters: Repaint a compositing layer</title>
<link rel="author" title="Simon Fraser" href="mailto:simon.fraser@apple.com>">
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#dropshadowEquivalent">
<link rel="issue" href="https://bugs.webkit.org/show_bug.cgi?id=120135">
<link rel="issue" href="https://chromiumcodereview.appspot.com/23526037">
<link rel="match" href="reference/remove-filter-repaint-ref.html">
<meta name="assert" content="This test ensures that we can repaint the compositing layer when removing a filter on an inline child of a compositing layer.">
<script src="/common/reftest-wait.js"></script>
<style>
.backdrop {
position: absolute;
top: 0;
left: 0;
height: 100px;
width: 100px;
background-color: silver;
}
.overlay {
position: absolute;
top: 50px;
left: 50px;
width: 400px;
height: 100px;
background: gray;
box-shadow: 0 0 4px black;
}
.play {
font-size: 36pt;
background-color: navy;
color: white;
}
.play.changed {
filter: drop-shadow(black 0 0 5px);
}
.composited {
will-change: transform;
}
</style>
<script>
function doTest() {
requestAnimationFrame(function() {
requestAnimationFrame(function() {
document.getElementById('play').classList.remove('changed');
takeScreenshot();
});
});
}
window.addEventListener('load', doTest, false);
</script>
</head>
<body>
<div class="composited backdrop"></div>
<div class="overlay">
<span id="play" class="play changed">this should be visible</span>
</div>
</body>
</html>

View file

@ -19,17 +19,6 @@
<select></select> <select></select>
<textarea></textarea> <textarea></textarea>
<video controls></video> <video controls></video>
<div tabindex=""></div>
<!-- These are interesting in that even without tabindex, they could become
interactive with the addition/removal of an attribute. -->
<a tabindex=""></a>
<audio tabindex=""></audio>
<img tabindex="">
<input type=hidden tabindex="">
<object tabindex=""></object>
<video tabindex=""></video>
</template> </template>
<script> <script>

View file

@ -17,6 +17,16 @@
<input type=hidden> <input type=hidden>
<object></object> <object></object>
<video></video> <video></video>
<!-- These are considered interactive content for the purpose of <label> in a
previous version of the HTML Standard, but no longer. -->
<a tabindex=""></a>
<audio tabindex=""></audio>
<div tabindex=""></div>
<img tabindex="">
<input type=hidden tabindex="">
<object tabindex=""></object>
<video tabindex=""></video>
</template> </template>
<script> <script>

View file

@ -0,0 +1,28 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>Subresource Integrity Check + preload + partial image rendering</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
// https://crbug.com/1058045: Chromium crashed when:
// 1. <link rel="preload" as="image" integrity="..." href="url">
// (strictly speaking the preload scannner) starts preloading the image,
// and the image url takes some time for loading,
// 2. <img> loads the same URL and renders the partial image after some image
// data is received but before fully loaded, and then
// 3. the image is loaded and integrity check is done.
const t = async_test(
"<link rel='image'> with progressive image shouldn't crash");
</script>
<link
rel="preload"
as="image"
integrity="sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="
href="/element-timing/resources/progressive-image.py?name=square100.png&numInitial=7500&sleep=1000">
<img src="/element-timing/resources/progressive-image.py?name=square100.png&numInitial=7500&sleep=1000"
onload="t.step_func_done()()"
onerror="t.unreached_func('image should load because SRI is not checked')()">

View file

@ -1,4 +1,5 @@
from datetime import datetime, timedelta from datetime import datetime, timedelta
from six import text_type
from webdriver.transport import Response from webdriver.transport import Response
@ -59,11 +60,11 @@ def test_add_domain_cookie(session, url, server_config):
cookie = session.cookies("hello") cookie = session.cookies("hello")
assert "domain" in cookie assert "domain" in cookie
assert isinstance(cookie["domain"], basestring) assert isinstance(cookie["domain"], text_type)
assert "name" in cookie assert "name" in cookie
assert isinstance(cookie["name"], basestring) assert isinstance(cookie["name"], text_type)
assert "value" in cookie assert "value" in cookie
assert isinstance(cookie["value"], basestring) assert isinstance(cookie["value"], text_type)
assert cookie["name"] == "hello" assert cookie["name"] == "hello"
assert cookie["value"] == "world" assert cookie["value"] == "world"
@ -89,11 +90,11 @@ def test_add_cookie_for_ip(session, url, server_config, configuration):
cookie = session.cookies("hello") cookie = session.cookies("hello")
assert "name" in cookie assert "name" in cookie
assert isinstance(cookie["name"], basestring) assert isinstance(cookie["name"], text_type)
assert "value" in cookie assert "value" in cookie
assert isinstance(cookie["value"], basestring) assert isinstance(cookie["value"], text_type)
assert "domain" in cookie assert "domain" in cookie
assert isinstance(cookie["domain"], basestring) assert isinstance(cookie["domain"], text_type)
assert cookie["name"] == "hello" assert cookie["name"] == "hello"
assert cookie["value"] == "world" assert cookie["value"] == "world"
@ -118,9 +119,9 @@ def test_add_non_session_cookie(session, url):
cookie = session.cookies("hello") cookie = session.cookies("hello")
assert "name" in cookie assert "name" in cookie
assert isinstance(cookie["name"], basestring) assert isinstance(cookie["name"], text_type)
assert "value" in cookie assert "value" in cookie
assert isinstance(cookie["value"], basestring) assert isinstance(cookie["value"], text_type)
assert "expiry" in cookie assert "expiry" in cookie
assert isinstance(cookie["expiry"], int) assert isinstance(cookie["expiry"], int)
@ -143,9 +144,9 @@ def test_add_session_cookie(session, url):
cookie = session.cookies("hello") cookie = session.cookies("hello")
assert "name" in cookie assert "name" in cookie
assert isinstance(cookie["name"], basestring) assert isinstance(cookie["name"], text_type)
assert "value" in cookie assert "value" in cookie
assert isinstance(cookie["value"], basestring) assert isinstance(cookie["value"], text_type)
if "expiry" in cookie: if "expiry" in cookie:
assert cookie.get("expiry") is None assert cookie.get("expiry") is None
@ -168,11 +169,11 @@ def test_add_session_cookie_with_leading_dot_character_in_domain(session, url, s
cookie = session.cookies("hello") cookie = session.cookies("hello")
assert "name" in cookie assert "name" in cookie
assert isinstance(cookie["name"], basestring) assert isinstance(cookie["name"], text_type)
assert "value" in cookie assert "value" in cookie
assert isinstance(cookie["value"], basestring) assert isinstance(cookie["value"], text_type)
assert "domain" in cookie assert "domain" in cookie
assert isinstance(cookie["domain"], basestring) assert isinstance(cookie["domain"], text_type)
assert cookie["name"] == "hello" assert cookie["name"] == "hello"
assert cookie["value"] == "world" assert cookie["value"] == "world"

View file

@ -1,5 +1,7 @@
import os import os
from six import text_type
from tests.support.asserts import assert_same_element, assert_success from tests.support.asserts import assert_same_element, assert_success
from tests.support.inline import inline from tests.support.inline import inline
@ -52,7 +54,7 @@ def test_file_list(session, tmpdir):
for expected, actual in zip(files, value): for expected, actual in zip(files, value):
assert isinstance(actual, dict) assert isinstance(actual, dict)
assert "name" in actual assert "name" in actual
assert isinstance(actual["name"], basestring) assert isinstance(actual["name"], text_type)
assert os.path.basename(str(expected)) == actual["name"] assert os.path.basename(str(expected)) == actual["name"]

View file

@ -1,5 +1,7 @@
import os import os
from six import text_type
from tests.support.asserts import assert_same_element, assert_success from tests.support.asserts import assert_same_element, assert_success
from tests.support.inline import inline from tests.support.inline import inline
@ -45,7 +47,7 @@ def test_file_list(session, tmpdir):
for expected, actual in zip(files, value): for expected, actual in zip(files, value):
assert isinstance(actual, dict) assert isinstance(actual, dict)
assert "name" in actual assert "name" in actual
assert isinstance(actual["name"], basestring) assert isinstance(actual["name"], text_type)
assert os.path.basename(str(expected)) == actual["name"] assert os.path.basename(str(expected)) == actual["name"]

View file

@ -1,3 +1,5 @@
from six import text_type
from webdriver.error import NoSuchAlertException from webdriver.error import NoSuchAlertException
from tests.support.asserts import assert_error, assert_success from tests.support.asserts import assert_error, assert_success
@ -27,7 +29,7 @@ def test_get_alert_text(session):
assert isinstance(response.body, dict) assert isinstance(response.body, dict)
assert "value" in response.body assert "value" in response.body
alert_text = response.body["value"] alert_text = response.body["value"]
assert isinstance(alert_text, basestring) assert isinstance(alert_text, text_type)
assert alert_text == "Hello" assert alert_text == "Hello"
@ -38,7 +40,7 @@ def test_get_confirm_text(session):
assert isinstance(response.body, dict) assert isinstance(response.body, dict)
assert "value" in response.body assert "value" in response.body
confirm_text = response.body["value"] confirm_text = response.body["value"]
assert isinstance(confirm_text, basestring) assert isinstance(confirm_text, text_type)
assert confirm_text == "Hello" assert confirm_text == "Hello"
@ -49,7 +51,7 @@ def test_get_prompt_text(session):
assert isinstance(response.body, dict) assert isinstance(response.body, dict)
assert "value" in response.body assert "value" in response.body
prompt_text = response.body["value"] prompt_text = response.body["value"]
assert isinstance(prompt_text, basestring) assert isinstance(prompt_text, text_type)
assert prompt_text == "Enter Your Name: " assert prompt_text == "Enter Your Name: "

View file

@ -1,3 +1,5 @@
from six import text_type
from tests.support import platform_name from tests.support import platform_name
from tests.support.inline import inline from tests.support.inline import inline
from tests.support.asserts import assert_error, assert_success from tests.support.asserts import assert_error, assert_success
@ -31,7 +33,7 @@ def test_get_current_url_payload(session):
response = get_current_url(session) response = get_current_url(session)
assert response.status == 200 assert response.status == 200
assert isinstance(response.body["value"], basestring) assert isinstance(response.body["value"], text_type)
def test_get_current_url_special_pages(session): def test_get_current_url_special_pages(session):

View file

@ -1,4 +1,6 @@
from datetime import datetime, timedelta from datetime import datetime, timedelta
from six import integer_types, text_type
from tests.support.asserts import assert_error, assert_success from tests.support.asserts import assert_error, assert_success
from tests.support.helpers import clear_all_cookies from tests.support.helpers import clear_all_cookies
@ -28,13 +30,13 @@ def test_get_named_session_cookie(session, url):
# table for cookie conversion # table for cookie conversion
# https://w3c.github.io/webdriver/webdriver-spec.html#dfn-table-for-cookie-conversion # https://w3c.github.io/webdriver/webdriver-spec.html#dfn-table-for-cookie-conversion
assert "name" in cookie assert "name" in cookie
assert isinstance(cookie["name"], basestring) assert isinstance(cookie["name"], text_type)
assert "value" in cookie assert "value" in cookie
assert isinstance(cookie["value"], basestring) assert isinstance(cookie["value"], text_type)
assert "path" in cookie assert "path" in cookie
assert isinstance(cookie["path"], basestring) assert isinstance(cookie["path"], text_type)
assert "domain" in cookie assert "domain" in cookie
assert isinstance(cookie["domain"], basestring) assert isinstance(cookie["domain"], text_type)
assert "secure" in cookie assert "secure" in cookie
assert isinstance(cookie["secure"], bool) assert isinstance(cookie["secure"], bool)
assert "httpOnly" in cookie assert "httpOnly" in cookie
@ -60,11 +62,11 @@ def test_get_named_cookie(session, url):
assert isinstance(cookie, dict) assert isinstance(cookie, dict)
assert "name" in cookie assert "name" in cookie
assert isinstance(cookie["name"], basestring) assert isinstance(cookie["name"], text_type)
assert "value" in cookie assert "value" in cookie
assert isinstance(cookie["value"], basestring) assert isinstance(cookie["value"], text_type)
assert "expiry" in cookie assert "expiry" in cookie
assert isinstance(cookie["expiry"], (int, long)) assert isinstance(cookie["expiry"], integer_types)
assert cookie["name"] == "foo" assert cookie["name"] == "foo"
assert cookie["value"] == "bar" assert cookie["value"] == "bar"
@ -99,9 +101,9 @@ def test_duplicated_cookie(session, url, server_config):
assert isinstance(cookie, dict) assert isinstance(cookie, dict)
assert "name" in cookie assert "name" in cookie
assert isinstance(cookie["name"], basestring) assert isinstance(cookie["name"], text_type)
assert "value" in cookie assert "value" in cookie
assert isinstance(cookie["value"], basestring) assert isinstance(cookie["value"], text_type)
assert cookie["name"] == new_cookie["name"] assert cookie["name"] == new_cookie["name"]
assert cookie["value"] == "newworld" assert cookie["value"] == "newworld"

View file

@ -2,7 +2,7 @@
import pytest import pytest
from conftest import product, flatten from .conftest import product, flatten
from tests.support.asserts import assert_success from tests.support.asserts import assert_success
from tests.new_session.support.create import valid_data from tests.new_session.support.create import valid_data

View file

@ -2,7 +2,7 @@
import pytest import pytest
from conftest import product, flatten from .conftest import product, flatten
from tests.support.asserts import assert_success from tests.support.asserts import assert_success

View file

@ -1,6 +1,6 @@
import pytest import pytest
from conftest import product, flatten from .conftest import product, flatten
from tests.new_session.support.create import invalid_data, invalid_extensions from tests.new_session.support.create import invalid_data, invalid_extensions
from tests.support.asserts import assert_error from tests.support.asserts import assert_error

View file

@ -1,28 +1,29 @@
import uuid import uuid
import pytest import pytest
from six import text_type
from tests.support.asserts import assert_success from tests.support.asserts import assert_success
def test_sessionid(new_session, add_browser_capabilities): def test_sessionid(new_session, add_browser_capabilities):
response, _ = new_session({"capabilities": {"alwaysMatch": add_browser_capabilities({})}}) response, _ = new_session({"capabilities": {"alwaysMatch": add_browser_capabilities({})}})
value = assert_success(response) value = assert_success(response)
assert isinstance(value["sessionId"], basestring) assert isinstance(value["sessionId"], text_type)
uuid.UUID(hex=value["sessionId"]) uuid.UUID(hex=value["sessionId"])
@pytest.mark.parametrize("capability, type", [ @pytest.mark.parametrize("capability, type", [
("browserName", basestring), ("browserName", text_type),
("browserVersion", basestring), ("browserVersion", text_type),
("platformName", basestring), ("platformName", text_type),
("acceptInsecureCerts", bool), ("acceptInsecureCerts", bool),
("pageLoadStrategy", basestring), ("pageLoadStrategy", text_type),
("proxy", dict), ("proxy", dict),
("setWindowRect", bool), ("setWindowRect", bool),
("timeouts", dict), ("timeouts", dict),
("strictFileInteractability", bool), ("strictFileInteractability", bool),
("unhandledPromptBehavior", basestring), ("unhandledPromptBehavior", text_type),
]) ])
def test_capability_type(session, capability, type): def test_capability_type(session, capability, type):
assert isinstance(session.capabilities, dict) assert isinstance(session.capabilities, dict)

View file

@ -17,9 +17,10 @@
"""The Keys implementation.""" """The Keys implementation."""
from inspect import getmembers
import sys import sys
from inspect import getmembers
from six import text_type
class Keys(object): class Keys(object):
""" """
@ -105,7 +106,7 @@ class Keys(object):
R_DELETE = u"\uE05D" R_DELETE = u"\uE05D"
ALL_KEYS = getmembers(Keys, lambda x: type(x) == unicode) ALL_KEYS = getmembers(Keys, lambda x: type(x) == text_type)
ALL_EVENTS = { ALL_EVENTS = {
"ADD": { "ADD": {

View file

@ -1,5 +1,7 @@
import json import json
from six import text_type
from tests.support.asserts import assert_success from tests.support.asserts import assert_success
@ -16,7 +18,7 @@ def test_get_status_no_session(http):
value = parsed_obj["value"] value = parsed_obj["value"]
assert value["ready"] in [True, False] assert value["ready"] in [True, False]
assert isinstance(value["message"], basestring) assert isinstance(value["message"], text_type)
def test_status_with_session_running_on_endpoint_node(session): def test_status_with_session_running_on_endpoint_node(session):

View file

@ -2,7 +2,7 @@ import base64
import imghdr import imghdr
import struct import struct
from six import PY3 from six import ensure_binary, text_type, PY3
from webdriver import Element, NoSuchAlertException, WebDriverException from webdriver import Element, NoSuchAlertException, WebDriverException
@ -52,8 +52,8 @@ def assert_error(response, error_code):
assert response.status == errors[error_code] assert response.status == errors[error_code]
assert "value" in response.body assert "value" in response.body
assert response.body["value"]["error"] == error_code assert response.body["value"]["error"] == error_code
assert isinstance(response.body["value"]["message"], basestring) assert isinstance(response.body["value"]["message"], text_type)
assert isinstance(response.body["value"]["stacktrace"], basestring) assert isinstance(response.body["value"]["stacktrace"], text_type)
assert_response_headers(response.headers) assert_response_headers(response.headers)
@ -221,6 +221,6 @@ def assert_move_to_coordinates(point, target, events):
def assert_png(screenshot): def assert_png(screenshot):
"""Test that screenshot is a Base64 encoded PNG file.""" """Test that screenshot is a Base64 encoded PNG file."""
image = base64.decodestring(screenshot) image = base64.decodestring(ensure_binary(screenshot))
mime_type = imghdr.what("", image) mime_type = imghdr.what("", image)
assert mime_type == "png", "Expected image to be PNG, but it was {}".format(mime_type) assert mime_type == "png", "Expected image to be PNG, but it was {}".format(mime_type)

View file

@ -1,4 +1,4 @@
import urllib from six.moves.urllib.parse import urlencode
def basic_authentication(username=None, password=None, protocol="http"): def basic_authentication(username=None, password=None, protocol="http"):
@ -8,7 +8,7 @@ def basic_authentication(username=None, password=None, protocol="http"):
query = {} query = {}
return build_url("/webdriver/tests/support/authentication.py", return build_url("/webdriver/tests/support/authentication.py",
query=urllib.urlencode(query), query=urlencode(query),
protocol=protocol) protocol=protocol)

View file

@ -1,11 +1,14 @@
import copy import copy
import json import json
import os import os
import urlparse
import pytest import pytest
import webdriver import webdriver
from six import string_types
from six.moves.urllib.parse import urlunsplit
from tests.support import defaults from tests.support import defaults
from tests.support.helpers import cleanup_session from tests.support.helpers import cleanup_session
from tests.support.http_request import HTTPRequest from tests.support.http_request import HTTPRequest
@ -172,7 +175,7 @@ def url(server_config):
domain = server_config["domains"][domain][subdomain] domain = server_config["domains"][domain][subdomain]
port = server_config["ports"][protocol][0] port = server_config["ports"][protocol][0]
host = "{0}:{1}".format(domain, port) host = "{0}:{1}".format(domain, port)
return urlparse.urlunsplit((protocol, host, path, query, fragment)) return urlunsplit((protocol, host, path, query, fragment))
inner.__name__ = "url" inner.__name__ = "url"
return inner return inner
@ -191,7 +194,7 @@ def create_dialog(session):
if text is None: if text is None:
text = "" text = ""
assert isinstance(text, basestring), "`text` parameter must be a string" assert isinstance(text, string_types), "`text` parameter must be a string"
# Script completes itself when the user prompt has been opened. # Script completes itself when the user prompt has been opened.
# For prompt() dialogs, add a value for the 'default' argument, # For prompt() dialogs, add a value for the 'default' argument,

View file

@ -1,9 +1,10 @@
import contextlib import contextlib
import httplib
import json import json
from six import text_type from six import text_type
from six.moves.http_client import HTTPConnection
class HTTPRequest(object): class HTTPRequest(object):
def __init__(self, host, port): def __init__(self, host, port):
@ -33,7 +34,7 @@ class HTTPRequest(object):
if isinstance(payload, text_type): if isinstance(payload, text_type):
payload = body.encode("utf-8") payload = body.encode("utf-8")
conn = httplib.HTTPConnection(self.host, self.port) conn = HTTPConnection(self.host, self.port)
try: try:
conn.request(method, path, payload) conn.request(method, path, payload)
yield conn.getresponse() yield conn.getresponse()

View file

@ -2,11 +2,13 @@ import base64
import math import math
import struct import struct
from six import ensure_binary
from tests.support.asserts import assert_png from tests.support.asserts import assert_png
def png_dimensions(screenshot): def png_dimensions(screenshot):
assert_png(screenshot) assert_png(screenshot)
image = base64.decodestring(screenshot) image = base64.decodestring(ensure_binary(screenshot))
width, height = struct.unpack(">LL", image[16:24]) width, height = struct.unpack(">LL", image[16:24])
return int(width), int(height) return int(width), int(height)

View file

@ -1,6 +1,6 @@
"""Helpers for inlining extracts of documents in tests.""" """Helpers for inlining extracts of documents in tests."""
import urllib from six.moves.urllib.parse import urlencode
BOILERPLATES = { BOILERPLATES = {
@ -58,7 +58,7 @@ def inline(src, doctype="html", mime=None, charset=None, **kwargs):
query = {"doc": doc, "mime": mime, "charset": charset} query = {"doc": doc, "mime": mime, "charset": charset}
return build_url( return build_url(
"/webdriver/tests/support/inline.py", "/webdriver/tests/support/inline.py",
query=urllib.urlencode(query), query=urlencode(query),
**kwargs) **kwargs)

View file

@ -1,4 +1,4 @@
from urlparse import urlparse from six.moves.urllib.parse import urlparse
import webdriver.protocol as protocol import webdriver.protocol as protocol

View file

@ -18,7 +18,7 @@ def switch_to_frame(session, frame):
def frameset(*docs): def frameset(*docs):
frames = map(lambda doc: "<frame src='{}'></frame>".format(inline(doc)), docs) frames = list(map(lambda doc: "<frame src='{}'></frame>".format(inline(doc)), docs))
return "<frameset rows='{}'>\n{}</frameset>".format(len(frames) * "*,", "\n".join(frames)) return "<frameset rows='{}'>\n{}</frameset>".format(len(frames) * "*,", "\n".join(frames))

View file

@ -91,25 +91,23 @@ let constructor_tests = function() {
{ {
// Check that we throw exception on direction too close to 0,0,0: // Check that we throw exception on direction too close to 0,0,0:
let originDict = {x : 10.0, y : 10.0, z : 10.0, w : 1.0}; let originDict = {x : 10.0, y : 10.0, z : 10.0, w : 1.0};
let directionDict = {x : 0.0, y : 0.0, z : 0.0, w : 0.0}; let directionDict = {x : 1.0, y : 0.0, z : 0.0, w : 0.0};
try { assert_throws_js(TypeError, () => new XRRay(
let xrRay = new XRRay(
DOMPoint.fromPoint(originDict), DOMPoint.fromPoint(originDict),
DOMPoint.fromPoint(directionDict)); DOMPoint.fromPoint({x : 0.0, y : 0.0, z : 0.0, w : 0.0})
), "Constructor should throw for zero direction");
assert(false, "origin-custom-direction-zero:exception not thrown"); assert_throws_js(TypeError, () => new XRRay(
} DOMPoint.fromPoint(originDict),
catch(e) DOMPoint.fromPoint({x : 1.0, y : 0.0, z : 0.0, w : 0.5})
{ ), "Constructor should throw for nonzero direction w coordinate");
if(e instanceof DOMException) {
assert_equals(e.name, "InvalidStateError", "origin-custom-direction-zero:incorrect DOM exception thrown"); assert_throws_js(TypeError, () => new XRRay(
} else { DOMPoint.fromPoint({x : 10.0, y : 10.0, z : 10.0, w : 0.5}),
assert(false, "origin-custom-direction-zero:other exception thrown: " + e); DOMPoint.fromPoint(directionDict)
} ), "Constructor should throw for non-1 origin w coordinate");
}
} }
// //
// Constructor 2 - from rigid transform. // Constructor 2 - from rigid transform.
// //

View file

@ -29,26 +29,26 @@ function createFakeWorld(
// Faces: // Faces:
const FRONT_WALL_AND_FLOOR_FACES = [ const FRONT_WALL_AND_FLOOR_FACES = [
// Front wall: // Front wall:
[BOTTOM_LEFT_FRONT, BOTTOM_RIGHT_FRONT, TOP_RIGHT_FRONT], { vertices: [BOTTOM_LEFT_FRONT, BOTTOM_RIGHT_FRONT, TOP_RIGHT_FRONT] },
[BOTTOM_LEFT_FRONT, TOP_RIGHT_FRONT, TOP_LEFT_FRONT], { vertices: [BOTTOM_LEFT_FRONT, TOP_RIGHT_FRONT, TOP_LEFT_FRONT] },
// Floor: // Floor:
[BOTTOM_LEFT_FRONT, BOTTOM_RIGHT_FRONT, BOTTOM_RIGHT_BACK], { vertices: [BOTTOM_LEFT_FRONT, BOTTOM_RIGHT_FRONT, BOTTOM_RIGHT_BACK] },
[BOTTOM_LEFT_FRONT, BOTTOM_LEFT_BACK, BOTTOM_RIGHT_BACK], { vertices: [BOTTOM_LEFT_FRONT, BOTTOM_LEFT_BACK, BOTTOM_RIGHT_BACK] },
]; ];
const CEILING_FACES = [ const CEILING_FACES = [
// Ceiling: // Ceiling:
[TOP_LEFT_FRONT, TOP_RIGHT_FRONT, TOP_RIGHT_BACK], { vertices: [TOP_LEFT_FRONT, TOP_RIGHT_FRONT, TOP_RIGHT_BACK] },
[TOP_LEFT_FRONT, TOP_LEFT_BACK, TOP_RIGHT_BACK], { vertices: [TOP_LEFT_FRONT, TOP_LEFT_BACK, TOP_RIGHT_BACK] },
]; ];
const SIDE_WALLS_FACES = [ const SIDE_WALLS_FACES = [
// Left: // Left:
[BOTTOM_LEFT_FRONT, TOP_LEFT_FRONT, TOP_LEFT_BACK], { vertices: [BOTTOM_LEFT_FRONT, TOP_LEFT_FRONT, TOP_LEFT_BACK] },
[BOTTOM_LEFT_FRONT, BOTTOM_LEFT_BACK, TOP_LEFT_BACK], { vertices: [BOTTOM_LEFT_FRONT, BOTTOM_LEFT_BACK, TOP_LEFT_BACK] },
// Right: // Right:
[BOTTOM_RIGHT_FRONT, TOP_RIGHT_FRONT, TOP_RIGHT_BACK], { vertices: [BOTTOM_RIGHT_FRONT, TOP_RIGHT_FRONT, TOP_RIGHT_BACK] },
[BOTTOM_RIGHT_FRONT, BOTTOM_RIGHT_BACK, TOP_RIGHT_BACK], { vertices: [BOTTOM_RIGHT_FRONT, BOTTOM_RIGHT_BACK, TOP_RIGHT_BACK] },
]; ];
// Regions: // Regions: