diff options
author | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2018-07-19 21:07:28 -0400 |
---|---|---|
committer | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2018-07-19 22:44:23 -0400 |
commit | 158f7eec0eb23882a3ee56144c2dba24f0a14f72 (patch) | |
tree | 88351345304208969bab3c3a80dadf5028623f1c | |
parent | 908a642063fc5b024b19e732636165c2cb82c00a (diff) | |
download | servo-158f7eec0eb23882a3ee56144c2dba24f0a14f72.tar.gz servo-158f7eec0eb23882a3ee56144c2dba24f0a14f72.zip |
Update web-platform-tests to revision abd18b3e018d25ed668d179c905b7869dca5e239
117 files changed, 2997 insertions, 434 deletions
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 51ada8ced27..b0e14361c0c 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -13273,12 +13273,6 @@ {} ] ], - "payment-request/payment-request-show-method-manual.https.html": [ - [ - "/payment-request/payment-request-show-method-manual.https.html", - {} - ] - ], "payment-request/payment-response/complete-method-manual.https.html": [ [ "/payment-request/payment-response/complete-method-manual.https.html", @@ -18193,12 +18187,36 @@ {} ] ], + "wai-aria/menuitem_expanded_false-manual.html": [ + [ + "/wai-aria/menuitem_expanded_false-manual.html", + {} + ] + ], + "wai-aria/menuitem_expanded_true-manual.html": [ + [ + "/wai-aria/menuitem_expanded_true-manual.html", + {} + ] + ], "wai-aria/menuitem_posinset_and_setsize-manual.html": [ [ "/wai-aria/menuitem_posinset_and_setsize-manual.html", {} ] ], + "wai-aria/menuitemcheckbox_expanded_false-manual.html": [ + [ + "/wai-aria/menuitemcheckbox_expanded_false-manual.html", + {} + ] + ], + "wai-aria/menuitemcheckbox_expanded_true-manual.html": [ + [ + "/wai-aria/menuitemcheckbox_expanded_true-manual.html", + {} + ] + ], "wai-aria/menuitemcheckbox_posinset_and_setsize-manual.html": [ [ "/wai-aria/menuitemcheckbox_posinset_and_setsize-manual.html", @@ -18223,6 +18241,18 @@ {} ] ], + "wai-aria/menuitemradio_expanded_false-manual.html": [ + [ + "/wai-aria/menuitemradio_expanded_false-manual.html", + {} + ] + ], + "wai-aria/menuitemradio_expanded_true-manual.html": [ + [ + "/wai-aria/menuitemradio_expanded_true-manual.html", + {} + ] + ], "wai-aria/menuitemradio_posinset_and_setsize-manual.html": [ [ "/wai-aria/menuitemradio_posinset_and_setsize-manual.html", @@ -112417,6 +112447,18 @@ {} ] ], + "css/css-flexbox/align-items-baseline-overflow-non-visible.html": [ + [ + "/css/css-flexbox/align-items-baseline-overflow-non-visible.html", + [ + [ + "/css/css-flexbox/reference/align-items-baseline-overflow-non-visible-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-flexbox/align-self-001.html": [ [ "/css/css-flexbox/align-self-001.html", @@ -169261,6 +169303,18 @@ {} ] ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-safe-overflow-position-001.html": [ + [ + "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-safe-overflow-position-001.html", + [ + [ + "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-safe-overflow-position-001-ref.html", + "==" + ] + ], + {} + ] + ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-single-line-clamp-1.html": [ [ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-single-line-clamp-1.html", @@ -191441,6 +191495,11 @@ {} ] ], + "animation-worklet/META.yml": [ + [ + {} + ] + ], "annotation-model/.editorconfig": [ [ {} @@ -243306,6 +243365,11 @@ {} ] ], + "css/css-flexbox/reference/align-items-baseline-overflow-non-visible-ref.html": [ + [ + {} + ] + ], "css/css-flexbox/reference/css-box-justify-content-ref.html": [ [ {} @@ -270126,6 +270190,11 @@ {} ] ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-safe-overflow-position-001-ref.html": [ + [ + {} + ] + ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-single-line-clamp-1-ref.html": [ [ {} @@ -287481,6 +287550,11 @@ {} ] ], + "interfaces/animation-worklet.idl": [ + [ + {} + ] + ], "interfaces/appmanifest.idl": [ [ {} @@ -287766,6 +287840,11 @@ {} ] ], + "interfaces/paint-timing.idl": [ + [ + {} + ] + ], "interfaces/payment-handler.idl": [ [ {} @@ -310691,6 +310770,16 @@ {} ] ], + "animation-worklet/interfaces.any.js": [ + [ + "/animation-worklet/interfaces.any.html", + {} + ], + [ + "/animation-worklet/interfaces.any.worker.html", + {} + ] + ], "apng/supported-in-source-type.html": [ [ "/apng/supported-in-source-type.html", @@ -312411,6 +312500,16 @@ {} ] ], + "console/idlharness.any.js": [ + [ + "/console/idlharness.any.html", + {} + ], + [ + "/console/idlharness.any.worker.html", + {} + ] + ], "content-security-policy/base-uri/base-uri-allow.sub.html": [ [ "/content-security-policy/base-uri/base-uri-allow.sub.html", @@ -318969,6 +319068,24 @@ {} ] ], + "css/css-logical/animation-001.html": [ + [ + "/css/css-logical/animation-001.html", + {} + ] + ], + "css/css-logical/animation-002.html": [ + [ + "/css/css-logical/animation-002.html", + {} + ] + ], + "css/css-logical/animation-003.tenative.html": [ + [ + "/css/css-logical/animation-003.tenative.html", + {} + ] + ], "css/css-logical/logical-box-border-color.html": [ [ "/css/css-logical/logical-box-border-color.html", @@ -325719,9 +325836,15 @@ {} ] ], - "css/cssom/cssstyledeclaration-setter-order.html": [ + "css/cssom/cssstyledeclaration-setter-declarations.html": [ [ - "/css/cssom/cssstyledeclaration-setter-order.html", + "/css/cssom/cssstyledeclaration-setter-declarations.html", + {} + ] + ], + "css/cssom/cssstyledeclaration-setter-logical.html": [ + [ + "/css/cssom/cssstyledeclaration-setter-logical.html", {} ] ], @@ -365391,6 +365514,12 @@ {} ] ], + "paint-timing/idlharness.window.js": [ + [ + "/paint-timing/idlharness.window.html", + {} + ] + ], "paint-timing/paint-visited.html": [ [ "/paint-timing/paint-visited.html", @@ -365700,7 +365829,9 @@ "payment-request/payment-request-show-method.https.html": [ [ "/payment-request/payment-request-show-method.https.html", - {} + { + "testdriver": true + } ] ], "payment-request/rejects_if_not_active.https.html": [ @@ -379785,24 +379916,54 @@ {} ] ], + "trusted-types/HTMLAnchorElement-href.tentative.html": [ + [ + "/trusted-types/HTMLAnchorElement-href.tentative.html", + {} + ] + ], + "trusted-types/HTMLAreaElement-href.tentative.html": [ + [ + "/trusted-types/HTMLAreaElement-href.tentative.html", + {} + ] + ], "trusted-types/HTMLBaseElement-href.tentative.html": [ [ "/trusted-types/HTMLBaseElement-href.tentative.html", {} ] ], + "trusted-types/HTMLIFrameElement-src.tentative.html": [ + [ + "/trusted-types/HTMLIFrameElement-src.tentative.html", + {} + ] + ], "trusted-types/HTMLImageElement-src.tentative.html": [ [ "/trusted-types/HTMLImageElement-src.tentative.html", {} ] ], + "trusted-types/HTMLLinkElement-href.tentative.html": [ + [ + "/trusted-types/HTMLLinkElement-href.tentative.html", + {} + ] + ], "trusted-types/HTMLMediaElement-src.tentative.html": [ [ "/trusted-types/HTMLMediaElement-src.tentative.html", {} ] ], + "trusted-types/HTMLObjectElement.tentative.html": [ + [ + "/trusted-types/HTMLObjectElement.tentative.html", + {} + ] + ], "trusted-types/HTMLSourceElement-src.tentative.html": [ [ "/trusted-types/HTMLSourceElement-src.tentative.html", @@ -379827,24 +379988,54 @@ {} ] ], + "trusted-types/block-string-assignment-to-HTMLAnchorElement-href.tentative.html": [ + [ + "/trusted-types/block-string-assignment-to-HTMLAnchorElement-href.tentative.html", + {} + ] + ], + "trusted-types/block-string-assignment-to-HTMLAreaElement-href.tentative.html": [ + [ + "/trusted-types/block-string-assignment-to-HTMLAreaElement-href.tentative.html", + {} + ] + ], "trusted-types/block-string-assignment-to-HTMLBaseElement-href.tentative.html": [ [ "/trusted-types/block-string-assignment-to-HTMLBaseElement-href.tentative.html", {} ] ], + "trusted-types/block-string-assignment-to-HTMLIFrameElement-src.tentative.html": [ + [ + "/trusted-types/block-string-assignment-to-HTMLIFrameElement-src.tentative.html", + {} + ] + ], "trusted-types/block-string-assignment-to-HTMLImageElement-src.tentative.html": [ [ "/trusted-types/block-string-assignment-to-HTMLImageElement-src.tentative.html", {} ] ], + "trusted-types/block-string-assignment-to-HTMLLinkElement-href.tentative.html": [ + [ + "/trusted-types/block-string-assignment-to-HTMLLinkElement-href.tentative.html", + {} + ] + ], "trusted-types/block-string-assignment-to-HTMLMediaElement-src.tentative.html": [ [ "/trusted-types/block-string-assignment-to-HTMLMediaElement-src.tentative.html", {} ] ], + "trusted-types/block-string-assignment-to-HTMLObjectElement.tentative.html": [ + [ + "/trusted-types/block-string-assignment-to-HTMLObjectElement.tentative.html", + {} + ] + ], "trusted-types/block-string-assignment-to-HTMLSourceElement-src.tentative.html": [ [ "/trusted-types/block-string-assignment-to-HTMLSourceElement-src.tentative.html", @@ -379863,12 +380054,24 @@ {} ] ], + "trusted-types/block-string-assignment-to-frame-src.tentative.html": [ + [ + "/trusted-types/block-string-assignment-to-frame-src.tentative.html", + {} + ] + ], "trusted-types/block-string-assignment-to-innerHTML.tentative.html": [ [ "/trusted-types/block-string-assignment-to-innerHTML.tentative.html", {} ] ], + "trusted-types/block-string-assignment-to-input-src.tentative.html": [ + [ + "/trusted-types/block-string-assignment-to-input-src.tentative.html", + {} + ] + ], "trusted-types/block-string-assignment-to-insertAdjacentHTML.tentative.html": [ [ "/trusted-types/block-string-assignment-to-insertAdjacentHTML.tentative.html", @@ -379905,6 +380108,18 @@ {} ] ], + "trusted-types/block-string-assignment-to-track-src.tentative.html": [ + [ + "/trusted-types/block-string-assignment-to-track-src.tentative.html", + {} + ] + ], + "trusted-types/block-string-assignment-to-window-open.tentative.html": [ + [ + "/trusted-types/block-string-assignment-to-window-open.tentative.html", + {} + ] + ], "trusted-types/createContextualFragment.tentative.html": [ [ "/trusted-types/createContextualFragment.tentative.html", @@ -379923,12 +380138,24 @@ {} ] ], + "trusted-types/frame-src.tentative.html": [ + [ + "/trusted-types/frame-src.tentative.html", + {} + ] + ], "trusted-types/innerHTML.tentative.html": [ [ "/trusted-types/innerHTML.tentative.html", {} ] ], + "trusted-types/input-src.tentative.html": [ + [ + "/trusted-types/input-src.tentative.html", + {} + ] + ], "trusted-types/insertAdjacentHTML.tentative.html": [ [ "/trusted-types/insertAdjacentHTML.tentative.html", @@ -379977,6 +380204,18 @@ {} ] ], + "trusted-types/track-src.tentative.html": [ + [ + "/trusted-types/track-src.tentative.html", + {} + ] + ], + "trusted-types/window-open.tentative.html": [ + [ + "/trusted-types/window-open.tentative.html", + {} + ] + ], "uievents/constructors/inputevent-constructor.html": [ [ "/uievents/constructors/inputevent-constructor.html", @@ -382351,13 +382590,9 @@ {} ] ], - "webauthn/idlharness.https.any.js": [ + "webauthn/idlharness.https.window.js": [ [ - "/webauthn/idlharness.https.any.html", - {} - ], - [ - "/webauthn/idlharness.https.any.worker.html", + "/webauthn/idlharness.https.window.html", {} ] ], @@ -385909,6 +386144,20 @@ {} ] ], + "webusb/insecure-context.any.js": [ + [ + "/webusb/insecure-context.any.html", + {} + ], + [ + "/webusb/insecure-context.any.sharedworker.html", + {} + ], + [ + "/webusb/insecure-context.any.worker.html", + {} + ] + ], "webusb/usb-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ [ "/webusb/usb-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html", @@ -416884,6 +417133,14 @@ "0b3417b7e88f77777d124793e2179eac0e5e5b4d", "testharness" ], + "animation-worklet/META.yml": [ + "b5e944a30de69a506b5151ac3ba86b9fb8c18dae", + "support" + ], + "animation-worklet/interfaces.any.js": [ + "8635512a97334fda263fa76385d68522d0162a07", + "testharness" + ], "annotation-model/.editorconfig": [ "18e9e31b4beb20bcfa5ad281584d816204a3f531", "support" @@ -437996,6 +438253,10 @@ "8b2d2e8d6675efacf99f49fec95c8be52f38407e", "manual" ], + "console/idlharness.any.js": [ + "bb3f2248963773fb214a050d7f64c06c631ad8d4", + "testharness" + ], "content-security-policy/META.yml": [ "8b13100d5ecf0c606f74c249a18bf031ba77094d", "support" @@ -439797,7 +440058,7 @@ "testharness" ], "content-security-policy/securitypolicyviolation/img-src-redirect-upgrade-reporting.https.html": [ - "e338e94ea726419db64ed5b98c95b862c394409e", + "f6623c80b2b4be3fd9dd0f5dc0a6417652f1b797", "testharness" ], "content-security-policy/securitypolicyviolation/img-src-redirect-upgrade-reporting.https.html.headers": [ @@ -439849,7 +440110,7 @@ "testharness" ], "content-security-policy/securitypolicyviolation/support/inside-worker.sub.js": [ - "f425a7ae6c167bfe9857f08f460897e16bf6ca95", + "d94662579190653a3b3e9d076b79d7b0f01f2dc7", "support" ], "content-security-policy/securitypolicyviolation/support/inside-worker.sub.js.headers": [ @@ -441305,7 +441566,7 @@ "testharness" ], "core-aam/META.yml": [ - "11497389c130feadc4a1065ce683a3c5fc935001", + "d90f78741e6c0118b06b1552e73e51e03388dacb", "support" ], "core-aam/README.md": [ @@ -509000,6 +509261,10 @@ "b309758484c1b6ec774f47166f97cfbd9258e687", "reftest" ], + "css/css-flexbox/align-items-baseline-overflow-non-visible.html": [ + "073637c5319713eff6c9faa00ee8e9f7d36a6322", + "reftest" + ], "css/css-flexbox/align-self-001.html": [ "74fad615303053096f9af7ec697f4584dee9900e", "reftest" @@ -511604,6 +511869,10 @@ "5fe3c5719f13ddfbba0177bef43d8216129ca763", "support" ], + "css/css-flexbox/reference/align-items-baseline-overflow-non-visible-ref.html": [ + "7d8c5555baceb9df9b0d3067bbf027e83fb5ea37", + "support" + ], "css/css-flexbox/reference/css-box-justify-content-ref.html": [ "98639f2d30602f31d472feb5533288c581cdc8c0", "support" @@ -522640,6 +522909,18 @@ "a76d2c1f93706928ed40b73b3d3147e83900f998", "support" ], + "css/css-logical/animation-001.html": [ + "361b8af532357e065f01504b9553d5f70cee38ae", + "testharness" + ], + "css/css-logical/animation-002.html": [ + "205a6330ecf0bf69dc3fca0b4f4afa9850e3a782", + "testharness" + ], + "css/css-logical/animation-003.tenative.html": [ + "bdb7e952eb7fecf402f64129a00b511d89470195", + "testharness" + ], "css/css-logical/cascading-001-ref.html": [ "b95cd62ce3592f653aaa54de0dbc27e16618064b", "support" @@ -525929,11 +526210,11 @@ "reftest" ], "css/css-pseudo/first-letter-opacity-float-001-ref.html": [ - "df71597f8e4bbac13d32504c1ac38f585739b3c7", + "0062e047958a7a89a90187061c3d9e407207c386", "support" ], "css/css-pseudo/first-letter-opacity-float-001.html": [ - "9ba635e13bc8bc7ce0099183ab9c053539569a67", + "bb4ac268aee454d512450ef580b422ac0948aeff", "reftest" ], "css/css-pseudo/first-letter-property-whitelist.html": [ @@ -552929,7 +553210,7 @@ "testharness" ], "css/cssom/cssstyledeclaration-mutationrecord-001.html": [ - "5d455757e4c80b4781ea4263fa78bced1d6b8632", + "0ed8cb2c41f371fdb509731f2ad1cf11e047d46f", "testharness" ], "css/cssom/cssstyledeclaration-mutationrecord-002.html": [ @@ -552944,8 +553225,12 @@ "958b71b8f1c58a809590459e6f085f3e1217e9c7", "testharness" ], - "css/cssom/cssstyledeclaration-setter-order.html": [ - "3e0e768c466011bb3d91b3f0eff55e029a2aec0f", + "css/cssom/cssstyledeclaration-setter-declarations.html": [ + "e530f6b573bfb9774dd732f7289156117fc4bd94", + "testharness" + ], + "css/cssom/cssstyledeclaration-setter-logical.html": [ + "c454a34b964e2aa05790831cc2de20e169162dd5", "testharness" ], "css/cssom/escape.html": [ @@ -559656,6 +559941,14 @@ "c50a2e8a9af659d0c537a0a09bec89f7446d6f39", "reftest" ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-safe-overflow-position-001-ref.html": [ + "97eab29e766b3897c462a551b3a242bd482516fb", + "support" + ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-safe-overflow-position-001.html": [ + "84063c7a5ac9b9aef46fcf5e2f3f268ed2dfb099", + "reftest" + ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-single-line-clamp-1-ref.html": [ "262d5b4e48431a1bd92f396f825e20868054fe08", "support" @@ -559901,7 +560194,7 @@ "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list": [ - "3e0f7e9939ebe4d6e646c33bb1d9d113945bff7e", + "26501bc63fb806c784764f51d0cda2436a8922cd", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/support/Ahem.ttf": [ @@ -562741,7 +563034,7 @@ "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/sync-tests.sh": [ - "100b066f9c314bf281db3dba3684abe72fd169e2", + "4a7fce790aa95c957094e5fe91564942903401b1", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/text-decor-3/reftest.list": [ @@ -591708,6 +592001,10 @@ "623852530c2645b51347c82cea8fa72c0cb22f18", "support" ], + "interfaces/animation-worklet.idl": [ + "df2684b08687cd7cbc9f1a3754595041e0fa4dd8", + "support" + ], "interfaces/appmanifest.idl": [ "dc57a1479ca3010f6fa86ef46274a452d339d1b5", "support" @@ -591741,7 +592038,7 @@ "support" ], "interfaces/console.idl": [ - "43ced34008dc73d05c79140d8dc33c60e2d9df3a", + "7f3bdda49f7c4f0b4ae5a87e4a05463da05f0554", "support" ], "interfaces/cookie-store.idl": [ @@ -591936,6 +592233,10 @@ "6551f944a2611e10ffebb80dfa217b392bdce26a", "support" ], + "interfaces/paint-timing.idl": [ + "f9938dd1c68a34076bf137f6f7ef52e04f1df1f7", + "support" + ], "interfaces/payment-handler.idl": [ "c47c18345c06d87b7b9fe318b22d51413603f626", "support" @@ -602304,6 +602605,10 @@ "826a97fb19bfcad80b1957251c3d57e995e78990", "testharness" ], + "paint-timing/idlharness.window.js": [ + "947b24f0a13bbcfb7a6d6acea919a58a91b644be", + "testharness" + ], "paint-timing/paint-visited.html": [ "58554c3e238bf6d598817e425c609d44e69438d2", "testharness" @@ -602624,16 +602929,12 @@ "27ecc7e10e50bf2df07f84a15972c3b913ebf32f", "testharness" ], - "payment-request/payment-request-show-method-manual.https.html": [ - "d815dbb240dd8b4e03bd798c72d83f4c57b2cf12", - "manual" - ], "payment-request/payment-request-show-method.https.html": [ - "d11b121987240d9d2cb4a5f3f6814f83d45f52e6", + "5d3272b142ce55347400f8890cf406dd77804654", "testharness" ], "payment-request/payment-response/complete-method-manual.https.html": [ - "366751b4fed2b18c08ce4daa7f77e4d557af5039", + "218d966b1dbf064e56010101e71fc4489c34cb45", "manual" ], "payment-request/payment-response/helpers.js": [ @@ -620572,20 +620873,40 @@ "95e12b63536c98404993ddf9b6b90e248f56db31", "testharness" ], + "trusted-types/HTMLAnchorElement-href.tentative.html": [ + "934ba8eeb19d9c82239d77dc10d59a5e003d5b3f", + "testharness" + ], + "trusted-types/HTMLAreaElement-href.tentative.html": [ + "1b0ffa9dfc4295fadda7b868bd0cc92e78392923", + "testharness" + ], "trusted-types/HTMLBaseElement-href.tentative.html": [ "bdc6593b4490bd0a1b22ef423c7fc95468acd7e5", "testharness" ], + "trusted-types/HTMLIFrameElement-src.tentative.html": [ + "155b17369ccd00fb16f44a74ffb5f727ae789143", + "testharness" + ], "trusted-types/HTMLImageElement-src.tentative.html": [ - "1ac2d898da5cb684f642250760dce70b0e130489", + "69ff5aae0ee5d8d5776450ec09e39cdcb912c374", + "testharness" + ], + "trusted-types/HTMLLinkElement-href.tentative.html": [ + "f545330d06310062fba66359f0575b5739fbeb79", "testharness" ], "trusted-types/HTMLMediaElement-src.tentative.html": [ - "dc2d8beec67583a7821d445c0273be1c5754c33d", + "c24c19db7ed389820a5f6680597e6e7c76683f7b", + "testharness" + ], + "trusted-types/HTMLObjectElement.tentative.html": [ + "e71b7ae180bc3c8b199657848c2c908ba34448c4", "testharness" ], "trusted-types/HTMLSourceElement-src.tentative.html": [ - "bc816aea73f1d1eaf7fbd7516360430483608fee", + "872f3b4930d931d56069adfd97afdb4eef5fb978", "testharness" ], "trusted-types/META.yml": [ @@ -620604,20 +620925,40 @@ "2543ae30982c5d979502278f9edcd88d03090eba", "testharness" ], + "trusted-types/block-string-assignment-to-HTMLAnchorElement-href.tentative.html": [ + "be3b9f7c6088129389f27046de8e645786c61191", + "testharness" + ], + "trusted-types/block-string-assignment-to-HTMLAreaElement-href.tentative.html": [ + "e5f395c705a0604caa4a57b2fdc5d82f0e5dc96a", + "testharness" + ], "trusted-types/block-string-assignment-to-HTMLBaseElement-href.tentative.html": [ "8f09389fb792f0fb24afd34035fa9cf055c05be6", "testharness" ], + "trusted-types/block-string-assignment-to-HTMLIFrameElement-src.tentative.html": [ + "a1f0a7d29d75847c2ee0343ded7b58faacb9c844", + "testharness" + ], "trusted-types/block-string-assignment-to-HTMLImageElement-src.tentative.html": [ - "29af914e035e196635be0568d8536f037c179c28", + "3f50eeada881f742a15be93140f6d274251290d4", + "testharness" + ], + "trusted-types/block-string-assignment-to-HTMLLinkElement-href.tentative.html": [ + "c702f83e6e4ccd79fcc2795cce611cc5c3ba39a9", "testharness" ], "trusted-types/block-string-assignment-to-HTMLMediaElement-src.tentative.html": [ - "9bb4f5866cff0c34d4d11a274008f322fa943920", + "4302f83ec84a7b505985cb2756ce75bf4150d600", + "testharness" + ], + "trusted-types/block-string-assignment-to-HTMLObjectElement.tentative.html": [ + "a6ef276e5e931578b9f898dcf335eecfb87756c9", "testharness" ], "trusted-types/block-string-assignment-to-HTMLSourceElement-src.tentative.html": [ - "1a403b7f4d9a0614e3fb7f41b95a0cf1e5fbb3ff", + "c3209381cb9dfafb16b2421b7536b225c3efd0a4", "testharness" ], "trusted-types/block-string-assignment-to-createContextualFragment.tentative.html": [ @@ -620625,13 +620966,21 @@ "testharness" ], "trusted-types/block-string-assignment-to-embed-src.tentative.html": [ - "1e598f550c120e3f1ae24dd36111da7d8863c7fd", + "67f647d655ac8c6716270ae1929f8fdb8919d8ed", + "testharness" + ], + "trusted-types/block-string-assignment-to-frame-src.tentative.html": [ + "483c47f008a2749968ece225c706ea4e3a6bbd72", "testharness" ], "trusted-types/block-string-assignment-to-innerHTML.tentative.html": [ "ddbdee0f12a482599ec5913f78a527127a2aeb16", "testharness" ], + "trusted-types/block-string-assignment-to-input-src.tentative.html": [ + "f22882f4e7db215b95dd9eaa1fc4f6cad5c99211", + "testharness" + ], "trusted-types/block-string-assignment-to-insertAdjacentHTML.tentative.html": [ "3c43309acf17f8f2efe37113c662ef97d07aa0de", "testharness" @@ -620656,6 +621005,14 @@ "da38712c6e43d1e6fe5892a5339a45c4bf438c7e", "testharness" ], + "trusted-types/block-string-assignment-to-track-src.tentative.html": [ + "7d35a420ffa057e353ba19de79c0fc59b312e32b", + "testharness" + ], + "trusted-types/block-string-assignment-to-window-open.tentative.html": [ + "210a8b4968f4976dca5316876228debbc3d9ddfa", + "testharness" + ], "trusted-types/createContextualFragment.tentative.html": [ "e98f5e7fa6feeb5000a6310377ea82041c87e27d", "testharness" @@ -620665,13 +621022,21 @@ "testharness" ], "trusted-types/embed-src.tentative.html": [ - "402c569b64f260a4e0c4121a0eee76c59ed53737", + "0230cba4a277809feaedecd0ac17bb6bd6b99797", + "testharness" + ], + "trusted-types/frame-src.tentative.html": [ + "ffbdebbc102c5cfa442a86457c666725dc6315b6", "testharness" ], "trusted-types/innerHTML.tentative.html": [ "6c2492b545f0989ba74772ff8e0f3922f6ba70da", "testharness" ], + "trusted-types/input-src.tentative.html": [ + "a52f848180ff8c9d6e44c24a61cfca2da0bef177", + "testharness" + ], "trusted-types/insertAdjacentHTML.tentative.html": [ "fd95e2fa76d567311b8875bb7481d6345e5423c2", "testharness" @@ -620708,6 +621073,14 @@ "6162bad41b15d0ae0be727b5d960bb538d430fe2", "support" ], + "trusted-types/track-src.tentative.html": [ + "162d357ab7f87a28e81da9d1e686eee038e268c5", + "testharness" + ], + "trusted-types/window-open.tentative.html": [ + "bbdc214490d471285f9b086cd0b98eb8a765691a", + "testharness" + ], "uievents/META.yml": [ "a6706289064c1bbabcfab6540831084fc39fb94a", "support" @@ -621637,7 +622010,7 @@ "support" ], "wai-aria/META.yml": [ - "44f6a127f3f7740ca67ce4c3039fd19916060fa3", + "13d60612cf541480bc13bab6958f1fb50f429bdb", "support" ], "wai-aria/README.md": [ @@ -622148,10 +622521,26 @@ "605e89402a28bfe3e52c1dc02d32f0f242a89b24", "manual" ], + "wai-aria/menuitem_expanded_false-manual.html": [ + "9f8af3b6f176c86bdaa013818962e8aecf81d599", + "manual" + ], + "wai-aria/menuitem_expanded_true-manual.html": [ + "84e6538ee987cadc0afbc38ee41c989b2333f1e1", + "manual" + ], "wai-aria/menuitem_posinset_and_setsize-manual.html": [ "9f66c7473f487001c4db836db170b7cff3e1ab12", "manual" ], + "wai-aria/menuitemcheckbox_expanded_false-manual.html": [ + "d43eadc9a1f52ac21853f0f7edea2d58574e0efc", + "manual" + ], + "wai-aria/menuitemcheckbox_expanded_true-manual.html": [ + "b6a8400d4039741d8bfc090bf57f8e28901f7703", + "manual" + ], "wai-aria/menuitemcheckbox_posinset_and_setsize-manual.html": [ "7cdfd2b970d2bd1fc114d832c4d0c0711073ec45", "manual" @@ -622168,6 +622557,14 @@ "5174a8db9b91b94b0496410645b0df56b1071f48", "manual" ], + "wai-aria/menuitemradio_expanded_false-manual.html": [ + "9764bca65de0d6c5a0f03d435054864cb825e694", + "manual" + ], + "wai-aria/menuitemradio_expanded_true-manual.html": [ + "aa85d0a37f1c865a9b7217ac9a37bfd70be90cda", + "manual" + ], "wai-aria/menuitemradio_posinset_and_setsize-manual.html": [ "0a96f2ef994e3c6428c7dbbcedd48aca5c78370d", "manual" @@ -623341,7 +623738,7 @@ "support" ], "webaudio/resources/audionodeoptions.js": [ - "d7712311bddd23e171e7e1f024aec0a565b08a13", + "7ebfb95e0173d463e44d735250773c258d247be1", "support" ], "webaudio/resources/audioparam-testing.js": [ @@ -623353,7 +623750,7 @@ "support" ], "webaudio/resources/audit.js": [ - "eb55fd24237ac7ea4a69c109202e27d6ccd82f80", + "4c1c99952e8fb11586e728ad143c1ecc0e01b834", "support" ], "webaudio/resources/biquad-filters.js": [ @@ -623405,7 +623802,7 @@ "support" ], "webaudio/resources/start-stop-exceptions.js": [ - "70e0f890a721786f8afa4cd032e75ef85b5fc6bb", + "7861b1f78d34c75bc26f9e84cb366a245e9b1c02", "support" ], "webaudio/resources/stereopanner-testing.js": [ @@ -623457,7 +623854,7 @@ "support" ], "webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html": [ - "b9edb1bd4139c0a045936942d35ac8c763460f5b", + "25cced6f02069a5729f8473290e64efb96a913dd", "testharness" ], "webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-getChannelData.html": [ @@ -623469,7 +623866,7 @@ "testharness" ], "webaudio/the-audio-api/the-audiobuffer-interface/ctor-audiobuffer.html": [ - "34d9e7ccb333ce23c838126a4e84918321292d33", + "a46421e357516c255c7cd77a7605f9163b2e64ae", "testharness" ], "webaudio/the-audio-api/the-audiobuffersourcenode-interface/.gitkeep": [ @@ -623477,11 +623874,11 @@ "support" ], "webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-basic.html": [ - "79d7953fd8bf9fe307d071ee32f8a41851ae7462", + "c13da8b93e6c4f1870bccfc8be1cecebc7873bf0", "testharness" ], "webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-channels.html": [ - "07642a64398f3b18017608cde7f90cacb277cc9a", + "74d3c0c3b6f209da708547fdead9c50989871174", "testharness" ], "webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-ended.html": [ @@ -623549,7 +623946,7 @@ "testharness" ], "webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html": [ - "21ea30d8fa92e908da66e79fd127e8fa0203a4c5", + "59c3c16b779b39697f911827e2d0c181b35e6649", "testharness" ], "webaudio/the-audio-api/the-audiodestinationnode-interface/.gitkeep": [ @@ -623589,7 +623986,7 @@ "testharness" ], "webaudio/the-audio-api/the-audionode-interface/audionode.html": [ - "0da532bb8f2505949062709d618da73441968c4d", + "e104fc3e8416ca4f9c94932d8de6d57a47d29b61", "testharness" ], "webaudio/the-audio-api/the-audionode-interface/channel-mode-interp-basic.html": [ @@ -623605,7 +624002,7 @@ "testharness" ], "webaudio/the-audio-api/the-audioparam-interface/audioparam-exceptional-values.html": [ - "db9fce12e15e0a640f13180e245488c6fab911f4", + "a64ffc5de00f16306fb080a5f4638f12a8664556", "testharness" ], "webaudio/the-audio-api/the-audioparam-interface/audioparam-exponentialRampToValueAtTime.html": [ @@ -623621,7 +624018,7 @@ "testharness" ], "webaudio/the-audio-api/the-audioparam-interface/audioparam-method-chaining.html": [ - "5b008e87cad5952ce8bc4ce5e0501decb51ceaeb", + "ecaff002b8e3f8e0b187b73660e6d9a4c304ec34", "testharness" ], "webaudio/the-audio-api/the-audioparam-interface/audioparam-setTargetAtTime.html": [ @@ -623633,7 +624030,7 @@ "testharness" ], "webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueCurve-exceptions.html": [ - "297e745cd05bedd8d8069136b08cb583f20b474e", + "a1bcf8b0209fb925a882f0ed0ffc33665cee618d", "testharness" ], "webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueCurveAtTime.html": [ @@ -623761,7 +624158,7 @@ "testharness" ], "webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-constructor-options.https.html": [ - "99284ab790c09dd7a23a6fa5022e8b08b9e3947d", + "70dab3e98745c72b6b9a31872c4d7f49a9f67849", "testharness" ], "webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-disconnected-input.https.html": [ @@ -623837,7 +624234,7 @@ "testharness" ], "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-basic.html": [ - "3675c5430229774a8079eae866a355ca0793103b", + "c74c95e3b950d1c7b73eae3eb4e4bcb7e053ba66", "testharness" ], "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse.html": [ @@ -624001,7 +624398,7 @@ "testharness" ], "webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelaylimit.html": [ - "2effacd5886d0af8c615f294fcd50dc4df8940f3", + "890f1d859c037ea3efa939375d2891bcb3dd45e1", "testharness" ], "webaudio/the-audio-api/the-delaynode-interface/delaynode-scheduling.html": [ @@ -624021,7 +624418,7 @@ "support" ], "webaudio/the-audio-api/the-dynamicscompressornode-interface/ctor-dynamicscompressor.html": [ - "6338104e8199673ff7de6f41d310b79a2ee51f04", + "247c663144b5c46ac9d3e65f894e7a91a5d9f246", "testharness" ], "webaudio/the-audio-api/the-dynamicscompressornode-interface/dynamicscompressor-basic.html": [ @@ -624057,11 +624454,11 @@ "testharness" ], "webaudio/the-audio-api/the-iirfilternode-interface/ctor-iirfilter.html": [ - "3627d5b4a447a62de6c6a6f10556fa9f9dec1700", + "ce706e265d7bb218a3ea546914a801859bdd2a3b", "testharness" ], "webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-basic.html": [ - "176168861bc667b2b05312dbae48f76f7f90d791", + "5f0cffb3c5931d96cf060f639762c9dcee59ac77", "testharness" ], "webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-getFrequencyResponse.html": [ @@ -624097,7 +624494,7 @@ "support" ], "webaudio/the-audio-api/the-offlineaudiocontext-interface/ctor-offlineaudiocontext.html": [ - "4264798e9e64d30c72f9f0577a9648efa2d0a50a", + "136ab775c271251038743b99dc3a52ea78cf8213", "testharness" ], "webaudio/the-audio-api/the-offlineaudiocontext-interface/current-time-block-size.html": [ @@ -624117,7 +624514,7 @@ "support" ], "webaudio/the-audio-api/the-pannernode-interface/ctor-panner.html": [ - "2b59d21a54b2216c1171a6ba2c7809291955a8af", + "365616f2f9f9666504048d991ff324bfd28c0076", "testharness" ], "webaudio/the-audio-api/the-pannernode-interface/distance-exponential.html": [ @@ -624177,7 +624574,7 @@ "support" ], "webaudio/the-audio-api/the-stereopanner-interface/ctor-stereopanner.html": [ - "1908ffc477d8c16b81ab371f5b9dbca46cc16a83", + "3452e6e613e694a9f4237757b54ac4c7f9e78973", "testharness" ], "webaudio/the-audio-api/the-stereopanner-interface/no-dezippering.html": [ @@ -624292,7 +624689,7 @@ "8c7ee975d637ce8cf63c4bb870baf5f9efacccd7", "support" ], - "webauthn/idlharness.https.any.js": [ + "webauthn/idlharness.https.window.js": [ "f88605935bf09559cd2324c63a1b410cdfd9ce0e", "testharness" ], @@ -625697,7 +626094,7 @@ "testharness" ], "webrtc/RTCRtpCapabilities-helper.js": [ - "22881ddd3cda1a64ff22474562de1568522e9745", + "408255a07010738bbb7281dd9f550b125b60beea", "support" ], "webrtc/RTCRtpParameters-codecs.html": [ @@ -625729,7 +626126,7 @@ "testharness" ], "webrtc/RTCRtpReceiver-getCapabilities.html": [ - "9eef967677aa2f0880f5114e7831437f931f2256", + "521a02e084a5632408707e6070b1d6faa3275031", "testharness" ], "webrtc/RTCRtpReceiver-getContributingSources.https.html": [ @@ -625749,7 +626146,7 @@ "testharness" ], "webrtc/RTCRtpSender-getCapabilities.html": [ - "27f083617973770f0d42efb93813f0112fc68ad2", + "44efc13fc95ca77248672adbfc29e6cb2ef4e35a", "testharness" ], "webrtc/RTCRtpSender-getStats.https.html": [ @@ -627096,6 +627493,10 @@ "0ee7b08945b6064a6e760fd430a0c424ec93f91d", "testharness" ], + "webusb/insecure-context.any.js": [ + "a5ba2d24e4f588f5b85ded64e80134355b787b01", + "testharness" + ], "webusb/resources/fake-devices.js": [ "2cfce7b35b9441529946c4bcea9427e261808c36", "support" @@ -631577,7 +631978,7 @@ "support" ], "worklets/resources/worklet-test-utils.js": [ - "2984dfb09c88d7a1831a60d62c64c9b2ec2f6673", + "9780327cac557554ac8f4568dcbf2ec1145229ef", "support" ], "x-frame-options/META.yml": [ diff --git a/tests/wpt/metadata/css/CSS2/floats/floats-in-table-caption-001.html.ini b/tests/wpt/metadata/css/CSS2/floats/floats-in-table-caption-001.html.ini new file mode 100644 index 00000000000..86715ffc9c2 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/floats-in-table-caption-001.html.ini @@ -0,0 +1,2 @@ +[floats-in-table-caption-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/visudet/line-height-204.html.ini b/tests/wpt/metadata/css/CSS2/visudet/line-height-204.html.ini deleted file mode 100644 index 3d28990c283..00000000000 --- a/tests/wpt/metadata/css/CSS2/visudet/line-height-204.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[line-height-204.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini b/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini index b075270b5f3..7c80799aece 100644 --- a/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini +++ b/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini @@ -38,6 +38,3 @@ [Test @font-face matching for weight 249] expected: FAIL - [Test @font-face matching for weight 420] - expected: FAIL - diff --git a/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-050.html.ini b/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-050.html.ini new file mode 100644 index 00000000000..3e0b732a20f --- /dev/null +++ b/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-050.html.ini @@ -0,0 +1,2 @@ +[css3-text-line-break-opclns-050.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-054.html.ini b/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-054.html.ini new file mode 100644 index 00000000000..247462a9f2f --- /dev/null +++ b/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-054.html.ini @@ -0,0 +1,2 @@ +[css3-text-line-break-opclns-054.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-059.html.ini b/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-059.html.ini new file mode 100644 index 00000000000..926f5631fe8 --- /dev/null +++ b/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-059.html.ini @@ -0,0 +1,2 @@ +[css3-text-line-break-opclns-059.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-164.html.ini b/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-164.html.ini new file mode 100644 index 00000000000..2853708ba60 --- /dev/null +++ b/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-164.html.ini @@ -0,0 +1,2 @@ +[css3-text-line-break-opclns-164.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-165.html.ini b/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-165.html.ini new file mode 100644 index 00000000000..8bcf1b74f6e --- /dev/null +++ b/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-opclns-165.html.ini @@ -0,0 +1,2 @@ +[css3-text-line-break-opclns-165.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/i18n/zh/css-text-line-break-zh-in-strict.html.ini b/tests/wpt/metadata/css/css-text/i18n/zh/css-text-line-break-zh-in-strict.html.ini index 102a231a234..f32b05ecd88 100644 --- a/tests/wpt/metadata/css/css-text/i18n/zh/css-text-line-break-zh-in-strict.html.ini +++ b/tests/wpt/metadata/css/css-text/i18n/zh/css-text-line-break-zh-in-strict.html.ini @@ -11,6 +11,3 @@ [FE19 PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS may NOT appear at line start if zh and strict] expected: FAIL - [22EF MIDLINE HORIZONTAL ELLIPSIS may NOT appear at line start if zh and strict] - expected: FAIL - diff --git a/tests/wpt/metadata/css/css-transforms/css-transforms-3d-on-anonymous-block-001.html.ini b/tests/wpt/metadata/css/css-transforms/css-transforms-3d-on-anonymous-block-001.html.ini deleted file mode 100644 index bbb2e5f171e..00000000000 --- a/tests/wpt/metadata/css/css-transforms/css-transforms-3d-on-anonymous-block-001.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[css-transforms-3d-on-anonymous-block-001.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini b/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini deleted file mode 100644 index 26435e28b09..00000000000 --- a/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[vh_not_refreshing_on_chrome.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-001.html.ini b/tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-001.html.ini index 46970154fbc..4ff2ab535d6 100644 --- a/tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-001.html.ini +++ b/tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-001.html.ini @@ -3,3 +3,6 @@ [CSSStyleDeclaration.setPropertyValue queues a mutation record, even if not mutated] expected: NOTRUN + [CSSStyleDeclaration.setPropertyValue queues a mutation record when serialization is changed] + expected: NOTRUN + diff --git a/tests/wpt/metadata/css/cssom/cssstyledeclaration-setter-declarations.html.ini b/tests/wpt/metadata/css/cssom/cssstyledeclaration-setter-declarations.html.ini new file mode 100644 index 00000000000..375449fbab5 --- /dev/null +++ b/tests/wpt/metadata/css/cssom/cssstyledeclaration-setter-declarations.html.ini @@ -0,0 +1,13 @@ +[cssstyledeclaration-setter-declarations.html] + [setProperty with longhand should update only the declaration being set] + expected: FAIL + + [property setter should update only the declaration being set] + expected: FAIL + + [setProperty with shorthand should update only the declarations being set] + expected: FAIL + + [longhand property setter should update only the decoarations being set] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom/cssstyledeclaration-setter-logical.html.ini b/tests/wpt/metadata/css/cssom/cssstyledeclaration-setter-logical.html.ini new file mode 100644 index 00000000000..766bba44bd6 --- /dev/null +++ b/tests/wpt/metadata/css/cssom/cssstyledeclaration-setter-logical.html.ini @@ -0,0 +1,4 @@ +[cssstyledeclaration-setter-logical.html] + [newly set declaration should be after all declarations in the same logical property group but have different logical kind] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom/cssstyledeclaration-setter-order.html.ini b/tests/wpt/metadata/css/cssom/cssstyledeclaration-setter-order.html.ini deleted file mode 100644 index 1f1c2f59fd3..00000000000 --- a/tests/wpt/metadata/css/cssom/cssstyledeclaration-setter-order.html.ini +++ /dev/null @@ -1,13 +0,0 @@ -[cssstyledeclaration-setter-order.html] - [setProperty with existing longhand should change order] - expected: FAIL - - [invoke property setter with existing longhand should change order] - expected: FAIL - - [setProperty with existing shorthand should change order] - expected: FAIL - - [invoke property setter with existing shorthand should change order] - expected: FAIL - diff --git a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini index a35cb7690ff..b98c1201f0b 100644 --- a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini +++ b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini @@ -3,9 +3,10 @@ disabled: iframe thread issue 5247 [single-byte-decoder.html?document] - expected: TIMEOUT + expected: CRASH [single-byte-decoder.html?XMLHttpRequest] + expected: CRASH [ISO-8859-2: iso_8859-2:1987 (XMLHttpRequest)] expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/unloading-documents/pagehide-on-history-forward.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/unloading-documents/pagehide-on-history-forward.html.ini deleted file mode 100644 index c9bc68e2044..00000000000 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/unloading-documents/pagehide-on-history-forward.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[pagehide-on-history-forward.html] - expected: OK diff --git a/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini index 9579b42287e..20865f493ec 100644 --- a/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini @@ -30,6 +30,3 @@ [Set HTTP URL frame location.protocol to data] expected: FAIL - [Set HTTP URL frame location.protocol to x] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini index 555c68213f2..559c27de134 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini @@ -172,33 +172,63 @@ [XHTML img usemap="http://example.org/#garbage-before-hash-id"] expected: FAIL - [HTML (standards) IMG usemap="no-hash-name"] + [HTML (quirks) IMG usemap="no-hash-name"] expected: FAIL - [HTML (standards) IMG usemap="no-hash-id"] + [HTML (quirks) IMG usemap="no-hash-id"] expected: FAIL - [HTML (standards) IMG usemap="hash-last#"] + [HTML (quirks) IMG usemap="hash-last#"] expected: FAIL - [HTML (standards) IMG usemap=""] + [HTML (quirks) IMG usemap=""] expected: FAIL - [HTML (standards) IMG usemap="#"] + [HTML (quirks) IMG usemap="#"] expected: FAIL - [HTML (standards) IMG usemap="#percent-escape-name-%41"] + [HTML (quirks) IMG usemap="#percent-escape-name-%41"] expected: FAIL - [HTML (standards) IMG usemap="#percent-escape-id-%41"] + [HTML (quirks) IMG usemap="#percent-escape-id-%41"] expected: FAIL - [HTML (standards) IMG usemap="#no-such-map"] + [HTML (quirks) IMG usemap="#no-such-map"] expected: FAIL - [HTML (standards) IMG usemap="#different-CASE-name"] + [HTML (quirks) IMG usemap="#different-CASE-name"] expected: FAIL - [HTML (standards) IMG usemap="#different-CASE-id"] + [HTML (quirks) IMG usemap="#different-CASE-id"] + expected: FAIL + + [XHTML img usemap="no-hash-name"] + expected: FAIL + + [XHTML img usemap="no-hash-id"] + expected: FAIL + + [XHTML img usemap="hash-last#"] + expected: FAIL + + [XHTML img usemap=""] + expected: FAIL + + [XHTML img usemap="#"] + expected: FAIL + + [XHTML img usemap="#percent-escape-name-%41"] + expected: FAIL + + [XHTML img usemap="#percent-escape-id-%41"] + expected: FAIL + + [XHTML img usemap="#no-such-map"] + expected: FAIL + + [XHTML img usemap="#different-CASE-name"] + expected: FAIL + + [XHTML img usemap="#different-CASE-id"] expected: FAIL diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/010.html.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/010.html.ini deleted file mode 100644 index 33164945eb6..00000000000 --- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/010.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[010.html] - [Salvagability of document.opened document] - expected: FAIL - diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-creation-and-destruction.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-creation-and-destruction.html.ini new file mode 100644 index 00000000000..fbdc89a8f0d --- /dev/null +++ b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-creation-and-destruction.html.ini @@ -0,0 +1,5 @@ +[context-creation-and-destruction.html] + expected: TIMEOUT + [Overall test] + expected: NOTRUN + diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-creation.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-creation.html.ini new file mode 100644 index 00000000000..393e42df192 --- /dev/null +++ b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-creation.html.ini @@ -0,0 +1,5 @@ +[context-creation.html] + expected: TIMEOUT + [Overall test] + expected: NOTRUN + diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-eviction-with-garbage-collection.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-eviction-with-garbage-collection.html.ini new file mode 100644 index 00000000000..b2918fac56f --- /dev/null +++ b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-eviction-with-garbage-collection.html.ini @@ -0,0 +1,2 @@ +[context-eviction-with-garbage-collection.html] + expected: TIMEOUT diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/ogles/GL/log/log_001_to_008.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/ogles/GL/log/log_001_to_008.html.ini new file mode 100644 index 00000000000..0bcf8268f38 --- /dev/null +++ b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/ogles/GL/log/log_001_to_008.html.ini @@ -0,0 +1,5 @@ +[log_001_to_008.html] + expected: TIMEOUT + [Overall test] + expected: NOTRUN + diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/ogles/GL/log2/log2_001_to_008.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/ogles/GL/log2/log2_001_to_008.html.ini new file mode 100644 index 00000000000..579708b48b2 --- /dev/null +++ b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/ogles/GL/log2/log2_001_to_008.html.ini @@ -0,0 +1,5 @@ +[log2_001_to_008.html] + expected: TIMEOUT + [Overall test] + expected: NOTRUN + diff --git a/tests/wpt/web-platform-tests/animation-worklet/META.yml b/tests/wpt/web-platform-tests/animation-worklet/META.yml new file mode 100644 index 00000000000..c6918965843 --- /dev/null +++ b/tests/wpt/web-platform-tests/animation-worklet/META.yml @@ -0,0 +1,5 @@ +spec: https://wicg.github.io/animation-worklet/ +suggested_reviewers: + - flackr + - majido + - stephenmcgruer diff --git a/tests/wpt/web-platform-tests/animation-worklet/interfaces.any.js b/tests/wpt/web-platform-tests/animation-worklet/interfaces.any.js new file mode 100644 index 00000000000..9b1d75649a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/animation-worklet/interfaces.any.js @@ -0,0 +1,16 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +'use strict'; + +// https://wicg.github.io/animation-worklet/ + +promise_test(async () => { + const idl = await (await fetch('/interfaces/animation-worklet.idl')).text(); + const html = await (await fetch('/interfaces/html.idl')).text(); + const idlArray = new IdlArray(); + idlArray.add_idls(idl); + idlArray.add_dependency_idls(html); + idlArray.test(); + done(); +}, 'Test driver'); diff --git a/tests/wpt/web-platform-tests/console/idlharness.any.js b/tests/wpt/web-platform-tests/console/idlharness.any.js new file mode 100644 index 00000000000..114564f19fa --- /dev/null +++ b/tests/wpt/web-platform-tests/console/idlharness.any.js @@ -0,0 +1,14 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +// https://console.spec.whatwg.org/ + +promise_test(async () => { + const srcs = ['console']; + const [idl] = await Promise.all( + srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text()))); + + const idl_array = new IdlArray(); + idl_array.add_idls(idl); + idl_array.test(); +}, 'console interfaces'); diff --git a/tests/wpt/web-platform-tests/content-security-policy/securitypolicyviolation/img-src-redirect-upgrade-reporting.https.html b/tests/wpt/web-platform-tests/content-security-policy/securitypolicyviolation/img-src-redirect-upgrade-reporting.https.html index 27611273bab..c63206db464 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/securitypolicyviolation/img-src-redirect-upgrade-reporting.https.html +++ b/tests/wpt/web-platform-tests/content-security-policy/securitypolicyviolation/img-src-redirect-upgrade-reporting.https.html @@ -4,10 +4,10 @@ <script src="./support/testharness-helper.sub.js"></script> <body></body> <script> - function waitForViolation(el, t, policy, blocked_origin) { + function waitForViolation(el, t, policy, blockedURI) { return new Promise(resolve => { el.addEventListener('securitypolicyviolation', e => { - if (e.originalPolicy == policy && (new URL(e.blockedURI)).origin == blocked_origin) + if (e.originalPolicy == policy && e.blockedURI == blockedURI) resolve(e); else t.unreached_func("Unexpected violation event for " + e.blockedURI)(); @@ -21,7 +21,7 @@ i.src = redirect.url; // Report-only policy should trigger a violation on the redirected request. - waitForViolation(window, t, "img-src https:", (new URL(redirect.target)).origin).then(t.step_func(e => { + waitForViolation(window, t, "img-src https:", new URL(redirect.url, window.location).href).then(t.step_func(e => { t.done(); })); diff --git a/tests/wpt/web-platform-tests/content-security-policy/securitypolicyviolation/support/inside-worker.sub.js b/tests/wpt/web-platform-tests/content-security-policy/securitypolicyviolation/support/inside-worker.sub.js index 6e0d98c9577..58bd02fd9ec 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/securitypolicyviolation/support/inside-worker.sub.js +++ b/tests/wpt/web-platform-tests/content-security-policy/securitypolicyviolation/support/inside-worker.sub.js @@ -40,5 +40,18 @@ async_test(t => { .catch(t.step_func(e => assert_true(e instanceof TypeError))); }, "SecurityPolicyViolation event fired on global."); +async_test(t => { + var url = "{{location[scheme]}}://{{host}}:{{location[port]}}/common/redirect.py?location={{location[scheme]}}://{{domains[www]}}:{{location[port]}}/content-security-policy/support/ping.js"; + waitUntilCSPEventForURL(t, url) + .then(t.step_func_done(e => { + assert_equals(e.blockedURI, url); + assert_false(cspEventFiredInDocument); + })); + + fetch(url) + .then(t.unreached_func("Fetch should not succeed.")) + .catch(t.step_func(e => assert_true(e instanceof TypeError))); +}, "SecurityPolicyViolation event fired on global with the correct blockedURI."); + // Worker tests need an explicit `done()`. done(); diff --git a/tests/wpt/web-platform-tests/core-aam/META.yml b/tests/wpt/web-platform-tests/core-aam/META.yml index 0569607ed7d..6ba87a1205b 100644 --- a/tests/wpt/web-platform-tests/core-aam/META.yml +++ b/tests/wpt/web-platform-tests/core-aam/META.yml @@ -2,3 +2,4 @@ spec: https://w3c.github.io/core-aam/ suggested_reviewers: - halindrome - joanmarie + - michael-n-cooper diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/align-items-baseline-overflow-non-visible.html b/tests/wpt/web-platform-tests/css/css-flexbox/align-items-baseline-overflow-non-visible.html new file mode 100644 index 00000000000..3c91bc55530 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/align-items-baseline-overflow-non-visible.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<title>A block with 'overflow: hidden' should produce normal baseline</title> +<link rel="author" title="Koji Ishii" href="kojii@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-baselines"> +<link rel="match" href="reference/align-items-baseline-overflow-non-visible-ref.html"> +<style> +.flex { + display: flex; + align-items: baseline; +} +.overflow { + overflow: hidden; + height: 2em; +} +</style> + +<body> +<!-- +CSS2 states that: + The baseline of an 'inline-block' is the baseline of its last line box in + the normal flow, unless it has either no in-flow line boxes or if its + 'overflow' property has a computed value other than 'visible', in which case + the baseline is the bottom margin edge. + https://drafts.csswg.org/css2/visudet.html#propdef-vertical-align +This rule should apply only to 'inline-block', and not to normal block. +--> +<div class="flex"> + <span>XX</span> + <div><div class="overflow">YY</div></div> +</div> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/reference/align-items-baseline-overflow-non-visible-ref.html b/tests/wpt/web-platform-tests/css/css-flexbox/reference/align-items-baseline-overflow-non-visible-ref.html new file mode 100644 index 00000000000..89f1025261a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/reference/align-items-baseline-overflow-non-visible-ref.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<style> +.flex { + display: flex; + align-items: baseline; +} +</style> + +<body> +<div class="flex"> + <span>XX</span> + <div><div>YY</div></div> +</div> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-logical/animation-001.html b/tests/wpt/web-platform-tests/css/css-logical/animation-001.html new file mode 100644 index 00000000000..8135f43275b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-logical/animation-001.html @@ -0,0 +1,323 @@ +<!doctype html> +<meta charset=utf-8> +<title>Animating CSS logical properties using Web Animations</title> +<link rel="help" href="https://drafts.csswg.org/css-logical/#box"> +<meta name="assert" content="The specified values of these properties are separate from the specified values of the parallel physical properties, but the flow-relative and physical properties share computed values."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../css-animations/support/testcommon.js"></script> +<style> +:root { + --200px: 200px; + --300px: 300px; + --writingMode: horizontal-tb; +} +</style> + +<div id="log"></div> +<script> +'use strict'; + +test(t => { + const div = addDiv(t); + const anim = div.animate({ blockSize: ['0px', '100px'] }, 1000); + anim.currentTime = 500; + assert_equals(getComputedStyle(div).height, '50px'); +}, 'Logical properties can be animated using object notation'); + +test(t => { + const div = addDiv(t); + const anim = div.animate( + [{ blockSize: '0px' }, { blockSize: '100px' }], + 1000 + ); + anim.currentTime = 500; + assert_equals(getComputedStyle(div).height, '50px'); +}, 'Logical properties can be animated using array notation'); + +test(t => { + const anim = addDiv(t).animate({ blockSize: ['0px', '100px'] }, 1000); + assert_equals(anim.effect.getKeyframes().length, 2); + + assert_own_property(anim.effect.getKeyframes()[0], 'blockSize'); + assert_false(anim.effect.getKeyframes()[0].hasOwnProperty('height')); + + assert_own_property(anim.effect.getKeyframes()[1], 'blockSize'); + assert_false(anim.effect.getKeyframes()[1].hasOwnProperty('height')); +}, 'Logical properties are NOT stored as physical properties'); + +test(t => { + const div = addDiv(t, { style: 'writing-mode: vertical-rl' }); + const anim = div.animate({ blockSize: ['0px', '100px'] }, 1000); + anim.currentTime = 500; + assert_equals(getComputedStyle(div).width, '50px'); + assert_equals(getComputedStyle(div).height, '0px'); +}, 'Logical properties in animations respect the writing-mode'); + +test(t => { + const div = addDiv(t, { style: 'direction: rtl' }); + const anim = div.animate({ marginInlineStart: ['0px', '100px'] }, 1000); + anim.currentTime = 500; + assert_equals(getComputedStyle(div).marginLeft, '0px'); + assert_equals(getComputedStyle(div).marginRight, '50px'); +}, 'Logical properties in animations respect the direction'); + +test(t => { + const div = addDiv(t); + const anim = div.animate( + { + blockSize: ['0px', '100px'], + height: ['200px', '300px'], + }, + 1000 + ); + anim.currentTime = 500; + assert_equals(getComputedStyle(div).height, '250px'); +}, 'Physical properties win over logical properties in object notation'); + +test(t => { + const div = addDiv(t); + const anim = div.animate( + [ + { height: '200px', blockSize: '0px' }, + { height: '300px', blockSize: '100px' }, + ], + 1000 + ); + anim.currentTime = 500; + assert_equals(getComputedStyle(div).height, '250px'); +}, 'Physical properties win over logical properties in array notation'); + +test(t => { + const div = addDiv(t); + const anim = div.animate( + { + blockSize: ['0px', '100px'], + height: ['var(--200px)', 'var(--300px)'], + }, + 1000 + ); + anim.currentTime = 500; + assert_equals(getComputedStyle(div).height, '250px'); +}, 'Physical properties with variables win over logical properties'); + +test(t => { + const div = addDiv(t); + const anim = div.animate( + { + marginInlineStart: '100px', + marginInline: '200px', + margin: 'logical 300px', + }, + { duration: 1, easing: 'step-start' } + ); + assert_equals(getComputedStyle(div).marginLeft, '100px'); + assert_equals(getComputedStyle(div).marginRight, '200px'); + assert_equals(getComputedStyle(div).marginTop, '300px'); + assert_equals(getComputedStyle(div).marginBottom, '300px'); +}, 'Logical shorthands follow the usual prioritization based on number of' + + ' component longhands'); + +test(t => { + const div = addDiv(t); + const anim = div.animate( + { + marginInline: '100px', + marginLeft: '200px', + }, + { duration: 1, easing: 'step-start' } + ); + assert_equals(getComputedStyle(div).marginLeft, '200px'); + assert_equals(getComputedStyle(div).marginRight, '100px'); +}, 'Physical longhands win over logical shorthands'); + +test(t => { + const div = addDiv(t); + const anim = div.animate( + { + marginInlineStart: '100px', + margin: '200px', + }, + { duration: 1, easing: 'step-start' } + ); + assert_equals(getComputedStyle(div).marginLeft, '100px'); + assert_equals(getComputedStyle(div).marginRight, '200px'); +}, 'Logical longhands win over physical shorthands'); + +test(t => { + const div = addDiv(t); + const anim = div.animate( + { + marginInline: '100px', + margin: '200px', + }, + { duration: 1, easing: 'step-start' } + ); + assert_equals(getComputedStyle(div).marginLeft, '200px'); + assert_equals(getComputedStyle(div).marginRight, '200px'); +}, 'Physical shorthands win over logical shorthands'); + +test(t => { + const div = addDiv(t); + const anim = div.animate( + { + marginInline: '100px', + margin: 'var(--200px)', + }, + { duration: 1, easing: 'step-start' } + ); + assert_equals(getComputedStyle(div).marginLeft, '200px'); + assert_equals(getComputedStyle(div).marginRight, '200px'); +}, 'Physical shorthands using variables win over logical shorthands'); + +test(t => { + const div = addDiv(t); + const anim = div.animate([{ blockSize: '200px' }, { height: '300px' }], 1000); + anim.currentTime = 500; + assert_equals(getComputedStyle(div).height, '250px'); +}, 'Physical properties and logical properties can be mixed'); + +test(t => { + const div = addDiv(t); + const anim = div.animate( + [{ marginInline: '200px' }, { marginRight: '300px' }], + 1000 + ); + anim.currentTime = 500; + assert_equals(getComputedStyle(div).marginRight, '250px'); +}, 'Physical shorthands and logical shorthands can be mixed'); + +test(t => { + const div = addDiv(t); + const anim = div.animate( + [{ blockSize: '100px', height: '200px' }, { height: '300px' }], + 1000 + ); + anim.currentTime = 500; + assert_equals(getComputedStyle(div).height, '250px'); +}, 'Physical properties win over logical properties even when some keyframes' + + ' only have logical properties'); + +test(t => { + const div = addDiv(t, { style: 'width: 0px; height: 0px' }); + const anim = div.animate({ blockSize: ['0px', '100px'] }, 1000); + anim.currentTime = 500; + + assert_equals(getComputedStyle(div).width, '0px'); + assert_equals(getComputedStyle(div).height, '50px'); + + div.style.writingMode = 'vertical-rl'; + assert_equals(getComputedStyle(div).width, '50px'); + assert_equals(getComputedStyle(div).height, '0px'); +}, 'Animations update when the writing-mode is changed'); + +test(t => { + const div = addDiv(t, { style: 'width: 0px; height: 0px' }); + const anim = div.animate( + { blockSize: ['0px', '100px'] }, + { + duration: 1000, + fill: 'forwards', + } + ); + anim.finish(); + + assert_equals(getComputedStyle(div).width, '0px'); + assert_equals(getComputedStyle(div).height, '100px'); + + div.style.writingMode = 'vertical-rl'; + assert_equals(getComputedStyle(div).width, '100px'); + assert_equals(getComputedStyle(div).height, '0px'); +}, 'Filling animations update when the writing-mode is changed'); + +test(t => { + const div = addDiv(t, { style: 'width: 100px; height: 200px' }); + const anim = div.animate({ blockSize: '300px' }, 1000); + anim.currentTime = 500; + + // Initially we are animating height from 200px -> 300px + assert_equals(getComputedStyle(div).width, '100px'); + assert_equals(getComputedStyle(div).height, '250px'); + + // After the change we are animating width from 100px -> 300px + div.style.writingMode = 'vertical-rl'; + assert_equals(getComputedStyle(div).width, '200px'); + assert_equals(getComputedStyle(div).height, '200px'); +}, 'Animations with implicit from values update when the writing-mode' + + ' is changed'); + +test(t => { + const div = addDiv(t, { style: 'width: 0px; height: 0px' }); + const anim = div.animate( + [ + { height: '200px', blockSize: '0px' }, + { height: '300px', blockSize: '100px' }, + ], + 1000 + ); + anim.currentTime = 500; + + // Initially writing-mode is horizontal-tb so the 'block-size' values are + // clobbered by the 'height' values. + + assert_equals(getComputedStyle(div).width, '0px'); + assert_equals(getComputedStyle(div).height, '250px'); + + // After updating the writing-mode to vertical-rl the 'block-size' values + // should no longer be overridden and should apply to the height. + + div.style.writingMode = 'vertical-rl'; + assert_equals(getComputedStyle(div).width, '50px'); + assert_equals(getComputedStyle(div).height, '250px'); +}, 'Animations with overlapping physical and logical properties update' + + ' when the writing-mode is changed'); + +test(t => { + const div = addDiv(t, { style: 'width: 0px; height: 0px' }); + div.style.writingMode = 'var(--writingMode)'; + const anim = div.animate({ blockSize: ['0px', '100px'] }, 1000); + anim.currentTime = 500; + + assert_equals(getComputedStyle(div).width, '0px'); + assert_equals(getComputedStyle(div).height, '50px'); + + div.style.setProperty('--writingMode', 'vertical-rl'); + assert_equals(getComputedStyle(div).width, '50px'); + assert_equals(getComputedStyle(div).height, '0px'); +}, 'Animations update when the writing-mode is changed through a CSS variable'); + +test(t => { + const div = addDiv(t); + const anim = div.animate({ marginInlineStart: ['0px', '100px'] }, 1000); + anim.currentTime = 500; + + assert_equals(getComputedStyle(div).marginLeft, '50px'); + assert_equals(getComputedStyle(div).marginRight, '0px'); + + div.style.direction = 'rtl'; + assert_equals(getComputedStyle(div).marginLeft, '0px'); + assert_equals(getComputedStyle(div).marginRight, '50px'); +}, 'Animations update when the direction is changed'); + +test(t => { + const div = addDiv(t); + const anim = div.animate( + { writingMode: 'vertical-rl' }, + { duration: 1, easing: 'step-start' } + ); + assert_equals(getComputedStyle(div).writingMode, 'horizontal-tb'); + assert_equals(anim.effect.getKeyframes().length, 0); +}, 'writing-mode is not animatable'); + +test(t => { + const div = addDiv(t); + const anim = div.animate( + { writingMode: 'rtl' }, + { duration: 1, easing: 'step-start' } + ); + anim.currentTime = 500; + assert_equals(getComputedStyle(div).direction, 'ltr'); + assert_equals(anim.effect.getKeyframes().length, 0); +}, 'direction is not animatable'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-logical/animation-002.html b/tests/wpt/web-platform-tests/css/css-logical/animation-002.html new file mode 100644 index 00000000000..d4f199d50e4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-logical/animation-002.html @@ -0,0 +1,213 @@ +<!doctype html> +<meta charset=utf-8> +<title>Animating CSS logical properties using CSS Animations</title> +<link rel="help" href="https://drafts.csswg.org/css-logical/#box"> +<meta name="assert" content="The specified values of these properties are separate from the specified values of the parallel physical properties, but the flow-relative and physical properties share computed values."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../css-animations/support/testcommon.js"></script> + +<div id="log"></div> +<script> +'use strict'; + +test(t => { + addStyle(t, { + '@keyframes anim': 'from { block-size: 0px } to { block-size: 100px }', + }); + const div = addDiv(t, { style: 'animation: anim 10s -5s paused linear' }); + assert_equals(getComputedStyle(div).height, '50px'); +}, 'Logical properties can be animated'); + +test(t => { + addStyle(t, { + '@keyframes anim': 'from { block-size: 0px } to { block-size: 100px }', + }); + const div = addDiv(t, { + style: 'animation: anim 10s -5s paused linear; writing-mode: vertical-rl', + }); + assert_equals(getComputedStyle(div).width, '50px'); + assert_equals(getComputedStyle(div).height, '0px'); +}, 'Logical properties in animations respect the writing-mode'); + +test(t => { + addStyle(t, { + '@keyframes anim': + 'from { margin-inline-start: 0px } to { margin-inline-start: 100px }', + }); + const div = addDiv(t, { + style: 'animation: anim 10s -5s paused linear; direction: rtl', + }); + assert_equals(getComputedStyle(div).marginLeft, '0px'); + assert_equals(getComputedStyle(div).marginRight, '50px'); +}, 'Logical properties in animations respect the direction'); + +test(t => { + addStyle(t, { + '@keyframes anim': + 'from { block-size: 0px; height: 200px }' + + ' to { block-size: 100px; height: 300px }', + }); + const div = addDiv(t, { + style: 'animation: anim 10s -5s paused linear', + }); + assert_equals(getComputedStyle(div).height, '250px'); +}, 'Declaration order is respected within @keyframes declaration blocks'); + +test(t => { + addStyle(t, { + '@keyframes anim': + 'to { margin-top: 200px;' + + ' margin-block-start: 100px }' + }); + const div = addDiv(t, { + style: 'animation: anim 10s paused step-start', + }); + assert_equals(getComputedStyle(div).marginTop, '100px'); +}, 'Logical properties are able to override physical properties in' + + ' @keyframes declaration blocks'); + +test(t => { + addStyle(t, { + '@keyframes anim': + 'to {' + + ' margin-inline: 200px;' + + ' margin-inline-start: 0px;' + + ' margin-inline-start: 100px }', + }); + const div = addDiv(t, { + style: 'animation: anim 10s paused step-start', + }); + assert_equals(getComputedStyle(div).marginLeft, '100px'); +}, 'Declaration order is respected amongst logical properties within' + + ' @keyframes declaration blocks'); + +test(t => { + addStyle(t, { + '@keyframes anim': 'from { block-size: 200px } to { height: 300px }', + }); + const div = addDiv(t, { + style: 'animation: anim 10s -5s paused linear', + }); + assert_equals(getComputedStyle(div).height, '250px'); +}, 'Physical properties and logical properties can be mixed'); + +test(t => { + addStyle(t, { + '@keyframes anim': + 'from { height: 100px; block-size: 200px }' + + ' to { block-size: 100px; height: 300px }', + }); + const div = addDiv(t, { + style: 'animation: anim 10s -5s paused linear', + }); + assert_equals(getComputedStyle(div).height, '250px'); +}, 'Declaration order is respected on each keyframe individually'); + +test(t => { + addStyle(t, { + '@keyframes anim': 'from { block-size: 0px } to { block-size: 100px }', + }); + const div = addDiv(t, { + style: 'animation: anim 10s -5s paused linear; width: 0px; height: 0px', + }); + assert_equals(getComputedStyle(div).width, '0px'); + assert_equals(getComputedStyle(div).height, '50px'); + + div.style.writingMode = 'vertical-rl'; + assert_equals(getComputedStyle(div).width, '50px'); + assert_equals(getComputedStyle(div).height, '0px'); +}, 'Animations update when the writing-mode is changed'); + +promise_test(async t => { + addStyle(t, { + '@keyframes anim': 'from { block-size: 0px } to { block-size: 100px }', + }); + const div = addDiv(t, { + style: 'animation: anim 10s -9.9s linear forwards;' + + ' width: 0px; height: 0px', + }); + const watcher = new EventWatcher(t, div, [ 'animationend' ]); + await watcher.wait_for('animationend'); + + assert_equals(getComputedStyle(div).width, '0px'); + assert_equals(getComputedStyle(div).height, '100px'); + + div.style.writingMode = 'vertical-rl'; + assert_equals(getComputedStyle(div).width, '100px'); + assert_equals(getComputedStyle(div).height, '0px'); +}, 'Filling animations update when the writing-mode is changed'); + +test(t => { + addStyle(t, { + '@keyframes anim': 'to { block-size: 100px; height: 200px }', + }); + const div = addDiv(t, { + style: 'animation: anim 10s -5s paused linear; width: 0px; height: 0px', + }); + // Initially we are interpolating the height from 0 to 200px + assert_equals(getComputedStyle(div).width, '0px'); + assert_equals(getComputedStyle(div).height, '100px'); + + // But once we change the writing-mode, we will be interpolating *both* + // the height (from 0px to 200px) *and* the width (from 0px to 100px). + div.style.writingMode = 'vertical-rl'; + assert_equals(getComputedStyle(div).width, '50px'); + assert_equals(getComputedStyle(div).height, '100px'); +}, 'The number of interpolating properties can be increased when the' + + ' writing-mode is changed'); + +test(t => { + addStyle(t, { + '@keyframes anim': 'to { width: 300px; block-size: 200px }', + }); + const div = addDiv(t, { + style: 'animation: anim 10s -5s paused linear; width: 100px; height: 100px', + }); + // Initially we are interpolating the width (100px -> 300px) and the height + // (100px -> 200px). + assert_equals(getComputedStyle(div).width, '200px'); + assert_equals(getComputedStyle(div).height, '150px'); + + // Once we change the writing-mode, we will be interpolating *only* the + // width (100px -> 200px). + div.style.writingMode = 'vertical-rl'; + assert_equals(getComputedStyle(div).width, '150px'); + assert_equals(getComputedStyle(div).height, '100px'); +}, 'The number of interpolating properties can be decreased when the' + + ' writing-mode is changed'); + +test(t => { + addStyle(t, { ':root': '--writingMode: horizontal-tb' }); + addStyle(t, { + '@keyframes anim': 'from { block-size: 0px } to { block-size: 100px }', + }); + const div = addDiv(t, { + style: + 'animation: anim 10s -5s paused linear;' + + ' width: 0px; height: 0px;' + + ' writing-mode: var(--writingMode)' + }); + assert_equals(getComputedStyle(div).width, '0px'); + assert_equals(getComputedStyle(div).height, '50px'); + + div.style.setProperty('--writingMode', 'vertical-rl'); + assert_equals(getComputedStyle(div).width, '50px'); + assert_equals(getComputedStyle(div).height, '0px'); +}, 'Animations update when the writing-mode is changed through a CSS variable'); + +test(t => { + addStyle(t, { + '@keyframes anim': + 'from { margin-inline-start: 0px } to { margin-inline-start: 100px }', + }); + const div = addDiv(t, { style: 'animation: anim 10s -5s paused linear' }); + assert_equals(getComputedStyle(div).marginLeft, '50px'); + assert_equals(getComputedStyle(div).marginRight, '0px'); + + div.style.direction = 'rtl'; + assert_equals(getComputedStyle(div).marginLeft, '0px'); + assert_equals(getComputedStyle(div).marginRight, '50px'); +}, 'Animations update when the direction is changed'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-logical/animation-003.tenative.html b/tests/wpt/web-platform-tests/css/css-logical/animation-003.tenative.html new file mode 100644 index 00000000000..bcb4e15d80c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-logical/animation-003.tenative.html @@ -0,0 +1,37 @@ +<!doctype html> +<meta charset=utf-8> +<title>Animating CSS logical properties using CSS Animations - Web Animations reflection</title> +<link rel="help" href="https://drafts.csswg.org/css-logical/#box"> +<meta name="assert" content="The specified values of these properties are separate from the specified values of the parallel physical properties, but the flow-relative and physical properties share computed values."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../css-animations/support/testcommon.js"></script> + +<div id="log"></div> +<script> +'use strict'; + +/* + * The mapping from CSS Animations to Web Animations has yet to be specified + * but, when it is, we expect it to require that logical properties in CSS + * keyframes be represented as physical properties in the result returned from + * getKeyframes() since this is consistent with the behavior of expanding out + * all shorthands in to their consituent longhands in order to resolve + * overlapping properties. + */ + +test(t => { + addStyle(t, { + '@keyframes anim': 'from { block-size: 0px } to { block-size: 100px }', + }); + const div = addDiv(t, { style: 'animation: anim 10s' }); + const anim = div.getAnimations()[0]; + + assert_own_property(anim.effect.getKeyframes()[0], 'height'); + assert_false(anim.effect.getKeyframes()[0].hasOwnProperty('blockSize')); + + assert_own_property(anim.effect.getKeyframes()[1], 'height'); + assert_false(anim.effect.getKeyframes()[1].hasOwnProperty('blockSize')); +}, 'Logical properties are represented as physical properties in keyframes'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-opacity-float-001-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-opacity-float-001-ref.html index 6e3cda5dece..38c230045bd 100644 --- a/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-opacity-float-001-ref.html +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-opacity-float-001-ref.html @@ -1,2 +1,6 @@ <!DOCTYPE html> +<style> +/* Disable kerning because kerning may differ for different node tree. */ +html { font-kerning: none; font-feature-settings: "kern" off; } +</style> <div><span style="opacity:0.5">P</span>ASS</div> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-opacity-float-001.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-opacity-float-001.html index bc9d2e6198d..fb939fa0cb0 100644 --- a/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-opacity-float-001.html +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-opacity-float-001.html @@ -7,6 +7,8 @@ <style> #one::first-letter { float: left; opacity: 0.5 } #two { opacity: 0.5 } +/* Disable kerning because kerning may differ for different node tree. */ +html { font-kerning: none; font-feature-settings: "kern" off; } </style> <div id="one">PASS</div> <div id="two"></div> diff --git a/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-001.html b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-001.html index 5bd8456ed70..ba4d926b15c 100644 --- a/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-001.html +++ b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-001.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset="utf-8"> -<title>CSSOM: CSSStyleDeclaration.setPropertyValue queues a mutation record when not actually mutated</title> +<title>CSSOM: CSSStyleDeclaration.setPropertyValue queues a mutation record when changed</title> <link rel="help" href="https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-setpropertyvalue"> <link rel="help" href="https://drafts.csswg.org/cssom/#update-style-attribute-for"> <link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io"> @@ -9,12 +9,12 @@ <script> document.documentElement.style.top = "0px"; - let test = async_test("CSSStyleDeclaration.setPropertyValue queues a mutation record, even if not mutated"); + let test = async_test("CSSStyleDeclaration.setPropertyValue queues a mutation record when serialization is changed"); let m = new MutationObserver(function(r) { assert_equals(r.length, 1); test.done(); }); m.observe(document.documentElement, { attributes: true }); - document.documentElement.style.top = "0px"; + document.documentElement.style.top = "1px"; </script> diff --git a/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-setter-declarations.html b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-setter-declarations.html new file mode 100644 index 00000000000..e66466e7a11 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-setter-declarations.html @@ -0,0 +1,160 @@ +<!DOCTYPE html> +<title>CSSOM test: declaration block after setting via CSSOM</title> +<link rel="help" href="https://drafts.csswg.org/cssom/#set-a-css-declaration-value"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<script> + function generateCSSDeclBlock(props) { + let elem = document.createElement("div"); + let cssText = props.map(({name, value, priority}) => { + let longhand = `${name}: ${value}`; + if (priority) { + longhand += "!" + priority; + } + return longhand + ";"; + }).join(" "); + elem.setAttribute("style", cssText); + return elem.style; + } + function compareByName(a, b) { + if (a.name < b.name) return -1; + if (a.name > b.name) return 1; + return 0; + } + function checkDeclarationsAnyOrder(block, props, msg) { + let actual = []; + for (let name of block) { + let value = block.getPropertyValue(name); + let priority = block.getPropertyPriority(name); + actual.push({name, value, priority}); + } + actual.sort(compareByName); + let expected = Array.from(props); + expected.sort(compareByName); + assert_object_equals(actual, expected, "Declaration block content should match " + msg); + } + function longhand(name, value, priority="") { + return {name, value, priority}; + } + function* shorthand(name, value, priority="") { + for (let subprop of SUBPROPS[name]) { + yield longhand(subprop, value, priority); + } + } + + const SUBPROPS = { + "margin": ["margin-top", "margin-right", "margin-bottom", "margin-left"], + "padding": ["padding-top", "padding-right", "padding-bottom", "padding-left"], + }; + + test(function() { + let expectedDecls = [ + longhand("top", "1px"), + longhand("bottom", "2px"), + longhand("left", "3px", "important"), + longhand("right", "4px"), + ]; + let block = generateCSSDeclBlock(expectedDecls); + checkDeclarationsAnyOrder(block, expectedDecls, "in initial block"); + + block.setProperty("top", "5px", "important"); + expectedDecls[0] = longhand("top", "5px", "important"); + checkDeclarationsAnyOrder(block, expectedDecls, "after setting existing property"); + + block.setProperty("bottom", "2px"); + checkDeclarationsAnyOrder(block, expectedDecls, "after setting existing property with identical value"); + + block.setProperty("left", "3px"); + expectedDecls[2].priority = ""; + checkDeclarationsAnyOrder(block, expectedDecls, "after setting existing property with different priority"); + + block.setProperty("float", "none"); + expectedDecls.push(longhand("float", "none")); + checkDeclarationsAnyOrder(block, expectedDecls, "after setting non-existing property"); + }, "setProperty with longhand should update only the declaration being set"); + + test(function() { + let expectedDecls = [ + longhand("top", "1px"), + longhand("bottom", "2px"), + longhand("left", "3px", "important"), + longhand("right", "4px"), + ]; + let block = generateCSSDeclBlock(expectedDecls); + checkDeclarationsAnyOrder(block, expectedDecls, "in initial block"); + + block.top = "5px"; + expectedDecls[0] = longhand("top", "5px"); + checkDeclarationsAnyOrder(block, expectedDecls, "after setting existing property"); + + block.bottom = "2px"; + checkDeclarationsAnyOrder(block, expectedDecls, "after setting existing property with identical value"); + + block.left = "3px"; + expectedDecls[2].priority = ""; + checkDeclarationsAnyOrder(block, expectedDecls, "after setting existing property with different priority"); + + block.float = "none"; + expectedDecls.push(longhand("float", "none")); + checkDeclarationsAnyOrder(block, expectedDecls, "after setting non-existing property"); + }, "property setter should update only the declaration being set"); + + test(function() { + let expectedDecls = [ + ...shorthand("margin", "1px"), + longhand("top", "2px"), + ...shorthand("padding", "3px", "important"), + ]; + let block = generateCSSDeclBlock(expectedDecls); + checkDeclarationsAnyOrder(block, expectedDecls, "in initial block"); + + block.setProperty("margin", "4px"); + for (let i = 0; i < 4; i++) { + expectedDecls[i].value = "4px"; + } + checkDeclarationsAnyOrder(block, expectedDecls, "after setting an existing shorthand"); + + block.setProperty("margin", "4px"); + checkDeclarationsAnyOrder(block, expectedDecls, "after setting an existing shorthand with identical value"); + + block.setProperty("padding", "3px"); + for (let i = 5; i < 9; i++) { + expectedDecls[i].priority = ""; + } + checkDeclarationsAnyOrder(block, expectedDecls, "after setting an existing shorthand with different priority"); + + block.setProperty("margin-bottom", "5px", "important"); + expectedDecls[2] = longhand("margin-bottom", "5px", "important"); + checkDeclarationsAnyOrder(block, expectedDecls, "after setting a longhand in an existing shorthand"); + }, "setProperty with shorthand should update only the declarations being set"); + + test(function() { + let expectedDecls = [ + ...shorthand("margin", "1px"), + longhand("top", "2px"), + ...shorthand("padding", "3px", "important"), + ]; + let block = generateCSSDeclBlock(expectedDecls); + checkDeclarationsAnyOrder(block, expectedDecls, "in initial block"); + + block.margin = "4px"; + for (let i = 0; i < 4; i++) { + expectedDecls[i].value = "4px"; + } + checkDeclarationsAnyOrder(block, expectedDecls, "after setting an existing shorthand"); + + block.margin = "4px"; + checkDeclarationsAnyOrder(block, expectedDecls, "after setting an existing shorthand with identical value"); + + block.padding = "3px"; + for (let i = 5; i < 9; i++) { + expectedDecls[i].priority = ""; + } + checkDeclarationsAnyOrder(block, expectedDecls, "after setting an existing shorthand with different priority"); + + block.marginBottom = "5px"; + expectedDecls[2] = longhand("margin-bottom", "5px"); + checkDeclarationsAnyOrder(block, expectedDecls, "after setting a longhand in an existing shorthand"); + }, "longhand property setter should update only the decoarations being set"); +</script> diff --git a/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-setter-logical.html b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-setter-logical.html new file mode 100644 index 00000000000..13d68e9a702 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-setter-logical.html @@ -0,0 +1,73 @@ +<!DOCTYPE html> +<title>CSSOM test: declaration block after setting via CSSOM</title> +<link rel="help" href="https://drafts.csswg.org/cssom/#set-a-css-declaration-value"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<div id="test"></div> +<script> + test(function() { + const PHYSICAL_PROPS = ["padding-top", "padding-right", + "padding-bottom", "padding-left"]; + const LOGICAL_PROPS = ["padding-block-start", "padding-block-end", + "padding-inline-start", "padding-inline-end"]; + let elem = document.getElementById("test"); + let decls = new Map; + + { + let css = [] + let i = 0; + for (let name of [...PHYSICAL_PROPS, ...LOGICAL_PROPS]) { + let value = `${i++}px`; + css.push(`${name}: ${value};`); + decls.set(name, value); + } + elem.setAttribute("style", css.join(" ")); + } + + let style = elem.style; + function indexOfProperty(prop) { + return Array.prototype.indexOf.apply(style, [prop]); + } + function assertPropAfterProps(prop, props, msg) { + let index = indexOfProperty(prop); + for (let p of props) { + assert_less_than(indexOfProperty(p), index, `${prop} should be after ${p} ${msg}`); + } + } + // We are not changing any value in this test, just order. + function assertValueUnchanged() { + for (let [name, value] of decls.entries()) { + assert_equals(style.getPropertyValue(name), value, + `value of ${name} shouldn't be changed`); + } + } + + assertValueUnchanged(); + // Check that logical properties are all after physical properties + // at the beginning. + for (let p of LOGICAL_PROPS) { + assertPropAfterProps(p, PHYSICAL_PROPS, "initially"); + } + + // Try setting a longhand. + style.setProperty("padding-top", "0px"); + assertValueUnchanged(); + // Check that padding-top is after logical properties, but other + // physical properties are still before logical properties. + assertPropAfterProps("padding-top", LOGICAL_PROPS, "after setting padding-top"); + for (let p of LOGICAL_PROPS) { + assertPropAfterProps(p, PHYSICAL_PROPS.filter(prop => prop != "padding-top"), + "after setting padding-top"); + } + + // Try setting a shorthand. + style.setProperty("padding", "0px 1px 2px 3px"); + assertValueUnchanged(); + // Check that all physical properties are now after logical properties. + for (let p of PHYSICAL_PROPS) { + assertPropAfterProps(p, LOGICAL_PROPS, "after setting padding shorthand"); + } + }, "newly set declaration should be after all declarations " + + "in the same logical property group but have different logical kind"); +</script> diff --git a/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-setter-order.html b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-setter-order.html deleted file mode 100644 index 702b38fef06..00000000000 --- a/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-setter-order.html +++ /dev/null @@ -1,108 +0,0 @@ -<!DOCTYPE html> -<title>CSSOM test: order of declarations after setting via CSSOM</title> -<link rel="help" href="https://drafts.csswg.org/cssom/#set-a-css-declaration-value"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<div id="log"></div> -<script> - function generateCSSDeclBlock(props) { - let elem = document.createElement("div"); - let cssText = props.map(([prop, value]) => `${prop}: ${value};`).join(" "); - elem.setAttribute("style", cssText); - return elem.style; - } - function checkOrder(block, props, msg) { - assert_array_equals(Array.from(block), props, `Property order should match ${msg}`); - } - function arrayWithItemsAtEnd(array, items) { - let result = array.filter(item => !items.includes(item)); - return result.concat(items); - } - - const SUBPROPS = { - "margin": ["margin-top", "margin-right", "margin-bottom", "margin-left"], - "padding": ["padding-top", "padding-right", "padding-bottom", "padding-left"], - }; - - test(function() { - let block = generateCSSDeclBlock([ - ["top", "1px"], - ["bottom", "2px"], - ["left", "3px"], - ["right", "4px"], - ]); - let expectedOrder = ["top", "bottom", "left", "right"]; - checkOrder(block, expectedOrder, "in initial block"); - - block.setProperty("top", "5px"); - expectedOrder = arrayWithItemsAtEnd(expectedOrder, ["top"]); - checkOrder(block, expectedOrder, "after setting existing property"); - - block.setProperty("bottom", "2px"); - expectedOrder = arrayWithItemsAtEnd(expectedOrder, ["bottom"]); - checkOrder(block, expectedOrder, "after setting existing property with identical value"); - }, "setProperty with existing longhand should change order"); - - test(function() { - let block = generateCSSDeclBlock([ - ["top", "1px"], - ["bottom", "2px"], - ["left", "3px"], - ["right", "4px"], - ]); - let expectedOrder = ["top", "bottom", "left", "right"]; - checkOrder(block, expectedOrder, "in initial block"); - - block.top = "5px"; - expectedOrder = arrayWithItemsAtEnd(expectedOrder, ["top"]); - checkOrder(block, expectedOrder, "after setting existing property"); - - block.bottom = "2px"; - expectedOrder = arrayWithItemsAtEnd(expectedOrder, ["bottom"]); - checkOrder(block, expectedOrder, "after setting existing property with identical value"); - }, "invoke property setter with existing longhand should change order"); - - test(function() { - let block = generateCSSDeclBlock([ - ["margin", "1px"], - ["top", "2px"], - ["padding", "3px"], - ]); - let expectedOrder = SUBPROPS["margin"].concat(["top"]).concat(SUBPROPS["padding"]); - checkOrder(block, expectedOrder, "in initial block"); - - block.setProperty("margin", "4px"); - expectedOrder = arrayWithItemsAtEnd(expectedOrder, SUBPROPS["margin"]); - checkOrder(block, expectedOrder, "after setting an existing shorthand"); - - block.setProperty("padding", "3px"); - expectedOrder = arrayWithItemsAtEnd(expectedOrder, SUBPROPS["padding"]); - checkOrder(block, expectedOrder, "after setting an existing shorthand with identical value"); - - block.setProperty("margin-bottom", "5px"); - expectedOrder = arrayWithItemsAtEnd(expectedOrder, ["margin-bottom"]); - checkOrder(block, expectedOrder, "after setting a longhand in an existing shorthand"); - }, "setProperty with existing shorthand should change order"); - - test(function() { - let block = generateCSSDeclBlock([ - ["margin", "1px"], - ["top", "2px"], - ["padding", "3px"], - ]); - let expectedOrder = SUBPROPS["margin"].concat(["top"]).concat(SUBPROPS["padding"]); - checkOrder(block, expectedOrder, "in initial block"); - - block.margin = "4px"; - expectedOrder = arrayWithItemsAtEnd(expectedOrder, SUBPROPS["margin"]); - checkOrder(block, expectedOrder, "after setting an existing shorthand"); - - block.padding = "3px"; - expectedOrder = arrayWithItemsAtEnd(expectedOrder, SUBPROPS["padding"]); - checkOrder(block, expectedOrder, "after setting an existing shorthand with identical value"); - - block.marginBottom = "5px"; - expectedOrder = arrayWithItemsAtEnd(expectedOrder, ["margin-bottom"]); - checkOrder(block, expectedOrder, "after setting a longhand in an existing shorthand"); - }, "invoke property setter with existing shorthand should change order"); -</script> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-safe-overflow-position-001-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-safe-overflow-position-001-ref.html new file mode 100644 index 00000000000..b921f35ca3b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-safe-overflow-position-001-ref.html @@ -0,0 +1,73 @@ +<!DOCTYPE html> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0 +--> +<html> +<head> + <title>Reference: Testing safe overflow-position for align-content, justify-content, and align-items in flex containers</title> + <link rel="author" title="Mihir Iyer" href="mailto:miyer@mozilla.com"> + <meta charset="utf-8"> + <style> + .flex { + display: flex; + width: 85px; + height: 65px; + border: 1px solid black; + align-content: flex-end; + justify-content: center; + align-items: center; + float: left; + clear: both; + margin-top: 100px; + } + .rowNoWrap { + flex-flow: row nowrap; + } + .columnNoWrap { + flex-flow: column wrap; + } + .item { + border: 1px solid blue; + background: lightblue; + width: 28px; + height: 28px; + flex-shrink: 0; + } + .bigItem { + border: 1px solid blue; + background: lightblue; + width: 28px; + height: 90px; + flex-shrink: 0; + } + .alignContentStart { + align-content: start; + } + .justifyContentStart { + justify-content: start; + } + .alignSelfStart { + align-self: start; + } + </style> +</head> +<body> + <div class="flex rowNoWrap justifyContentStart"> + <div class="item"></div> + <div class="item"></div> + <div class="bigItem alignSelfStart"></div> + <div class="item"></div> + <div class="item"></div> + <div class="item"></div> + </div> + <div class="flex columnNoWrap alignContentStart"> + <div class="item"></div> + <div class="item"></div> + <div class="item"></div> + <div class="item"></div> + <div class="item"></div> + <div class="item"></div> + </div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-safe-overflow-position-001.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-safe-overflow-position-001.html new file mode 100644 index 00000000000..8114832aa34 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-safe-overflow-position-001.html @@ -0,0 +1,66 @@ +<!DOCTYPE html> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0 +--> +<html> +<head> + <title>CSS Test: Testing safe overflow-position for align-content, justify-content, and align-items in flex containers</title> + <link rel="author" title="Mihir Iyer" href="mailto:miyer@mozilla.com"> + <link rel="help" href="https://drafts.csswg.org/css-align-3/#overflow-values"> + <link rel="match" href="flexbox-safe-overflow-position-001-ref.html"> + <meta charset="utf-8"> + <style> + .flex { + display: flex; + width: 85px; + height: 65px; + border: 1px solid black; + align-content: safe flex-end; + justify-content: safe center; + align-items: safe center; + float: left; + clear: both; + margin-top: 100px; + } + .rowNoWrap { + flex-flow: row nowrap; + } + .columnNoWrap { + flex-flow: column wrap; + } + .item { + border: 1px solid blue; + background: lightblue; + width: 28px; + height: 28px; + flex-shrink: 0; + } + .bigItem { + border: 1px solid blue; + background: lightblue; + width: 28px; + height: 90px; + flex-shrink: 0; + } + </style> +</head> +<body> + <div class="flex rowNoWrap"> + <div class="item"></div> + <div class="item"></div> + <div class="bigItem"></div> + <div class="item"></div> + <div class="item"></div> + <div class="item"></div> + </div> + <div class="flex columnNoWrap"> + <div class="item"></div> + <div class="item"></div> + <div class="item"></div> + <div class="item"></div> + <div class="item"></div> + <div class="item"></div> + </div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list index 82c9ce650b5..327753ed6ac 100644 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list @@ -214,6 +214,9 @@ == flexbox-root-node-001a.html flexbox-root-node-001-ref.html == flexbox-root-node-001b.html flexbox-root-node-001-ref.html +# Tests for <overflow-position> "safe" keyword in CSS Alignment properties +== flexbox-safe-overflow-position-001.html flexbox-safe-overflow-position-001-ref.html + # Tests for sizing of flex containers, e.g. under min/max size constraints == flexbox-sizing-horiz-001.xhtml flexbox-sizing-horiz-001-ref.xhtml == flexbox-sizing-horiz-002.xhtml flexbox-sizing-horiz-002-ref.xhtml diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/sync-tests.sh b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/sync-tests.sh index b5f358b8f0a..bff8f3b3f88 100755 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/sync-tests.sh +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/sync-tests.sh @@ -25,4 +25,4 @@ rsync -avz --delete --filter=". ./sync-tests-filter" "$MOZTREE"/layout/reftests/ sed -i -e 's/^\(\(fails\|needs-focus\|random\|skip\|asserts\|slow\|require-or\|silentfail\|pref\|test-pref\|ref-pref\|fuzzy\)[^ ]* *\?\)\+//;/^default-preferences /d;s/ \?# \?\(TC: \)\?[bB]ug.*//;s/ # Initial mulet triage:.*//' $(find . -name reftest.list) sed -i -e 's/-moz-crisp-edges/pixelated/g;s/-moz-min-content/min-content/g;s/-moz-max-content/max-content/g' $(find . -regex ".*\.\(xht\|xhtml\|html\|css\)") git add -A . -git commit -m"Sync Mozilla tests as of https://hg.mozilla.org/mozilla-central/rev/$MOZREV ." . +git commit -m"Sync Mozilla tests as of https://hg.mozilla.org/mozilla-central/rev/$MOZREV ." -e . diff --git a/tests/wpt/web-platform-tests/interfaces/animation-worklet.idl b/tests/wpt/web-platform-tests/interfaces/animation-worklet.idl new file mode 100644 index 00000000000..762c4432467 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/animation-worklet.idl @@ -0,0 +1,36 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the +// "CSS Animation Worklet API" spec. +// See: https://wicg.github.io/animation-worklet/ + +partial interface Window { + [SameObject] readonly attribute Worklet animationWorklet; +}; + +callback VoidFunction = void (); + +[ Exposed=AnimationWorklet, Global=AnimationWorklet ] +interface AnimationWorkletGlobalScope : WorkletGlobalScope { + void registerAnimator(DOMString name, VoidFunction animatorCtor); +}; + +[Constructor (DOMString animatorName, + optional (AnimationEffectReadOnly or sequence)? effects = null, + optional AnimationTimeline? timeline, + optional any options)] +interface WorkletAnimation : Animation { + readonly attribute DOMString animatorName; +}; + + +interface WorkletGroupEffectReadOnly : GroupEffectReadOnly {}; + +interface WorkletGroupEffect : WorkletGroupEffectReadOnly {}; +WorkletGroupEffect implements AnimationEffectMutable; +WorkletGroupEffect implements GroupEffectMutable; + +[Exposed=AnimationWorklet] +partial interface AnimationEffectReadOnly { + // Intended for use inside Animation Worklet scope to drive the effect. + attribute double localTime; +}; diff --git a/tests/wpt/web-platform-tests/interfaces/console.idl b/tests/wpt/web-platform-tests/interfaces/console.idl index 7351bfcfdff..32729ecade1 100644 --- a/tests/wpt/web-platform-tests/interfaces/console.idl +++ b/tests/wpt/web-platform-tests/interfaces/console.idl @@ -1,9 +1,13 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the +// "Console Standard" spec. +// See: https://console.spec.whatwg.org/ + [Exposed=(Window,Worker,Worklet)] namespace console { // but see namespace object requirements below // Logging void assert(optional boolean condition = false, any... data); void clear(); - void count(optional DOMString label = "default"); void debug(any... data); void error(any... data); void info(any... data); @@ -14,6 +18,10 @@ namespace console { // but see namespace object requirements below void dir(any item, optional object? options); void dirxml(any... data); + // Counting + void count(optional DOMString label = "default"); + void countReset(optional DOMString label = "default"); + // Grouping void group(any... data); void groupCollapsed(any... data); @@ -21,5 +29,6 @@ namespace console { // but see namespace object requirements below // Timing void time(optional DOMString label = "default"); + void timeLog(optional DOMString label = "default", any... data); void timeEnd(optional DOMString label = "default"); }; diff --git a/tests/wpt/web-platform-tests/interfaces/paint-timing.idl b/tests/wpt/web-platform-tests/interfaces/paint-timing.idl new file mode 100644 index 00000000000..88ca6c7ce62 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/paint-timing.idl @@ -0,0 +1,6 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the +// "Paint Timing 1" spec. +// See: https://w3c.github.io/paint-timing/ + +interface PerformancePaintTiming : PerformanceEntry {}; diff --git a/tests/wpt/web-platform-tests/paint-timing/idlharness.window.js b/tests/wpt/web-platform-tests/paint-timing/idlharness.window.js new file mode 100644 index 00000000000..f108cc4ed12 --- /dev/null +++ b/tests/wpt/web-platform-tests/paint-timing/idlharness.window.js @@ -0,0 +1,28 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +'use strict'; + +// https://w3c.github.io/paint-timing/ + +idl_test( + ['paint-timing'], + ['performance-timeline'], + (idl_array, t) => { + idl_array.add_objects({ + PerformancePaintTiming: ['paintTiming'], + }); + + const awaitPaint = new Promise(resolve => { + let observer = new PerformanceObserver(list => { + self.paintTiming = list.getEntries()[0]; + resolve(); + }); + observer.observe({ entryTypes: ['paint'] }); + }); + const timeout = new Promise((_, reject) => { + t.step_timeout(() => reject('Timed out waiting for paint event'), 3000); + }); + return Promise.race([awaitPaint, timeout]); + }, + 'paint-timing interfaces.'); diff --git a/tests/wpt/web-platform-tests/payment-request/payment-request-show-method-manual.https.html b/tests/wpt/web-platform-tests/payment-request/payment-request-show-method-manual.https.html deleted file mode 100644 index 57cd26b47d5..00000000000 --- a/tests/wpt/web-platform-tests/payment-request/payment-request-show-method-manual.https.html +++ /dev/null @@ -1,95 +0,0 @@ -<!DOCTYPE html> -<meta charset="utf-8"> -<title>Test for PaymentRequest.show() method</title> -<link rel="help" href="https://w3c.github.io/browser-payment-api/#show-method"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script> -"use strict"; -setup({ - explicit_done: true, - explicit_timeout: true, -}); -const basicCard = Object.freeze({ supportedMethods: "basic-card" }); -const defaultMethods = Object.freeze([basicCard]); -const defaultDetails = Object.freeze({ - total: { - label: "Total", - amount: { - currency: "USD", - value: "1.00", - }, - }, -}); - -test(() => { - try { - new PaymentRequest(defaultMethods, defaultDetails); - } catch (err) { - done(); - throw err; - } -}, "Must be possible to construct a payment request"); - -function manualTest1(button){ - button.disabled = true; - promise_test(async t => { - const request = new PaymentRequest(defaultMethods, defaultDetails); - const acceptPromise = request.show(); // Sets state to "interactive" - await promise_rejects(t, "InvalidStateError", request.show()); - await request.abort(); - await promise_rejects(t, "AbortError", acceptPromise); - }, button.textContent.trim()); -} - -function manualTest2(button){ - button.disabled = true; - promise_test(async t => { - const request1 = new PaymentRequest(defaultMethods, defaultDetails); - const request2 = new PaymentRequest(defaultMethods, defaultDetails); - const acceptPromise1 = request1.show(); - const acceptPromise2 = request2.show(); - await promise_rejects(t, "AbortError", acceptPromise2); - await request1.abort(); - await promise_rejects(t, "AbortError", acceptPromise1); - }, button.textContent.trim()); -} - -function manualTest3(button){ - button.disabled = true; - promise_test(async t => { - const request = new PaymentRequest( - [{ supportedMethods: "this-is-not-supported" }], - defaultDetails); - const acceptPromise = request.show(); - await promise_rejects(t, "NotSupportedError", acceptPromise); - }, button.textContent.trim()); - done(); -} -</script> - -<h2>Test for PaymentRequest.show() method</h2> -<p> - Click on each button in sequence from top to bottom without refreshing the page. -</p> -<ol> - <li> - <button onclick="manualTest1(this)"> - Throws if the promise [[state]] is not "created" - </button> - </li> - <li> - <button onclick="manualTest2(this)"> - If the user agent's "payment request is showing" boolean is true, then return a promise rejected with an "AbortError" DOMException. - </button> - </li> - <li> - <button onclick="manualTest3(this)"> - If payment method consultation produces no supported method of payment, then return a promise rejected with a "NotSupportedError" DOMException. - </button> - </li> -</ol> -<small> - If you find a buggy test, please <a href="https://github.com/web-platform-tests/wpt/issues">file a bug</a> - and tag one of the <a href="https://github.com/web-platform-tests/wpt/blob/master/payment-request/META.yml">suggested reviewers</a>. -</small> diff --git a/tests/wpt/web-platform-tests/payment-request/payment-request-show-method.https.html b/tests/wpt/web-platform-tests/payment-request/payment-request-show-method.https.html index 147e55dfe5c..38ab786b431 100644 --- a/tests/wpt/web-platform-tests/payment-request/payment-request-show-method.https.html +++ b/tests/wpt/web-platform-tests/payment-request/payment-request-show-method.https.html @@ -1,12 +1,15 @@ <!DOCTYPE html> -<!-- Copyright © 2017 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> <meta charset="utf-8"> <title>Test for PaymentRequest.show() method</title> <link rel="help" href="https://w3c.github.io/browser-payment-api/#show-method"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<button id="button"></button> <script> 'use strict'; +const button = document.getElementById("button"); const defaultMethods = Object.freeze([ { supportedMethods: "basic-card" }, { supportedMethods: "https://apple.com/apple-pay" } @@ -27,4 +30,40 @@ promise_test(async t => { const acceptPromise = request.show(); await promise_rejects(t, "SecurityError", acceptPromise); }, `Calling show() without being triggered by user interaction throws`); + +promise_test(async t => { + button.onclick = async () => { + const request = new PaymentRequest(defaultMethods, defaultDetails); + const acceptPromise = request.show(); // Sets state to "interactive" + await promise_rejects(t, "InvalidStateError", request.show()); + await request.abort(); + await promise_rejects(t, "AbortError", acceptPromise); + }; + await test_driver.click(button); +}, "Throws if the promise [[state]] is not 'created'."); + +promise_test(async t => { + button.onclick = async () => { + const request1 = new PaymentRequest(defaultMethods, defaultDetails); + const request2 = new PaymentRequest(defaultMethods, defaultDetails); + const acceptPromise1 = request1.show(); + const acceptPromise2 = request2.show(); + await promise_rejects(t, "AbortError", acceptPromise2); + await request1.abort(); + await promise_rejects(t, "AbortError", acceptPromise1); + }; + await test_driver.click(button); +}, `If the user agent's "payment request is showing" boolean is true, then return a promise rejected with an "AbortError" DOMException.`); + +promise_test(async t => { + button.onclick = async () => { + const request = new PaymentRequest( + [{ supportedMethods: "this-is-not-supported" }], + defaultDetails + ); + const acceptPromise = request.show(); + await promise_rejects(t, "NotSupportedError", acceptPromise); + }; + await test_driver.click(button); +}, `If payment method consultation produces no supported method of payment, then return a promise rejected with a "NotSupportedError" DOMException.`); </script> diff --git a/tests/wpt/web-platform-tests/payment-request/payment-response/complete-method-manual.https.html b/tests/wpt/web-platform-tests/payment-request/payment-response/complete-method-manual.https.html index 9c87b75b78b..64d5c537ed9 100644 --- a/tests/wpt/web-platform-tests/payment-request/payment-response/complete-method-manual.https.html +++ b/tests/wpt/web-platform-tests/payment-request/payment-response/complete-method-manual.https.html @@ -11,7 +11,7 @@ async function runManualTest({ completeWith: result }, button) { button.disabled = true; const { response, request } = await getPaymentRequestResponse(); - promise_test(async () => { + promise_test(async t => { try { // We .complete() as normal, using the passed test value const promise = response.complete(result); diff --git a/tests/wpt/web-platform-tests/resources/idlharness.js b/tests/wpt/web-platform-tests/resources/idlharness.js index c20755fdb16..bfb25820b64 100644 --- a/tests/wpt/web-platform-tests/resources/idlharness.js +++ b/tests/wpt/web-platform-tests/resources/idlharness.js @@ -3167,27 +3167,32 @@ IdlNamespace.prototype.test = function () * as adding objects. Do not call idl_array.test() in the setup; it is * called by this function (idl_test). */ -function idl_test(srcs, deps, setup_func, test_name) { +function idl_test(srcs, deps, idl_setup_func, test_name) { return promise_test(function (t) { var idl_array = new IdlArray(); srcs = (srcs instanceof Array) ? srcs : [srcs] || []; deps = (deps instanceof Array) ? deps : [deps] || []; return Promise.all( - srcs.concat(deps).map(function(i) { - return fetch('/interfaces/' + i + '.idl').then(function(r) { + srcs.concat(deps).map(function(spec) { + return fetch('/interfaces/' + spec + '.idl').then(function(r) { return r.text(); }); - })).then(function(idls) { + })) + .then(function(idls) { for (var i = 0; i < srcs.length; i++) { idl_array.add_idls(idls[i]); } for (var i = srcs.length; i < srcs.length + deps.length; i++) { idl_array.add_dependency_idls(idls[i]); } - if (setup_func) { - setup_func(idl_array) - }; - idl_array.test(); + }) + .then(function() { + return idl_setup_func(idl_array, t); + }) + .then(function() { idl_array.test(); }) + .catch(function (reason) { + idl_array.test(); // Test what we can. + return Promise.reject(reason || 'IDL setup failed.'); }); }, test_name); } diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/base.py b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/base.py index 0c240689cee..ad8109822a8 100644 --- a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/base.py +++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/base.py @@ -9,7 +9,7 @@ import unittest from six.moves.urllib.parse import urlencode, urlunsplit from six.moves.urllib.request import Request as BaseRequest from six.moves.urllib.request import urlopen -from six import iteritems +from six import binary_type, iteritems wptserve = pytest.importorskip("wptserve") @@ -31,10 +31,16 @@ class Request(BaseRequest): def add_data(self, data): if hasattr(data, "items"): - data = urlencode(data) - print(data) + data = urlencode(data).encode("ascii") + + assert isinstance(data, binary_type) + + if hasattr(BaseRequest, "add_data"): + BaseRequest.add_data(self, data) + else: + self.data = data + self.add_header("Content-Length", str(len(data))) - BaseRequest.add_data(self, data) class TestUsingServer(unittest.TestCase): diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_stash.py b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_stash.py index 32be1d33bd8..309dd9e577a 100644 --- a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_stash.py +++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_stash.py @@ -1,4 +1,3 @@ -import sys import unittest import uuid @@ -15,7 +14,6 @@ class TestResponseSetCookie(TestUsingServer): with StashServer(None, authkey=str(uuid.uuid4())): super(TestResponseSetCookie, self).run(result) - @pytest.mark.xfail(sys.version_info >= (3,), reason="wptserve only works on Py2") def test_put_take(self): @wptserve.handlers.handler def handler(request, response): @@ -33,13 +31,13 @@ class TestResponseSetCookie(TestUsingServer): self.server.router.register(*route) resp = self.request(route[1], method="POST", body={"id": id, "data": "Sample data"}) - self.assertEqual(resp.read(), "OK") + self.assertEqual(resp.read(), b"OK") resp = self.request(route[1], query="id=" + id) - self.assertEqual(resp.read(), "Sample data") + self.assertEqual(resp.read(), b"Sample data") resp = self.request(route[1], query="id=" + id) - self.assertEqual(resp.read(), "NOT FOUND") + self.assertEqual(resp.read(), b"NOT FOUND") if __name__ == '__main__': diff --git a/tests/wpt/web-platform-tests/trusted-types/HTMLAnchorElement-href.tentative.html b/tests/wpt/web-platform-tests/trusted-types/HTMLAnchorElement-href.tentative.html new file mode 100644 index 00000000000..33c8989642a --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/HTMLAnchorElement-href.tentative.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="support/helper.sub.js"></script> +<body> +<script> + //helper function for the tests + function testHref(str, url) { + var a = document.createElement('a'); + a.href = url; + assert_equals(a.href, str); + } + + test(t => { + testHref(URLS.safe, TrustedURL.create(URLS.safe)); + }, "a.href = URLS.safe, TrustedURL.create"); + + test(t => { + testHref(URLS.safe, TrustedURL.unsafelyCreate(URLS.safe)); + }, "a.href = URLS.safe, TrustedURL.unsafelyCreate"); +</script> diff --git a/tests/wpt/web-platform-tests/trusted-types/HTMLAreaElement-href.tentative.html b/tests/wpt/web-platform-tests/trusted-types/HTMLAreaElement-href.tentative.html new file mode 100644 index 00000000000..8ac509d34b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/HTMLAreaElement-href.tentative.html @@ -0,0 +1,25 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="support/helper.sub.js"></script> +<body> + <map> + <script> + //helper function for the tests + function testHref(str, url) { + var area = document.createElement('area'); + area.href = url; + area.alt = "Area"; + assert_equals(area.href, str); + } + + test(t => { + testHref(URLS.safe, TrustedURL.create(URLS.safe)); + }, "area.href = URLS.safe, TrustedURL.create"); + + test(t => { + testHref(URLS.safe, TrustedURL.unsafelyCreate(URLS.safe)); + }, "area.href = URLS.safe, TrustedURL.unsafelyCreate"); + </script> + </map> +</body> diff --git a/tests/wpt/web-platform-tests/trusted-types/HTMLIFrameElement-src.tentative.html b/tests/wpt/web-platform-tests/trusted-types/HTMLIFrameElement-src.tentative.html new file mode 100644 index 00000000000..6e89a0f397e --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/HTMLIFrameElement-src.tentative.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="./support/helper.sub.js"></script> + +<body> +<script> + test(t => { + var url = TrustedURL.create(URLS.safe); + + var d = document.createElement('iframe'); + d.src = url; + assert_equals("" + d.src, URLS.safe); + }, "src = TrustedURL.create()."); + + test(t => { + var url = TrustedURL.unsafelyCreate(URLS.safe); + + var d = document.createElement('iframe'); + d.src = url; + assert_equals("" + d.src, URLS.safe); + }, "src = TrustedURL.unsafelyCreate()."); +</script> diff --git a/tests/wpt/web-platform-tests/trusted-types/HTMLImageElement-src.tentative.html b/tests/wpt/web-platform-tests/trusted-types/HTMLImageElement-src.tentative.html index e4c0a3e3041..5797aa5079e 100644 --- a/tests/wpt/web-platform-tests/trusted-types/HTMLImageElement-src.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/HTMLImageElement-src.tentative.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="./support/helper.js"></script> +<script src="./support/helper.sub.js"></script> <body> <script> diff --git a/tests/wpt/web-platform-tests/trusted-types/HTMLLinkElement-href.tentative.html b/tests/wpt/web-platform-tests/trusted-types/HTMLLinkElement-href.tentative.html new file mode 100644 index 00000000000..7f6e7e23e87 --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/HTMLLinkElement-href.tentative.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="support/helper.sub.js"></script> +<body> +<script> + //helper function for the tests + function testHref(str, url) { + var link = document.createElement('link'); + link.href = url; + assert_equals(link.href, str); + } + + test(t => { + testHref(URLS.safe, TrustedURL.create(URLS.safe)); + }, "link.href = URLS.safe, TrustedURL.create"); + + test(t => { + testHref(URLS.safe, TrustedURL.unsafelyCreate(URLS.safe)); + }, "link.href = URLS.safe, TrustedURL.unsafelyCreate"); +</script> diff --git a/tests/wpt/web-platform-tests/trusted-types/HTMLMediaElement-src.tentative.html b/tests/wpt/web-platform-tests/trusted-types/HTMLMediaElement-src.tentative.html index ece95eaf8e6..c54dfddd827 100644 --- a/tests/wpt/web-platform-tests/trusted-types/HTMLMediaElement-src.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/HTMLMediaElement-src.tentative.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="./support/helper.js"></script> +<script src="./support/helper.sub.js"></script> <body> <script> diff --git a/tests/wpt/web-platform-tests/trusted-types/HTMLObjectElement.tentative.html b/tests/wpt/web-platform-tests/trusted-types/HTMLObjectElement.tentative.html new file mode 100644 index 00000000000..a9dcc94a43b --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/HTMLObjectElement.tentative.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="support/helper.sub.js"></script> +<body> +<script> + //helper function for the tests + function testData(str, url) { + var objectElement = document.createElement('object'); + objectElement.data = url; + objectElement.codeBase = url; + assert_equals(objectElement.data, str); + assert_equals(objectElement.codeBase,str); + } + + test(t => { + testData(URLS.safe, TrustedURL.create(URLS.safe)); + }, "Basic processing: safe URL, safe construction."); + + test(t => { + testData(URLS.safe, TrustedURL.unsafelyCreate(URLS.safe)); + }, "Basic processing: safe URL, unsafe construction."); +</script> diff --git a/tests/wpt/web-platform-tests/trusted-types/HTMLSourceElement-src.tentative.html b/tests/wpt/web-platform-tests/trusted-types/HTMLSourceElement-src.tentative.html index e32a1fcb47d..6791a0fc118 100644 --- a/tests/wpt/web-platform-tests/trusted-types/HTMLSourceElement-src.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/HTMLSourceElement-src.tentative.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="./support/helper.js"></script> +<script src="./support/helper.sub.js"></script> <body> <script> test(t => { diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLAnchorElement-href.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLAnchorElement-href.tentative.html new file mode 100644 index 00000000000..53334e2e810 --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLAnchorElement-href.tentative.html @@ -0,0 +1,43 @@ +<!DOCTYPE html> +<html> +<head> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="support/helper.sub.js"></script> + + <meta http-equiv="Content-Security-Policy" content="require-trusted-types"> +</head> +<body> +<script> + //helper function for the tests + function testHref(str, url) { + var a = document.createElement('a'); + a.href = url; + assert_equals(a.href, str); + } + + //URL assignments do not throw. + test(t => { + testHref(URLS.safe, TrustedURL.create(URLS.safe)); + }, "a.href = URLS.safe, TrustedURL.create"); + + test(t => { + testHref(URLS.safe, TrustedURL.unsafelyCreate(URLS.safe)); + }, "a.href = URLS.safe, TrustedURL.unsafelyCreate"); + + // String assignments throw. + test(t => { + var a = document.createElement('a'); + assert_throws(new TypeError(), _ => { + a.href = "A string"; + }); + }, "`a.href = string` throws"); + + //Null assignment throws. + test(t => { + var a = document.createElement('a'); + assert_throws(new TypeError(), _ => { + a.href = null; + }); + }, "`a.href = null` throws"); +</script> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLAreaElement-href.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLAreaElement-href.tentative.html new file mode 100644 index 00000000000..5879d1c330e --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLAreaElement-href.tentative.html @@ -0,0 +1,46 @@ +<!DOCTYPE html> +<html> +<head> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="support/helper.sub.js"></script> + + <meta http-equiv="Content-Security-Policy" content="require-trusted-types"> +</head> +<body> + <map> + <script> + //helper function for the tests + function testHref(str, url) { + var area = document.createElement('area'); + area.href = url; + area.alt = "Area"; + assert_equals(area.href, str); + } + + //URL assignments do not throw. + test(t => { + testHref(URLS.safe, TrustedURL.create(URLS.safe)); + }, "area.href = URLS.safe, TrustedURL.create"); + + test(t => { + testHref(URLS.safe, TrustedURL.unsafelyCreate(URLS.safe)); + }, "area.href = URLS.safe, TrustedURL.unsafelyCreate"); + + // String assignments throw. + test(t => { + var area = document.createElement('area'); + assert_throws(new TypeError(), _ => { + area.href = "A string"; + }); + }, "`area.href = string` throws"); + + //Null assignment throws. + test(t => { + var area = document.createElement('area'); + assert_throws(new TypeError(), _ => { + area.href = null; + }); + }, "`area.href = null` throws"); + </script> + </map> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLIFrameElement-src.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLIFrameElement-src.tentative.html new file mode 100644 index 00000000000..8db0d60cdeb --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLIFrameElement-src.tentative.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="./support/helper.sub.js"></script> + +<meta http-equiv="Content-Security-Policy" content="require-trusted-types"> +<body> +<script> + //URL assignments don't throw + test(t => { + var url = TrustedURL.create(URLS.safe); + + var d = document.createElement('iframe'); + d.src = url; + assert_equals("" + d.src, URLS.safe); + }, "src = TrustedURL.create()."); + + test(t => { + var url = TrustedURL.unsafelyCreate(URLS.safe); + + var d = document.createElement('iframe'); + d.src = url; + assert_equals("" + d.src, URLS.safe); + }, "src = TrustedURL.unsafelyCreate()."); + + //String assignment throws + test(t => { + var d = document.createElement('iframe'); + assert_throws(new TypeError(), _ => { + d.src = "Fail."; + }); + }, "'src = string' throws."); +</script> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLImageElement-src.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLImageElement-src.tentative.html index e2c7dcb61ea..44461067a3f 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLImageElement-src.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLImageElement-src.tentative.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="./support/helper.js"></script> +<script src="./support/helper.sub.js"></script> <meta http-equiv="Content-Security-Policy" content="require-trusted-types"> <body> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLLinkElement-href.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLLinkElement-href.tentative.html new file mode 100644 index 00000000000..11950da775e --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLLinkElement-href.tentative.html @@ -0,0 +1,43 @@ +<!DOCTYPE html> +<html> +<head> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="support/helper.sub.js"></script> + + <meta http-equiv="Content-Security-Policy" content="require-trusted-types"> +</head> +<body> +<script> + //helper function for the tests + function testHref(str, url) { + var link = document.createElement('link'); + link.href = url; + assert_equals(link.href, str); + } + + //URL assignments do not throw. + test(t => { + testHref(URLS.safe, TrustedURL.create(URLS.safe)); + }, "link.href = URLS.safe, TrustedURL.create"); + + test(t => { + testHref(URLS.safe, TrustedURL.unsafelyCreate(URLS.safe)); + }, "link.href = URLS.safe, TrustedURL.unsafelyCreate"); + + // String assignments throw. + test(t => { + var link = document.createElement('link'); + assert_throws(new TypeError(), _ => { + link.href = "A string"; + }); + }, "`link.href = string` throws"); + + //Null assignment throws. + test(t => { + var link = document.createElement('link'); + assert_throws(new TypeError(), _ => { + link.href = null; + }); + }, "`link.href = null` throws"); +</script> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLMediaElement-src.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLMediaElement-src.tentative.html index 8e4b03901af..38ac53f2027 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLMediaElement-src.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLMediaElement-src.tentative.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="./support/helper.js"></script> +<script src="./support/helper.sub.js"></script> <meta http-equiv="Content-Security-Policy" content="require-trusted-types"> <body> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLObjectElement.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLObjectElement.tentative.html new file mode 100644 index 00000000000..87e1f46464f --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLObjectElement.tentative.html @@ -0,0 +1,60 @@ +<!DOCTYPE html> +<html> +<head> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="support/helper.sub.js"></script> + + <meta http-equiv="Content-Security-Policy" content="require-trusted-types"> +</head> +<body> +<script> + //helper function for the tests + function testData(str, url) { + var objectElement = document.createElement('object'); + objectElement.data = url; + objectElement.codeBase = url; + assert_equals(objectElement.data, str); + assert_equals(objectElement.codeBase, str); + } + + //URL assignments do not throw + test(t => { + testData(URLS.safe, TrustedURL.create(URLS.safe)); + }, "Basic processing: safe URL, safe construction."); + + test(t => { + testData(URLS.safe, TrustedURL.unsafelyCreate(URLS.safe)); + }, "Basic processing: safe URL, unsafe construction."); + + //String assignments throw + test(t => { + var objectElement = document.createElement('object'); + assert_throws(new TypeError(), _ => { + objectElement.data = "A string"; + }); + }, "`objectElement.data = string` throws"); + + test(t => { + var objectElement = document.createElement('object'); + assert_throws(new TypeError(), _ => { + objectElement.codeBase = "A string"; + }); + }, "`objectElement.codeBase = string` throws"); + + //Null assignment throws. + test(t => { + var objectElement = document.createElement('object'); + assert_throws(new TypeError(), _ => { + objectElement.data = null; + }); + }, "`objectElement.data = null` throws"); + + //Null assignment throws. + test(t => { + var objectElement = document.createElement('object'); + assert_throws(new TypeError(), _ => { + objectElement.codeBase = null; + }); + }, "`objectElement.codeBase = null` throws"); +</script> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLSourceElement-src.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLSourceElement-src.tentative.html index 06262ff40a2..37ab90cd700 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLSourceElement-src.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLSourceElement-src.tentative.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="./support/helper.js"></script> +<script src="./support/helper.sub.js"></script> <meta http-equiv="Content-Security-Policy" content="require-trusted-types"> <body> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-embed-src.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-embed-src.tentative.html index 51d553f924c..005dfe20be6 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-embed-src.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-embed-src.tentative.html @@ -3,7 +3,7 @@ <head> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> - <script src="./support/helper.js"></script> + <script src="./support/helper.sub.js"></script> <meta http-equiv="Content-Security-Policy" content="require-trusted-types"> </head> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-frame-src.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-frame-src.tentative.html new file mode 100644 index 00000000000..c915e430a6d --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-frame-src.tentative.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="./support/helper.sub.js"></script> + +<meta http-equiv="Content-Security-Policy" content="require-trusted-types"> +<body> +<script> + //URL assignments don't throw + test(t => { + var url = TrustedURL.create(URLS.safe); + + var d = document.createElement('frame'); + d.src = url; + assert_equals("" + d.src, URLS.safe); + }, "src = TrustedURL.create()."); + + test(t => { + var url = TrustedURL.unsafelyCreate(URLS.safe); + + var d = document.createElement('frame'); + d.src = url; + assert_equals("" + d.src, URLS.safe); + }, "src = TrustedURL.unsafelyCreate()."); + + //String assignment throws + test(t => { + var d = document.createElement('frame'); + assert_throws(new TypeError(), _ => { + d.src = "Fail."; + }); + }, "'src = string' throws."); +</script> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-input-src.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-input-src.tentative.html new file mode 100644 index 00000000000..732ebe80d62 --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-input-src.tentative.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="./support/helper.sub.js"></script> + +<meta http-equiv="Content-Security-Policy" content="require-trusted-types"> +<body> +<script> + //URL assignments don't throw + test(t => { + var url = TrustedURL.create(URLS.safe); + + var d = document.createElement('input'); + d.src = url; + assert_equals("" + d.src, URLS.safe); + }, "src = TrustedURL.create()."); + + test(t => { + var url = TrustedURL.unsafelyCreate(URLS.safe); + + var d = document.createElement('input'); + d.src = url; + assert_equals("" + d.src, URLS.safe); + }, "src = TrustedURL.unsafelyCreate()."); + + //String assignment throws + test(t => { + var d = document.createElement('input'); + assert_throws(new TypeError(), _ => { + d.src = "Fail."; + }); + }, "'src = string' throws."); +</script> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-track-src.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-track-src.tentative.html new file mode 100644 index 00000000000..b6f81e9d0e4 --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-track-src.tentative.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="./support/helper.sub.js"></script> + +<meta http-equiv="Content-Security-Policy" content="require-trusted-types"> +<body> +<script> + //URL assignments don't throw + test(t => { + var url = TrustedURL.create(URLS.safe); + + var d = document.createElement('track'); + d.src = url; + assert_equals("" + d.src, URLS.safe); + }, "src = TrustedURL.create()."); + + test(t => { + var url = TrustedURL.unsafelyCreate(URLS.safe); + + var d = document.createElement('track'); + d.src = url; + assert_equals("" + d.src, URLS.safe); + }, "src = TrustedURL.unsafelyCreate()."); + + //String assignment throws + test(t => { + var d = document.createElement('track'); + assert_throws(new TypeError(), _ => { + d.src = "Fail."; + }); + }, "'src = string' throws."); +</script> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-window-open.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-window-open.tentative.html new file mode 100644 index 00000000000..2c3a8ce0566 --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-window-open.tentative.html @@ -0,0 +1,68 @@ +<!DOCTYPE html> +<html> +<head> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="support/helper.sub.js"></script> + + <meta http-equiv="Content-Security-Policy" content="require-trusted-types"> +</head> +<body> +<script> + //helper functions for the tests + function testWindowOpen(t, url, win) { + let child_window = win.open(url, "", ""); + child_window.onload = t.step_func_done(_ => { + assert_equals(child_window.location.href, "" + url); + child_window.close(); + }); + } + + function testWindowThrows(t, url, win) { + let child_window = win.open(TrustedURL.create(URLS.safe), "", ""); + child_window.onload = t.step_func_done(_ => { + assert_throws(new TypeError(), _ => { + child_window = win.open(url, "", ""); + child_window.close(); + }); + }); + } + + //TrustedURL assignments do not throw + async_test(t => { + testWindowOpen(t, TrustedURL.create(URLS.safe), window); + }, "window.open: safe URL, safe construction."); + + async_test(t => { + testWindowOpen(t, TrustedURL.unsafelyCreate(URLS.safe), window); + }, "window.open: safe URL, unsafe construction."); + + async_test(t => { + testWindowOpen(t, TrustedURL.create(URLS.safe), document); + }, "document.open: safe URL, safe construction."); + + async_test(t => { + testWindowOpen(t, TrustedURL.unsafelyCreate(URLS.safe), document); + }, "document.open: safe URL, unsafe construction."); + + //String assignments throw + async_test(t => { + testWindowThrows(t, 'A string', window); + }, "`window.open(string)` throws."); + + async_test(t => { + testWindowThrows(t, 'A string', document); + }, "`document.open(string)` throws."); + + //Null assignment throws + async_test(t => { + testWindowThrows(t, null, window); + }, "`window.open(null)` throws."); + + //Null assignment throws + async_test(t => { + testWindowThrows(t, null, document); + }, "`document.open(null)` throws."); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/trusted-types/embed-src.tentative.html b/tests/wpt/web-platform-tests/trusted-types/embed-src.tentative.html index a06adc08729..75760278fac 100644 --- a/tests/wpt/web-platform-tests/trusted-types/embed-src.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/embed-src.tentative.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="./support/helper.js"></script> +<script src="./support/helper.sub.js"></script> <body> <script> test(t => { diff --git a/tests/wpt/web-platform-tests/trusted-types/frame-src.tentative.html b/tests/wpt/web-platform-tests/trusted-types/frame-src.tentative.html new file mode 100644 index 00000000000..31a1ce919c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/frame-src.tentative.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="./support/helper.sub.js"></script> + +<body> +<script> + test(t => { + var url = TrustedURL.create(URLS.safe); + + var d = document.createElement('frame'); + d.src = url; + assert_equals("" + d.src, URLS.safe); + }, "src = TrustedURL.create()."); + + test(t => { + var url = TrustedURL.unsafelyCreate(URLS.safe); + + var d = document.createElement('frame'); + d.src = url; + assert_equals("" + d.src, URLS.safe); + }, "src = TrustedURL.unsafelyCreate()."); +</script> diff --git a/tests/wpt/web-platform-tests/trusted-types/input-src.tentative.html b/tests/wpt/web-platform-tests/trusted-types/input-src.tentative.html new file mode 100644 index 00000000000..8cbd0ad4172 --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/input-src.tentative.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="./support/helper.sub.js"></script> + +<body> +<script> + test(t => { + var url = TrustedURL.create(URLS.safe); + + var d = document.createElement('input'); + d.src = url; + assert_equals("" + d.src, URLS.safe); + }, "src = TrustedURL.create()."); + + test(t => { + var url = TrustedURL.unsafelyCreate(URLS.safe); + + var d = document.createElement('input'); + d.src = url; + assert_equals("" + d.src, URLS.safe); + }, "src = TrustedURL.unsafelyCreate()."); +</script> diff --git a/tests/wpt/web-platform-tests/trusted-types/track-src.tentative.html b/tests/wpt/web-platform-tests/trusted-types/track-src.tentative.html new file mode 100644 index 00000000000..cfe5374e41c --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/track-src.tentative.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="./support/helper.sub.js"></script> + +<body> +<script> + test(t => { + var url = TrustedURL.create(URLS.safe); + + var d = document.createElement('track'); + d.src = url; + assert_equals("" + d.src, URLS.safe); + }, "src = TrustedURL.create()."); + + test(t => { + var url = TrustedURL.unsafelyCreate(URLS.safe); + + var d = document.createElement('track'); + d.src = url; + assert_equals("" + d.src, URLS.safe); + }, "src = TrustedURL.unsafelyCreate()."); +</script> diff --git a/tests/wpt/web-platform-tests/trusted-types/window-open.tentative.html b/tests/wpt/web-platform-tests/trusted-types/window-open.tentative.html new file mode 100644 index 00000000000..66ffbd78399 --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/window-open.tentative.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="support/helper.sub.js"></script> +<body> +<script> + //helper functions for the tests + function testWindowOpen(t, url, win) { + let child_window = win.open(url, "", ""); + child_window.onload = t.step_func_done(_ => { + assert_equals(child_window.location.href, "" + url); + child_window.close(); + }); + } + + async_test(t => { + testWindowOpen(t, TrustedURL.create(URLS.safe), window); + }, "window.open: safe URL, safe construction."); + + async_test(t => { + testWindowOpen(t, TrustedURL.unsafelyCreate(URLS.safe), window); + }, "window.open: safe URL, unsafe construction."); + + async_test(t => { + testWindowOpen(t, TrustedURL.create(URLS.safe), document); + }, "document.open: safe URL, safe construction."); + + async_test(t => { + testWindowOpen(t, TrustedURL.unsafelyCreate(URLS.safe), document); + }, "document.open: safe URL, unsafe construction."); +</script> diff --git a/tests/wpt/web-platform-tests/wai-aria/META.yml b/tests/wpt/web-platform-tests/wai-aria/META.yml index aaa5d8166c0..864132a5a36 100644 --- a/tests/wpt/web-platform-tests/wai-aria/META.yml +++ b/tests/wpt/web-platform-tests/wai-aria/META.yml @@ -2,3 +2,4 @@ spec: https://w3c.github.io/aria/ suggested_reviewers: - halindrome - joanmarie + - michael-n-cooper diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitem_expanded_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/menuitem_expanded_false-manual.html new file mode 100644 index 00000000000..7e5ca5485ba --- /dev/null +++ b/tests/wpt/web-platform-tests/wai-aria/menuitem_expanded_false-manual.html @@ -0,0 +1,78 @@ +<!doctype html> +<html> + <head> + <title>aria-expanded=false on a menuitem</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "states", + "contains", + "STATE_EXPANDABLE" + ], + [ + "property", + "states", + "doesNotContain", + "STATE_EXPANDED" + ] + ], + "AXAPI" : [ + [ + "property", + "AXExpanded", + "is", + "NO" + ] + ], + "MSAA" : [ + [ + "property", + "states", + "contains", + "STATE_SYSTEM_COLLAPSED" + ] + ], + "UIA" : [ + [ + "property", + "ExpandCollapse.ExpandCollapseState", + "is", + "Collapsed" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "aria-expanded=false" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for aria-expanded=false on a menuitem.</p> + <div role='menu'> + <div role='menuitem' id='test' aria-expanded='false'>item 1</div> + <div role='menuitem'>item 2</div> + </div> + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitem_expanded_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/menuitem_expanded_true-manual.html new file mode 100644 index 00000000000..a9d9b5df359 --- /dev/null +++ b/tests/wpt/web-platform-tests/wai-aria/menuitem_expanded_true-manual.html @@ -0,0 +1,82 @@ +<!doctype html> +<html> + <head> + <title>aria-expanded=true on a menuitem</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "states", + "contains", + "STATE_EXPANDABLE" + ], + [ + "property", + "states", + "contains", + "STATE_EXPANDED" + ] + ], + "AXAPI" : [ + [ + "property", + "AXExpanded", + "is", + "YES" + ] + ], + "MSAA" : [ + [ + "property", + "states", + "contains", + "STATE_SYSTEM_EXPANDED" + ] + ], + "UIA" : [ + [ + "property", + "ExpandCollapse.ExpandCollapseState", + "is", + "Expanded" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "aria-expanded=true" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for aria-expanded=true on a menuitem.</p> + <div role='menu'> + <div role='menuitem' id='test' aria-expanded='true'>item 1</div> + <div role='menu'> + <div role='menuitem'>subitem 1</div> + <div role='menuitem'>subitem 2</div> + </div> + <div role='menuitem'>item 2</div> + </div> + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_expanded_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_expanded_false-manual.html new file mode 100644 index 00000000000..e05ea1af711 --- /dev/null +++ b/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_expanded_false-manual.html @@ -0,0 +1,78 @@ +<!doctype html> +<html> + <head> + <title>aria-expanded=false on a menuitemcheckbox</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "states", + "contains", + "STATE_EXPANDABLE" + ], + [ + "property", + "states", + "doesNotContain", + "STATE_EXPANDED" + ] + ], + "AXAPI" : [ + [ + "property", + "AXExpanded", + "is", + "NO" + ] + ], + "MSAA" : [ + [ + "property", + "states", + "contains", + "STATE_SYSTEM_COLLAPSED" + ] + ], + "UIA" : [ + [ + "property", + "ExpandCollapse.ExpandCollapseState", + "is", + "Collapsed" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "aria-expanded=false" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for aria-expanded=false on a menuitemcheckbox.</p> + <div role='menu'> + <div role='menuitemcheckbox' id='test' aria-expanded='false'>item 1</div> + <div role='menuitem'>item 2</div> + </div> + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_expanded_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_expanded_true-manual.html new file mode 100644 index 00000000000..b2ac5db68f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_expanded_true-manual.html @@ -0,0 +1,82 @@ +<!doctype html> +<html> + <head> + <title>aria-expanded=true on a menuitemcheckbox</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "states", + "contains", + "STATE_EXPANDABLE" + ], + [ + "property", + "states", + "contains", + "STATE_EXPANDED" + ] + ], + "AXAPI" : [ + [ + "property", + "AXExpanded", + "is", + "YES" + ] + ], + "MSAA" : [ + [ + "property", + "states", + "contains", + "STATE_SYSTEM_EXPANDED" + ] + ], + "UIA" : [ + [ + "property", + "ExpandCollapse.ExpandCollapseState", + "is", + "Expanded" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "aria-expanded=true" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for aria-expanded=true on a menuitemcheckbox.</p> + <div role='menu'> + <div role='menuitemcheckbox' id='test' aria-expanded='true'>item 1</div> + <div role='menu'> + <div role='menuitem'>subitem 1</div> + <div role='menuitem'>subitem 2</div> + </div> + <div role='menuitem'>item 2</div> + </div> + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_expanded_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/menuitemradio_expanded_false-manual.html new file mode 100644 index 00000000000..52c599d90ef --- /dev/null +++ b/tests/wpt/web-platform-tests/wai-aria/menuitemradio_expanded_false-manual.html @@ -0,0 +1,78 @@ +<!doctype html> +<html> + <head> + <title>aria-expanded=false on a menuitemradio</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "states", + "contains", + "STATE_EXPANDABLE" + ], + [ + "property", + "states", + "doesNotContain", + "STATE_EXPANDED" + ] + ], + "AXAPI" : [ + [ + "property", + "AXExpanded", + "is", + "NO" + ] + ], + "MSAA" : [ + [ + "property", + "states", + "contains", + "STATE_SYSTEM_COLLAPSED" + ] + ], + "UIA" : [ + [ + "property", + "ExpandCollapse.ExpandCollapseState", + "is", + "Collapsed" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "aria-expanded=false" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for aria-expanded=false on a menuitemradio.</p> + <div role='menu'> + <div role='menuitemradio' id='test' aria-expanded='false'>item 1</div> + <div role='menuitem'>item 2</div> + </div> + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_expanded_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/menuitemradio_expanded_true-manual.html new file mode 100644 index 00000000000..601879885fe --- /dev/null +++ b/tests/wpt/web-platform-tests/wai-aria/menuitemradio_expanded_true-manual.html @@ -0,0 +1,82 @@ +<!doctype html> +<html> + <head> + <title>aria-expanded=true on a menuitemradio</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "states", + "contains", + "STATE_EXPANDABLE" + ], + [ + "property", + "states", + "contains", + "STATE_EXPANDED" + ] + ], + "AXAPI" : [ + [ + "property", + "AXExpanded", + "is", + "YES" + ] + ], + "MSAA" : [ + [ + "property", + "states", + "contains", + "STATE_SYSTEM_EXPANDED" + ] + ], + "UIA" : [ + [ + "property", + "ExpandCollapse.ExpandCollapseState", + "is", + "Expanded" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "aria-expanded=true" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for aria-expanded=true on a menuitemradio.</p> + <div role='menu'> + <div role='menuitemradio' id='test' aria-expanded='true'>item 1</div> + <div role='menu'> + <div role='menuitem'>subitem 1</div> + <div role='menuitem'>subitem 2</div> + </div> + <div role='menuitem'>item 2</div> + </div> + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/webaudio/resources/audionodeoptions.js b/tests/wpt/web-platform-tests/webaudio/resources/audionodeoptions.js index 293e8e0d9c8..0d90a9c6300 100644 --- a/tests/wpt/web-platform-tests/webaudio/resources/audionodeoptions.js +++ b/tests/wpt/web-platform-tests/webaudio/resources/audionodeoptions.js @@ -40,7 +40,7 @@ function testAudioNodeOptions(should, context, nodeName, expectedNodeOptions) { {channelCount: testChannelCount})); }, 'new ' + nodeName + '(c, {channelCount: ' + testChannelCount + '}}') - .throw(expectedNodeOptions.channelCount.errorType || 'TypeError'); + .throw(expectedNodeOptions.channelCount.errorType || TypeError); } else { // The channel count is not fixed. Try to set the count to invalid // values and make sure an error is thrown. @@ -119,7 +119,7 @@ function testAudioNodeOptions(should, context, nodeName, expectedNodeOptions) { {channelCountMode: 'foobar'})); }, 'new ' + nodeName + '(c, {channelCountMode: "foobar"}') - .throw('TypeError'); + .throw(TypeError); should(node.channelCountMode, 'node.channelCountMode after invalid setter') .beEqualTo(testValues[testValues.length - 1]); } @@ -181,7 +181,7 @@ function testAudioNodeOptions(should, context, nodeName, expectedNodeOptions) { {channelInterpretation: 'foobar'})); }, 'new ' + nodeName + '(c, {channelInterpretation: "foobar"})') - .throw('TypeError'); + .throw(TypeError); should( node.channelInterpretation, 'node.channelInterpretation after invalid setter') @@ -201,13 +201,13 @@ function initializeContext(should) { function testInvalidConstructor(should, name, context) { should(() => { new window[name](); - }, 'new ' + name + '()').throw('TypeError'); + }, 'new ' + name + '()').throw(TypeError); should(() => { new window[name](1); - }, 'new ' + name + '(1)').throw('TypeError'); + }, 'new ' + name + '(1)').throw(TypeError); should(() => { new window[name](context, 42); - }, 'new ' + name + '(context, 42)').throw('TypeError'); + }, 'new ' + name + '(context, 42)').throw(TypeError); } function testDefaultConstructor(should, name, context, options) { diff --git a/tests/wpt/web-platform-tests/webaudio/resources/audit.js b/tests/wpt/web-platform-tests/webaudio/resources/audit.js index c56e4d1012f..7ffa4392b05 100644 --- a/tests/wpt/web-platform-tests/webaudio/resources/audit.js +++ b/tests/wpt/web-platform-tests/webaudio/resources/audit.js @@ -81,6 +81,13 @@ window.Audit = (function() { targetString = '' + String(target).split(/[\s\]]/)[1]; } break; + case 'function': + if (Error.isPrototypeOf(target)) { + targetString = "EcmaScript error " + target.name; + } else { + targetString = String(target); + } + break; default: targetString = String(target); break; @@ -267,7 +274,10 @@ window.Audit = (function() { /** * Check if |actual| operation wrapped in a function throws an exception - * with a expected error type correctly. |expected| is optional. + * with a expected error type correctly. |expected| is optional. If it is a + * String, then it is considered to be the name of a DOMException. It can + * also be an instance of either an Error or a DOMException, to be more + * strict about the actual error type. * * @example * should(() => { let a = b; }, 'A bad code').throw(); @@ -303,8 +313,15 @@ window.Audit = (function() { // The expected error type was not given. didThrowCorrectly = true; passDetail = '${actual} threw ' + error.name + errorMessage + '.'; - } else if (error.name === this._expected) { - // The expected error type match the actual one. + } else if (typeof(this._expected) == "string" && + error instanceof DOMException && + error.name === this._expected) { + // A DOMException was thrown and expected, and the names match + didThrowCorrectly = true; + passDetail = '${actual} threw ${expected}' + errorMessage + '.'; + } else if (this._expected == error.constructor && + this._expected.name == error.name) { + // The expected error type and names match the actual one. didThrowCorrectly = true; passDetail = '${actual} threw ${expected}' + errorMessage + '.'; } else { diff --git a/tests/wpt/web-platform-tests/webaudio/resources/start-stop-exceptions.js b/tests/wpt/web-platform-tests/webaudio/resources/start-stop-exceptions.js index 99a93f502d3..9a77e67ed86 100644 --- a/tests/wpt/web-platform-tests/webaudio/resources/start-stop-exceptions.js +++ b/tests/wpt/web-platform-tests/webaudio/resources/start-stop-exceptions.js @@ -8,7 +8,7 @@ function testStartStop(should, node, options) { should(() => { node.start(time); }, `start(${time})`) - .throw('TypeError'); + .throw(TypeError); }); should(() => { @@ -17,7 +17,7 @@ function testStartStop(should, node, options) { should(() => { node.start(-1); - }, 'start(-1)').throw('RangeError'); + }, 'start(-1)').throw(RangeError); if (options) { options.forEach(test => { @@ -32,14 +32,14 @@ function testStartStop(should, node, options) { }, 'Calling start() twice').throw('InvalidStateError'); should(() => { node.stop(-1); - }, 'stop(-1)').throw('RangeError'); + }, 'stop(-1)').throw(RangeError); // Test non-finite stop times nonFiniteValues.forEach(time => { should(() => { node.stop(time); }, `stop(${time})`) - .throw('TypeError'); + .throw(TypeError); }); } diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html index 7d0af70df62..b71078d8f80 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html @@ -121,10 +121,10 @@ .notThrow(); should(() => { buffer.copyFromChannel(null, 0); - }, '1: buffer.copyFromChannel(null, 0)').throw('TypeError'); + }, '1: buffer.copyFromChannel(null, 0)').throw(TypeError); should(() => { buffer.copyFromChannel(context, 0); - }, '2: buffer.copyFromChannel(context, 0)').throw('TypeError'); + }, '2: buffer.copyFromChannel(context, 0)').throw(TypeError); should(() => { buffer.copyFromChannel(x, -1); }, '3: buffer.copyFromChannel(x, -1)').throw('IndexSizeError'); @@ -156,14 +156,14 @@ buffer.copyFromChannel(shared_buffer, 0); }, '8: buffer.copyFromChannel(SharedArrayBuffer view, 0)') - .throw('TypeError'); + .throw(TypeError); should( () => { buffer.copyFromChannel(shared_buffer, 0, 0); }, '9: buffer.copyFromChannel(SharedArrayBuffer view, 0, 0)') - .throw('TypeError'); + .throw(TypeError); } task.done(); @@ -177,10 +177,10 @@ .exist(); should(() => { buffer.copyToChannel(null, 0); - }, '0: buffer.copyToChannel(null, 0)').throw('TypeError'); + }, '0: buffer.copyToChannel(null, 0)').throw(TypeError); should(() => { buffer.copyToChannel(context, 0); - }, '1: buffer.copyToChannel(context, 0)').throw('TypeError'); + }, '1: buffer.copyToChannel(context, 0)').throw(TypeError); should(() => { buffer.copyToChannel(x, -1); }, '2: buffer.copyToChannel(x, -1)').throw('IndexSizeError'); @@ -211,14 +211,14 @@ buffer.copyToChannel(shared_buffer, 0); }, '7: buffer.copyToChannel(SharedArrayBuffer view, 0)') - .throw('TypeError'); + .throw(TypeError); should( () => { buffer.copyToChannel(shared_buffer, 0, 0); }, '8: buffer.copyToChannel(SharedArrayBuffer view, 0, 0)') - .throw('TypeError'); + .throw(TypeError); } task.done(); diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/ctor-audiobuffer.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/ctor-audiobuffer.html index f6032f29431..c5aae1ad532 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/ctor-audiobuffer.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/ctor-audiobuffer.html @@ -24,13 +24,13 @@ audit.define('invalid constructor', (task, should) => { should(() => { new AudioBuffer(); - }, 'new AudioBuffer()').throw('TypeError'); + }, 'new AudioBuffer()').throw(TypeError); should(() => { new AudioBuffer(1); - }, 'new AudioBuffer(1)').throw('TypeError'); + }, 'new AudioBuffer(1)').throw(TypeError); should(() => { new AudioBuffer(Date, 42); - }, 'new AudioBuffer(Date, 42)').throw('TypeError'); + }, 'new AudioBuffer(Date, 42)').throw(TypeError); task.done(); }); @@ -42,19 +42,19 @@ // optional. should(() => { new AudioBuffer({}); - }, 'buffer = new AudioBuffer({})').throw('TypeError'); + }, 'buffer = new AudioBuffer({})').throw(TypeError); should(() => { new AudioBuffer({length: 1}); - }, 'buffer = new AudioBuffer({length: 1})').throw('TypeError'); + }, 'buffer = new AudioBuffer({length: 1})').throw(TypeError); should(() => { new AudioBuffer({sampleRate: 48000}); - }, 'buffer = new AudioBuffer({sampleRate: 48000})').throw('TypeError'); + }, 'buffer = new AudioBuffer({sampleRate: 48000})').throw(TypeError); should(() => { buffer = new AudioBuffer({numberOfChannels: 1}); - }, 'buffer = new AudioBuffer({numberOfChannels: 1}').throw('TypeError'); + }, 'buffer = new AudioBuffer({numberOfChannels: 1}').throw(TypeError); // Length and sampleRate are required, but others are optional. should( diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-basic.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-basic.html index 54e2d4dc25a..6ce7eb0c103 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-basic.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-basic.html @@ -17,15 +17,15 @@ let oscTypes = ['sine', 'square', 'sawtooth', 'triangle', 'custom']; let audit = Audit.createTaskRunner(); - + audit.define('start/stop exceptions', (task, should) => { // We're not going to render anything, so make it simple let context = new OfflineAudioContext(1, 1, sampleRate); let node = new AudioBufferSourceNode(context); testStartStop(should, node, [ - {args: [0, -1], errorType: 'RangeError'}, - {args: [0, 0, -1], errorType: 'RangeError'} + {args: [0, -1], errorType: RangeError}, + {args: [0, 0, -1], errorType: RangeError} ]); task.done(); }); diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-channels.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-channels.html index 0af05d3a8e8..5527f44cc9c 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-channels.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-channels.html @@ -28,7 +28,7 @@ // Make sure we can't set to something which isn't an AudioBuffer. should(function() { source.buffer = 57; - }, 'source.buffer = 57').throw('TypeError'); + }, 'source.buffer = 57').throw(TypeError); // It's ok to set the buffer to null. should(function() { diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html index 295cd5a5db1..3a11074a41c 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html @@ -140,7 +140,7 @@ context = new AudioContext({'latencyHint': 'foo'}) }, 'context = new AudioContext({\'latencyHint\': \'foo\'})') - .throw('TypeError'); + .throw(TypeError); // Verify that no extra options can be passed into the // AudioContextOptions. @@ -149,7 +149,7 @@ context = new AudioContext('latencyHint') }, 'context = new AudioContext(\'latencyHint\')') - .throw('TypeError'); + .throw(TypeError); Promise.all(closingPromises).then(function() { task.done(); diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode.html index b75cd0b5c0e..14cfbff7e27 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode.html @@ -46,11 +46,11 @@ // Try calling connect() method with illegal values. should( () => audioNode.connect(0, 0, 0), 'audioNode.connect(0, 0, 0)') - .throw('TypeError'); + .throw(TypeError); should( () => audioNode.connect(null, 0, 0), 'audioNode.connect(null, 0, 0)') - .throw('TypeError'); + .throw(TypeError); should( () => audioNode.connect(context.destination, 5, 0), 'audioNode.connect(context.destination, 5, 0)') @@ -77,7 +77,7 @@ should( () => context3 = new AudioContext(1, 44100, 44100), 'context3 = new AudioContext(1, 44100, 44100)') - .throw('TypeError'); + .throw(TypeError); // Ensure it is an EventTarget should( diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-exceptional-values.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-exceptional-values.html index c2d18de2170..c928b3dc165 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-exceptional-values.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-exceptional-values.html @@ -45,7 +45,7 @@ let defaultFuncArg = (value) => [value, 1]; // Test the value parameter - doTests(should, gain, 'TypeError', nonFiniteValues, [ + doTests(should, gain, TypeError, nonFiniteValues, [ {automationName: 'setValueAtTime', funcArg: defaultFuncArg}, { automationName: 'linearRampToValueAtTime', funcArg: defaultFuncArg @@ -75,7 +75,7 @@ let defaultFuncArg = (startTime) => [1, startTime]; // Test the time parameter - doTests(should, gain, 'TypeError', nonFiniteValues, [ + doTests(should, gain, TypeError, nonFiniteValues, [ {automationName: 'setValueAtTime', funcArg: defaultFuncArg}, { automationName: 'linearRampToValueAtTime', @@ -112,7 +112,7 @@ // contents of the array are not important. let curve = new Float32Array(3); - doTests(should, gain, 'TypeError', nonFiniteValues, [ + doTests(should, gain, TypeError, nonFiniteValues, [ { automationName: 'setValueCurveAtTime', funcArg: (startTime) => [curve, startTime, 1] @@ -121,7 +121,7 @@ // Non-finite values for the curve should signal an error doTests( - should, gain, 'TypeError', + should, gain, TypeError, [[1, 2, Infinity, 3], [1, NaN, 2, 3]], [{ automationName: 'setValueCurveAtTime', funcArg: (c) => [c, 1, 1] @@ -144,7 +144,7 @@ // Test the time parameter let curve = new Float32Array(3); - doTests(should, gain, 'RangeError', [-1], [ + doTests(should, gain, RangeError, [-1], [ {automationName: 'setValueAtTime', funcArg: defaultFuncArg}, { automationName: 'linearRampToValueAtTime', @@ -178,7 +178,7 @@ should( () => gain.gain.setValueCurveAtTime(curve, 1, 0), 'gain.gain.setValueCurveAtTime(curve, 1, 0)') - .throw('RangeError'); + .throw(RangeError); task.done(); }); @@ -191,7 +191,7 @@ (task, should) => { let gain = context.createGain(); - doTests(should, gain, 'RangeError', [0, -1e-100, 1e-100], [{ + doTests(should, gain, RangeError, [0, -1e-100, 1e-100], [{ automationName: 'exponentialRampToValueAtTime', funcArg: (value) => [value, 1] }]); diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-method-chaining.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-method-chaining.html index ed25a0193b5..ffe46035fd7 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-method-chaining.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-method-chaining.html @@ -68,7 +68,7 @@ .linearRampToValueAtTime(2.0, 1.0); }, 'Calling setValueAtTime() with a negative end time') - .throw('RangeError'); + .throw(RangeError); // The first operation succeeds but the second fails due to zero target // value for the exponential ramp. Thus only the first should have @@ -79,7 +79,7 @@ 0.0, 1.0); }, 'Calling exponentialRampToValueAtTime() with a zero target value') - .throw('RangeError'); + .throw(RangeError); osc.start(); osc.stop(1.0); diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueCurve-exceptions.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueCurve-exceptions.html index 590dcbd5a29..31405ebfcd2 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueCurve-exceptions.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueCurve-exceptions.html @@ -130,7 +130,7 @@ Float32Array.from([NaN, NaN]), time, 0.01); }, 'setValueCurveAtTime([NaN, NaN], ' + time + ', 0.01)') - .throw('TypeError'); + .throw(TypeError); should( () => { @@ -138,7 +138,7 @@ Float32Array.from([1, Infinity]), time, 0.01); }, 'setValueCurveAtTime([1, Infinity], ' + time + ', 0.01)') - .throw('TypeError'); + .throw(TypeError); let d = context.createDelay(); // Check that we get warnings for out-of-range values and also throw for @@ -158,7 +158,7 @@ }, 'delayTime.setValueCurveAtTime([1, 5, Infinity], ' + time + ', 0.01)') - .throw('TypeError'); + .throw(TypeError); // One last test that prints out lots of digits for the time. time = Math.PI / 100; diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-constructor-options.https.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-constructor-options.https.html index 254c07e9322..31e204cdc8d 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-constructor-options.https.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-constructor-options.https.html @@ -116,7 +116,7 @@ should( () => new AudioWorkletNode(context, 'dummy', options1), 'Creating AudioWorkletNode with channelCountMode "foobar"') - .throw('TypeError'); + .throw(TypeError); task.done(); }); @@ -138,7 +138,7 @@ should( () => new AudioWorkletNode(context, 'dummy', options1), 'Creating AudioWorkletNode with channelCountMode "foobar"') - .throw('TypeError'); + .throw(TypeError); task.done(); }); diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-basic.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-basic.html index c4f7c07965f..83f53aafb19 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-basic.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-basic.html @@ -73,7 +73,7 @@ 'null, ' + 'new Float32Array(1), ' + 'new Float32Array(1))') - .throw('TypeError'); + .throw(TypeError); should( function() { @@ -85,7 +85,7 @@ 'new Float32Array(1), ' + 'null, ' + 'new Float32Array(1))') - .throw('TypeError'); + .throw(TypeError); should( function() { @@ -97,7 +97,7 @@ 'new Float32Array(1), ' + 'new Float32Array(1), ' + 'null)') - .throw('TypeError'); + .throw(TypeError); should( function() { diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelaylimit.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelaylimit.html index 3f4c0208fdd..7bbff410650 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelaylimit.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelaylimit.html @@ -32,11 +32,15 @@ bufferSource.buffer = toneBuffer; window.context = context; - should(() => context.createDelay(180)).throw(); - should(() => context.createDelay(0)).throw(); - should(() => context.createDelay(-1)).throw(); - should(() => context.createDelay(NaN)).throw(); - ; + should(() => context.createDelay(180)).throw("NotSupportedError", + "Delay length cannot be 180 seconds or more"); + should(() => context.createDelay(0)).throw("NotSupportedError", + "Delay length cannot be 0"); + should(() => context.createDelay(-1)).throw("NotSupportedError", + "Delay length cannot be negative"); + should(() => context.createDelay(NaN)).throw(TypeError, + "Delay length cannot be a NaN"); + let delay = context.createDelay(179); delay.delayTime.value = delayTimeSeconds; window.delay = delay; diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-dynamicscompressornode-interface/ctor-dynamicscompressor.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-dynamicscompressornode-interface/ctor-dynamicscompressor.html index 799c1872f07..98d5dbfded1 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-dynamicscompressornode-interface/ctor-dynamicscompressor.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-dynamicscompressornode-interface/ctor-dynamicscompressor.html @@ -99,7 +99,7 @@ { testAttribute: 'channelCountMode', testValue: 'foobar', - expectedErrorType: 'TypeError' + expectedErrorType: TypeError }, // Test channel interpretation { @@ -113,7 +113,7 @@ { testAttribute: 'channelInterpretation', testValue: 'foobar', - expectedErrorType: 'TypeError' + expectedErrorType: TypeError } ]; diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-iirfilternode-interface/ctor-iirfilter.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-iirfilternode-interface/ctor-iirfilter.html index bb89512ca62..e884d487af8 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-iirfilternode-interface/ctor-iirfilter.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-iirfilternode-interface/ctor-iirfilter.html @@ -57,7 +57,7 @@ node = new IIRFilterNode(context, options); }, 'node = new IIRFilterNode(, ' + JSON.stringify(options) + ')') - .throw('TypeError'); + .throw(TypeError); options = {feedforward: [1, 0.5]}; should( @@ -65,7 +65,7 @@ node = new IIRFilterNode(context, options); }, 'node = new IIRFilterNode(c, ' + JSON.stringify(options) + ')') - .throw('TypeError'); + .throw(TypeError); task.done(); }); diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-basic.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-basic.html index da36d583dd5..79c40dc0847 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-basic.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-basic.html @@ -51,17 +51,17 @@ should(function() { // Two args are required. context.createIIRFilter(); - }, 'createIIRFilter()').throw('TypeError'); + }, 'createIIRFilter()').throw(TypeError); should(function() { // Two args are required. context.createIIRFilter(new Float32Array(1)); - }, 'createIIRFilter(new Float32Array(1))').throw('TypeError'); + }, 'createIIRFilter(new Float32Array(1))').throw(TypeError); should(function() { // null is not valid context.createIIRFilter(null, null); - }, 'createIIRFilter(null, null)').throw('TypeError'); + }, 'createIIRFilter(null, null)').throw(TypeError); should(function() { // There has to be at least one coefficient. @@ -127,17 +127,17 @@ should(function() { // Feedback coefficients must be finite. context.createIIRFilter([1], [1, Infinity, NaN]); - }, 'createIIRFilter([1], [1, NaN, Infinity])').throw('TypeError'); + }, 'createIIRFilter([1], [1, NaN, Infinity])').throw(TypeError); should(function() { // Feedforward coefficients must be finite. context.createIIRFilter([1, Infinity, NaN], [1]); - }, 'createIIRFilter([1, NaN, Infinity], [1])').throw('TypeError'); + }, 'createIIRFilter([1, NaN, Infinity], [1])').throw(TypeError); should(function() { // Test that random junk in the array is converted to NaN. context.createIIRFilter([1, 'abc', []], [1]); - }, 'createIIRFilter([1, \'abc\', []], [1])').throw('TypeError'); + }, 'createIIRFilter([1, \'abc\', []], [1])').throw(TypeError); task.done(); }); @@ -155,7 +155,7 @@ null, new Float32Array(1), new Float32Array(1)); }, 'getFrequencyResponse(null, new Float32Array(1), new Float32Array(1))') - .throw('TypeError'); + .throw(TypeError); should( function() { @@ -164,7 +164,7 @@ new Float32Array(1), null, new Float32Array(1)); }, 'getFrequencyResponse(new Float32Array(1), null, new Float32Array(1))') - .throw('TypeError'); + .throw(TypeError); should( function() { @@ -173,7 +173,7 @@ new Float32Array(1), new Float32Array(1), null); }, 'getFrequencyResponse(new Float32Array(1), new Float32Array(1), null)') - .throw('TypeError'); + .throw(TypeError); should( function() { diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-offlineaudiocontext-interface/ctor-offlineaudiocontext.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-offlineaudiocontext-interface/ctor-offlineaudiocontext.html index 79aafe7f1f0..f480ec8ce51 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-offlineaudiocontext-interface/ctor-offlineaudiocontext.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-offlineaudiocontext-interface/ctor-offlineaudiocontext.html @@ -23,12 +23,12 @@ // First and only arg should be a dictionary. should(() => { new OfflineAudioContext(3); - }, 'new OfflineAudioContext(3)').throw('TypeError'); + }, 'new OfflineAudioContext(3)').throw(TypeError); // Constructor needs 1 or 3 args, so 2 should throw. should(() => { new OfflineAudioContext(3, 42); - }, 'new OfflineAudioContext(3, 42)').throw('TypeError'); + }, 'new OfflineAudioContext(3, 42)').throw(TypeError); // Valid constructor should(() => { @@ -63,12 +63,12 @@ // No args should throw should(() => { new OfflineAudioContext(); - }, 'new OfflineAudioContext()').throw('TypeError'); + }, 'new OfflineAudioContext()').throw(TypeError); // Empty OfflineAudioContextOptions should throw should(() => { new OfflineAudioContext({}); - }, 'new OfflineAudioContext({})').throw('TypeError'); + }, 'new OfflineAudioContext({})').throw(TypeError); let options = {length: 42}; // sampleRate is required. @@ -77,7 +77,7 @@ new OfflineAudioContext(options); }, 'new OfflineAudioContext(' + JSON.stringify(options) + ')') - .throw('TypeError'); + .throw(TypeError); options = {sampleRate: 12345}; // length is required. @@ -86,7 +86,7 @@ new OfflineAudioContext(options); }, 'new OfflineAudioContext(' + JSON.stringify(options) + ')') - .throw('TypeError'); + .throw(TypeError); // Valid constructor. Verify that the resulting context has the // correct values. diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/ctor-panner.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/ctor-panner.html index 48b368ddf2d..5475a6210b7 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/ctor-panner.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/ctor-panner.html @@ -161,7 +161,7 @@ node = new PannerNode(context, options); }, 'new PannerNode(c, " + JSON.stringify(options) + ")') - .throw('TypeError'); + .throw(TypeError); // Test channelInterpretation. options = {channelInterpretation: 'speakers'}; @@ -190,7 +190,7 @@ node = new PannerNode(context, options); }, 'new PannerNode(c, ' + JSON.stringify(options) + ')') - .throw('TypeError'); + .throw(TypeError); task.done(); }); diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-stereopanner-interface/ctor-stereopanner.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-stereopanner-interface/ctor-stereopanner.html index 9de58cf783a..caa99aa4031 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-stereopanner-interface/ctor-stereopanner.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-stereopanner-interface/ctor-stereopanner.html @@ -65,7 +65,7 @@ tests: [ {value: 'clamped-max'}, {value: 'explicit'}, {value: 'max', error: 'NotSupportedError'}, - {value: 'foobar', error: 'TypeError'} + {value: 'foobar', error: TypeError} ] }, { @@ -74,7 +74,7 @@ attribute: 'channelInterpretation', tests: [ {value: 'speakers'}, {value: 'discrete'}, - {value: 'foobar', error: 'TypeError'} + {value: 'foobar', error: TypeError} ] }].forEach(entry => { entry.tests.forEach(testItem => { diff --git a/tests/wpt/web-platform-tests/webauthn/idlharness.https.any.js b/tests/wpt/web-platform-tests/webauthn/idlharness.https.window.js index 8ca5b99c861..8ca5b99c861 100644 --- a/tests/wpt/web-platform-tests/webauthn/idlharness.https.any.js +++ b/tests/wpt/web-platform-tests/webauthn/idlharness.https.window.js diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpCapabilities-helper.js b/tests/wpt/web-platform-tests/webrtc/RTCRtpCapabilities-helper.js index 72f544059ff..fb297c35fb1 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpCapabilities-helper.js +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpCapabilities-helper.js @@ -31,7 +31,7 @@ function validateRtpCapabilities(capabilities) { validateCodecCapability(codec); } - assert_greater_than(capabilities.codec, 0, + assert_greater_than(capabilities.codecs.length, 0, 'Expect at least one codec capability available'); assert_array_field(capabilities, 'headerExtensions'); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getCapabilities.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getCapabilities.html index fda71690c2e..21dcae208af 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getCapabilities.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getCapabilities.html @@ -31,4 +31,9 @@ validateRtpCapabilities(capabilities); }, `RTCRtpSender.getCapabilities('video') should return RTCRtpCapabilities dictionary`); + test(() => { + const capabilities = RTCRtpReceiver.getCapabilities('dummy'); + assert_equals(capabilities, null); + }, `RTCRtpSender.getCapabilities('dummy') should return null`); + </script> diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-getCapabilities.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-getCapabilities.html index d4544ffeccd..3d41c620161 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-getCapabilities.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-getCapabilities.html @@ -37,4 +37,9 @@ validateRtpCapabilities(capabilities); }, `RTCRtpSender.getCapabilities('video') should return RTCRtpCapabilities dictionary`); + test(() => { + const capabilities = RTCRtpSender.getCapabilities('dummy'); + assert_equals(capabilities, null); + }, `RTCRtpSender.getCapabilities('dummy') should return null`); + </script> diff --git a/tests/wpt/web-platform-tests/webusb/insecure-context.any.js b/tests/wpt/web-platform-tests/webusb/insecure-context.any.js new file mode 100644 index 00000000000..42452b532e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/webusb/insecure-context.any.js @@ -0,0 +1,22 @@ +// META: global=sharedworker +'use strict'; + +test(() => { + assert_false(isSecureContext); + assert_false('usb' in navigator); +}, '"usb" should not be present on navigator in an insecure context.'); + +[ + 'USB', 'USBAlternateInterface', 'USBConfiguration', 'USBConnectionEvent', + 'USBDevice', 'USBEndpoint', 'USBInterface', 'USBInTransferResult', + 'USBOutTransferResult', 'USBIsochronousInTransferResult', + 'USBIsochronousOutTransferResult', 'USBIsochronousInTransferPacket', + 'USBIsochronousOutTransferPacket', +].forEach((symbol) => { + test(() => { + assert_false(isSecureContext); + assert_false(symbol in this) + }, '"' + symbol + '" should not be visible in an insecure context.'); +}); + +done(); diff --git a/tests/wpt/web-platform-tests/worklets/resources/worklet-test-utils.js b/tests/wpt/web-platform-tests/worklets/resources/worklet-test-utils.js index f7f28b41cd1..499999f22df 100644 --- a/tests/wpt/web-platform-tests/worklets/resources/worklet-test-utils.js +++ b/tests/wpt/web-platform-tests/worklets/resources/worklet-test-utils.js @@ -1,7 +1,7 @@ // Returns a reference to a worklet object corresponding to a given type. function get_worklet(type) { if (type == 'animation') - return window.animationWorklet; + return CSS.animationWorklet; if (type == 'layout') return CSS.layoutWorklet; if (type == 'paint') |