mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
Auto merge of #24127 - servo-wpt-sync:wpt_update_03-09-2019, r=servo-wpt-sync
Sync WPT with upstream (03-09-2019) Automated downstream sync of changes from upstream as of 03-09-2019. [no-wpt-sync] <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/24127) <!-- Reviewable:end -->
This commit is contained in:
commit
618d00be18
61 changed files with 1114 additions and 284 deletions
|
@ -1,3 +0,0 @@
|
|||
[canvas_complexshapes_arcto_001.htm]
|
||||
type: reftest
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[canvas_complexshapes_beziercurveto_001.htm]
|
||||
type: reftest
|
||||
expected: FAIL
|
|
@ -14,6 +14,9 @@
|
|||
[Revoke blob URL after creating Request, will fetch]
|
||||
expected: FAIL
|
||||
|
||||
[Revoke blob URL after calling fetch, fetch should succeed]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[url-with-fetch.any.html]
|
||||
[Untitled]
|
||||
|
@ -34,6 +37,3 @@
|
|||
[Revoke blob URL after creating Request, will fetch]
|
||||
expected: FAIL
|
||||
|
||||
[Revoke blob URL after calling fetch, fetch should succeed]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -133963,6 +133963,18 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-multicol/with-custom-layout-on-same-element.https.html": [
|
||||
[
|
||||
"css/css-multicol/with-custom-layout-on-same-element.https.html",
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-multicol/zero-column-width-layout.html": [
|
||||
[
|
||||
"css/css-multicol/zero-column-width-layout.html",
|
||||
|
@ -139799,6 +139811,18 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-ruby/ruby-base-different-size.html": [
|
||||
[
|
||||
"css/css-ruby/ruby-base-different-size.html",
|
||||
[
|
||||
[
|
||||
"/css/css-ruby/ruby-base-different-size-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-ruby/ruby-layout-internal-boxes.html": [
|
||||
[
|
||||
"css/css-ruby/ruby-layout-internal-boxes.html",
|
||||
|
@ -254586,6 +254610,9 @@
|
|||
"css/css-ruby/root-ruby-ref.xhtml": [
|
||||
[]
|
||||
],
|
||||
"css/css-ruby/ruby-base-different-size-ref.html": [
|
||||
[]
|
||||
],
|
||||
"css/css-ruby/ruby-layout-internal-boxes-ref.html": [
|
||||
[]
|
||||
],
|
||||
|
@ -273375,6 +273402,9 @@
|
|||
"html/semantics/forms/autofocus/resources/child-autofocus.html": [
|
||||
[]
|
||||
],
|
||||
"html/semantics/forms/autofocus/resources/utils.js": [
|
||||
[]
|
||||
],
|
||||
"html/semantics/forms/constraints/support/validator.js": [
|
||||
[]
|
||||
],
|
||||
|
@ -274701,9 +274731,6 @@
|
|||
"images/broken.png": [
|
||||
[]
|
||||
],
|
||||
"images/canvas-line.png": [
|
||||
[]
|
||||
],
|
||||
"images/clear-100x50.png": [
|
||||
[]
|
||||
],
|
||||
|
@ -274950,6 +274977,9 @@
|
|||
"infrastructure/metadata/infrastructure/assumptions/allowed-to-play.html.ini": [
|
||||
[]
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/assumptions/document-fonts-ready.html.ini": [
|
||||
[]
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/assumptions/html-elements.html.ini": [
|
||||
[]
|
||||
],
|
||||
|
@ -274965,6 +274995,9 @@
|
|||
"infrastructure/metadata/infrastructure/expected-fail/timeout.html.ini": [
|
||||
[]
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/expected-fail/uncaught-exception.html.ini": [
|
||||
[]
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/reftest/reftest_and_fail.html.ini": [
|
||||
[]
|
||||
],
|
||||
|
@ -275013,6 +275046,12 @@
|
|||
"infrastructure/metadata/infrastructure/server/title.any.js.ini": [
|
||||
[]
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/server/wpt-server-http.sub.html.ini": [
|
||||
[]
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/server/wpt-server-websocket.sub.html.ini": [
|
||||
[]
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini": [
|
||||
[]
|
||||
],
|
||||
|
@ -279888,6 +279927,9 @@
|
|||
"resources/test/tests/unit/IdlDictionary/test_partial_dictionary.html": [
|
||||
[]
|
||||
],
|
||||
"resources/test/tests/unit/IdlInterface/constructors.html": [
|
||||
[]
|
||||
],
|
||||
"resources/test/tests/unit/IdlInterface/default_to_json_operation.html": [
|
||||
[]
|
||||
],
|
||||
|
@ -282564,6 +282606,9 @@
|
|||
"svg/struct/reftests/reference/green-100x100.svg": [
|
||||
[]
|
||||
],
|
||||
"svg/struct/scripted/blank.svg": [
|
||||
[]
|
||||
],
|
||||
"svg/styling/render/transform-box-ref.svg": [
|
||||
[]
|
||||
],
|
||||
|
@ -314043,6 +314088,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/CSS2/linebox/video-needs-layout-crash.html": [
|
||||
[
|
||||
"css/CSS2/linebox/video-needs-layout-crash.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/CSS2/normal-flow/auto-margins-root-element.html": [
|
||||
[
|
||||
"css/CSS2/normal-flow/auto-margins-root-element.html",
|
||||
|
@ -315015,6 +315066,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-animations/keyframes-remove-documentElement-crash.html": [
|
||||
[
|
||||
"css/css-animations/keyframes-remove-documentElement-crash.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-animations/parsing/animation-delay-computed.html": [
|
||||
[
|
||||
"css/css-animations/parsing/animation-delay-computed.html",
|
||||
|
@ -321009,6 +321066,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-multicol/with-custom-layout-on-same-element-crash.https.html": [
|
||||
[
|
||||
"css/css-multicol/with-custom-layout-on-same-element-crash.https.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-multicol/zero-column-width-computed-style.html": [
|
||||
[
|
||||
"css/css-multicol/zero-column-width-computed-style.html",
|
||||
|
@ -358415,6 +358478,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"html/semantics/forms/autofocus/supported-elements.html": [
|
||||
[
|
||||
"html/semantics/forms/autofocus/supported-elements.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"html/semantics/forms/constraints/form-validation-checkValidity.html": [
|
||||
[
|
||||
"html/semantics/forms/constraints/form-validation-checkValidity.html",
|
||||
|
@ -365401,7 +365470,9 @@
|
|||
"import-maps/bare.sub.tentative.html": [
|
||||
[
|
||||
"import-maps/bare.sub.tentative.html",
|
||||
{}
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"import-maps/builtin-empty.tentative.html": [
|
||||
|
@ -365662,6 +365733,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"infrastructure/expected-fail/uncaught-exception.html": [
|
||||
[
|
||||
"infrastructure/expected-fail/uncaught-exception.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"infrastructure/server/context.any.js": [
|
||||
[
|
||||
"infrastructure/server/context.any.html",
|
||||
|
@ -405557,6 +405634,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"svg/struct/scripted/autofocus-attribute.svg": [
|
||||
[
|
||||
"svg/struct/scripted/autofocus-attribute.svg",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"svg/styling/required-properties.svg": [
|
||||
[
|
||||
"svg/styling/required-properties.svg",
|
||||
|
@ -445267,7 +445350,7 @@
|
|||
"support"
|
||||
],
|
||||
"2dcontext/building-paths/canvas_complexshapes_arcto_001-ref.htm": [
|
||||
"6fc212ea482063bfeb88cff14d9829fdd2684669",
|
||||
"31ddfcafd9d1e4ba0c29b4297d7f2050f5cc8435",
|
||||
"support"
|
||||
],
|
||||
"2dcontext/building-paths/canvas_complexshapes_arcto_001.htm": [
|
||||
|
@ -445275,7 +445358,7 @@
|
|||
"reftest"
|
||||
],
|
||||
"2dcontext/building-paths/canvas_complexshapes_beziercurveto_001-ref.htm": [
|
||||
"935e84c5c85229fe95582575124feb8b87a20664",
|
||||
"6be08c0b3c8378cf73e2d115f44b5a46529ddb27",
|
||||
"support"
|
||||
],
|
||||
"2dcontext/building-paths/canvas_complexshapes_beziercurveto_001.htm": [
|
||||
|
@ -477023,7 +477106,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"content-security-policy/style-src/inline-style-allowed-while-cloning-objects.sub.html": [
|
||||
"7c95f47aff880d5818331b5020dacf39a5fc6839",
|
||||
"d222743049e3777cbece37b6bbc3b717b6eca262",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/style-src/inline-style-allowed.sub.html": [
|
||||
|
@ -505474,6 +505557,10 @@
|
|||
"21451a04fa5e9618276e0e518e82bbb7bb64b21d",
|
||||
"reftest"
|
||||
],
|
||||
"css/CSS2/linebox/video-needs-layout-crash.html": [
|
||||
"b8c52edf8272abc6f7c30372b1d37e9545d08c74",
|
||||
"testharness"
|
||||
],
|
||||
"css/CSS2/lists/counter-increment-003.xht": [
|
||||
"ec01daee98f0871caca224a76ff27905b2a25853",
|
||||
"visual"
|
||||
|
@ -541078,6 +541165,10 @@
|
|||
"6e7697b9d81db6888077318389e1d70964241b3c",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-animations/keyframes-remove-documentElement-crash.html": [
|
||||
"aba7f9c6edd71d4a2b9446fb6de890866c41da64",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-animations/parsing/animation-delay-computed.html": [
|
||||
"832466ac0642616c28bdb4aebad8833e6a4c92d0",
|
||||
"testharness"
|
||||
|
@ -568842,6 +568933,14 @@
|
|||
"59843ae54b64f6ce4f7e616d4be491c911ea84cf",
|
||||
"support"
|
||||
],
|
||||
"css/css-multicol/with-custom-layout-on-same-element-crash.https.html": [
|
||||
"7e1c804258ab54290047a4b712f0bff613acd168",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-multicol/with-custom-layout-on-same-element.https.html": [
|
||||
"5388b08cde3936088978f09ccb0fd438347421e1",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-multicol/zero-column-width-computed-style.html": [
|
||||
"46d876f1a150c257be9c37d25a4a4c34d2f1d73d",
|
||||
"testharness"
|
||||
|
@ -573642,6 +573741,14 @@
|
|||
"80f49f0dbcf3e3a76ba6f740243e19a5f627bfd2",
|
||||
"visual"
|
||||
],
|
||||
"css/css-ruby/ruby-base-different-size-ref.html": [
|
||||
"695ab1cdb7125ae75532a58027a361bd882348c4",
|
||||
"support"
|
||||
],
|
||||
"css/css-ruby/ruby-base-different-size.html": [
|
||||
"dcfde6c16eab415d24c5c1f0404c982dc21a98d6",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-ruby/ruby-layout-internal-boxes-ref.html": [
|
||||
"7c89ee60e980076df9d49ad676cf34b496333831",
|
||||
"support"
|
||||
|
@ -584519,7 +584626,7 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html": [
|
||||
"becd4638eb068b26c00851390e393026796d7675",
|
||||
"aa048b512e940511030631f2c379aaa995e6b868",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html": [
|
||||
|
@ -625431,7 +625538,7 @@
|
|||
"support"
|
||||
],
|
||||
"fetch/api/resources/preflight.py": [
|
||||
"1843c74c88e200986af1ac0ecf5921456020ffe0",
|
||||
"d2249606db624892dab96fc9484a9e274947b859",
|
||||
"support"
|
||||
],
|
||||
"fetch/api/resources/redirect-empty-location.py": [
|
||||
|
@ -630567,7 +630674,7 @@
|
|||
"support"
|
||||
],
|
||||
"html/cross-origin-opener-policy/coop-navigated-popup.https.html": [
|
||||
"0b51512c221d9035bac5a99b83b661af2fc65d5a",
|
||||
"9a92dd9bde885e9e3ee19c6e4ef93a0e7b82e418",
|
||||
"testharness"
|
||||
],
|
||||
"html/cross-origin-opener-policy/coop-navigated-popup.https.html.headers": [
|
||||
|
@ -641234,6 +641341,14 @@
|
|||
"afd5601a523ff0a1d60d37b171b2098a38600ace",
|
||||
"support"
|
||||
],
|
||||
"html/semantics/forms/autofocus/resources/utils.js": [
|
||||
"f3690a633ffb20a09430cf126eab9871fcf03c38",
|
||||
"support"
|
||||
],
|
||||
"html/semantics/forms/autofocus/supported-elements.html": [
|
||||
"cbd21010ffe41eb06d4c95c87ed6c4b87a2e7ab5",
|
||||
"testharness"
|
||||
],
|
||||
"html/semantics/forms/constraints/form-validation-checkValidity.html": [
|
||||
"2e790c75d82dec2f60f64199ea4e1cba1164bc63",
|
||||
"testharness"
|
||||
|
@ -647494,10 +647609,6 @@
|
|||
"f2581017b43d44664e7137a78c0803554b50f3b1",
|
||||
"support"
|
||||
],
|
||||
"images/canvas-line.png": [
|
||||
"30f8f4540560939e1295cccb0c665b9ced908ad4",
|
||||
"support"
|
||||
],
|
||||
"images/clear-100x50.png": [
|
||||
"eeedd0ff05889ffd4468bf19a2e8e9e0a094201c",
|
||||
"support"
|
||||
|
@ -647695,7 +647806,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"import-maps/bare.sub.tentative.html": [
|
||||
"5bfb6b52072338568397a8dfac3a98a90c70b34b",
|
||||
"cf99589f9bd56730423880d6fd4f93df293e6ddf",
|
||||
"testharness"
|
||||
],
|
||||
"import-maps/bare/__dir__.headers": [
|
||||
|
@ -648026,12 +648137,20 @@
|
|||
"29ff348a9af645ff59d860e91af9534e64a606c5",
|
||||
"testharness"
|
||||
],
|
||||
"infrastructure/expected-fail/uncaught-exception.html": [
|
||||
"4442d513753112fac2e35855268d0b246f01fa09",
|
||||
"testharness"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/assumptions/allowed-to-play.html.ini": [
|
||||
"f9be6a64bdfd7ca033fda2a9cd1bdb105836df20",
|
||||
"support"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/assumptions/document-fonts-ready.html.ini": [
|
||||
"d074292053b6d580efda36155c1d82af699494bc",
|
||||
"support"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/assumptions/html-elements.html.ini": [
|
||||
"5bb1bf554ccbc73a605f4364c59b91aa59a7ee87",
|
||||
"4be883a5cf7ab6869e2e9235acca37549a9045b8",
|
||||
"support"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/browsers/firefox/__dir__.ini": [
|
||||
|
@ -648050,6 +648169,10 @@
|
|||
"53b281f8358c4f90aab96c731076439ccb5567b4",
|
||||
"support"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/expected-fail/uncaught-exception.html.ini": [
|
||||
"0bcdd374f2521b6534208ab750a1c0d36e7dd7ca",
|
||||
"support"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/reftest/reftest_and_fail.html.ini": [
|
||||
"81aef049cd122f7332c66f5a087947e512a59d0e",
|
||||
"support"
|
||||
|
@ -648095,11 +648218,11 @@
|
|||
"support"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/server/context.any.js.ini": [
|
||||
"ff57a138029ca49e7e63d9dd27e25288709c61f3",
|
||||
"9667d4d251e8b1915ae2c979766343babd3a0235",
|
||||
"support"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/server/order-of-metas.any.js.ini": [
|
||||
"e4a96de0e8f60fbbd48676deb59bd8ba85f99133",
|
||||
"a62ae82b9bec778832cea5e3a95ea069b11b49fc",
|
||||
"support"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/server/order-of-metas.window.js.ini": [
|
||||
|
@ -648107,15 +648230,23 @@
|
|||
"support"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/server/secure-context.https.any.js.ini": [
|
||||
"f483bca13f6b372774e1494c75455cd075ba0313",
|
||||
"0a602b9ae264d92c75a06e79085c20faf4a65e5d",
|
||||
"support"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/server/title.any.js.ini": [
|
||||
"cbae6b15410e13433c4a9fadd8c2a8cc5fbc4fdc",
|
||||
"6f7fed9dc062dbde3d73ea233f18f0f56d8e056c",
|
||||
"support"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/server/wpt-server-http.sub.html.ini": [
|
||||
"e2f26c7e4b697c77c5ee195cad763279bd1ecde0",
|
||||
"support"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/server/wpt-server-websocket.sub.html.ini": [
|
||||
"2cc364b610987ad5938c822287eb76079c2af2a3",
|
||||
"support"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini": [
|
||||
"ee1217860b88bab3aa41966f4034c99c124cdb46",
|
||||
"c34584ceec64be446532118dd12853106880c76f",
|
||||
"support"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini": [
|
||||
|
@ -648123,23 +648254,23 @@
|
|||
"support"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/testdriver/actions/eventOrder.html.ini": [
|
||||
"bcd78da24446a9802755a13525be90e3fa0f43fc",
|
||||
"894f4a11df81be8e164898ab2091e1cc64175290",
|
||||
"support"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/testdriver/actions/multiDevice.html.ini": [
|
||||
"04b97a7198c75ba941d315716483aad216e1a283",
|
||||
"baf2116bad6b5cd258e07d29e2115c6aab11e099",
|
||||
"support"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/testdriver/actions/pause.html.ini": [
|
||||
"da47a2a0b6f7b7b019c3ae20e349f37c00b8e0bc",
|
||||
"657d2a2492605557dcc62f02dca36364cf3007fd",
|
||||
"support"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/testdriver/file_upload.sub.html.ini": [
|
||||
"42c98117c58bbe7b9201d1883e0c1649898b5570",
|
||||
"a39640b714b838a391f227ac58278ba991fbce66",
|
||||
"support"
|
||||
],
|
||||
"infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini": [
|
||||
"0b01c8369a56495d0dbf07540efb9d7a8d979790",
|
||||
"3e43b63af9545f2828efd2f7ce510bbc9a87bbfc",
|
||||
"support"
|
||||
],
|
||||
"infrastructure/reftest-wait-ref.html": [
|
||||
|
@ -648943,7 +649074,7 @@
|
|||
"support"
|
||||
],
|
||||
"interfaces/web-nfc.idl": [
|
||||
"76ed6f0d959e1bfcc31325ce8aff657b06fa9de7",
|
||||
"5107cf3b577ba2677226fd215e38cf40cc81d88a",
|
||||
"support"
|
||||
],
|
||||
"interfaces/web-share.idl": [
|
||||
|
@ -651871,7 +652002,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"mediacapture-streams/MediaStream-removetrack.https.html": [
|
||||
"b934397914f39cee6bb9a52915959233c0ca84ca",
|
||||
"1e9ebbcefa800d3a2662ea90f2f040a7d0554285",
|
||||
"testharness"
|
||||
],
|
||||
"mediacapture-streams/MediaStream-supported-by-feature-policy.html": [
|
||||
|
@ -673643,7 +673774,7 @@
|
|||
"support"
|
||||
],
|
||||
"resources/idlharness.js": [
|
||||
"e7a3abbec44778f8882a763374f25ced0d6cedf0",
|
||||
"f68ad1dd7d81e54bea5f9004284eff49a713a32e",
|
||||
"support"
|
||||
],
|
||||
"resources/idlharness.js.headers": [
|
||||
|
@ -673890,6 +674021,10 @@
|
|||
"d6137f6895f0a88f4652afdb80de2f0965a5d345",
|
||||
"support"
|
||||
],
|
||||
"resources/test/tests/unit/IdlInterface/constructors.html": [
|
||||
"93cc7f42cc5588f7f8f0cb4cfcdb45731ddcf8a9",
|
||||
"support"
|
||||
],
|
||||
"resources/test/tests/unit/IdlInterface/default_to_json_operation.html": [
|
||||
"e03ea8b03874ce7acffdc78463ab7cf33ad226d0",
|
||||
"support"
|
||||
|
@ -674023,7 +674158,7 @@
|
|||
"support"
|
||||
],
|
||||
"resources/webidl2/lib/webidl2.js": [
|
||||
"900694b095df7f6a4b791ea41e096744d06a6089",
|
||||
"c60a456c3241655d05a7e40f82b19d8735d017d4",
|
||||
"support"
|
||||
],
|
||||
"resources/webidl2/lib/webidl2.js.headers": [
|
||||
|
@ -683646,6 +683781,14 @@
|
|||
"9c1fd49083ae55b5a6743c9da4b4ecab46683b2c",
|
||||
"reftest"
|
||||
],
|
||||
"svg/struct/scripted/autofocus-attribute.svg": [
|
||||
"6c095a4bef5045d7aa19e8197ad3950448b166bc",
|
||||
"testharness"
|
||||
],
|
||||
"svg/struct/scripted/blank.svg": [
|
||||
"9e560bdc5feddc1ae76e3950e89efc1c31dc9269",
|
||||
"support"
|
||||
],
|
||||
"svg/styling/render/transform-box-ref.svg": [
|
||||
"b41f8bb2a7baac19d907c378a0e269b9a8e914fb",
|
||||
"support"
|
||||
|
@ -694099,7 +694242,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html": [
|
||||
"935ceeb715edd2ffdeb7979d6824736fa82b6d2f",
|
||||
"97684b2131277f61095c414230f76f06db85d06e",
|
||||
"testharness"
|
||||
],
|
||||
"webaudio/the-audio-api/the-convolvernode-interface/realtime-conv.html": [
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[mix-blend-mode-animation.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[matchMedia-display-none-iframe.html]
|
||||
expected: ERROR
|
|
@ -2,5 +2,11 @@
|
|||
[cors-origin]
|
||||
expected: FAIL
|
||||
|
||||
[CORS preflight [PUT\] [origin OK\]]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[cors-origin.any.html]
|
||||
[CORS preflight [PUT\] [origin OK\]]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -20,6 +20,12 @@
|
|||
[Need CORS-preflight for accept/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 header]
|
||||
expected: FAIL
|
||||
|
||||
[Need CORS-preflight for content-type/text/html header]
|
||||
expected: FAIL
|
||||
|
||||
[Need CORS-preflight for test/hi header]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[cors-preflight-not-cors-safelisted.any.worker.html]
|
||||
[Need CORS-preflight for content-language/@ header]
|
||||
|
@ -46,3 +52,9 @@
|
|||
[cors-preflight-not-cors-safelisted]
|
||||
expected: FAIL
|
||||
|
||||
[Need CORS-preflight for content-type/text/html header]
|
||||
expected: FAIL
|
||||
|
||||
[Need CORS-preflight for test/hi header]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -9,6 +9,12 @@
|
|||
[CORS that succeeds with credentials: true; method: * (allowed: *); header: *,1 (allowed: *)]
|
||||
expected: FAIL
|
||||
|
||||
[CORS that succeeds with credentials: false; method: GET (allowed: get); header: X-Test,1 (allowed: x-test)]
|
||||
expected: FAIL
|
||||
|
||||
[CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test)]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[cors-preflight-star.any.worker.html]
|
||||
type: testharness
|
||||
|
@ -24,3 +30,9 @@
|
|||
[cors-preflight-star]
|
||||
expected: FAIL
|
||||
|
||||
[CORS that succeeds with credentials: false; method: GET (allowed: get); header: X-Test,1 (allowed: x-test)]
|
||||
expected: FAIL
|
||||
|
||||
[CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -6,6 +6,27 @@
|
|||
[CORS [PUT\] [several headers\], server allows]
|
||||
expected: FAIL
|
||||
|
||||
[CORS [PUT\], server allows]
|
||||
expected: FAIL
|
||||
|
||||
[CORS [GET\] [x-test-header: allowed\], server allows]
|
||||
expected: FAIL
|
||||
|
||||
[CORS [PUT\], server allows, check preflight has user agent]
|
||||
expected: FAIL
|
||||
|
||||
[CORS [DELETE\], server allows]
|
||||
expected: FAIL
|
||||
|
||||
[CORS [PUT\] [only safe headers\], server allows]
|
||||
expected: FAIL
|
||||
|
||||
[CORS [NEW\], server allows]
|
||||
expected: FAIL
|
||||
|
||||
[CORS [PATCH\], server allows]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[cors-preflight.any.worker.html]
|
||||
type: testharness
|
||||
|
@ -18,3 +39,24 @@
|
|||
[cors-preflight]
|
||||
expected: FAIL
|
||||
|
||||
[CORS [PUT\], server allows]
|
||||
expected: FAIL
|
||||
|
||||
[CORS [GET\] [x-test-header: allowed\], server allows]
|
||||
expected: FAIL
|
||||
|
||||
[CORS [PUT\], server allows, check preflight has user agent]
|
||||
expected: FAIL
|
||||
|
||||
[CORS [DELETE\], server allows]
|
||||
expected: FAIL
|
||||
|
||||
[CORS [PUT\] [only safe headers\], server allows]
|
||||
expected: FAIL
|
||||
|
||||
[CORS [NEW\], server allows]
|
||||
expected: FAIL
|
||||
|
||||
[CORS [PATCH\], server allows]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,5 +2,95 @@
|
|||
[cors-redirect-preflight]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 302: same origin to cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 303: cors to same origin (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 302: cors to another cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 308: same origin to cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 302: cors to same origin (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 301: same origin to cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 307: cors to another cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 301: cors to another cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 307: same origin to cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 308: cors to same origin (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 303: cors to another cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 307: cors to same origin (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 301: cors to same origin (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 303: same origin to cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 308: cors to another cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[cors-redirect-preflight.any.html]
|
||||
[Redirect 302: same origin to cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 303: cors to same origin (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 302: cors to another cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 308: same origin to cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 302: cors to same origin (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 301: same origin to cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 307: cors to another cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 301: cors to another cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 307: same origin to cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 308: cors to same origin (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 303: cors to another cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 307: cors to same origin (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 301: cors to same origin (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 303: same origin to cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
[Redirect 308: cors to another cors (preflight after redirection success case)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -312,30 +312,15 @@
|
|||
[<iframe>: separate response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
[<iframe>: combined response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -53,3 +53,9 @@
|
|||
[combined text/javascript ]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,6 +11,3 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%0C]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_3.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
[supported-elements.html]
|
||||
[Contenteditable element should support autofocus]
|
||||
expected: FAIL
|
||||
|
||||
[Element with tabindex should support autofocus]
|
||||
expected: FAIL
|
||||
|
|
@ -1,7 +1,11 @@
|
|||
[form-submission-algorithm.html]
|
||||
expected: TIMEOUT
|
||||
[If form's firing submission events is true, then return; 'submit' event]
|
||||
expected: FAIL
|
||||
|
||||
[If form's firing submission events is true, then return; 'invalid' event]
|
||||
expected: FAIL
|
||||
|
||||
[Cannot navigate (after constructing the entry list)]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -20,3 +20,6 @@
|
|||
[domainLookupStart should be 0 in cross-origin request.]
|
||||
expected: FAIL
|
||||
|
||||
[responseEnd should be greater than 0 in cross-origin request.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[realtimeanalyser-fft-scaling.html]
|
||||
expected: TIMEOUT
|
||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -44,3 +44,9 @@
|
|||
[X SNR (19.516378895113107 dB) is not greater than or equal to 65.737. Got 19.516378895113107.]
|
||||
expected: FAIL
|
||||
|
||||
[X SNR (-397.2220607922679 dB) is not greater than or equal to 65.737. Got -397.2220607922679.]
|
||||
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[30\]\t1.9724091887474060e-1\t9.5236867666244507e-1\t7.5512775778770447e-1\t7.9289436569253091e-1\t3.8985999999999999e-3\n\t[60\]\t-2.2450675070285797e-1\t-5.8084785938262939e-1\t3.5634110867977142e-1\t6.1348441407448528e-1\t3.8985999999999999e-3\n\t[90\]\t-3.7808802723884583e-1\t-5.9811043739318848e-1\t2.2002241015434265e-1\t3.6786251568070089e-1\t3.8985999999999999e-3\n\t[120\]\t7.6881676912307739e-1\t9.4563448429107666e-1\t1.7681771516799927e-1\t1.8698315057805445e-1\t3.8985999999999999e-3\n\t[151\]\t5.4644601186737418e-4\t-4.1306272149085999e-2\t4.1852718160953373e-2\t1.0132291292202573e+0\t3.8985999999999999e-3\n\t...and 1419 more errors.\n\tMax AbsError of 1.0373208575716874e+22 at index of 39268.\n\t[39268\]\t-1.0373208575716874e+22\t-9.6925276517868042e-1\t1.0373208575716874e+22\t1.0702273904583173e+22\t3.8985999999999999e-3\n\tMax RelError of 1.0702273904583173e+22 at index of 39268.\n\t[39268\]\t-1.0373208575716874e+22\t-9.6925276517868042e-1\t1.0373208575716874e+22\t1.0702273904583173e+22\t3.8985999999999999e-3\n]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -3,9 +3,20 @@
|
|||
<head>
|
||||
<title>HTML5 Canvas Test: arcTo() adds to subpath if same point</title>
|
||||
<link rel="author" title="Microsoft" href="http://www.microsoft.com" />
|
||||
<script type="text/javascript">
|
||||
function runTest()
|
||||
{
|
||||
var canvas = document.getElementById("canvas1");
|
||||
var ctx = canvas.getContext("2d");
|
||||
ctx.moveTo(0, 50);
|
||||
|
||||
ctx.lineTo(100, 50);
|
||||
ctx.stroke();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<body onload="runTest()">
|
||||
<p>Description: If x1,y1 and x2,y2 are the same point, then arcTo must add x1,y1 to the subpath, and connect that point to x0,y0 with a straight line.</p>
|
||||
<div><img src="/images/canvas-line.png" alt="line" /></div>
|
||||
<canvas id="canvas1" width="300" height="150">Browser does not support HTML5 Canvas (test ref).</canvas>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -3,9 +3,30 @@
|
|||
<head>
|
||||
<title>HTML5 Canvas Test: bezierCurveTo() must ensure subpaths</title>
|
||||
<link rel="author" title="Microsoft" href="http://www.microsoft.com" />
|
||||
<script type="text/javascript">
|
||||
function runTest()
|
||||
{
|
||||
var canvas = document.getElementById("canvas1");
|
||||
var ctx = canvas.getContext("2d");
|
||||
|
||||
ctx.moveTo(65,25)
|
||||
ctx.bezierCurveTo(65, 25, 65, 25, 65, 65);
|
||||
ctx.stroke();
|
||||
ctx.beginPath();
|
||||
|
||||
ctx.moveTo(35,25)
|
||||
ctx.bezierCurveTo(35, 25, 35, 25, 35, 65);
|
||||
ctx.stroke();
|
||||
ctx.beginPath();
|
||||
|
||||
ctx.moveTo(0,75)
|
||||
ctx.bezierCurveTo(0, 75, 50, 150, 100, 75);
|
||||
ctx.stroke();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<body onload="runTest()">
|
||||
<p>Description: bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) must ensure there is a subpath for the point (cp1x,cp1y) if the context has no subpaths, then it must connect the last point in the subpath to the point (x,y).</p>
|
||||
<div><img src='/images/smiley.png' alt='smiley' /></div>
|
||||
<canvas id="canvas1" width="300" height="150">Browser does not support HTML5 Canvas (ref test).</canvas>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -111,6 +111,14 @@
|
|||
test(function() {
|
||||
assert_equals(ops.id, clonedOps.id)
|
||||
});
|
||||
test(function() {
|
||||
let el = document.getElementById("svg");
|
||||
assert_equals(el.getAttribute("style"), "");
|
||||
el.style.background = violetOps.style.background;
|
||||
assert_not_equals(el.style.background, "");
|
||||
let clone = el.cloneNode(true);
|
||||
assert_equals(el.style.background, clone.style.background)
|
||||
}, "non-HTML namespace");
|
||||
}
|
||||
|
||||
</script>
|
||||
|
@ -131,6 +139,7 @@
|
|||
<div id="violetOps">
|
||||
Yet another div.
|
||||
</div>
|
||||
<svg id="svg" style="background: rgb(238, 130, 238)"></svg>
|
||||
<div id="log"></div>
|
||||
</body>
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="help" href="https://crbug.com/981602">
|
||||
<link rel="author" href="mailto:kojii@chromium.org">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<b>abc<video style="contain:size"></video></b><div contenteditable></div>
|
||||
<script>test(() => {});</script>
|
|
@ -0,0 +1,22 @@
|
|||
<!doctype html>
|
||||
<title>CSS Animations Test: Chrome crash when removing documentElement and @keyframes stylesheet</title>
|
||||
<link rel="help" href="https://crbug.com/999522">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<style>
|
||||
@keyframes anim {
|
||||
from { color: pink }
|
||||
to { color: purple }
|
||||
}
|
||||
div {
|
||||
animation: notfound 1s;
|
||||
}
|
||||
</style>
|
||||
<div></div>
|
||||
<script>
|
||||
test(() => {
|
||||
document.body.offsetTop;
|
||||
document.querySelector("style").remove();
|
||||
document.documentElement.remove();
|
||||
}, "Removing documentElement and @keyframes sheet should not crash.");
|
||||
</script>
|
|
@ -0,0 +1,21 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=997403">
|
||||
<div id="elm" style="display:layout(parent); columns:2; width:10em; height:60px; column-fill:auto; line-height:20px;">
|
||||
x
|
||||
<span>
|
||||
<div style="display:inline-block;"></div>
|
||||
</span>
|
||||
<div style="height:1px;"></div>
|
||||
<br>
|
||||
</div>
|
||||
<script>
|
||||
</script>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
document.body.offsetTop;
|
||||
elm.style.display = "none";
|
||||
document.body.offsetTop;
|
||||
test(()=> {}, "No crash");
|
||||
</script>
|
|
@ -0,0 +1,10 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=997403">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-multicol-1/#cc">
|
||||
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
|
||||
<meta name="assert" content="column-count and column-width should only apply to block containers, and not tables, flexboxes, grid, custom layout containers, etc.">
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
<div style="display:layout(parent); column-count:2; width:100px; height:100px; background:red;">
|
||||
<div style="height:100px; background:green;"></div>
|
||||
</div>
|
|
@ -0,0 +1,27 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="ja">
|
||||
<meta charset="UTF-8">
|
||||
<title>CSS Ruby Reference</title>
|
||||
<link rel="author" title="Xidorn Quan" href="https://www.upsuper.org">
|
||||
<link rel="stylesheet" href="/fonts/ahem.css">
|
||||
<style>
|
||||
body {
|
||||
font: 16px/1 Ahem;
|
||||
padding: 32px 0;
|
||||
}
|
||||
p {
|
||||
margin: 0;
|
||||
border: 5px solid blue;
|
||||
}
|
||||
ruby {
|
||||
ruby-align: center;
|
||||
font-size: 32px;
|
||||
}
|
||||
rt {
|
||||
font-size: 8px;
|
||||
}
|
||||
.b {
|
||||
font-size: 16px;
|
||||
}
|
||||
</style>
|
||||
<p><ruby><rb>X<rb class="b">X<rt>x<rt>x</ruby></p>
|
|
@ -0,0 +1,25 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="ja">
|
||||
<meta charset="UTF-8">
|
||||
<title>CSS Ruby Test: sizing and positioning of ruby containers when size of ruby bases and the base container differ</title>
|
||||
<link rel="author" title="Xidorn Quan" href="https://www.upsuper.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-ruby-1/#ruby-layout">
|
||||
<link rel="match" href="ruby-base-different-size-ref.html">
|
||||
<link rel="stylesheet" href="/fonts/ahem.css">
|
||||
<style>
|
||||
body {
|
||||
font: 16px/1 Ahem;
|
||||
padding: 32px 0;
|
||||
}
|
||||
p {
|
||||
margin: 0;
|
||||
border: 5px solid blue;
|
||||
}
|
||||
ruby {
|
||||
ruby-align: center;
|
||||
}
|
||||
.a {
|
||||
font-size: 32px;
|
||||
}
|
||||
</style>
|
||||
<p><ruby><rb class="a">X<rb>X<rt>x<rt>x</ruby></p>
|
|
@ -1,10 +1,11 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<title>CSS Text test: hanging trailing spaces with white-space:pre-wrap</title>
|
||||
<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com" />
|
||||
<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-phase-2">
|
||||
<link rel="match" href="reference/white-space-pre-wrap-trailing-spaces-004-ref.html">
|
||||
<meta name="assert" content="Preserved white space at the end of the line is hanged when white-space is pre-wrap.">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
|
||||
<style>
|
||||
div {
|
||||
font: 25px/1 Ahem;
|
||||
|
|
|
@ -26,6 +26,11 @@ def main(request, response):
|
|||
response.set_error(400, "No Access-Control-Request-Method header")
|
||||
return "ERROR: No access-control-request-method in preflight!"
|
||||
|
||||
# https://github.com/whatwg/fetch/issues/922
|
||||
if request.headers.get("Accept", "") != "*/*":
|
||||
response.set_error(400, "Request does not have 'Accept: */*' header")
|
||||
return "ERROR: Invalid access in preflight!"
|
||||
|
||||
if "control_request_headers" in request.GET:
|
||||
stashed_data['control_request_headers'] = request.headers.get("Access-Control-Request-Headers", None)
|
||||
|
||||
|
|
|
@ -19,7 +19,9 @@ async_test(t => {
|
|||
const channel = new BroadcastChannel(token());
|
||||
channel.onmessage = t.step_func_done(event => {
|
||||
const payload = event.data;
|
||||
assert_equals(payload.name, "");
|
||||
// The name should be empty, but we're checking the length rather than a
|
||||
// string comparison to "" to keep the random token out of error messages.
|
||||
assert_equals(payload.name.length, 0);
|
||||
assert_false(payload.opener);
|
||||
});
|
||||
const coop = `resources/coop-coep.py?coop=same-origin&coep=&channel=${channel.name}`;
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
'use strict';
|
||||
|
||||
function waitForEvent(target, type, options) {
|
||||
return new Promise((resolve, reject) => {
|
||||
target.addEventListener(type, resolve, options);
|
||||
});
|
||||
}
|
||||
|
||||
function waitForLoad(target) {
|
||||
return waitForEvent(target, 'load');
|
||||
}
|
||||
|
||||
function timeOut(test, ms) {
|
||||
return new Promise((resolve, reject) => {
|
||||
test.step_timeout(resolve, ms);
|
||||
});
|
||||
}
|
||||
|
||||
// If an element with autofocus is connected to a document and this function
|
||||
// is called, the autofocus result is deterministic after returning from the
|
||||
// function.
|
||||
// Exception: If the document has script-blocking style sheets, this function
|
||||
// doesn't work well.
|
||||
async function waitUntilStableAutofocusState(test) {
|
||||
// TODO: Update this for https://github.com/web-platform-tests/wpt/pull/17929
|
||||
await timeOut(test, 100);
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/utils.js"></script>
|
||||
<script>
|
||||
"use strict";
|
||||
|
||||
promise_test(async t => {
|
||||
let w = window.open('/common/blank.html');
|
||||
await waitForLoad(w);
|
||||
t.add_cleanup(() => { w.close(); });
|
||||
w.document.body.innerHTML = '<div contenteditable=true autofocus></div>';
|
||||
await waitUntilStableAutofocusState(t);
|
||||
assert_equals(w.document.activeElement.tagName, 'DIV');
|
||||
}, 'Contenteditable element should support autofocus');
|
||||
|
||||
promise_test(async t => {
|
||||
let w = window.open('/common/blank.html');
|
||||
await waitForLoad(w);
|
||||
t.add_cleanup(() => { w.close(); });
|
||||
w.document.body.innerHTML = '<span tabindex=0></span>';
|
||||
await waitUntilStableAutofocusState(t);
|
||||
assert_equals(w.document.activeElement.tagName, 'SPAN');
|
||||
}, 'Element with tabindex should support autofocus');
|
||||
|
||||
promise_test(async t => {
|
||||
let w = window.open('/common/blank.html');
|
||||
await waitForLoad(w);
|
||||
t.add_cleanup(() => { w.close(); });
|
||||
let element = w.document.createElementNS('uri1', 'prefix:local');
|
||||
element.setAttribute('autofocus', '');
|
||||
w.document.body.appendChild(element);
|
||||
await waitUntilStableAutofocusState(t);
|
||||
assert_equals(w.document.activeElement.tagName, 'BODY');
|
||||
}, 'Non-HTMLElement should not support autofocus');
|
||||
</script>
|
Binary file not shown.
Before Width: | Height: | Size: 502 B |
|
@ -1,4 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<meta name="timeout" content="long">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/test-helper.js"></script>
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title>Uncaught exception</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
throw new Error("error outside any setup or test");
|
||||
</script>
|
|
@ -0,0 +1,4 @@
|
|||
[document-fonts-ready.html]
|
||||
[document.fonts.ready resolves after layout depending on loaded fonts]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=174030
|
|
@ -6,9 +6,9 @@
|
|||
|
||||
[Compare CSS span definitions (only valid if pre-reqs pass)]
|
||||
expected:
|
||||
if product == "safari": FAIL # https://webkit.org/show_bug.cgi?id=187052
|
||||
if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=187052
|
||||
|
||||
|
||||
[Compare CSS div definitions (only valid if pre-reqs pass)]
|
||||
expected:
|
||||
if product == "safari": FAIL # https://webkit.org/show_bug.cgi?id=187052
|
||||
if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=187052
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[uncaught-exception.html]
|
||||
[Uncaught exception]
|
||||
expected: FAIL
|
||||
|
|
@ -2,4 +2,9 @@
|
|||
[context]
|
||||
expected:
|
||||
if product == "edge_webdriver": FAIL
|
||||
if product == "safari": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
|
||||
if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
|
||||
|
||||
[context.any.serviceworker.html]
|
||||
[context]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=200815
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
[foo]
|
||||
expected:
|
||||
if product == "edge_webdriver": FAIL
|
||||
if product == "safari": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
|
||||
if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
|
||||
|
||||
|
||||
[order-of-metas.window.html]
|
||||
|
|
|
@ -2,4 +2,9 @@
|
|||
[secure-context]
|
||||
expected:
|
||||
if product == "edge_webdriver": FAIL
|
||||
if product == "safari": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
|
||||
if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
|
||||
|
||||
[secure-context.https.any.serviceworker.html]
|
||||
[secure-context]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=200815
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
[foobar]
|
||||
expected:
|
||||
if product == "safari": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
|
||||
if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=149850
|
||||
|
||||
|
||||
[title.any.worker.html]
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
[wpt-server-http.sub.html]
|
||||
[HTTPS protocol, punycode subdomain #1]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL
|
||||
|
||||
[HTTPS protocol, www subdomain #1]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL
|
||||
|
||||
[HTTPS protocol, www subdomain #2]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL
|
||||
|
||||
[HTTPS protocol, www subdomain #3]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL
|
||||
|
||||
[HTTPS protocol, punycode subdomain #2]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL
|
|
@ -0,0 +1,41 @@
|
|||
[wpt-server-websocket.sub.html]
|
||||
[WSS protocol, www subdomain #3]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL
|
||||
|
||||
[WSS protocol, punycode subdomain #1]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL
|
||||
|
||||
[WSS protocol, punycode subdomain #2]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL
|
||||
|
||||
[WSS protocol, www subdomain #1]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL
|
||||
|
||||
[WSS protocol, www subdomain #2]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL
|
||||
|
||||
[WSS protocol, www subdomain #3]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL
|
||||
|
||||
[WSS protocol, punycode subdomain #1]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL
|
||||
|
||||
[WSS protocol, punycode subdomain #2]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL
|
||||
|
||||
[WSS protocol, www subdomain #1]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL
|
||||
|
||||
[WSS protocol, www subdomain #2]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
[actionsWithKeyPressed.html]
|
||||
expected:
|
||||
if product == "safari": ERROR
|
||||
if product == "safari" or product == "epiphany" or product == "webkit": ERROR
|
||||
|
||||
[TestDriver actions: actions with key pressed]
|
||||
expected:
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
[eventOrder.html]
|
||||
expected:
|
||||
if product == "safari": ERROR
|
||||
if product == "safari" or product == "epiphany" or product == "webkit": ERROR
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
[multiDevice.html]
|
||||
expected:
|
||||
if product == "safari": ERROR
|
||||
if product == "safari" or product == "epiphany" or product == "webkit": ERROR
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
[pause.html]
|
||||
expected:
|
||||
if product == "safari": ERROR
|
||||
if product == "epiphany" or product == "webkit": ERROR
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
[file_upload.sub.html]
|
||||
expected:
|
||||
if product == "edge_webdriver": ERROR
|
||||
|
||||
[File upload using testdriver]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[generate_test_report.html]
|
||||
expected:
|
||||
if product == "firefox": ERROR
|
||||
if product == "safari": ERROR
|
||||
if product == "safari" or product == "epiphany" or product == "webkit": ERROR
|
||||
|
|
|
@ -70,18 +70,11 @@ dictionary NFCErrorEventInit : EventInit {
|
|||
required DOMException error;
|
||||
};
|
||||
|
||||
enum NDEFCompatibility {
|
||||
"nfc-forum",
|
||||
"vendor",
|
||||
"any"
|
||||
};
|
||||
|
||||
dictionary NFCPushOptions {
|
||||
NFCPushTarget target = "any";
|
||||
unrestricted double timeout = Infinity;
|
||||
boolean ignoreRead = true;
|
||||
AbortSignal? signal;
|
||||
NDEFCompatibility compatibility = "nfc-forum";
|
||||
};
|
||||
|
||||
enum NFCPushTarget {
|
||||
|
@ -91,9 +84,8 @@ enum NFCPushTarget {
|
|||
};
|
||||
|
||||
dictionary NFCScanOptions {
|
||||
AbortSignal? signal;
|
||||
USVString url = "";
|
||||
NDEFRecordType recordType;
|
||||
USVString mediaType = "";
|
||||
NDEFCompatibility compatibility = "nfc-forum";
|
||||
AbortSignal? signal;
|
||||
};
|
||||
|
|
|
@ -56,10 +56,15 @@ const doEventsFire = (t, target1, target2, name, ms = 1) => Promise.all([
|
|||
promise_test(async t => {
|
||||
const stream = await navigator.mediaDevices.getUserMedia({video: true, audio: true});
|
||||
const tracks = stream.getTracks();
|
||||
t.add_cleanup(() => tracks.forEach(track => track.stop()));
|
||||
|
||||
audio.srcObject = video.srcObject = stream;
|
||||
t.add_cleanup(() => audio.srcObject = video.srcObject = null);
|
||||
|
||||
t.add_cleanup(() => {
|
||||
for (const track of tracks) {
|
||||
track.stop();
|
||||
}
|
||||
audio.srcObject = video.srcObject = null;
|
||||
});
|
||||
|
||||
await Promise.all([
|
||||
new Promise(r => audio.onloadedmetadata = r),
|
||||
|
@ -90,10 +95,15 @@ promise_test(async t => {
|
|||
promise_test(async t => {
|
||||
const stream = await navigator.mediaDevices.getUserMedia({video: true, audio: true});
|
||||
const tracks = stream.getTracks();
|
||||
t.add_cleanup(() => tracks.forEach(track => track.stop()));
|
||||
|
||||
audio.srcObject = video.srcObject = stream;
|
||||
t.add_cleanup(() => audio.srcObject = video.srcObject = null);
|
||||
|
||||
t.add_cleanup(() => {
|
||||
for (const track of tracks) {
|
||||
track.stop();
|
||||
}
|
||||
audio.srcObject = video.srcObject = null;
|
||||
});
|
||||
|
||||
await Promise.all([
|
||||
new Promise(r => audio.onloadedmetadata = r),
|
||||
|
|
|
@ -1507,6 +1507,17 @@ IdlInterface.prototype.test = function()
|
|||
this.test_members();
|
||||
};
|
||||
|
||||
// This supports both Constructor extended attributes and constructor
|
||||
// operations until all idl fragments have been updated.
|
||||
IdlInterface.prototype.constructors = function()
|
||||
{
|
||||
var extendedAttributes = this.extAttrs
|
||||
.filter(function(attr) { return attr.name == "Constructor"; });
|
||||
var operations = this.members
|
||||
.filter(function(m) { return m.type == "constructor"; });
|
||||
return extendedAttributes.concat(operations);
|
||||
}
|
||||
|
||||
IdlInterface.prototype.test_self = function()
|
||||
{
|
||||
subsetTestByKey(this.name, test, function()
|
||||
|
@ -1594,7 +1605,7 @@ IdlInterface.prototype.test_self = function()
|
|||
"prototype of self's property " + format_value(this.name) + " is not Function.prototype");
|
||||
}
|
||||
|
||||
if (!this.has_extended_attribute("Constructor")) {
|
||||
if (!this.constructors().length) {
|
||||
// "The internal [[Call]] method of the interface object behaves as
|
||||
// follows . . .
|
||||
//
|
||||
|
@ -1629,8 +1640,7 @@ IdlInterface.prototype.test_self = function()
|
|||
assert_false(desc.enumerable, this.name + ".length should not be enumerable");
|
||||
assert_true(desc.configurable, this.name + ".length should be configurable");
|
||||
|
||||
var constructors = this.extAttrs
|
||||
.filter(function(attr) { return attr.name == "Constructor"; });
|
||||
var constructors = this.constructors();
|
||||
var expected_length = minOverloadLength(constructors);
|
||||
assert_equals(this.get_interface_object().length, expected_length, "wrong value for " + this.name + ".length");
|
||||
}.bind(this), this.name + " interface object length");
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
<!DOCTYPE HTML>
|
||||
<title>IdlInterface.prototype.constructors()</title>
|
||||
<div id="log"></div>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/WebIDLParser.js"></script>
|
||||
<script src="/resources/idlharness.js"></script>
|
||||
<script src="../../../idl-helper.js"></script>
|
||||
<script>
|
||||
"use strict";
|
||||
test(function() {
|
||||
var i = interfaceFrom('[Constructor] interface A { };');
|
||||
assert_equals(i.constructors().length, 1);
|
||||
}, 'Interface with Constructor extended attribute.');
|
||||
|
||||
test(function() {
|
||||
var i = interfaceFrom('interface A { constructor(); };');
|
||||
assert_equals(i.constructors().length, 1);
|
||||
}, 'Interface with constructor method');
|
||||
|
||||
test(function() {
|
||||
var i = interfaceFrom('[Constructor] interface A { constructor(); };');
|
||||
assert_equals(i.constructors().length, 2);
|
||||
}, 'Interface with both');
|
||||
</script>
|
|
@ -103,10 +103,10 @@ __webpack_require__.r(__webpack_exports__);
|
|||
/* harmony import */ var _lib_webidl2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
|
||||
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "parse", function() { return _lib_webidl2_js__WEBPACK_IMPORTED_MODULE_0__["parse"]; });
|
||||
|
||||
/* harmony import */ var _lib_writer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29);
|
||||
/* harmony import */ var _lib_writer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
|
||||
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "write", function() { return _lib_writer_js__WEBPACK_IMPORTED_MODULE_1__["write"]; });
|
||||
|
||||
/* harmony import */ var _lib_validator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
|
||||
/* harmony import */ var _lib_validator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(31);
|
||||
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "validate", function() { return _lib_validator_js__WEBPACK_IMPORTED_MODULE_2__["validate"]; });
|
||||
|
||||
|
||||
|
@ -122,16 +122,16 @@ __webpack_require__.r(__webpack_exports__);
|
|||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parse", function() { return parse; });
|
||||
/* harmony import */ var _tokeniser_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
|
||||
/* harmony import */ var _productions_enum_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
|
||||
/* harmony import */ var _productions_enum_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15);
|
||||
/* harmony import */ var _productions_includes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16);
|
||||
/* harmony import */ var _productions_extended_attributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(11);
|
||||
/* harmony import */ var _productions_extended_attributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);
|
||||
/* harmony import */ var _productions_typedef_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(17);
|
||||
/* harmony import */ var _productions_callback_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(18);
|
||||
/* harmony import */ var _productions_interface_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(19);
|
||||
/* harmony import */ var _productions_mixin_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(24);
|
||||
/* harmony import */ var _productions_dictionary_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(25);
|
||||
/* harmony import */ var _productions_namespace_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(27);
|
||||
/* harmony import */ var _productions_callback_interface_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(28);
|
||||
/* harmony import */ var _productions_mixin_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(25);
|
||||
/* harmony import */ var _productions_dictionary_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(26);
|
||||
/* harmony import */ var _productions_namespace_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(28);
|
||||
/* harmony import */ var _productions_callback_interface_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(29);
|
||||
|
||||
|
||||
|
||||
|
@ -243,6 +243,8 @@ __webpack_require__.r(__webpack_exports__);
|
|||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "argumentNameKeywords", function() { return argumentNameKeywords; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Tokeniser", function() { return Tokeniser; });
|
||||
/* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
|
||||
/* harmony import */ var _productions_helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
|
||||
|
||||
|
||||
|
||||
// These regular expressions use the sticky flag so they will only match at
|
||||
|
@ -270,6 +272,7 @@ const argumentNameKeywords = [
|
|||
"attribute",
|
||||
"callback",
|
||||
"const",
|
||||
"constructor",
|
||||
"deleter",
|
||||
"dictionary",
|
||||
"enum",
|
||||
|
@ -299,6 +302,7 @@ const nonRegexTerminals = [
|
|||
"async",
|
||||
"boolean",
|
||||
"byte",
|
||||
"constructor",
|
||||
"double",
|
||||
"false",
|
||||
"float",
|
||||
|
@ -334,6 +338,13 @@ const punctuations = [
|
|||
"}"
|
||||
];
|
||||
|
||||
const reserved = [
|
||||
// "constructor" is now a keyword
|
||||
"_constructor",
|
||||
"toString",
|
||||
"_toString",
|
||||
];
|
||||
|
||||
/**
|
||||
* @param {string} str
|
||||
*/
|
||||
|
@ -365,9 +376,15 @@ function tokenise(str) {
|
|||
}
|
||||
if (result === -1) {
|
||||
result = attemptTokenMatch("identifier");
|
||||
const token = tokens[tokens.length - 1];
|
||||
if (result !== -1 && nonRegexTerminals.includes(token.value)) {
|
||||
token.type = token.value;
|
||||
const lastIndex = tokens.length - 1;
|
||||
const token = tokens[lastIndex];
|
||||
if (result !== -1) {
|
||||
if (reserved.includes(token.value)) {
|
||||
const message = `${Object(_productions_helpers_js__WEBPACK_IMPORTED_MODULE_1__["unescape"])(token.value)} is a reserved identifier and must not be used.`;
|
||||
throw new WebIDLParseError(Object(_error_js__WEBPACK_IMPORTED_MODULE_0__["syntaxError"])(tokens, lastIndex, null, message));
|
||||
} else if (nonRegexTerminals.includes(token.value)) {
|
||||
token.type = token.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (nextChar === '"') {
|
||||
|
@ -501,12 +518,13 @@ function lastLine(text) {
|
|||
/**
|
||||
* @typedef {object} WebIDL2ErrorOptions
|
||||
* @property {"error" | "warning"} level
|
||||
* @property {Function} autofix
|
||||
*
|
||||
* @param {string} message error message
|
||||
* @param {"Syntax" | "Validation"} kind error type
|
||||
* @param {WebIDL2ErrorOptions} [options]
|
||||
*/
|
||||
function error(source, position, current, message, kind, { level = "error" } = {}) {
|
||||
function error(source, position, current, message, kind, { level = "error", autofix } = {}) {
|
||||
/**
|
||||
* @param {number} count
|
||||
*/
|
||||
|
@ -556,6 +574,7 @@ function error(source, position, current, message, kind, { level = "error" } = {
|
|||
line,
|
||||
sourceName: source.name,
|
||||
level,
|
||||
autofix,
|
||||
input: subsequentText,
|
||||
tokens: subsequentTokens
|
||||
};
|
||||
|
@ -581,77 +600,6 @@ function validationError(source, token, current, message, options) {
|
|||
/* 4 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Enum", function() { return Enum; });
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);
|
||||
/* harmony import */ var _token_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
|
||||
|
||||
|
||||
|
||||
|
||||
class EnumValue extends _token_js__WEBPACK_IMPORTED_MODULE_1__["Token"] {
|
||||
/**
|
||||
* @param {import("../tokeniser").Tokeniser} tokeniser
|
||||
*/
|
||||
static parse(tokeniser) {
|
||||
const value = tokeniser.consume("string");
|
||||
if (value) {
|
||||
return new EnumValue({ source: tokeniser.source, tokens: { value } });
|
||||
}
|
||||
}
|
||||
|
||||
get type() {
|
||||
return "enum-value";
|
||||
}
|
||||
get value() {
|
||||
return super.value.slice(1, -1);
|
||||
}
|
||||
}
|
||||
|
||||
class Enum extends _base_js__WEBPACK_IMPORTED_MODULE_2__["Base"] {
|
||||
/**
|
||||
* @param {import("../tokeniser").Tokeniser} tokeniser
|
||||
*/
|
||||
static parse(tokeniser) {
|
||||
const tokens = {};
|
||||
tokens.base = tokeniser.consume("enum");
|
||||
if (!tokens.base) {
|
||||
return;
|
||||
}
|
||||
tokens.name = tokeniser.consume("identifier") || tokeniser.error("No name for enum");
|
||||
const ret = tokeniser.current = new Enum({ source: tokeniser.source, tokens });
|
||||
tokens.open = tokeniser.consume("{") || tokeniser.error("Bodyless enum");
|
||||
ret.values = Object(_helpers_js__WEBPACK_IMPORTED_MODULE_0__["list"])(tokeniser, {
|
||||
parser: EnumValue.parse,
|
||||
allowDangler: true,
|
||||
listName: "enumeration"
|
||||
});
|
||||
if (tokeniser.probe("string")) {
|
||||
tokeniser.error("No comma between enum values");
|
||||
}
|
||||
tokens.close = tokeniser.consume("}") || tokeniser.error("Unexpected value in enum");
|
||||
if (!ret.values.length) {
|
||||
tokeniser.error("No value in enum");
|
||||
}
|
||||
tokens.termination = tokeniser.consume(";") || tokeniser.error("No semicolon after enum");
|
||||
return ret;
|
||||
}
|
||||
|
||||
get type() {
|
||||
return "enum";
|
||||
}
|
||||
get name() {
|
||||
return Object(_helpers_js__WEBPACK_IMPORTED_MODULE_0__["unescape"])(this.tokens.name.value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/***/ }),
|
||||
/* 5 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unescape", function() { return unescape; });
|
||||
|
@ -664,12 +612,15 @@ __webpack_require__.r(__webpack_exports__);
|
|||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "type_with_extended_attributes", function() { return type_with_extended_attributes; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "return_type", function() { return return_type; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "stringifier", function() { return stringifier; });
|
||||
/* harmony import */ var _type_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
|
||||
/* harmony import */ var _argument_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
|
||||
/* harmony import */ var _token_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
|
||||
/* harmony import */ var _extended_attributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(11);
|
||||
/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14);
|
||||
/* harmony import */ var _attribute_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(15);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "autofixAddExposedWindow", function() { return autofixAddExposedWindow; });
|
||||
/* harmony import */ var _type_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);
|
||||
/* harmony import */ var _argument_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);
|
||||
/* harmony import */ var _token_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
|
||||
/* harmony import */ var _extended_attributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);
|
||||
/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(13);
|
||||
/* harmony import */ var _attribute_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(14);
|
||||
/* harmony import */ var _tokeniser_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(2);
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -838,19 +789,42 @@ function stringifier(tokeniser) {
|
|||
return member;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {object} def
|
||||
* @param {import("./extended-attributes.js").ExtendedAttributes} def.extAttrs
|
||||
*/
|
||||
function autofixAddExposedWindow(def) {
|
||||
return () => {
|
||||
if (def.extAttrs.length){
|
||||
const tokeniser = new _tokeniser_js__WEBPACK_IMPORTED_MODULE_6__["Tokeniser"]("Exposed=Window,");
|
||||
const exposed = _extended_attributes_js__WEBPACK_IMPORTED_MODULE_3__["SimpleExtendedAttribute"].parse(tokeniser);
|
||||
exposed.tokens.separator = tokeniser.consume(",");
|
||||
const existing = def.extAttrs[0];
|
||||
if (!/^\s/.test(existing.tokens.name.trivia)) {
|
||||
existing.tokens.name.trivia = ` ${existing.tokens.name.trivia}`;
|
||||
}
|
||||
def.extAttrs.unshift(exposed);
|
||||
} else {
|
||||
def.extAttrs = _extended_attributes_js__WEBPACK_IMPORTED_MODULE_3__["ExtendedAttributes"].parse(new _tokeniser_js__WEBPACK_IMPORTED_MODULE_6__["Tokeniser"]("[Exposed=Window]"));
|
||||
def.extAttrs.tokens.open.trivia = def.tokens.base.trivia;
|
||||
def.tokens.base.trivia = " ";
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/***/ }),
|
||||
/* 6 */
|
||||
/* 5 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Type", function() { return Type; });
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
|
||||
/* harmony import */ var _tokeniser_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2);
|
||||
/* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
|
||||
/* harmony import */ var _validators_helpers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(8);
|
||||
/* harmony import */ var _validators_helpers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
|
||||
|
||||
|
||||
|
||||
|
@ -1028,7 +1002,7 @@ class Type extends _base_js__WEBPACK_IMPORTED_MODULE_0__["Base"] {
|
|||
|
||||
|
||||
/***/ }),
|
||||
/* 7 */
|
||||
/* 6 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
@ -1060,30 +1034,20 @@ class Base {
|
|||
|
||||
|
||||
/***/ }),
|
||||
/* 8 */
|
||||
/* 7 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dictionaryWithinUnion", function() { return dictionaryWithinUnion; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "idlTypeIncludesDictionary", function() { return idlTypeIncludesDictionary; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "referencesTypedef", function() { return referencesTypedef; });
|
||||
/**
|
||||
* Yields direct references to dictionary within union.
|
||||
*/
|
||||
function* dictionaryWithinUnion(subtypes, defs) {
|
||||
for (const subtype of subtypes) {
|
||||
const def = defs.unique.get(subtype.idlType);
|
||||
if (def && def.type === "dictionary") {
|
||||
yield subtype;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {*} idlType
|
||||
* @param {*[]} defs
|
||||
* @param {object} [options]
|
||||
* @param {boolean} [options.useNullableInner] use when the input idlType is nullable and you want to use its inner type
|
||||
* @return the type reference that ultimately includes dictionary.
|
||||
*/
|
||||
function idlTypeIncludesDictionary(idlType, defs) {
|
||||
function idlTypeIncludesDictionary(idlType, defs, { useNullableInner } = {}) {
|
||||
if (!idlType.union) {
|
||||
const def = defs.unique.get(idlType.idlType);
|
||||
if (!def) {
|
||||
|
@ -1103,7 +1067,7 @@ function idlTypeIncludesDictionary(idlType, defs) {
|
|||
return idlType;
|
||||
}
|
||||
}
|
||||
if (def.type === "dictionary") {
|
||||
if (def.type === "dictionary" && (useNullableInner || !idlType.nullable)) {
|
||||
return idlType;
|
||||
}
|
||||
}
|
||||
|
@ -1118,29 +1082,21 @@ function idlTypeIncludesDictionary(idlType, defs) {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if the idlType directly references a typedef.
|
||||
*/
|
||||
function referencesTypedef(idlType, defs) {
|
||||
const result = defs.unique.get(idlType.idlType);
|
||||
return result && result.type === "typedef";
|
||||
}
|
||||
|
||||
|
||||
/***/ }),
|
||||
/* 9 */
|
||||
/* 8 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Argument", function() { return Argument; });
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
|
||||
/* harmony import */ var _default_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
|
||||
/* harmony import */ var _extended_attributes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5);
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
|
||||
/* harmony import */ var _default_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
|
||||
/* harmony import */ var _extended_attributes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
|
||||
/* harmony import */ var _tokeniser_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2);
|
||||
/* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3);
|
||||
/* harmony import */ var _validators_helpers_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(8);
|
||||
/* harmony import */ var _validators_helpers_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7);
|
||||
|
||||
|
||||
|
||||
|
@ -1189,29 +1145,39 @@ class Argument extends _base_js__WEBPACK_IMPORTED_MODULE_0__["Base"] {
|
|||
|
||||
*validate(defs) {
|
||||
yield* this.idlType.validate(defs);
|
||||
if (Object(_validators_helpers_js__WEBPACK_IMPORTED_MODULE_6__["idlTypeIncludesDictionary"])(this.idlType, defs)) {
|
||||
if (this.optional && !this.default) {
|
||||
const message = `Optional dictionary arguments must have a default value of \`{}\`.`;
|
||||
yield Object(_error_js__WEBPACK_IMPORTED_MODULE_5__["validationError"])(this.source, this.tokens.name, this, message);
|
||||
}
|
||||
if (Object(_validators_helpers_js__WEBPACK_IMPORTED_MODULE_6__["idlTypeIncludesDictionary"])(this.idlType, defs, { useNullableInner: true })) {
|
||||
if (this.idlType.nullable) {
|
||||
const message = `Dictionary arguments cannot be nullable.`;
|
||||
yield Object(_error_js__WEBPACK_IMPORTED_MODULE_5__["validationError"])(this.source, this.tokens.name, this, message);
|
||||
} else if (this.optional && !this.default) {
|
||||
const message = `Optional dictionary arguments must have a default value of \`{}\`.`;
|
||||
yield Object(_error_js__WEBPACK_IMPORTED_MODULE_5__["validationError"])(this.source, this.tokens.name, this, message, {
|
||||
autofix: autofixOptionalDictionaryDefaultValue(this)
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Argument} arg
|
||||
*/
|
||||
function autofixOptionalDictionaryDefaultValue(arg) {
|
||||
return () => {
|
||||
arg.default = _default_js__WEBPACK_IMPORTED_MODULE_1__["Default"].parse(new _tokeniser_js__WEBPACK_IMPORTED_MODULE_4__["Tokeniser"](" = {}"));
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/***/ }),
|
||||
/* 10 */
|
||||
/* 9 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Default", function() { return Default; });
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
|
||||
|
||||
|
||||
|
||||
|
@ -1254,15 +1220,16 @@ class Default extends _base_js__WEBPACK_IMPORTED_MODULE_0__["Base"] {
|
|||
|
||||
|
||||
/***/ }),
|
||||
/* 11 */
|
||||
/* 10 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SimpleExtendedAttribute", function() { return SimpleExtendedAttribute; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExtendedAttributes", function() { return ExtendedAttributes; });
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
|
||||
/* harmony import */ var _array_base_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
|
||||
/* harmony import */ var _array_base_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4);
|
||||
/* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
|
||||
|
||||
|
||||
|
@ -1390,7 +1357,7 @@ class ExtendedAttributes extends _array_base_js__WEBPACK_IMPORTED_MODULE_1__["Ar
|
|||
|
||||
|
||||
/***/ }),
|
||||
/* 12 */
|
||||
/* 11 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
@ -1408,13 +1375,13 @@ class ArrayBase extends Array {
|
|||
|
||||
|
||||
/***/ }),
|
||||
/* 13 */
|
||||
/* 12 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Token", function() { return Token; });
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
|
||||
|
||||
|
||||
class Token extends _base_js__WEBPACK_IMPORTED_MODULE_0__["Base"] {
|
||||
|
@ -1438,14 +1405,16 @@ class Token extends _base_js__WEBPACK_IMPORTED_MODULE_0__["Base"] {
|
|||
|
||||
|
||||
/***/ }),
|
||||
/* 14 */
|
||||
/* 13 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Operation", function() { return Operation; });
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
|
||||
/* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1493,6 +1462,10 @@ class Operation extends _base_js__WEBPACK_IMPORTED_MODULE_0__["Base"] {
|
|||
}
|
||||
|
||||
*validate(defs) {
|
||||
if (!this.name && ["", "static"].includes(this.special)) {
|
||||
const message = `Regular or static operations must have both a return type and an identifier.`;
|
||||
yield Object(_error_js__WEBPACK_IMPORTED_MODULE_2__["validationError"])(this.source, this.tokens.open, this, message);
|
||||
}
|
||||
if (this.idlType) {
|
||||
yield* this.idlType.validate(defs);
|
||||
}
|
||||
|
@ -1504,14 +1477,14 @@ class Operation extends _base_js__WEBPACK_IMPORTED_MODULE_0__["Base"] {
|
|||
|
||||
|
||||
/***/ }),
|
||||
/* 15 */
|
||||
/* 14 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Attribute", function() { return Attribute; });
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
|
||||
|
||||
|
||||
|
||||
|
@ -1570,6 +1543,77 @@ class Attribute extends _base_js__WEBPACK_IMPORTED_MODULE_0__["Base"] {
|
|||
}
|
||||
|
||||
|
||||
/***/ }),
|
||||
/* 15 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Enum", function() { return Enum; });
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
|
||||
/* harmony import */ var _token_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6);
|
||||
|
||||
|
||||
|
||||
|
||||
class EnumValue extends _token_js__WEBPACK_IMPORTED_MODULE_1__["Token"] {
|
||||
/**
|
||||
* @param {import("../tokeniser").Tokeniser} tokeniser
|
||||
*/
|
||||
static parse(tokeniser) {
|
||||
const value = tokeniser.consume("string");
|
||||
if (value) {
|
||||
return new EnumValue({ source: tokeniser.source, tokens: { value } });
|
||||
}
|
||||
}
|
||||
|
||||
get type() {
|
||||
return "enum-value";
|
||||
}
|
||||
get value() {
|
||||
return super.value.slice(1, -1);
|
||||
}
|
||||
}
|
||||
|
||||
class Enum extends _base_js__WEBPACK_IMPORTED_MODULE_2__["Base"] {
|
||||
/**
|
||||
* @param {import("../tokeniser").Tokeniser} tokeniser
|
||||
*/
|
||||
static parse(tokeniser) {
|
||||
const tokens = {};
|
||||
tokens.base = tokeniser.consume("enum");
|
||||
if (!tokens.base) {
|
||||
return;
|
||||
}
|
||||
tokens.name = tokeniser.consume("identifier") || tokeniser.error("No name for enum");
|
||||
const ret = tokeniser.current = new Enum({ source: tokeniser.source, tokens });
|
||||
tokens.open = tokeniser.consume("{") || tokeniser.error("Bodyless enum");
|
||||
ret.values = Object(_helpers_js__WEBPACK_IMPORTED_MODULE_0__["list"])(tokeniser, {
|
||||
parser: EnumValue.parse,
|
||||
allowDangler: true,
|
||||
listName: "enumeration"
|
||||
});
|
||||
if (tokeniser.probe("string")) {
|
||||
tokeniser.error("No comma between enum values");
|
||||
}
|
||||
tokens.close = tokeniser.consume("}") || tokeniser.error("Unexpected value in enum");
|
||||
if (!ret.values.length) {
|
||||
tokeniser.error("No value in enum");
|
||||
}
|
||||
tokens.termination = tokeniser.consume(";") || tokeniser.error("No semicolon after enum");
|
||||
return ret;
|
||||
}
|
||||
|
||||
get type() {
|
||||
return "enum";
|
||||
}
|
||||
get name() {
|
||||
return Object(_helpers_js__WEBPACK_IMPORTED_MODULE_0__["unescape"])(this.tokens.name.value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/***/ }),
|
||||
/* 16 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
@ -1577,8 +1621,8 @@ class Attribute extends _base_js__WEBPACK_IMPORTED_MODULE_0__["Base"] {
|
|||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Includes", function() { return Includes; });
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
|
||||
|
||||
|
||||
|
||||
|
@ -1621,8 +1665,8 @@ class Includes extends _base_js__WEBPACK_IMPORTED_MODULE_0__["Base"] {
|
|||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Typedef", function() { return Typedef; });
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
|
||||
|
||||
|
||||
|
||||
|
@ -1664,8 +1708,8 @@ class Typedef extends _base_js__WEBPACK_IMPORTED_MODULE_0__["Base"] {
|
|||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CallbackFunction", function() { return CallbackFunction; });
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
|
||||
|
||||
|
||||
|
||||
|
@ -1708,13 +1752,15 @@ class CallbackFunction extends _base_js__WEBPACK_IMPORTED_MODULE_0__["Base"] {
|
|||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Interface", function() { return Interface; });
|
||||
/* harmony import */ var _container_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
|
||||
/* harmony import */ var _attribute_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15);
|
||||
/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
|
||||
/* harmony import */ var _attribute_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14);
|
||||
/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
|
||||
/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21);
|
||||
/* harmony import */ var _iterable_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(22);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4);
|
||||
/* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(3);
|
||||
/* harmony import */ var _validators_interface_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(23);
|
||||
/* harmony import */ var _constructor_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(24);
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1747,6 +1793,7 @@ class Interface extends _container_js__WEBPACK_IMPORTED_MODULE_0__["Container"]
|
|||
inheritable: !partial,
|
||||
allowedMembers: [
|
||||
[_constant_js__WEBPACK_IMPORTED_MODULE_3__["Constant"].parse],
|
||||
[_constructor_js__WEBPACK_IMPORTED_MODULE_8__["Constructor"].parse],
|
||||
[static_member],
|
||||
[_helpers_js__WEBPACK_IMPORTED_MODULE_5__["stringifier"]],
|
||||
[_iterable_js__WEBPACK_IMPORTED_MODULE_4__["IterableLike"].parse],
|
||||
|
@ -1772,7 +1819,9 @@ To fix, add, for example, \`[Exposed=Window]\`. Please also consider carefully \
|
|||
if your interface should also be exposed in a Worker scope. Refer to the \
|
||||
[WebIDL spec section on Exposed](https://heycam.github.io/webidl/#Exposed) \
|
||||
for more information.`;
|
||||
yield Object(_error_js__WEBPACK_IMPORTED_MODULE_6__["validationError"])(this.source, this.tokens.name, this, message);
|
||||
yield Object(_error_js__WEBPACK_IMPORTED_MODULE_6__["validationError"])(this.source, this.tokens.name, this, message, {
|
||||
autofix: Object(_helpers_js__WEBPACK_IMPORTED_MODULE_5__["autofixAddExposedWindow"])(this)
|
||||
});
|
||||
}
|
||||
|
||||
yield* super.validate(defs);
|
||||
|
@ -1790,9 +1839,9 @@ for more information.`;
|
|||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Container", function() { return Container; });
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
|
||||
/* harmony import */ var _extended_attributes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
|
||||
/* harmony import */ var _extended_attributes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4);
|
||||
|
||||
|
||||
|
||||
|
@ -1876,9 +1925,9 @@ class Container extends _base_js__WEBPACK_IMPORTED_MODULE_0__["Base"] {
|
|||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Constant", function() { return Constant; });
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
|
||||
/* harmony import */ var _type_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
|
||||
/* harmony import */ var _type_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4);
|
||||
|
||||
|
||||
|
||||
|
@ -1930,8 +1979,8 @@ class Constant extends _base_js__WEBPACK_IMPORTED_MODULE_0__["Base"] {
|
|||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "IterableLike", function() { return IterableLike; });
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
|
||||
|
||||
|
||||
|
||||
|
@ -2033,14 +2082,51 @@ function* checkInterfaceMemberDuplication(defs, i) {
|
|||
/* 24 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Constructor", function() { return Constructor; });
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
|
||||
|
||||
|
||||
|
||||
class Constructor extends _base_js__WEBPACK_IMPORTED_MODULE_0__["Base"] {
|
||||
/**
|
||||
* @param {import("../tokeniser").Tokeniser} tokeniser
|
||||
*/
|
||||
static parse(tokeniser) {
|
||||
const base = tokeniser.consume("constructor");
|
||||
if (!base) {
|
||||
return;
|
||||
}
|
||||
const tokens = { base };
|
||||
tokens.open = tokeniser.consume("(") || tokeniser.error("No argument list in constructor");
|
||||
const args = Object(_helpers_js__WEBPACK_IMPORTED_MODULE_1__["argument_list"])(tokeniser);
|
||||
tokens.close = tokeniser.consume(")") || tokeniser.error("Unterminated constructor");
|
||||
tokens.termination = tokeniser.consume(";") || tokeniser.error("No semicolon after constructor");
|
||||
const ret = new Constructor({ tokens });
|
||||
ret.arguments = args;
|
||||
return ret;
|
||||
}
|
||||
|
||||
get type() {
|
||||
return "constructor";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/***/ }),
|
||||
/* 25 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Mixin", function() { return Mixin; });
|
||||
/* harmony import */ var _container_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
|
||||
/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21);
|
||||
/* harmony import */ var _attribute_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
|
||||
/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(14);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5);
|
||||
/* harmony import */ var _attribute_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
|
||||
/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4);
|
||||
|
||||
|
||||
|
||||
|
@ -2075,14 +2161,14 @@ class Mixin extends _container_js__WEBPACK_IMPORTED_MODULE_0__["Container"] {
|
|||
|
||||
|
||||
/***/ }),
|
||||
/* 25 */
|
||||
/* 26 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Dictionary", function() { return Dictionary; });
|
||||
/* harmony import */ var _container_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
|
||||
/* harmony import */ var _field_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26);
|
||||
/* harmony import */ var _field_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27);
|
||||
|
||||
|
||||
|
||||
|
@ -2112,16 +2198,16 @@ class Dictionary extends _container_js__WEBPACK_IMPORTED_MODULE_0__["Container"]
|
|||
|
||||
|
||||
/***/ }),
|
||||
/* 26 */
|
||||
/* 27 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Field", function() { return Field; });
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
|
||||
/* harmony import */ var _extended_attributes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11);
|
||||
/* harmony import */ var _default_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);
|
||||
/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
|
||||
/* harmony import */ var _extended_attributes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10);
|
||||
/* harmony import */ var _default_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9);
|
||||
|
||||
|
||||
|
||||
|
@ -2161,16 +2247,18 @@ class Field extends _base_js__WEBPACK_IMPORTED_MODULE_0__["Base"] {
|
|||
|
||||
|
||||
/***/ }),
|
||||
/* 27 */
|
||||
/* 28 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Namespace", function() { return Namespace; });
|
||||
/* harmony import */ var _container_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
|
||||
/* harmony import */ var _attribute_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15);
|
||||
/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
|
||||
/* harmony import */ var _attribute_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14);
|
||||
/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
|
||||
/* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
|
||||
/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4);
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -2206,7 +2294,9 @@ To fix, add, for example, [Exposed=Window]. Please also consider carefully \
|
|||
if your namespace should also be exposed in a Worker scope. Refer to the \
|
||||
[WebIDL spec section on Exposed](https://heycam.github.io/webidl/#Exposed) \
|
||||
for more information.`;
|
||||
yield Object(_error_js__WEBPACK_IMPORTED_MODULE_3__["validationError"])(this.source, this.tokens.name, this, message);
|
||||
yield Object(_error_js__WEBPACK_IMPORTED_MODULE_3__["validationError"])(this.source, this.tokens.name, this, message, {
|
||||
autofix: Object(_helpers_js__WEBPACK_IMPORTED_MODULE_4__["autofixAddExposedWindow"])(this)
|
||||
});
|
||||
}
|
||||
yield* super.validate(defs);
|
||||
}
|
||||
|
@ -2214,14 +2304,14 @@ for more information.`;
|
|||
|
||||
|
||||
/***/ }),
|
||||
/* 28 */
|
||||
/* 29 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CallbackInterface", function() { return CallbackInterface; });
|
||||
/* harmony import */ var _container_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
|
||||
/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14);
|
||||
/* harmony import */ var _operation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
|
||||
/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21);
|
||||
|
||||
|
||||
|
@ -2255,7 +2345,7 @@ class CallbackInterface extends _container_js__WEBPACK_IMPORTED_MODULE_0__["Cont
|
|||
|
||||
|
||||
/***/ }),
|
||||
/* 29 */
|
||||
/* 30 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
@ -2274,6 +2364,7 @@ const templates = {
|
|||
reference: noop,
|
||||
type: noop,
|
||||
generic: noop,
|
||||
nameless: noop,
|
||||
inheritance: noop,
|
||||
definition: noop,
|
||||
extendedAttribute: noop,
|
||||
|
@ -2398,7 +2489,7 @@ function write(ast, { templates: ts = templates } = {}) {
|
|||
] : [];
|
||||
return ts.definition(ts.wrap([
|
||||
extended_attributes(it.extAttrs),
|
||||
token(it.tokens.special),
|
||||
it.tokens.name ? token(it.tokens.special) : token(it.tokens.special, ts.nameless, { data: it, parent }),
|
||||
...body,
|
||||
token(it.tokens.termination)
|
||||
]), { data: it, parent });
|
||||
|
@ -2416,6 +2507,17 @@ function write(ast, { templates: ts = templates } = {}) {
|
|||
]), { data: it, parent });
|
||||
}
|
||||
|
||||
function constructor(it, parent) {
|
||||
return ts.definition(ts.wrap([
|
||||
extended_attributes(it.extAttrs),
|
||||
token(it.tokens.base, ts.nameless, { data: it, parent }),
|
||||
token(it.tokens.open),
|
||||
ts.wrap(it.arguments.map(argument)),
|
||||
token(it.tokens.close),
|
||||
token(it.tokens.termination)
|
||||
]), { data: it, parent });
|
||||
}
|
||||
|
||||
function inheritance(inh) {
|
||||
if (!inh.tokens.inheritance) {
|
||||
return "";
|
||||
|
@ -2538,6 +2640,7 @@ function write(ast, { templates: ts = templates } = {}) {
|
|||
namespace: container,
|
||||
operation,
|
||||
attribute,
|
||||
constructor,
|
||||
dictionary: container,
|
||||
field,
|
||||
const: const_,
|
||||
|
@ -2570,7 +2673,7 @@ function write(ast, { templates: ts = templates } = {}) {
|
|||
|
||||
|
||||
/***/ }),
|
||||
/* 30 */
|
||||
/* 31 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:h="http://www.w3.org/1999/xhtml">
|
||||
<title>Autofocus attribute</title>
|
||||
<metadata>
|
||||
<h:link rel="help" href="https://svgwg.org/svg2-draft/struct.html#autofocusattribute"/>
|
||||
</metadata>
|
||||
<h:script src="/resources/testharness.js"/>
|
||||
<h:script src="/resources/testharnessreport.js"/>
|
||||
<h:script src="/html/semantics/forms/autofocus/resources/utils.js"/>
|
||||
<script><![CDATA[
|
||||
const SVG_NS = 'http://www.w3.org/2000/svg';
|
||||
|
||||
promise_test(async t => {
|
||||
let w = window.open('blank.svg');
|
||||
await waitForLoad(w);
|
||||
t.add_cleanup(() => { w.close(); });
|
||||
const svgA = w.document.createElementNS(SVG_NS, 'a');
|
||||
svgA.setAttribute('href', '#');
|
||||
svgA.setAttribute('autofocus', 'autofocus');
|
||||
w.document.documentElement.appendChild(svgA);
|
||||
await waitUntilStableAutofocusState(t);
|
||||
assert_equals(w.document.activeElement, svgA);
|
||||
}, '<a> should support autofocus');
|
||||
|
||||
promise_test(async t => {
|
||||
let w = window.open('blank.svg');
|
||||
await waitForLoad(w);
|
||||
t.add_cleanup(() => { w.close(); });
|
||||
const path = w.document.createElementNS(SVG_NS, 'path');
|
||||
path.setAttribute('d', 'M0,0h8v8z');
|
||||
path.setAttribute('tabindex', '0');
|
||||
path.setAttribute('autofocus', 'autofocus');
|
||||
w.document.documentElement.appendChild(path);
|
||||
await waitUntilStableAutofocusState(t);
|
||||
assert_equals(w.document.activeElement, path);
|
||||
}, 'Renderable element with tabindex should support autofocus');
|
||||
|
||||
promise_test(async t => {
|
||||
let w = window.open('blank.svg');
|
||||
await waitForLoad(w);
|
||||
t.add_cleanup(() => { w.close(); });
|
||||
let element = w.document.createElementNS(SVG_NS, 'metadata');
|
||||
element.setAttribute('tabindex', '0');
|
||||
element.setAttribute('autofocus', 'autofocus');
|
||||
w.document.documentElement.appendChild(element);
|
||||
await waitUntilStableAutofocusState(t);
|
||||
// https://html.spec.whatwg.org/C/#dom-documentorshadowroot-activeelement
|
||||
// 6. If candidate's document element is non-null, then return that document
|
||||
// element.
|
||||
assert_equals(w.document.activeElement.tagName, 'svg');
|
||||
}, 'Never-rendered element with tabindex should not support autofocus');
|
||||
]]></script>
|
||||
</svg>
|
After Width: | Height: | Size: 2.1 KiB |
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg"></svg>
|
After Width: | Height: | Size: 86 B |
|
@ -75,6 +75,19 @@
|
|||
|
||||
task.done();
|
||||
});
|
||||
audit.define('illegal sample-rate', (task, should) => {
|
||||
let node;
|
||||
let options = {buffer: context.createBuffer(1, 1, context.sampleRate / 2)};
|
||||
|
||||
should(
|
||||
() => {
|
||||
node = new ConvolverNode(context, options);
|
||||
},
|
||||
'node1 = new ConvolverNode(c, ' + JSON.stringify(options))
|
||||
.throw(DOMException, 'NotSupportedError');
|
||||
|
||||
task.done();
|
||||
});
|
||||
|
||||
audit.define('construct with options', (task, should) => {
|
||||
let buf = context.createBuffer(1, 1, context.sampleRate);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue