mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Update web-platform-tests to revision a4482f355e2848f4623cf46f521cb9b3bca56129
This commit is contained in:
parent
33a74a4f4e
commit
10cafa3df2
86 changed files with 1024 additions and 172 deletions
|
@ -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
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-002.html]
|
||||
[Hit test float]
|
||||
expected: FAIL
|
||||
|
|
@ -2,3 +2,6 @@
|
|||
[Hit test intersecting scaled box]
|
||||
expected: FAIL
|
||||
|
||||
[Hit test within unscaled box]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[no-transition-from-ua-to-blocking-stylesheet.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[elementFromPoint-001.html]
|
||||
[CSSOM View - 5 - extensions to the Document interface]
|
||||
expected: FAIL
|
||||
|
|
@ -17,3 +17,6 @@
|
|||
[test the top of layer]
|
||||
expected: FAIL
|
||||
|
||||
[test some point of the element: top left corner]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[cssstyledeclaration-csstext.html]
|
||||
[cssText on computed style declaration returns the empty string]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[cssstyledeclaration-custom-properties.html]
|
||||
[Custom properties are included in computed style]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[fecomposite-non-zero-inoffset-001.html]
|
||||
expected: FAIL
|
|
@ -312,21 +312,21 @@
|
|||
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
|
||||
expected: NOTRUN
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
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]
|
||||
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
|
||||
|
||||
|
|
|
@ -56,3 +56,6 @@
|
|||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript error]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,6 +11,3 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%0C]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20'NosniFF']
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[traverse_the_history_5.html]
|
||||
[traverse_the_history_3.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
expected: NOTRUN
|
||||
|
||||
[Element with tabindex should support autofocus]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Area element should support autofocus]
|
||||
expected: NOTRUN
|
||||
|
@ -16,5 +16,5 @@
|
|||
expected: NOTRUN
|
||||
|
||||
[Non-HTMLElement should not support autofocus]
|
||||
expected: NOTRUN
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[promise-job-entry.html]
|
||||
expected: TIMEOUT
|
||||
[Fulfillment handler on fulfilled promise]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -16,5 +15,5 @@
|
|||
expected: FAIL
|
||||
|
||||
[Fulfillment handler on pending-then-fulfilled promise]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -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]
|
||||
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
|
||||
|
||||
|
|
|
@ -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]
|
||||
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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -61,6 +61,20 @@
|
|||
]
|
||||
},
|
||||
"css-flexbox": {
|
||||
"negative-flex-margins-crash.html": [
|
||||
"8bcc566c0f702ef6a8e581bb6790476c71f19bcb",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"negative-flex-rounding-crash.html": [
|
||||
"ad69cc059ec705a9856f2c170827b9df18f1662c",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"padding-overflow-crash.html": [
|
||||
"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": [
|
||||
"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": [
|
||||
"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": [
|
||||
"577e2bd4c032799a159c1c7542812e66081bfcea",
|
||||
[
|
||||
|
@ -263055,6 +263121,12 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"contenteditable": {
|
||||
"META.yml": [
|
||||
"3618b8d29d08c2315f6480c0e02578bb4784b344",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"cookie-store": {
|
||||
"META.yml": [
|
||||
"46da8a9fb654cc685e1ba928d2b7adef9c20d4c8",
|
||||
|
@ -294272,6 +294344,14 @@
|
|||
"100x100-grey-box.html": [
|
||||
"0592f6d2ce582c3c89b9d7f5278eed9458531c3c",
|
||||
[]
|
||||
],
|
||||
"grid-layout-stale-001-ref.html": [
|
||||
"3ade075c99cc2009aabc018aa4181b0ff930bea3",
|
||||
[]
|
||||
],
|
||||
"grid-layout-stale-002-ref.html": [
|
||||
"5d4d996106d13a060cf192efb134e1c74aae024d",
|
||||
[]
|
||||
]
|
||||
}
|
||||
},
|
||||
|
@ -308288,6 +308368,10 @@
|
|||
"cf2c997f6c0d60cac9896c0b0014189cea7790bc",
|
||||
[]
|
||||
],
|
||||
"fecomposite-non-zero-inoffset-001-ref.html": [
|
||||
"e4900ad0476a208ec82950a80fb36d1481bd8c09",
|
||||
[]
|
||||
],
|
||||
"filter-effect-remove-unattached-ref.html": [
|
||||
"5f9f7a76ec71bfa5abe4a0a82bc126af8fa0ad5a",
|
||||
[]
|
||||
|
@ -308332,6 +308416,10 @@
|
|||
"91326ef585e6910cd499ad2d6650f18fca486921",
|
||||
[]
|
||||
],
|
||||
"remove-filter-repaint-ref.html": [
|
||||
"bde2a93360b62fcf877c270815f252b5ea0c3191",
|
||||
[]
|
||||
],
|
||||
"root-element-with-opacity-filter-001-ref.html": [
|
||||
"cd16e54c8e5b73b02585c606d0133bb36c821b31",
|
||||
[]
|
||||
|
@ -346994,7 +347082,7 @@
|
|||
[]
|
||||
],
|
||||
"keys.py": [
|
||||
"d4072f5a3f33d8422825e1fdc4f017ed7d79993b",
|
||||
"26825f04148befabc9a7b6ae71f1d8313a437e38",
|
||||
[]
|
||||
],
|
||||
"mouse.py": [
|
||||
|
@ -347075,11 +347163,11 @@
|
|||
[]
|
||||
],
|
||||
"asserts.py": [
|
||||
"f65137463b48f94fd0c5f2383b1a7c35bcd1de54",
|
||||
"5bd7f5b38e7a344fb2a1f7c40090fb5edd28c4d4",
|
||||
[]
|
||||
],
|
||||
"authentication.py": [
|
||||
"6f880f3c85165295bf9e98aa4e4adba2eca88cbd",
|
||||
"1e88a9e730d0805f8e6562a2dae7829b4baa349c",
|
||||
[]
|
||||
],
|
||||
"defaults.py": [
|
||||
|
@ -347087,7 +347175,7 @@
|
|||
[]
|
||||
],
|
||||
"fixtures.py": [
|
||||
"ab2aaf4e75d96492d9c6419ab11d567205652b8f",
|
||||
"80ccfddf3d15ad739f7eca6a77fac79e2dcdcaef",
|
||||
[]
|
||||
],
|
||||
"helpers.py": [
|
||||
|
@ -347095,15 +347183,15 @@
|
|||
[]
|
||||
],
|
||||
"http_request.py": [
|
||||
"5e46d97017e14ba009d4d1ed6d62bb5012f48d15",
|
||||
"895d1319ac0ac8b9a63defcb73f303c4a31e80bd",
|
||||
[]
|
||||
],
|
||||
"image.py": [
|
||||
"81dd933943f78b4bad69967c26729b70b992acb6",
|
||||
"6149ccccbe3252e5c1c2bc37ba3dd3103ffbf9b6",
|
||||
[]
|
||||
],
|
||||
"inline.py": [
|
||||
"b65b9cb8b11d27ee4c947a5c2ba5b59cd3853c78",
|
||||
"15bc26e54c68d4ce7c76133f597f4da50eb2e298",
|
||||
[]
|
||||
],
|
||||
"merge_dictionaries.py": [
|
||||
|
@ -350038,7 +350126,7 @@
|
|||
[]
|
||||
],
|
||||
"webxr_test_constants_fake_world.js": [
|
||||
"4e2adc633fd88bc13a4ab62bee86b4f3fbd19479",
|
||||
"7e428e21550f6a52461cb8470dee0aa44e3f4578",
|
||||
[]
|
||||
],
|
||||
"webxr_util.js": [
|
||||
|
@ -377712,6 +377800,15 @@
|
|||
]
|
||||
}
|
||||
},
|
||||
"contenteditable": {
|
||||
"plaintext-only.html": [
|
||||
"cb8308edcc49a98be5c34c9614bc61b69e44f784",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"cookie-store": {
|
||||
"change_eventhandler_for_document_cookie.tentative.https.window.js": [
|
||||
"0a8b1bd21efc9b0ac69468ad81c306757e5b18ff",
|
||||
|
@ -382417,6 +382514,41 @@
|
|||
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": {
|
||||
|
@ -383279,7 +383411,7 @@
|
|||
]
|
||||
],
|
||||
"flexitem-stretch-image.html": [
|
||||
"dd0f8d4f76f1f3dbaf67629315c8e39d73f01df3",
|
||||
"ff3163f6f3d31684db6b22c603f081b6d7c94cfb",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -387406,6 +387538,13 @@
|
|||
]
|
||||
]
|
||||
},
|
||||
"grid-tracks-stretched-with-different-flex-factors-sum.html": [
|
||||
"f2c1d5e95a2df428432f30fc651b4bf06ae15322",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"inheritance.html": [
|
||||
"eee86f70300d4280531235c813589dc3c399c58c",
|
||||
[
|
||||
|
@ -390334,7 +390473,7 @@
|
|||
]
|
||||
],
|
||||
"registered-property-revert.html": [
|
||||
"3d0473ea4397fab0440355a11eb0bff941a50323",
|
||||
"33c395d2c2f6f5f9ca868963b8fb3c4d7f593d28",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -401358,7 +401497,14 @@
|
|||
]
|
||||
],
|
||||
"cssstyledeclaration-csstext.html": [
|
||||
"30d9bd87bde562a827a367241497fdbc34360a9f",
|
||||
"afd54263bfe0ddd6325a82e0c47f663015dbf67c",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"cssstyledeclaration-custom-properties.html": [
|
||||
"92cf2c847dceda660ebedd2d8ae798e33b3b1d3b",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -438665,7 +438811,7 @@
|
|||
},
|
||||
"the-label-element": {
|
||||
"clicking-interactive-content.html": [
|
||||
"60a80fad9d2aebf284e252949fba7b2bb15af134",
|
||||
"c448df0a38073019112f7f805904a6ec3bd6ef20",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -438679,7 +438825,7 @@
|
|||
]
|
||||
],
|
||||
"clicking-noninteractive-unlabelable-content.html": [
|
||||
"233168f5664cf972ad579ae4ccba7f674c965d25",
|
||||
"be74ed68330c1f97069e05ed70a2e4908ef6f3c2",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -468536,6 +468682,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"subresource-integrity-partial-image.html": [
|
||||
"3abc8399219688f075deec3bf1551188d29f07b9",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"subresource-integrity.html": [
|
||||
"7a35e3bc85eb454f847d1087eaf00cb73b891fb4",
|
||||
[
|
||||
|
@ -510489,7 +510642,7 @@
|
|||
]
|
||||
],
|
||||
"xrRay_constructor.https.html": [
|
||||
"08f20142e38e9366bd016fb92666b5136128fef6",
|
||||
"d4d727785f1eb5487765249cf6c58dbe1111f3c5",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -539889,7 +540042,7 @@
|
|||
},
|
||||
"add_cookie": {
|
||||
"add.py": [
|
||||
"c1a886aafa71757d5efccb3953d2c30a96a14a34",
|
||||
"30804c1dd8ec89f573d3af657de27fe1fe5d9597",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -540151,7 +540304,7 @@
|
|||
},
|
||||
"execute_async_script": {
|
||||
"collections.py": [
|
||||
"14848da7e2966939c1efb75eb2b66d389f0b3d38",
|
||||
"484a247cffd9a12acd8024f48fa3db7de59db8d3",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -540190,7 +540343,7 @@
|
|||
},
|
||||
"execute_script": {
|
||||
"collections.py": [
|
||||
"f939713c8064d5826e4439acc6b1803ac0a25950",
|
||||
"be0b3a018c505dc26bb2b44969617a9b9daa0793",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -540378,7 +540531,7 @@
|
|||
},
|
||||
"get_alert_text": {
|
||||
"get.py": [
|
||||
"d6fdda2d1ed08ecceb5863d78ce915c19d4846fb",
|
||||
"ad0058e0326454147c3b7202daea39864159fd46",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -540387,7 +540540,7 @@
|
|||
},
|
||||
"get_current_url": {
|
||||
"get.py": [
|
||||
"39c28c612161e30b114298c7d5eed5ccd60d78d4",
|
||||
"c22e3d410c350248f5eb109e2ab332747e64a453",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -540513,7 +540666,7 @@
|
|||
},
|
||||
"get_named_cookie": {
|
||||
"get.py": [
|
||||
"9ea29c8994eb471882ae0ce68aa48b854ba35b99",
|
||||
"1fd5f9f144969419571ab1193e314670925d1fa8",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -540742,7 +540895,7 @@
|
|||
},
|
||||
"new_session": {
|
||||
"create_alwaysMatch.py": [
|
||||
"097764e4a999f1def552c5f21fefda3508623385",
|
||||
"a4cc9efc02e2a9c61fb8a79eecd5dcff49ca21a6",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -540751,7 +540904,7 @@
|
|||
]
|
||||
],
|
||||
"create_firstMatch.py": [
|
||||
"f00f6042b085dc09876f67ae650ff62ceb3eb76a",
|
||||
"ec671530f79692c04135ec441426f0044a72e8bc",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -540769,7 +540922,7 @@
|
|||
]
|
||||
],
|
||||
"invalid_capabilities.py": [
|
||||
"f31ce3b8b6fd5f8e4a9ff4d0137debdb7dacdea4",
|
||||
"afdcea0daf706ca32a875db1eb367db0bd2046a7",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -540799,7 +540952,7 @@
|
|||
]
|
||||
],
|
||||
"response.py": [
|
||||
"16c526ae10bea0540c91a9f7c2291488e4a26119",
|
||||
"dc1328998810faacf74f1b94b54ed59f48e84e4d",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -541054,7 +541207,7 @@
|
|||
},
|
||||
"status": {
|
||||
"status.py": [
|
||||
"f0df16a1ee17d22e6293af049876810bb4073929",
|
||||
"1f0f1bc4fe7746f34080cc537701020e4c5b2292",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -541063,14 +541216,14 @@
|
|||
},
|
||||
"switch_to_frame": {
|
||||
"cross_origin.py": [
|
||||
"4425a3ab901fef0effb2fc94ca3611e57f2ba51c",
|
||||
"905f1eb56dce07ea82e0de7c5755e2e1b50ed152",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"switch.py": [
|
||||
"67b855a96d963ab03efa9495052767ec033b346f",
|
||||
"f9b0e6fc1fcd16c9f9e66b05149930f6ee0ae346",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-002.html]
|
||||
[Hit test float]
|
||||
expected: FAIL
|
||||
|
|
@ -2,3 +2,6 @@
|
|||
[Hit test intersecting scaled box]
|
||||
expected: FAIL
|
||||
|
||||
[Hit test within unscaled box]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[no-transition-from-ua-to-blocking-stylesheet.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[elementFromPoint-001.html]
|
||||
[CSSOM View - 5 - extensions to the Document interface]
|
||||
expected: FAIL
|
||||
|
|
@ -21,3 +21,6 @@
|
|||
[test the top of layer]
|
||||
expected: FAIL
|
||||
|
||||
[test some point of the element: top left corner]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[cssstyledeclaration-csstext.html]
|
||||
[cssText on computed style declaration returns the empty string]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[cssstyledeclaration-custom-properties.html]
|
||||
[Custom properties are included in computed style]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[fecomposite-non-zero-inoffset-001.html]
|
||||
expected: FAIL
|
|
@ -312,21 +312,21 @@
|
|||
[fetch(): separate response Content-Type: text/plain ]
|
||||
expected: NOTRUN
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
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]
|
||||
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
|
||||
|
||||
|
|
|
@ -56,3 +56,6 @@
|
|||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript error]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,6 +11,3 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20'NosniFF']
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[traverse_the_history_5.html]
|
||||
[traverse_the_history_3.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
expected: FAIL
|
||||
|
||||
[Element with tabindex should support autofocus]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||
expected: NOTRUN
|
||||
|
@ -16,5 +16,5 @@
|
|||
expected: NOTRUN
|
||||
|
||||
[Non-HTMLElement should not support autofocus]
|
||||
expected: NOTRUN
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[promise-job-entry.html]
|
||||
expected: TIMEOUT
|
||||
[Fulfillment handler on fulfilled promise]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -16,5 +15,5 @@
|
|||
expected: FAIL
|
||||
|
||||
[Fulfillment handler on pending-then-fulfilled promise]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -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]
|
||||
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
|
||||
|
||||
|
|
|
@ -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]
|
||||
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
|
||||
|
||||
|
|
3
tests/wpt/web-platform-tests/contenteditable/META.yml
Normal file
3
tests/wpt/web-platform-tests/contenteditable/META.yml
Normal file
|
@ -0,0 +1,3 @@
|
|||
spec: https://w3c.github.io/contentEditable/
|
||||
suggested_reviewers:
|
||||
- marcoscaceres
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -28,8 +28,8 @@ to fit the size of flexitem according to flex values.">
|
|||
<div id=log></div>
|
||||
|
||||
<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="255" data-expected-height="100" style="flex: 1 0 auto;" src="support/10x10-green.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="345" style="flex: 1 0 auto;" src="support/10x10-green.png">
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -14,11 +14,33 @@
|
|||
--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>
|
||||
<div id=parent>
|
||||
<div id=child>
|
||||
</div>
|
||||
</div>
|
||||
<div id=animated_parent>
|
||||
<div id=animated_child>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
|
||||
CSS.registerProperty({
|
||||
|
@ -35,6 +57,20 @@ CSS.registerProperty({
|
|||
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(){
|
||||
let cs = getComputedStyle(child);
|
||||
assert_equals(cs.getPropertyValue('--inherited'), '10px');
|
||||
|
@ -45,4 +81,14 @@ test(function(){
|
|||
assert_equals(cs.getPropertyValue('--non-inherited'), '0px');
|
||||
}, '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>
|
||||
|
|
|
@ -97,6 +97,18 @@
|
|||
|
||||
}, '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>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -0,0 +1,4 @@
|
|||
<!DOCTYPE html>
|
||||
<body>
|
||||
<div style="width: 100px; height: 100px; background-color: green;"></div>
|
||||
</body>
|
|
@ -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>
|
|
@ -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>
|
|
@ -19,17 +19,6 @@
|
|||
<select></select>
|
||||
<textarea></textarea>
|
||||
<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>
|
||||
|
||||
<script>
|
||||
|
|
|
@ -17,6 +17,16 @@
|
|||
<input type=hidden>
|
||||
<object></object>
|
||||
<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>
|
||||
|
||||
<script>
|
||||
|
|
|
@ -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')()">
|
|
@ -1,4 +1,5 @@
|
|||
from datetime import datetime, timedelta
|
||||
from six import text_type
|
||||
|
||||
from webdriver.transport import Response
|
||||
|
||||
|
@ -59,11 +60,11 @@ def test_add_domain_cookie(session, url, server_config):
|
|||
|
||||
cookie = session.cookies("hello")
|
||||
assert "domain" in cookie
|
||||
assert isinstance(cookie["domain"], basestring)
|
||||
assert isinstance(cookie["domain"], text_type)
|
||||
assert "name" in cookie
|
||||
assert isinstance(cookie["name"], basestring)
|
||||
assert isinstance(cookie["name"], text_type)
|
||||
assert "value" in cookie
|
||||
assert isinstance(cookie["value"], basestring)
|
||||
assert isinstance(cookie["value"], text_type)
|
||||
|
||||
assert cookie["name"] == "hello"
|
||||
assert cookie["value"] == "world"
|
||||
|
@ -89,11 +90,11 @@ def test_add_cookie_for_ip(session, url, server_config, configuration):
|
|||
|
||||
cookie = session.cookies("hello")
|
||||
assert "name" in cookie
|
||||
assert isinstance(cookie["name"], basestring)
|
||||
assert isinstance(cookie["name"], text_type)
|
||||
assert "value" in cookie
|
||||
assert isinstance(cookie["value"], basestring)
|
||||
assert isinstance(cookie["value"], text_type)
|
||||
assert "domain" in cookie
|
||||
assert isinstance(cookie["domain"], basestring)
|
||||
assert isinstance(cookie["domain"], text_type)
|
||||
|
||||
assert cookie["name"] == "hello"
|
||||
assert cookie["value"] == "world"
|
||||
|
@ -118,9 +119,9 @@ def test_add_non_session_cookie(session, url):
|
|||
|
||||
cookie = session.cookies("hello")
|
||||
assert "name" in cookie
|
||||
assert isinstance(cookie["name"], basestring)
|
||||
assert isinstance(cookie["name"], text_type)
|
||||
assert "value" in cookie
|
||||
assert isinstance(cookie["value"], basestring)
|
||||
assert isinstance(cookie["value"], text_type)
|
||||
assert "expiry" in cookie
|
||||
assert isinstance(cookie["expiry"], int)
|
||||
|
||||
|
@ -143,9 +144,9 @@ def test_add_session_cookie(session, url):
|
|||
|
||||
cookie = session.cookies("hello")
|
||||
assert "name" in cookie
|
||||
assert isinstance(cookie["name"], basestring)
|
||||
assert isinstance(cookie["name"], text_type)
|
||||
assert "value" in cookie
|
||||
assert isinstance(cookie["value"], basestring)
|
||||
assert isinstance(cookie["value"], text_type)
|
||||
if "expiry" in cookie:
|
||||
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")
|
||||
assert "name" in cookie
|
||||
assert isinstance(cookie["name"], basestring)
|
||||
assert isinstance(cookie["name"], text_type)
|
||||
assert "value" in cookie
|
||||
assert isinstance(cookie["value"], basestring)
|
||||
assert isinstance(cookie["value"], text_type)
|
||||
assert "domain" in cookie
|
||||
assert isinstance(cookie["domain"], basestring)
|
||||
assert isinstance(cookie["domain"], text_type)
|
||||
|
||||
assert cookie["name"] == "hello"
|
||||
assert cookie["value"] == "world"
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import os
|
||||
|
||||
from six import text_type
|
||||
|
||||
from tests.support.asserts import assert_same_element, assert_success
|
||||
from tests.support.inline import inline
|
||||
|
||||
|
@ -52,7 +54,7 @@ def test_file_list(session, tmpdir):
|
|||
for expected, actual in zip(files, value):
|
||||
assert isinstance(actual, dict)
|
||||
assert "name" in actual
|
||||
assert isinstance(actual["name"], basestring)
|
||||
assert isinstance(actual["name"], text_type)
|
||||
assert os.path.basename(str(expected)) == actual["name"]
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import os
|
||||
|
||||
from six import text_type
|
||||
|
||||
from tests.support.asserts import assert_same_element, assert_success
|
||||
from tests.support.inline import inline
|
||||
|
||||
|
@ -45,7 +47,7 @@ def test_file_list(session, tmpdir):
|
|||
for expected, actual in zip(files, value):
|
||||
assert isinstance(actual, dict)
|
||||
assert "name" in actual
|
||||
assert isinstance(actual["name"], basestring)
|
||||
assert isinstance(actual["name"], text_type)
|
||||
assert os.path.basename(str(expected)) == actual["name"]
|
||||
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
from six import text_type
|
||||
|
||||
from webdriver.error import NoSuchAlertException
|
||||
|
||||
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 "value" in response.body
|
||||
alert_text = response.body["value"]
|
||||
assert isinstance(alert_text, basestring)
|
||||
assert isinstance(alert_text, text_type)
|
||||
assert alert_text == "Hello"
|
||||
|
||||
|
||||
|
@ -38,7 +40,7 @@ def test_get_confirm_text(session):
|
|||
assert isinstance(response.body, dict)
|
||||
assert "value" in response.body
|
||||
confirm_text = response.body["value"]
|
||||
assert isinstance(confirm_text, basestring)
|
||||
assert isinstance(confirm_text, text_type)
|
||||
assert confirm_text == "Hello"
|
||||
|
||||
|
||||
|
@ -49,7 +51,7 @@ def test_get_prompt_text(session):
|
|||
assert isinstance(response.body, dict)
|
||||
assert "value" in response.body
|
||||
prompt_text = response.body["value"]
|
||||
assert isinstance(prompt_text, basestring)
|
||||
assert isinstance(prompt_text, text_type)
|
||||
assert prompt_text == "Enter Your Name: "
|
||||
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
from six import text_type
|
||||
|
||||
from tests.support import platform_name
|
||||
from tests.support.inline import inline
|
||||
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)
|
||||
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):
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
from datetime import datetime, timedelta
|
||||
from six import integer_types, text_type
|
||||
|
||||
|
||||
from tests.support.asserts import assert_error, assert_success
|
||||
from tests.support.helpers import clear_all_cookies
|
||||
|
@ -28,13 +30,13 @@ def test_get_named_session_cookie(session, url):
|
|||
# table for cookie conversion
|
||||
# https://w3c.github.io/webdriver/webdriver-spec.html#dfn-table-for-cookie-conversion
|
||||
assert "name" in cookie
|
||||
assert isinstance(cookie["name"], basestring)
|
||||
assert isinstance(cookie["name"], text_type)
|
||||
assert "value" in cookie
|
||||
assert isinstance(cookie["value"], basestring)
|
||||
assert isinstance(cookie["value"], text_type)
|
||||
assert "path" in cookie
|
||||
assert isinstance(cookie["path"], basestring)
|
||||
assert isinstance(cookie["path"], text_type)
|
||||
assert "domain" in cookie
|
||||
assert isinstance(cookie["domain"], basestring)
|
||||
assert isinstance(cookie["domain"], text_type)
|
||||
assert "secure" in cookie
|
||||
assert isinstance(cookie["secure"], bool)
|
||||
assert "httpOnly" in cookie
|
||||
|
@ -60,11 +62,11 @@ def test_get_named_cookie(session, url):
|
|||
assert isinstance(cookie, dict)
|
||||
|
||||
assert "name" in cookie
|
||||
assert isinstance(cookie["name"], basestring)
|
||||
assert isinstance(cookie["name"], text_type)
|
||||
assert "value" in cookie
|
||||
assert isinstance(cookie["value"], basestring)
|
||||
assert isinstance(cookie["value"], text_type)
|
||||
assert "expiry" in cookie
|
||||
assert isinstance(cookie["expiry"], (int, long))
|
||||
assert isinstance(cookie["expiry"], integer_types)
|
||||
|
||||
assert cookie["name"] == "foo"
|
||||
assert cookie["value"] == "bar"
|
||||
|
@ -99,9 +101,9 @@ def test_duplicated_cookie(session, url, server_config):
|
|||
assert isinstance(cookie, dict)
|
||||
|
||||
assert "name" in cookie
|
||||
assert isinstance(cookie["name"], basestring)
|
||||
assert isinstance(cookie["name"], text_type)
|
||||
assert "value" in cookie
|
||||
assert isinstance(cookie["value"], basestring)
|
||||
assert isinstance(cookie["value"], text_type)
|
||||
|
||||
assert cookie["name"] == new_cookie["name"]
|
||||
assert cookie["value"] == "newworld"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import pytest
|
||||
|
||||
from conftest import product, flatten
|
||||
from .conftest import product, flatten
|
||||
|
||||
from tests.support.asserts import assert_success
|
||||
from tests.new_session.support.create import valid_data
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import pytest
|
||||
|
||||
from conftest import product, flatten
|
||||
from .conftest import product, flatten
|
||||
|
||||
|
||||
from tests.support.asserts import assert_success
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
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.support.asserts import assert_error
|
||||
|
|
|
@ -1,28 +1,29 @@
|
|||
import uuid
|
||||
|
||||
import pytest
|
||||
|
||||
from six import text_type
|
||||
|
||||
from tests.support.asserts import assert_success
|
||||
|
||||
|
||||
def test_sessionid(new_session, add_browser_capabilities):
|
||||
response, _ = new_session({"capabilities": {"alwaysMatch": add_browser_capabilities({})}})
|
||||
value = assert_success(response)
|
||||
assert isinstance(value["sessionId"], basestring)
|
||||
assert isinstance(value["sessionId"], text_type)
|
||||
uuid.UUID(hex=value["sessionId"])
|
||||
|
||||
|
||||
@pytest.mark.parametrize("capability, type", [
|
||||
("browserName", basestring),
|
||||
("browserVersion", basestring),
|
||||
("platformName", basestring),
|
||||
("browserName", text_type),
|
||||
("browserVersion", text_type),
|
||||
("platformName", text_type),
|
||||
("acceptInsecureCerts", bool),
|
||||
("pageLoadStrategy", basestring),
|
||||
("pageLoadStrategy", text_type),
|
||||
("proxy", dict),
|
||||
("setWindowRect", bool),
|
||||
("timeouts", dict),
|
||||
("strictFileInteractability", bool),
|
||||
("unhandledPromptBehavior", basestring),
|
||||
("unhandledPromptBehavior", text_type),
|
||||
])
|
||||
def test_capability_type(session, capability, type):
|
||||
assert isinstance(session.capabilities, dict)
|
||||
|
|
|
@ -17,9 +17,10 @@
|
|||
|
||||
"""The Keys implementation."""
|
||||
|
||||
from inspect import getmembers
|
||||
import sys
|
||||
|
||||
from inspect import getmembers
|
||||
from six import text_type
|
||||
|
||||
class Keys(object):
|
||||
"""
|
||||
|
@ -105,7 +106,7 @@ class Keys(object):
|
|||
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 = {
|
||||
"ADD": {
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import json
|
||||
|
||||
from six import text_type
|
||||
|
||||
from tests.support.asserts import assert_success
|
||||
|
||||
|
||||
|
@ -16,7 +18,7 @@ def test_get_status_no_session(http):
|
|||
value = parsed_obj["value"]
|
||||
|
||||
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):
|
||||
|
|
|
@ -2,7 +2,7 @@ import base64
|
|||
import imghdr
|
||||
import struct
|
||||
|
||||
from six import PY3
|
||||
from six import ensure_binary, text_type, PY3
|
||||
|
||||
from webdriver import Element, NoSuchAlertException, WebDriverException
|
||||
|
||||
|
@ -52,8 +52,8 @@ def assert_error(response, error_code):
|
|||
assert response.status == errors[error_code]
|
||||
assert "value" in response.body
|
||||
assert response.body["value"]["error"] == error_code
|
||||
assert isinstance(response.body["value"]["message"], basestring)
|
||||
assert isinstance(response.body["value"]["stacktrace"], basestring)
|
||||
assert isinstance(response.body["value"]["message"], text_type)
|
||||
assert isinstance(response.body["value"]["stacktrace"], text_type)
|
||||
assert_response_headers(response.headers)
|
||||
|
||||
|
||||
|
@ -221,6 +221,6 @@ def assert_move_to_coordinates(point, target, events):
|
|||
|
||||
def assert_png(screenshot):
|
||||
"""Test that screenshot is a Base64 encoded PNG file."""
|
||||
image = base64.decodestring(screenshot)
|
||||
image = base64.decodestring(ensure_binary(screenshot))
|
||||
mime_type = imghdr.what("", image)
|
||||
assert mime_type == "png", "Expected image to be PNG, but it was {}".format(mime_type)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import urllib
|
||||
from six.moves.urllib.parse import urlencode
|
||||
|
||||
|
||||
def basic_authentication(username=None, password=None, protocol="http"):
|
||||
|
@ -8,7 +8,7 @@ def basic_authentication(username=None, password=None, protocol="http"):
|
|||
query = {}
|
||||
|
||||
return build_url("/webdriver/tests/support/authentication.py",
|
||||
query=urllib.urlencode(query),
|
||||
query=urlencode(query),
|
||||
protocol=protocol)
|
||||
|
||||
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
import copy
|
||||
import json
|
||||
import os
|
||||
import urlparse
|
||||
|
||||
import pytest
|
||||
import webdriver
|
||||
|
||||
from six import string_types
|
||||
|
||||
from six.moves.urllib.parse import urlunsplit
|
||||
|
||||
from tests.support import defaults
|
||||
from tests.support.helpers import cleanup_session
|
||||
from tests.support.http_request import HTTPRequest
|
||||
|
@ -172,7 +175,7 @@ def url(server_config):
|
|||
domain = server_config["domains"][domain][subdomain]
|
||||
port = server_config["ports"][protocol][0]
|
||||
host = "{0}:{1}".format(domain, port)
|
||||
return urlparse.urlunsplit((protocol, host, path, query, fragment))
|
||||
return urlunsplit((protocol, host, path, query, fragment))
|
||||
|
||||
inner.__name__ = "url"
|
||||
return inner
|
||||
|
@ -191,7 +194,7 @@ def create_dialog(session):
|
|||
if text is None:
|
||||
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.
|
||||
# For prompt() dialogs, add a value for the 'default' argument,
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
import contextlib
|
||||
import httplib
|
||||
import json
|
||||
|
||||
from six import text_type
|
||||
|
||||
from six.moves.http_client import HTTPConnection
|
||||
|
||||
|
||||
class HTTPRequest(object):
|
||||
def __init__(self, host, port):
|
||||
|
@ -33,7 +34,7 @@ class HTTPRequest(object):
|
|||
if isinstance(payload, text_type):
|
||||
payload = body.encode("utf-8")
|
||||
|
||||
conn = httplib.HTTPConnection(self.host, self.port)
|
||||
conn = HTTPConnection(self.host, self.port)
|
||||
try:
|
||||
conn.request(method, path, payload)
|
||||
yield conn.getresponse()
|
||||
|
|
|
@ -2,11 +2,13 @@ import base64
|
|||
import math
|
||||
import struct
|
||||
|
||||
from six import ensure_binary
|
||||
|
||||
from tests.support.asserts import assert_png
|
||||
|
||||
|
||||
def png_dimensions(screenshot):
|
||||
assert_png(screenshot)
|
||||
image = base64.decodestring(screenshot)
|
||||
image = base64.decodestring(ensure_binary(screenshot))
|
||||
width, height = struct.unpack(">LL", image[16:24])
|
||||
return int(width), int(height)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
"""Helpers for inlining extracts of documents in tests."""
|
||||
|
||||
import urllib
|
||||
from six.moves.urllib.parse import urlencode
|
||||
|
||||
|
||||
BOILERPLATES = {
|
||||
|
@ -58,7 +58,7 @@ def inline(src, doctype="html", mime=None, charset=None, **kwargs):
|
|||
query = {"doc": doc, "mime": mime, "charset": charset}
|
||||
return build_url(
|
||||
"/webdriver/tests/support/inline.py",
|
||||
query=urllib.urlencode(query),
|
||||
query=urlencode(query),
|
||||
**kwargs)
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
from urlparse import urlparse
|
||||
from six.moves.urllib.parse import urlparse
|
||||
|
||||
import webdriver.protocol as protocol
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ def switch_to_frame(session, frame):
|
|||
|
||||
|
||||
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))
|
||||
|
||||
|
||||
|
|
|
@ -91,25 +91,23 @@ let constructor_tests = function() {
|
|||
{
|
||||
// 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 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 {
|
||||
let xrRay = new XRRay(
|
||||
assert_throws_js(TypeError, () => new XRRay(
|
||||
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");
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
if(e instanceof DOMException) {
|
||||
assert_equals(e.name, "InvalidStateError", "origin-custom-direction-zero:incorrect DOM exception thrown");
|
||||
} else {
|
||||
assert(false, "origin-custom-direction-zero:other exception thrown: " + e);
|
||||
}
|
||||
}
|
||||
assert_throws_js(TypeError, () => new XRRay(
|
||||
DOMPoint.fromPoint(originDict),
|
||||
DOMPoint.fromPoint({x : 1.0, y : 0.0, z : 0.0, w : 0.5})
|
||||
), "Constructor should throw for nonzero direction w coordinate");
|
||||
|
||||
assert_throws_js(TypeError, () => new XRRay(
|
||||
DOMPoint.fromPoint({x : 10.0, y : 10.0, z : 10.0, w : 0.5}),
|
||||
DOMPoint.fromPoint(directionDict)
|
||||
), "Constructor should throw for non-1 origin w coordinate");
|
||||
}
|
||||
|
||||
//
|
||||
// Constructor 2 - from rigid transform.
|
||||
//
|
||||
|
|
|
@ -29,26 +29,26 @@ function createFakeWorld(
|
|||
// Faces:
|
||||
const FRONT_WALL_AND_FLOOR_FACES = [
|
||||
// Front wall:
|
||||
[BOTTOM_LEFT_FRONT, BOTTOM_RIGHT_FRONT, TOP_RIGHT_FRONT],
|
||||
[BOTTOM_LEFT_FRONT, TOP_RIGHT_FRONT, TOP_LEFT_FRONT],
|
||||
{ vertices: [BOTTOM_LEFT_FRONT, BOTTOM_RIGHT_FRONT, TOP_RIGHT_FRONT] },
|
||||
{ vertices: [BOTTOM_LEFT_FRONT, TOP_RIGHT_FRONT, TOP_LEFT_FRONT] },
|
||||
// Floor:
|
||||
[BOTTOM_LEFT_FRONT, BOTTOM_RIGHT_FRONT, BOTTOM_RIGHT_BACK],
|
||||
[BOTTOM_LEFT_FRONT, BOTTOM_LEFT_BACK, BOTTOM_RIGHT_BACK],
|
||||
{ vertices: [BOTTOM_LEFT_FRONT, BOTTOM_RIGHT_FRONT, BOTTOM_RIGHT_BACK] },
|
||||
{ vertices: [BOTTOM_LEFT_FRONT, BOTTOM_LEFT_BACK, BOTTOM_RIGHT_BACK] },
|
||||
];
|
||||
|
||||
const CEILING_FACES = [
|
||||
// Ceiling:
|
||||
[TOP_LEFT_FRONT, TOP_RIGHT_FRONT, TOP_RIGHT_BACK],
|
||||
[TOP_LEFT_FRONT, TOP_LEFT_BACK, TOP_RIGHT_BACK],
|
||||
{ vertices: [TOP_LEFT_FRONT, TOP_RIGHT_FRONT, TOP_RIGHT_BACK] },
|
||||
{ vertices: [TOP_LEFT_FRONT, TOP_LEFT_BACK, TOP_RIGHT_BACK] },
|
||||
];
|
||||
|
||||
const SIDE_WALLS_FACES = [
|
||||
// Left:
|
||||
[BOTTOM_LEFT_FRONT, TOP_LEFT_FRONT, TOP_LEFT_BACK],
|
||||
[BOTTOM_LEFT_FRONT, BOTTOM_LEFT_BACK, TOP_LEFT_BACK],
|
||||
{ vertices: [BOTTOM_LEFT_FRONT, TOP_LEFT_FRONT, TOP_LEFT_BACK] },
|
||||
{ vertices: [BOTTOM_LEFT_FRONT, BOTTOM_LEFT_BACK, TOP_LEFT_BACK] },
|
||||
// Right:
|
||||
[BOTTOM_RIGHT_FRONT, TOP_RIGHT_FRONT, TOP_RIGHT_BACK],
|
||||
[BOTTOM_RIGHT_FRONT, BOTTOM_RIGHT_BACK, TOP_RIGHT_BACK],
|
||||
{ vertices: [BOTTOM_RIGHT_FRONT, TOP_RIGHT_FRONT, TOP_RIGHT_BACK] },
|
||||
{ vertices: [BOTTOM_RIGHT_FRONT, BOTTOM_RIGHT_BACK, TOP_RIGHT_BACK] },
|
||||
];
|
||||
|
||||
// Regions:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue