Auto merge of #25890 - servo-wpt-sync:wpt_update_04-03-2020, r=servo-wpt-sync

Sync WPT with upstream (04-03-2020)

Automated downstream sync of changes from upstream as of 04-03-2020.
[no-wpt-sync]
r? @servo-wpt-sync
This commit is contained in:
bors-servo 2020-03-04 08:45:50 -05:00 committed by GitHub
commit 3749eb5397
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
56 changed files with 1103 additions and 120 deletions

View file

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

View file

@ -185381,19 +185381,6 @@
{}
]
],
"outline-with-padding-001.html": [
"716491ca25eae11238b7240a3635bdb8a88187cf",
[
null,
[
[
"/css/css-ui/reference/outline-with-padding-001-ref.html",
"=="
]
],
{}
]
],
"resize-change-margin.html": [
"a957ac931e8647958baf0d1891d3e69dd4435c0d",
[
@ -244783,6 +244770,30 @@
]
},
"input": {
"autocomplete-address-novalid.html": [
"a0646214e079e6fffad945b763337beadaf16b0f",
[]
],
"autocomplete-empty-novalid.html": [
"20b35d678f7fb2af1c4f992fce5f2569e85fcb4d",
[]
],
"autocomplete-section-novalid.html": [
"9d5e8a1187a6ec6ae7b5d760a222248c1b522f2c",
[]
],
"autocomplete-text-isvalid.html": [
"2faa347bd28d45d8d5efbc6ba26c1d64a293a077",
[]
],
"autocomplete-token-novalid.html": [
"544ca79dfdb07b8135dfd22aab643f92a7e9d871",
[]
],
"autocomplete-work-novalid.html": [
"2ff29bd9cc01a490303cd65325f7d249b8789021",
[]
],
"list-novalid.html": [
"63f43af1f5a286568817d4c89cbe7860675b5140",
[]
@ -258037,9 +258048,61 @@
[]
],
"messages.json": [
"6c0e2c035e931e12e701fd9d6c145216e4a8bb6f",
"8e32e24ca2accb8c2991306fac5d83256273a7ad",
[]
],
"select": {
"autocomplete-address-novalid.html": [
"7e4087ab37645e4458358664519c08e3ca83d71e",
[]
],
"autocomplete-empty-novalid.html": [
"a45757df2d23fcc7a9952adda9d21784e009b262",
[]
],
"autocomplete-isvalid.html": [
"065b764b3d2896f108d15859b0ddb69bf72de8ec",
[]
],
"autocomplete-section-novalid.html": [
"084fc2c91763a944af8c25163990b61b1f72cefa",
[]
],
"autocomplete-token-novalid.html": [
"267c4d40c28423ec698fdce2fc022887978db17d",
[]
],
"autocomplete-work-novalid.html": [
"c26b4f8531f40dcfd816392af4c6f0b94c1f363e",
[]
]
},
"textarea": {
"autocomplete-address-novalid.html": [
"1061d9a620278cf0477632b33d0fc5d2ac69afb7",
[]
],
"autocomplete-empty-novalid.html": [
"d222846b4ff864cf90c3b0d934e1a2dfec2e895b",
[]
],
"autocomplete-isvalid.html": [
"23bdb9ab8fca96bf4c03a004c6d9f00d733d7dcc",
[]
],
"autocomplete-section-novalid.html": [
"ec1038b00f3941babc9edd0f8fd4fc9c0c7f0e68",
[]
],
"autocomplete-token-novalid.html": [
"761495b52de60d7396479f78419ab71d918a3bff",
[]
],
"autocomplete-work-novalid.html": [
"6818e26c89126093368e50d28b246a463c5a3cda",
[]
]
},
"tools": {
"build-svg-tests.py": [
"dd3aa3844e9093cd3970e03677eed748a7df7509",
@ -299964,10 +300027,6 @@
"345be332be504f37a277788697a5047d60498aa8",
[]
],
"outline-with-padding-001-ref.html": [
"62b0c41757dd1bb4e323c8a6753f82c30c98ce7a",
[]
],
"text-overflow-001-ref.html": [
"9e9303106a82dea9433ec61fa9ec0df8950ae38f",
[]
@ -347594,7 +347653,7 @@
[]
],
"virtualenv.py": [
"400debc88e46910d2641e728fc4adb86a88568e0",
"18edcc04fb4d528e6566da10902a9ac964b42a65",
[]
],
"wpt.py": [
@ -348239,7 +348298,7 @@
[]
],
"wptcommandline.py": [
"66b97fd89535894ccb0e5b198304c3cf040b2a2d",
"5f07e7e6520f028c2d4418a4c2bde782a50a84ae",
[]
],
"wptlogging.py": [
@ -354250,9 +354309,17 @@
"82be8e7ce72edab7050b14cccc658ff39ddfe632",
[]
],
"static-import-syntax-error.js": [
"3a20e792c455ee53c26066f99afd79b041a46fb6",
[]
],
"static-import-worker.js": [
"19a347999d386fd4df8dc831c6d164b27630ef7a",
[]
],
"syntax-error.js": [
"8c5c4df671bcc3f75ac1e474fc651927e57e8701",
[]
]
},
"shared-worker-options-credentials.html.headers": [
@ -399121,7 +399188,7 @@
]
],
"CSSTransition-effect.tentative.html": [
"a38bc21bde05b95f14963d3a6543cef40f193e5a",
"5ccb201082e3c35014648ccda92b1bbf6eef3795",
[
null,
{}
@ -399176,6 +399243,13 @@
{}
]
],
"KeyframeEffect-setKeyframes.tentative.html": [
"df11c28234e0a984ead5ecf630f2a80ddff1c4b6",
[
null,
{}
]
],
"KeyframeEffect-target.tentative.html": [
"dbb2a43f784db98317c4d37b32a376f6c27213ce",
[
@ -402810,6 +402884,13 @@
{}
]
],
"update-subpixel-rem-unit.html": [
"98d4f00f92ae90165dd9b0c82cf0496523bc9c2a",
[
null,
{}
]
],
"urls": {
"empty.html": [
"3ab7079396c517d7abd6334b0cfadf7eda471115",
@ -403672,7 +403753,7 @@
]
],
"CSSStyleSheet-constructable-duplicate.html": [
"30a3ed1d09bbbd779d7b56df91908de948b6bc4b",
"579f5d0fcedc44b38ad98a94610e01850a3fef5d",
[
null,
{}
@ -434246,6 +434327,13 @@
{}
]
],
"img-alt-crash-001.html": [
"b057967e7e967b1b3113c69f71f1298b86ce4df8",
[
null,
{}
]
],
"img-aspect-ratio.html": [
"eceef92a6418f3d74ffbd13a08d8e648dff42a3f",
[
@ -434392,7 +434480,7 @@
]
},
"unmapped-attributes.html": [
"3f457eb492f0b72b2a9c5891e8784d0b69958b38",
"5824f836f0d654c116a55a252dfbda5fc6e5bbc8",
[
null,
{}
@ -560713,7 +560801,7 @@
]
],
"dedicated-worker-import-failure.html": [
"33eeea261893bc2d920bb348efff7a07f264729f",
"4c705e73251f41d8b7ff796cda5a5629968ec130",
[
null,
{}
@ -560776,6 +560864,13 @@
{}
]
],
"dedicated-worker-parse-error-failure.html": [
"99eae49fc91296c55c51fb772bc4d46058ea0693",
[
null,
{}
]
],
"shared-worker-import-blob-url.any.js": [
"f56c1a5525f8c46e5d06f6549b3f355c4ccb4a0a",
[

View file

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

View file

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

View file

@ -23,3 +23,9 @@
[After setting a transition's effect to null, it should be possible to interrupt that transition]
expected: FAIL
[A transition with a replaced effect still exhibits the regular transition reversing behavior]
expected: FAIL
[A transition with no effect still returns the original transitionProperty]
expected: FAIL

View file

@ -0,0 +1,16 @@
[KeyframeEffect-setKeyframes.tentative.html]
[A transition with replaced keyframes still returns the original transitionProperty]
expected: FAIL
[Keyframes set using setKeyframes() are reflected in computed style for a running transition]
expected: FAIL
[A transition with no keyframes still exhibits the regular transition reversing behavior]
expected: FAIL
[A transition with replaced keyframes still exhibits the regular transition reversing behavior]
expected: FAIL
[A transition with no keyframes still returns the original transitionProperty]
expected: FAIL

View file

@ -1,2 +0,0 @@
[outline-with-padding-001.html]
expected: FAIL

View file

@ -0,0 +1,4 @@
[update-subpixel-rem-unit.html]
[Check that a 0.1px change in root font-size affect rem units.]
expected: FAIL

View file

@ -2,3 +2,6 @@
[listeners are called when <iframe> is resized]
expected: FAIL
[listeners are called correct number of times]
expected: FAIL

View file

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

View file

@ -2,3 +2,6 @@
[elementsFromPoint on the root document for points in iframe elements]
expected: FAIL
[elementsFromPoint on inner documents]
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

@ -2,3 +2,15 @@
[Cascade order of a stylesheet for duplicate sheets.]
expected: FAIL
[Duplicate stylesheets have the right cascade position in the Document]
expected: FAIL
[Appending duplicate stylesheets yields the correct cascade position in the Document]
expected: FAIL
[Appending duplicate stylesheets yields the correct cascade position in the ShadowRoot]
expected: FAIL
[Duplicate stylesheets have the right cascade position in the ShadowRoot]
expected: FAIL

View file

@ -312,24 +312,18 @@
[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;" 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
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL

View file

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

View file

@ -11,3 +11,9 @@
[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%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
expected: FAIL
[Content-Type-Options%3A%20nosniff]
expected: FAIL

View file

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

View file

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

View file

@ -1,4 +1,8 @@
[skip-document-with-fragment.html]
expected: TIMEOUT
[Autofocus elements in iframed documents with URL fragments should be skipped.]
expected: FAIL
[Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.]
expected: TIMEOUT

View file

@ -0,0 +1,4 @@
[img-alt-crash-001.html]
[Should not crash.]
expected: FAIL

View file

@ -29,3 +29,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 37004 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 26105.\n\t[26105\]\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 42281 more errors.\n\tMax AbsError of 1.9986916780471802e+0 at index of 17995.\n\t[17995\]\t9.9994289875030518e-1\t-9.9874877929687500e-1\t1.9986916780471802e+0\t2.0011956154322119e+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

@ -164,3 +164,9 @@
[X SNR (-158.2459298453396 dB) is not greater than or equal to 65.737. Got -158.2459298453396.]
expected: FAIL
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[19030\]\t3.5714253612646400e+14\t-7.3546999692916870e-1\t3.5714253612646475e+14\t4.8559769619107963e+14\t3.8985999999999999e-3\n\t[19031\]\t-3.6017334461212158e-1\t-6.9157749414443970e-1\t3.3140414953231812e-1\t4.7920030992665957e-1\t3.8985999999999999e-3\n\t[38059\]\t7.0901769751756800e+14\t-9.8956179618835449e-1\t7.0901769751756900e+14\t7.1649663542853025e+14\t3.8985999999999999e-3\n\t[38060\]\t-8.8409073650836945e-2\t-9.9664616584777832e-1\t9.0823709219694138e-1\t9.1129341918891205e-1\t3.8985999999999999e-3\n\tMax AbsError of 7.0901769751756900e+14 at index of 38059.\n\tMax RelError of 7.1649663542853025e+14 at index of 38059.\n]
expected: FAIL
[X SNR (-254.56109005477157 dB) is not greater than or equal to 65.737. Got -254.56109005477157.]
expected: FAIL

View file

@ -1,5 +1,4 @@
[005.html]
expected: ERROR
[dedicated worker in shared worker in dedicated worker]
expected: FAIL

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>autocomplete attribute is invalid</title>
</head>
<body>
<!-- address type must come before field type -->
<input autocomplete="country shipping">
</body>
</html>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>autocomplete attribute is invalid</title>
</head>
<body>
<!-- empty -->
<input autocomplete="">
</body>
</html>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>autocomplete attribute is invalid</title>
</head>
<body>
<!-- work must come before field type -->
<input autocomplete="country section-blue">
</body>
</html>

View file

@ -0,0 +1,41 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>autocomplete attribute is valid</title>
</head>
<body>
<!-- country -->
<input autocomplete="country">
<input autocomplete="billing country">
<input autocomplete="section-blue country">
<input autocomplete="section-blue billing country">
<!-- cc-type -->
<input autocomplete="cc-type">
<input autocomplete="billing cc-type">
<input autocomplete="section-blue cc-type">
<input autocomplete="section-blue billing cc-type">
<!-- cc-exp-month -->
<input autocomplete="cc-exp-month">
<input autocomplete="billing cc-exp-month">
<input autocomplete="section-blue cc-exp-month">
<input autocomplete="section-blue billing cc-exp-month">
<!-- cc-exp-year -->
<input autocomplete="cc-exp-year">
<input autocomplete="billing cc-exp-year">
<input autocomplete="section-blue cc-exp-year">
<input autocomplete="section-blue billing cc-exp-year">
<!-- tel-country-code -->
<input autocomplete="work tel-country-code">
<input autocomplete="billing work tel-country-code">
<input autocomplete="section-blue work tel-country-code">
<input autocomplete="section-blue billing work tel-country-code">
</body>
</html>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>autocomplete attribute is invalid</title>
</head>
<body>
<!-- unknown field type -->
<input autocomplete="qwerty">
</body>
</html>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>autocomplete attribute is invalid</title>
</head>
<body>
<!-- work must come before field type -->
<input autocomplete="country work">
</body>
</html>

View file

@ -967,6 +967,11 @@
"html/elements/img/src/userinfo-username-contains-pile-of-poo-novalid.html": "Bad value \u201chttp://\ud83d\udca9:foo@example.com\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Illegal character in user or password: \u201c\ud83d\udca9\u201d is not allowed.",
"html/elements/img/usemap-bad-value-novalid.html": "Bad value \u201c#\u201d for attribute \u201cusemap\u201d on element \u201cimg\u201d: Bad hash-name reference: A hash-name reference must have at least one character after \u201c#\u201d.",
"html/elements/img/width-height-negative-novalid.html": "Bad value \u201c-1\u201d for attribute \u201cwidth\u201d on element \u201cimg\u201d: Bad non-negative integer: Expected a digit but saw \u201c-\u201d instead.",
"html/elements/input/autocomplete-address-novalid.html": "Bad value \u201ccountry shipping\u201d for attribute \u201cautocomplete\u201d on element \u201cinput\u201d: The token \u201cshipping\u201d must only appear as either the first token in a list of autofill detail tokens, or, if the first token is a \u201csection-*\u201d indicator, as the second token.",
"html/elements/input/autocomplete-empty-novalid.html": "Bad value \u201c\u201d for attribute \u201cautocomplete\u201d on element \u201cinput\u201d: Must not be empty.",
"html/elements/input/autocomplete-section-novalid.html": "Bad value \u201ccountry section-blue\u201d for attribute \u201cautocomplete\u201d on element \u201cinput\u201d: A \u201csection-*\u201d indicator must only appear as the first token in a list of autofill detail tokens.",
"html/elements/input/autocomplete-token-novalid.html": "Bad value \u201cqwerty\u201d for attribute \u201cautocomplete\u201d on element \u201cinput\u201d: The string \u201cqwerty\u201d is not a valid autofill field name.",
"html/elements/input/autocomplete-work-novalid.html": "Bad value \u201ccountry work\u201d for attribute \u201cautocomplete\u201d on element \u201cinput\u201d: The token \u201cwork\u201d must only appear before any autofill field names.",
"html/elements/input/list-novalid.html": "The \u201clist\u201d attribute of the \u201cinput\u201d element must refer to a \u201cdatalist\u201d element.",
"html/elements/input/type-image-formaction-empty-novalid.html": "Bad value \u201c\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Must be non-empty.",
"html/elements/input/type-image-formaction-whitespace-only-novalid.html": "Bad value \u201c\t \n\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Must be non-empty.",
@ -2360,6 +2365,16 @@
"html/parser/u10ffff-charref-novalid.html": "Character reference expands to an astral non-character (U+10ffff).",
"html/parser/ufffe-charref-novalid.html": "Character reference expands to a non-character (U+fffe).",
"html/parser/unassigned-charref-novalid.html": "Character reference expands to a permanently unassigned code point.",
"select/autocomplete-address-novalid.html": "Bad value \u201ccountry shipping\u201d for attribute \u201cautocomplete\u201d on element \u201cselect\u201d: Bad autocomplete detail tokens (any): The token \u201cshipping\u201d must only appear as either the first token in a list of autofill detail tokens, or, if the first token is a \u201csection-*\u201d indicator, as the second token.",
"select/autocomplete-empty-novalid.html": "Bad value \u201c\u201d for attribute \u201cautocomplete\u201d on element \u201cselect\u201d: Bad autocomplete detail tokens (any): Must not be empty.",
"select/autocomplete-section-novalid.html": "Bad value \u201ccountry section-blue\u201d for attribute \u201cautocomplete\u201d on element \u201cselect\u201d: Bad autocomplete detail tokens (any): A \u201csection-*\u201d indicator must only appear as the first token in a list of autofill detail tokens.",
"select/autocomplete-token-novalid.html": "Bad value \u201cqwerty\u201d for attribute \u201cautocomplete\u201d on element \u201cselect\u201d: Bad autocomplete detail tokens (any): The string \u201cqwerty\u201d is not a valid autofill field name.",
"select/autocomplete-work-novalid.html": "Bad value \u201ccountry work\u201d for attribute \u201cautocomplete\u201d on element \u201cselect\u201d: Bad autocomplete detail tokens (any): The token \u201cwork\u201d must only appear before any autofill field names.",
"textarea/autocomplete-address-novalid.html": "Bad value \u201ccountry shipping\u201d for attribute \u201cautocomplete\u201d on element \u201ctextarea\u201d: Bad autocomplete detail tokens (any): The token \u201cshipping\u201d must only appear as either the first token in a list of autofill detail tokens, or, if the first token is a \u201csection-*\u201d indicator, as the second token.",
"textarea/autocomplete-empty-novalid.html": "Bad value \u201c\u201d for attribute \u201cautocomplete\u201d on element \u201ctextarea\u201d: Bad autocomplete detail tokens (any): Must not be empty.",
"textarea/autocomplete-section-novalid.html": "Bad value \u201ccountry section-blue\u201d for attribute \u201cautocomplete\u201d on element \u201ctextarea\u201d: Bad autocomplete detail tokens (any): A \u201csection-*\u201d indicator must only appear as the first token in a list of autofill detail tokens.",
"textarea/autocomplete-token-novalid.html": "Bad value \u201cqwerty\u201d for attribute \u201cautocomplete\u201d on element \u201ctextarea\u201d: Bad autocomplete detail tokens (any): The string \u201cqwerty\u201d is not a valid autofill field name.",
"textarea/autocomplete-work-novalid.html": "Bad value \u201ccountry work\u201d for attribute \u201cautocomplete\u201d on element \u201ctextarea\u201d: Bad autocomplete detail tokens (any): The token \u201cwork\u201d must only appear before any autofill field names.",
"xhtml/attributes/accesskey/003-novalid.xhtml": "Bad value \u201ca b \u306c c \u306c\u201d for attribute \u201caccesskey\u201d on element \u201ca\u201d: Bad key label list: Duplicate key label. Each key label must be unique.",
"xhtml/attributes/accesskey/004-novalid.xhtml": "Bad value \u201ca b \u307b\u3052\u201d for attribute \u201caccesskey\u201d on element \u201ca\u201d: Bad key label list: Key label has multiple characters. Each key label must be a single character.",
"xhtml/attributes/data/002-novalid.xhtml": "\u201cdata-*\u201d attributes must not have characters from the range \u201cA\u201d\u2026\u201cZ\u201d in the name.",

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>autocomplete attribute is invalid</title>
</head>
<body>
<!-- address type must come before field type -->
<select autocomplete="country shipping">
<option>US</option>
<option>France</option>
<option>UK</option>
<option>Japan</option>
</select>
</body>
</html>

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>autocomplete attribute is invalid</title>
</head>
<body>
<!-- empty -->
<select autocomplete="">
<option>US</option>
<option>France</option>
<option>UK</option>
<option>Japan</option>
</select>
</body>
</html>

View file

@ -0,0 +1,180 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>autocomplete attribute is valid</title>
</head>
<body>
<select autocomplete="on"></select>
<select autocomplete="off"></select>
<!-- country -->
<select autocomplete="country">
<option>US</option>
<option>France</option>
<option>UK</option>
<option>Japan</option>
</select>
<select autocomplete="billing country">
<option>US</option>
<option>France</option>
<option>UK</option>
<option>Japan</option>
</select>
<select autocomplete="section-blue country">
<option>US</option>
<option>France</option>
<option>UK</option>
<option>Japan</option>
</select>
<select autocomplete="section-blue billing country">
<option>US</option>
<option>France</option>
<option>UK</option>
<option>Japan</option>
</select>
<!-- cc-type -->
<select autocomplete="cc-type">
<option>Visa</option>
<option>Mastercard</option>
</select>
<select autocomplete="billing cc-type">
<option>Visa</option>
<option>Mastercard</option>
</select>
<select autocomplete="section-blue cc-type">
<option>Visa</option>
<option>Mastercard</option>
</select>
<select autocomplete="section-blue billing cc-type">
<option>Visa</option>
<option>Mastercard</option>
</select>
<!-- cc-exp-month -->
<select autocomplete="cc-exp-month">
<option>01</option>
<option>02</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option>12</option>
</select>
<select autocomplete="billing cc-exp-month">
<option>01</option>
<option>02</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option>12</option>
</select>
<select autocomplete="section-blue cc-exp-month">
<option>01</option>
<option>02</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option>12</option>
</select>
<select autocomplete="section-blue billing cc-exp-month">
<option>01</option>
<option>02</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option>12</option>
</select>
<!-- cc-exp-year -->
<select autocomplete="cc-exp-year">
<option>2020</option>
<option>2021</option>
<option>2022</option>
</select>
<select autocomplete="billing cc-exp-year">
<option>2020</option>
<option>2021</option>
<option>2022</option>
</select>
<select autocomplete="section-blue cc-exp-year">
<option>2020</option>
<option>2021</option>
<option>2022</option>
</select>
<select autocomplete="section-blue billing cc-exp-year">
<option>2020</option>
<option>2021</option>
<option>2022</option>
</select>
<!-- tel-country-code -->
<select autocomplete="work tel-country-code">
<option>+1 US</option>
<option>+33 France</option>
<option>+44 UK</option>
<option>+81 Japan</option>
</select>
<select autocomplete="billing work tel-country-code">
<option>+1 US</option>
<option>+33 France</option>
<option>+44 UK</option>
<option>+81 Japan</option>
</select>
<select autocomplete="section-blue work tel-country-code">
<option>+1 US</option>
<option>+33 France</option>
<option>+44 UK</option>
<option>+81 Japan</option>
</select>
<select autocomplete="section-blue billing work tel-country-code">
<option>+1 US</option>
<option>+33 France</option>
<option>+44 UK</option>
<option>+81 Japan</option>
</select>
</body>
</html>

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>autocomplete attribute is invalid</title>
</head>
<body>
<!-- work must come before field type -->
<select autocomplete="country section-blue">
<option>US</option>
<option>France</option>
<option>UK</option>
<option>Japan</option>
</select>
</body>
</html>

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>autocomplete attribute is invalid</title>
</head>
<body>
<!-- unknown field type -->
<select autocomplete="qwerty">
<option>US</option>
<option>France</option>
<option>UK</option>
<option>Japan</option>
</select>
</body>
</html>

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>autocomplete attribute is invalid</title>
</head>
<body>
<!-- work must come before field type -->
<select autocomplete="country work">
<option>US</option>
<option>France</option>
<option>UK</option>
<option>Japan</option>
</select>
</body>
</html>

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>autocomplete attribute is invalid</title>
</head>
<body>
<!-- address type must come before field type -->
<textarea autocomplete="country shipping">
</textarea>
</body>
</html>

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>autocomplete attribute is invalid</title>
</head>
<body>
<!-- empty -->
<textarea autocomplete="">
</textarea>
</body>
</html>

View file

@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>autocomplete attribute is valid</title>
</head>
<body>
<textarea autocomplete="on"></textarea>
<textarea autocomplete="off"></textarea>
<!-- country -->
<textarea autocomplete="country">
</textarea>
<textarea autocomplete="billing country">
</textarea>
<textarea autocomplete="section-blue country">
</textarea>
<textarea autocomplete="section-blue billing country">
</textarea>
<!-- cc-type -->
<textarea autocomplete="cc-type">
</textarea>
<textarea autocomplete="billing cc-type">
</textarea>
<textarea autocomplete="section-blue cc-type">
</textarea>
<textarea autocomplete="section-blue billing cc-type">
</textarea>
<!-- cc-exp-month -->
<textarea autocomplete="cc-exp-month">
</textarea>
<textarea autocomplete="billing cc-exp-month">
</textarea>
<textarea autocomplete="section-blue cc-exp-month">
</textarea>
<textarea autocomplete="section-blue billing cc-exp-month">
</textarea>
<!-- cc-exp-year -->
<textarea autocomplete="cc-exp-year">
</textarea>
<textarea autocomplete="billing cc-exp-year">
</textarea>
<textarea autocomplete="section-blue cc-exp-year">
</textarea>
<textarea autocomplete="section-blue billing cc-exp-year">
</textarea>
<!-- tel-country-code -->
<textarea autocomplete="work tel-country-code">
</textarea>
<textarea autocomplete="billing work tel-country-code">
</textarea>
<textarea autocomplete="section-blue work tel-country-code">
</textarea>
<textarea autocomplete="section-blue billing work tel-country-code">
</textarea>
</body>
</html>

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>autocomplete attribute is invalid</title>
</head>
<body>
<!-- work must come before field type -->
<textarea autocomplete="country section-blue">
</textarea>
</body>
</html>

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>autocomplete attribute is invalid</title>
</head>
<body>
<!-- unknown field type -->
<textarea autocomplete="qwerty">
</textarea>
</body>
</html>

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>autocomplete attribute is invalid</title>
</head>
<body>
<!-- work must come before field type -->
<textarea autocomplete="country work">
</textarea>
</body>
</html>

View file

@ -179,7 +179,6 @@ promise_test(async t => {
transition.effect = new KeyframeEffect(div,
{ marginLeft: [ '0px' , '100px'] },
100 * MS_PER_SEC);
assert_equals(transition.transitionProperty, 'left');
assert_true(transition.pending);
// As a sanity check, check that the transition actually exits the
@ -189,4 +188,52 @@ promise_test(async t => {
}, 'After setting a new keyframe effect on a play-pending transition,'
+ ' the transition remains pending');
test(t => {
const div = addDiv(t);
div.style.left = '0px';
getComputedStyle(div).transitionProperty;
div.style.transition = 'left 100s';
div.style.left = '100px';
const transition = div.getAnimations()[0];
transition.effect = null;
assert_equals(transition.transitionProperty, 'left');
}, 'A transition with no effect still returns the original transitionProperty');
test(t => {
const div = addDiv(t);
div.style.left = '0px';
getComputedStyle(div).transitionProperty;
div.style.transition = 'left 100s';
div.style.left = '100px';
const transition = div.getAnimations()[0];
// Seek to the middle and get the portion.
transition.currentTime = 50 * MS_PER_SEC;
const portion = transition.effect.getComputedTiming().progress;
// Replace the effect but keep the original timing
transition.effect = new KeyframeEffect(
div,
{ top: ['200px', '300px', '100px'] },
transition.effect.getTiming()
);
// Reverse the transition
div.style.left = '0px';
const reversedTransition = div.getAnimations()[0];
const expectedDuration = 100 * MS_PER_SEC * portion;
assert_approx_equals(
reversedTransition.effect.getComputedTiming().activeDuration,
expectedDuration,
1
);
}, 'A transition with a replaced effect still exhibits the regular transition'
+ ' reversing behavior');
</script>

View file

@ -0,0 +1,117 @@
<!doctype html>
<meta charset=utf-8>
<title>KeyframeEffect.setKeyframes() for CSS transitions</title>
<!-- TODO: Add a more specific link for this once it is specified. -->
<link rel="help" href="https://drafts.csswg.org/css-transitions-2/#csstransition">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/helper.js"></script>
<div id="log"></div>
<script>
'use strict';
test(t => {
const div = addDiv(t);
div.style.left = '0px';
getComputedStyle(div).transitionProperty;
div.style.transition = 'left 100s';
div.style.left = '100px';
const transition = div.getAnimations()[0];
transition.effect.setKeyframes({ left: ['200px', '300px', '100px'] });
assert_equals(getComputedStyle(div).left, '200px');
}, 'Keyframes set using setKeyframes() are reflected in computed style for'
+ ' a running transition');
test(t => {
const div = addDiv(t);
div.style.left = '0px';
getComputedStyle(div).transitionProperty;
div.style.transition = 'left 100s';
div.style.left = '100px';
const transition = div.getAnimations()[0];
transition.effect.setKeyframes({ top: ['0px', '100px', '300px'] });
assert_equals(transition.transitionProperty, 'left');
}, 'A transition with replaced keyframes still returns the original'
+ ' transitionProperty');
test(t => {
const div = addDiv(t);
div.style.left = '0px';
getComputedStyle(div).transitionProperty;
div.style.transition = 'left 100s';
div.style.left = '100px';
const transition = div.getAnimations()[0];
transition.effect.setKeyframes({ });
assert_equals(transition.transitionProperty, 'left');
}, 'A transition with no keyframes still returns the original'
+ ' transitionProperty');
test(t => {
const div = addDiv(t);
div.style.left = '0px';
getComputedStyle(div).transitionProperty;
div.style.transition = 'left 100s';
div.style.left = '100px';
const transition = div.getAnimations()[0];
// Seek to the middle and get the portion.
//
// We deliberately DON'T set transition-timing-function to linear so that we
// can test that it is applied correctly.
transition.currentTime = 50 * MS_PER_SEC;
const portion = transition.effect.getComputedTiming().progress;
transition.effect.setKeyframes({ top: ['200px', '300px', '100px'] });
// Reverse transition
div.style.left = '0px';
const reversedTransition = div.getAnimations()[0];
const expectedDuration = 100 * MS_PER_SEC * portion;
assert_approx_equals(
reversedTransition.effect.getComputedTiming().activeDuration,
expectedDuration,
1
);
}, 'A transition with replaced keyframes still exhibits the regular transition'
+ ' reversing behavior');
test(t => {
const div = addDiv(t);
div.style.left = '0px';
getComputedStyle(div).transitionProperty;
div.style.transition = 'left 100s';
div.style.left = '100px';
const transition = div.getAnimations()[0];
transition.currentTime = 50 * MS_PER_SEC;
const portion = transition.effect.getComputedTiming().progress;
transition.effect.setKeyframes({ });
div.style.left = '0px';
const reversedTransition = div.getAnimations()[0];
const expectedDuration = 100 * MS_PER_SEC * portion;
assert_approx_equals(
reversedTransition.effect.getComputedTiming().activeDuration,
expectedDuration,
1
);
}, 'A transition with no keyframes still exhibits the regular transition'
+ ' reversing behavior');
</script>

View file

@ -1,30 +0,0 @@
<!DOCTYPE html>
<title>Outline with padding</title>
<link rel="match" href="reference/outline-with-padding-001-ref.html">
<link rel="help" href="https://drafts.csswg.org/css-ui/#outline-props">
<link rel="help" href="https://crbug.com/1048070">
<link rel="author" href="mailto:kojii@chromium.org">
<meta name="assert" content="Tests the rendering of outline applied to a box with padding">
<style>
inline-block {
display: inline-block;
width: 65px;
color: transparent;
background: orange;
}
</style>
<body>
<div style="display: flex">
<span style="padding-left: 99px; outline: auto">
<span>
<inline-block>Previous</inline-block>
</span>
</span>
</div>
<div style="width: 50px; padding-left: 99px; outline: auto">
<span>
<inline-block>Previous</inline-block>
</span>
</div>
</body>

View file

@ -1,24 +0,0 @@
<!DOCTYPE html>
<style>
inline-block {
display: inline-block;
width: 65px;
color: transparent;
background: orange;
}
spacer {
display: inline-block;
width: 99px;
}
</style>
<body>
<div style="display: flex">
<span style="outline: auto">
<spacer></spacer><inline-block>Previous</inline-block>
</span>
</div>
<div style="display: inline-block; outline: auto; white-space: nowrap;">
<spacer></spacer><inline-block>Previous</inline-block>
</div>
</body>

View file

@ -0,0 +1,21 @@
<!doctype html>
<html style="font-size:16px">
<head>
<title>CSS Values and Units Test: rem subpixel change</title>
<link rel="help" href="https://drafts.csswg.org/css-values/#rem">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<div style="font-size:16px">
<div id="remElement" style="width: 10rem"></div>
</div>
<script>
test(() => {
assert_equals(getComputedStyle(remElement).width, "160px");
document.documentElement.style.fontSize = "16.1px";
assert_equals(getComputedStyle(remElement).width, "161px");
}, "Check that a 0.1px change in root font-size affect rem units.");
</script>
<body>
</html>

View file

@ -4,17 +4,81 @@
<link rel="help" href="https://wicg.github.io/construct-stylesheets/">
<script src = '/resources/testharness.js'></script>
<script src = '/resources/testharnessreport.js'></script>
<div></div>
<div id="target"></div>
<script>
test(function() {
let sheets = [];
for (let i = 0; i < 2; ++i) {
function attachShadowDiv(host) {
const shadowRoot = host.attachShadow({mode: 'open'});
const shadowDiv = document.createElement("div");
shadowRoot.appendChild(shadowDiv);
return shadowDiv;
}
function blueSheetsWithIncreasingZIndex(n) {
let sheets = [];
for (let i = 0; i < n; ++i) {
sheets.push(new CSSStyleSheet());
sheets[i].replaceSync("div { z-index: " + i + " }");
sheets[i].replaceSync("div { z-index: " + i + "; color: blue; }");
}
return sheets;
}
let sheets = [];
test(function() {
sheets = blueSheetsWithIncreasingZIndex(2);
document.adoptedStyleSheets = [sheets[1], sheets[0], sheets[1]];
assert_equals(getComputedStyle(document.querySelector("div")).zIndex, "1", "duplicate stylesheet should take right position in the cascade");
});
document.adoptedStyleSheets = [];
}, "Duplicate stylesheets have the right cascade position in the Document");
test(function() {
sheets = blueSheetsWithIncreasingZIndex(2);
const sheet = new CSSStyleSheet();
sheet.replaceSync("div { color: red; }");
document.adoptedStyleSheets = [sheets[1], sheets[0]];
assert_equals(getComputedStyle(document.querySelector("div")).zIndex, "0", "backmost stylesheet should take precedence");
assert_equals(getComputedStyle(document.querySelector("div")).color, "rgb(0, 0, 255)", "backmost stylesheet should take precedence");
document.adoptedStyleSheets = [sheets[1], sheets[0], sheets[1], sheet];
assert_equals(getComputedStyle(document.querySelector("div")).zIndex, "1", "duplicate stylesheet should take the right position in the cascade");
assert_equals(getComputedStyle(document.querySelector("div")).color, "rgb(255, 0, 0)", "backmost stylesheet should take precedence");
document.adoptedStyleSheets = [];
}, "Appending duplicate stylesheets yields the correct cascade position in the Document");
test(function() {
sheets = blueSheetsWithIncreasingZIndex(2);
const span = document.createElement("span");
target.appendChild(span);
attachShadowDiv(span);
span.shadowRoot.adoptedStyleSheets = [sheets[1], sheets[0], sheets[1]];
assert_equals(getComputedStyle(span.shadowRoot.querySelector("div")).zIndex, "1", "duplicate stylesheet should take right position in the cascade");
}, "Duplicate stylesheets have the right cascade position in the ShadowRoot");
test(function() {
sheets = blueSheetsWithIncreasingZIndex(2);
const sheet = new CSSStyleSheet();
sheet.replaceSync("div { color: red; }");
const span = document.createElement("span");
target.appendChild(span);
attachShadowDiv(span);
span.shadowRoot.adoptedStyleSheets = [sheets[1], sheets[0]];
assert_equals(getComputedStyle(span.shadowRoot.querySelector("div")).zIndex, "0", "backmost stylesheet should take precedence");
assert_equals(getComputedStyle(span.shadowRoot.querySelector("div")).color, "rgb(0, 0, 255)", "backmost stylesheet should take precedence");
span.shadowRoot.adoptedStyleSheets = [sheets[1], sheets[0], sheets[1], sheet];
assert_equals(getComputedStyle(span.shadowRoot.querySelector("div")).zIndex, "1", "duplicate stylesheet should take right position in the cascade");
assert_equals(getComputedStyle(span.shadowRoot.querySelector("div")).color, "rgb(255, 0, 0)", "backmost stylesheet should take precedence");
}, "Appending duplicate stylesheets yields the correct cascade position in the ShadowRoot");
</script>

View file

@ -0,0 +1,15 @@
<!doctype html>
<title>Crash test: img alt rendering in combination with style attribute selector</title>
<link rel="help" href="https://crbug.com/1057210">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
img { display: block; width: 100px; }
[style] + * {}
</style>
<img id="img" alt="alternative text">
<script>
test(() => {
assert_equals(getComputedStyle(img).width, "100px");
}, "Should not crash.");
</script>

View file

@ -52,6 +52,10 @@ const tests = [
[ newElem("iframe"), "border", "borderRightWidth" ],
[ newElem("iframe"), "border", "borderBottomWidth" ],
[ newElem("iframe"), "border", "borderLeftWidth" ],
[ newElem("iframe"), "hspace", "marginLeft" ],
[ newElem("iframe"), "hspace", "marginRight" ],
[ newElem("iframe"), "vspace", "marginTop" ],
[ newElem("iframe"), "vspace", "marginBottom" ],
[ newElem("marquee"), "border", "borderTopWidth" ],
[ newElem("marquee"), "border", "borderRightWidth" ],
[ newElem("marquee"), "border", "borderBottomWidth" ],

View file

@ -32,7 +32,9 @@ class Virtualenv(object):
@property
def exists(self):
return os.path.isdir(self.path)
# We need to check also for lib_path because different python versions
# create different library paths.
return os.path.isdir(self.path) and os.path.isdir(self.lib_path)
@property
def broken_link(self):

View file

@ -5,7 +5,7 @@ import sys
from collections import OrderedDict
from distutils.spawn import find_executable
from datetime import timedelta
from six import iterkeys, itervalues, iteritems, string_types
from six import iterkeys, itervalues, iteritems
from . import config
from . import wpttest
@ -538,9 +538,6 @@ def check_args(kwargs):
kwargs["certutil_binary"] = path
if kwargs['extra_prefs']:
# If a single pref is passed in as a string, make it a list
if isinstance(kwargs['extra_prefs'], string_types):
kwargs['extra_prefs'] = [kwargs['extra_prefs']]
missing = any('=' not in prefarg for prefarg in kwargs['extra_prefs'])
if missing:
print("Preferences via --setpref must be in key=value format", file=sys.stderr)

View file

@ -12,12 +12,6 @@ promise_test(async () => {
assert_equals(msg_event.data, 'TypeError');
}, 'importScripts() on module worker should throw an exception.');
promise_test(() => {
const scriptURL = 'resources/static-import-worker.js';
const worker = new Worker(scriptURL, { type: 'classic' });
return new Promise(resolve => worker.onerror = resolve);
}, 'Static import on classic worker should throw an exception.');
promise_test(() => {
const scriptURL = 'resources/non-existent-worker.js';
const worker = new Worker(scriptURL, { type: 'module' });

View file

@ -0,0 +1,35 @@
<!DOCTYPE html>
<title>DedicatedWorker: parse error failure</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script> setup({allow_uncaught_exception: true}); </script>
<script>
promise_test(async () => {
const scriptURL = 'resources/syntax-error.js';
const worker = new Worker(scriptURL, { type: 'classic' });
return new Promise(resolve => worker.onerror = resolve);
}, 'Classic worker construction for script with syntax error should dispatch ' +
'an ErrorEvent.');
promise_test(async () => {
const scriptURL = 'resources/syntax-error.js';
const worker = new Worker(scriptURL, { type: 'module' });
return new Promise(resolve => worker.onerror = resolve);
}, 'Module worker construction for script with syntax error should dispatch ' +
'an ErrorEvent.');
promise_test(async () => {
const scriptURL = 'resources/static-import-syntax-error.js';
const worker = new Worker(scriptURL, { type: 'module' });
return new Promise(resolve => worker.onerror = resolve);
}, 'Static import on module worker for script with syntax error should ' +
'dispatch an ErrorEvent.');
promise_test(() => {
const scriptURL = 'resources/static-import-worker.js';
const worker = new Worker(scriptURL, { type: 'classic' });
return new Promise(resolve => worker.onerror = resolve);
}, 'Static import on classic worker should dispatch an ErrorEvent.');
</script>

View file

@ -0,0 +1 @@
import * as module from './syntax-error.js';