diff options
Diffstat (limited to 'tests')
103 files changed, 1739 insertions, 1137 deletions
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 9bd9e5138fb..f53784107bd 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -182949,78 +182949,6 @@ {} ] ], - "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-1.html": [ - [ - "/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-1.html", - [ - [ - "/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-1-ref.html", - "==" - ] - ], - {} - ] - ], - "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2a.html": [ - [ - "/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2a.html", - [ - [ - "/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2-ref.html", - "==" - ] - ], - {} - ] - ], - "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2b.html": [ - [ - "/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2b.html", - [ - [ - "/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2-ref.html", - "==" - ] - ], - {} - ] - ], - "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2c.html": [ - [ - "/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2c.html", - [ - [ - "/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2-ref.html", - "==" - ] - ], - {} - ] - ], - "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2d.html": [ - [ - "/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2d.html", - [ - [ - "/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2-ref.html", - "==" - ] - ], - {} - ] - ], - "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2e.html": [ - [ - "/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2e.html", - [ - [ - "/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2-ref.html", - "==" - ] - ], - {} - ] - ], "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/perspective-containing-block-dynamic-1a.html": [ [ "/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/perspective-containing-block-dynamic-1a.html", @@ -190669,6 +190597,18 @@ {} ] ], + "quirks/vertical-align-in-quirks.html": [ + [ + "/quirks/vertical-align-in-quirks.html", + [ + [ + "/quirks/reference/vertical-align-in-quirks-ref.html", + "==" + ] + ], + {} + ] + ], "service-workers/service-worker/svg-target-reftest.https.html": [ [ "/service-workers/service-worker/svg-target-reftest.https.html", @@ -280254,16 +280194,6 @@ {} ] ], - "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-1-ref.html": [ - [ - {} - ] - ], - "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2-ref.html": [ - [ - {} - ] - ], "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/perspective-untransformable-no-stacking-context-ref.html": [ [ {} @@ -299649,6 +299579,11 @@ {} ] ], + "quirks/reference/vertical-align-in-quirks-ref.html": [ + [ + {} + ] + ], "quirks/support/test-ref-iframe.js": [ [ {} @@ -307279,6 +307214,11 @@ {} ] ], + "streams/piping/abort.js": [ + [ + {} + ] + ], "streams/piping/close-propagation-backward.js": [ [ {} @@ -346788,6 +346728,24 @@ {} ] ], + "css/filter-effects/parsing/backdrop-filter-computed.html": [ + [ + "/css/filter-effects/parsing/backdrop-filter-computed.html", + {} + ] + ], + "css/filter-effects/parsing/backdrop-filter-parsing-invalid.html": [ + [ + "/css/filter-effects/parsing/backdrop-filter-parsing-invalid.html", + {} + ] + ], + "css/filter-effects/parsing/backdrop-filter-parsing-valid.html": [ + [ + "/css/filter-effects/parsing/backdrop-filter-parsing-valid.html", + {} + ] + ], "css/filter-effects/parsing/color-interpolation-filters-parsing-invalid.html": [ [ "/css/filter-effects/parsing/color-interpolation-filters-parsing-invalid.html", @@ -359623,25 +359581,33 @@ "feature-policy/feature-policy-frame-policy-allowed-for-all.https.sub.html": [ [ "/feature-policy/feature-policy-frame-policy-allowed-for-all.https.sub.html", - {} + { + "timeout": "long" + } ] ], "feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html": [ [ "/feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html", - {} + { + "timeout": "long" + } ] ], "feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html": [ [ "/feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html", - {} + { + "timeout": "long" + } ] ], "feature-policy/feature-policy-frame-policy-disallowed-for-all.https.sub.html": [ [ "/feature-policy/feature-policy-frame-policy-disallowed-for-all.https.sub.html", - {} + { + "timeout": "long" + } ] ], "feature-policy/feature-policy-header-policy-allowed-for-all.https.sub.html": [ @@ -376654,6 +376620,12 @@ {} ] ], + "mediacapture-streams/MediaDevices-SecureContext.html": [ + [ + "/mediacapture-streams/MediaDevices-SecureContext.html", + {} + ] + ], "mediacapture-streams/MediaDevices-enumerateDevices.https.html": [ [ "/mediacapture-streams/MediaDevices-enumerateDevices.https.html", @@ -402614,6 +402586,30 @@ {} ] ], + "streams/piping/abort.dedicatedworker.html": [ + [ + "/streams/piping/abort.dedicatedworker.html", + {} + ] + ], + "streams/piping/abort.html": [ + [ + "/streams/piping/abort.html", + {} + ] + ], + "streams/piping/abort.serviceworker.https.html": [ + [ + "/streams/piping/abort.serviceworker.https.html", + {} + ] + ], + "streams/piping/abort.sharedworker.html": [ + [ + "/streams/piping/abort.sharedworker.html", + {} + ] + ], "streams/piping/close-propagation-backward.dedicatedworker.html": [ [ "/streams/piping/close-propagation-backward.dedicatedworker.html", @@ -404048,6 +404044,24 @@ {} ] ], + "svg/interact/inheritance.svg": [ + [ + "/svg/interact/inheritance.svg", + {} + ] + ], + "svg/interact/parsing/pointer-events-invalid.svg": [ + [ + "/svg/interact/parsing/pointer-events-invalid.svg", + {} + ] + ], + "svg/interact/parsing/pointer-events-valid.svg": [ + [ + "/svg/interact/parsing/pointer-events-valid.svg", + {} + ] + ], "svg/linking/scripted/a-download-click.svg": [ [ "/svg/linking/scripted/a-download-click.svg", @@ -409264,15 +409278,15 @@ {} ] ], - "webrtc/RTCRtpTransceiver-setCodecPreferences.html": [ + "webrtc/RTCRtpTransceiver-direction.html": [ [ - "/webrtc/RTCRtpTransceiver-setCodecPreferences.html", + "/webrtc/RTCRtpTransceiver-direction.html", {} ] ], - "webrtc/RTCRtpTransceiver-setDirection.html": [ + "webrtc/RTCRtpTransceiver-setCodecPreferences.html": [ [ - "/webrtc/RTCRtpTransceiver-setDirection.html", + "/webrtc/RTCRtpTransceiver-setCodecPreferences.html", {} ] ], @@ -436918,7 +436932,7 @@ }, "paths": { ".azure-pipelines.yml": [ - "f2a7b84f358e87013755bc27cc64f3f01c92bab1", + "e5d247af94e87fc5bba0363d794ab9f060e14d82", "support" ], ".codecov.yml": [ @@ -436938,7 +436952,7 @@ "support" ], ".taskcluster.yml": [ - "d29e686785234b1a5cc1c490ba7ea8efcb62674b", + "bcac7f5abbc4b32be599475a5506df9e2e135abd", "support" ], ".travis.yml": [ @@ -446938,7 +446952,7 @@ "support" ], "background-fetch/service_workers/sw-update-ui.js": [ - "5dec087cd155b486b974f3a26c149fcd113380c3", + "3848dc4402b71bed79b5f9662405acd03cf30f1e", "support" ], "background-fetch/service_workers/sw.js": [ @@ -446946,7 +446960,7 @@ "support" ], "background-fetch/update-ui.https.window.js": [ - "aed0bb86d26398aabc3688c6fee90c0cfc7d4206", + "90d3c2e7ed423db877ff91693546cafc85bd9e65", "testharness" ], "battery-status/META.yml": [ @@ -531146,7 +531160,7 @@ "testharness" ], "css/css-animations/KeyframeEffect-getKeyframes.tentative.html": [ - "280f32a4852abaeb847092032fa49c9a6cb9797d", + "81b0d18946440a34ed80e064ba9c9dd322d10f69", "testharness" ], "css/css-animations/KeyframeEffect-target.tentative.html": [ @@ -532126,7 +532140,7 @@ "reftest" ], "css/css-backgrounds/background-size-001.html": [ - "b5cf0c84c6aa8af885ba21a2a5517a11caa74413", + "3c9b9d5e55d320ed9a372fd43ed7723260288cf9", "testharness" ], "css/css-backgrounds/background-size-002.html": [ @@ -585753,6 +585767,18 @@ "e7de16e8d62904986610a484b046a4caf0f161e3", "testharness" ], + "css/filter-effects/parsing/backdrop-filter-computed.html": [ + "96de7b941bafda4e87c185148f6f11169e1d80a7", + "testharness" + ], + "css/filter-effects/parsing/backdrop-filter-parsing-invalid.html": [ + "4e6b74682c5d48583f221f03c10a99a52964afe3", + "testharness" + ], + "css/filter-effects/parsing/backdrop-filter-parsing-valid.html": [ + "2531b09a3283037c85e5fc377bc5517396191eb0", + "testharness" + ], "css/filter-effects/parsing/color-interpolation-filters-parsing-invalid.html": [ "6fdf647a43d0deed2da93239e4e4b0fc3b66a16a", "testharness" @@ -588422,11 +588448,11 @@ "support" ], "css/support/inheritance-testcommon.js": [ - "9f59cbbb6de304857175f7471bbbc253f21c4fa6", + "9229f1268ea8e8ec8d83fca77665b17602aebf56", "support" ], "css/support/parsing-testcommon.js": [ - "b075882f89aae49b419220b234534241cde5fd42", + "7ecd588aaf5160f121b9eb240f58d2739135c829", "support" ], "css/support/pattern-grg-rgr-grg.png": [ @@ -594406,7 +594432,7 @@ "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/reftest.list": [ - "75a318005ebe2eb9675a58e446e8a25659ac8039", + "9a6799e9dcc2722fb99832f9955dbd1e0270cae0", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-border-box-001-ref.html": [ @@ -596293,38 +596319,6 @@ "34b66abdb143f3566cadba64d3fd8f66511528f3", "support" ], - "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-1-ref.html": [ - "8a568d25d927a4bf768521b511c8507bc19f889e", - "support" - ], - "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-1.html": [ - "4f83e2eac47f5265b4b28ab7d66977f47f57ed1c", - "reftest" - ], - "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2-ref.html": [ - "ee956aa301f7afef1e863d60bc6edf949dd31038", - "support" - ], - "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2a.html": [ - "3f6c97386bae62103d66b208bdf0660f4f58b0f7", - "reftest" - ], - "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2b.html": [ - "94dac2f10ffc59cfc1d9c218d8b21991b627d52c", - "reftest" - ], - "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2c.html": [ - "f84ae2280650adc941464c3dec258674c89cdaa6", - "reftest" - ], - "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2d.html": [ - "5b5694f544e25bba345d03cbc2f44c00a8dd50ba", - "reftest" - ], - "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2e.html": [ - "0350137bedefbf1491faf54a75115be08a858703", - "reftest" - ], "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/perspective-containing-block-dynamic-1a.html": [ "51e76745b5a41320058aa3669499afa85ec41e72", "reftest" @@ -596358,7 +596352,7 @@ "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/reftest.list": [ - "33773a4c09f23797212a1e9077c155e2731d668f", + "e4777148d4ba3ab83c4db9b2ae99a27db54b3041", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/transforms/transform-containing-block-dynamic-1a.html": [ @@ -598146,7 +598140,7 @@ "support" ], "docs/_running-tests/safari.md": [ - "1fb5cb02359a9e5ee3e07485b547221ccb7faa1c", + "ca73fd6073d6378ccd734598497c5c14dde90d40", "support" ], "docs/_writing-tests/ahem.md": [ @@ -603150,7 +603144,7 @@ "manual" ], "feature-policy/feature-policy-frame-policy-allowed-for-all.https.sub.html": [ - "f3082c4200e41e9343728f7ae691a715b88099c8", + "aede7e7876b197417d4fb6f156fda3285ac7e9a4", "testharness" ], "feature-policy/feature-policy-frame-policy-allowed-for-all.https.sub.html.sub.headers": [ @@ -603158,7 +603152,7 @@ "support" ], "feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html": [ - "d2d0d1301aacdd1088f179360c155c76f0f4a485", + "b2b668256ff745bf41c26443b0703b76eab736cf", "testharness" ], "feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html.sub.headers": [ @@ -603166,7 +603160,7 @@ "support" ], "feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html": [ - "c777b2f769873f0f04f3ac8afad505f3b52ad7da", + "9a020f9e6b5d513adaf2d36b25bd62b239789e50", "testharness" ], "feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html.sub.headers": [ @@ -603174,7 +603168,7 @@ "support" ], "feature-policy/feature-policy-frame-policy-disallowed-for-all.https.sub.html": [ - "33fcb4bb29d65c7477076d139a8824d84e0c43af", + "7ac821d88562295bef234974172e9d83c03d9e03", "testharness" ], "feature-policy/feature-policy-frame-policy-disallowed-for-all.https.sub.html.sub.headers": [ @@ -608346,7 +608340,7 @@ "support" ], "html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/message-opener.html": [ - "12836f536f05766f628e65c57f835481c65264f9", + "07662c63cd01337e3b6a53ce6001d187b719fbe7", "support" ], "html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_1-1.html": [ @@ -627621,6 +627615,10 @@ "1ed650e97c451ef1266fd8435e2260d6bf617b67", "support" ], + "mediacapture-streams/MediaDevices-SecureContext.html": [ + "d0fc70ca0e84d4f02970b1fa81d649b96116c1c4", + "testharness" + ], "mediacapture-streams/MediaDevices-enumerateDevices.https.html": [ "c66251a03f30f2100670d07508fcb449f8609510", "testharness" @@ -639165,6 +639163,10 @@ "987cc245ca220bd92108b6babe17d35733fd0697", "testharness" ], + "quirks/reference/vertical-align-in-quirks-ref.html": [ + "2395923cd2c5d391f386bb9483178fa0e35f8d79", + "support" + ], "quirks/support/test-ref-iframe.js": [ "e5df41d4249bc93b7458774524bf90f0a6f36be7", "support" @@ -639221,6 +639223,10 @@ "f2f7eab4e33858b571344940c67de9b50e18e119", "support" ], + "quirks/vertical-align-in-quirks.html": [ + "1826d0152fb73c48238fb58ea6989fc270064296", + "reftest" + ], "referrer-policy/META.yml": [ "a622289c0562dbac99de0a9dbd3b9a70e0783923", "support" @@ -650510,7 +650516,7 @@ "testharness" ], "service-workers/service-worker/clients-matchall-include-uncontrolled.https.html": [ - "d3b5a966d330412562fc6cbc614e4995f3d1260b", + "9f34e5709eb3cb607dcd1b91ec80b51c3706dca6", "testharness" ], "service-workers/service-worker/clients-matchall-on-evaluation.https.html": [ @@ -653425,6 +653431,26 @@ "22e5c786bbc4d755805f35eb0bdc957dad1c90db", "support" ], + "streams/piping/abort.dedicatedworker.html": [ + "231c3543d52892c3bb6352793e5865a80398afc8", + "testharness" + ], + "streams/piping/abort.html": [ + "d55e6f7074e3d216572e8b76e6bd7a921a5f672c", + "testharness" + ], + "streams/piping/abort.js": [ + "bb20ee30b396c99f050b400557e4883a5d373475", + "support" + ], + "streams/piping/abort.serviceworker.https.html": [ + "5c0809f0d0c1deba87a7675a6b3c2112d1d29e9f", + "testharness" + ], + "streams/piping/abort.sharedworker.html": [ + "8cdf8512c8112db0c9cdaa7fded5472841a65c5a", + "testharness" + ], "streams/piping/close-propagation-backward.dedicatedworker.html": [ "07f3875b2b0285411a7009fb87947989eab4c250", "testharness" @@ -657049,6 +657075,18 @@ "288fdf8052ee47ec946ff2679c384d4aa56e0f60", "support" ], + "svg/interact/inheritance.svg": [ + "e67f19ed43529af5e34683b6853ae870435be014", + "testharness" + ], + "svg/interact/parsing/pointer-events-invalid.svg": [ + "1c09010f694d89fc7128617de2e3b3ec385d2145", + "testharness" + ], + "svg/interact/parsing/pointer-events-valid.svg": [ + "643ddba1664fd5d2155aec05af8518188fdc354c", + "testharness" + ], "svg/linking/reftests/href-a-element-attr-change.html": [ "c74b2e015613a09d1cecb5a0c3136d26f07e2a5b", "reftest" @@ -658138,7 +658176,7 @@ "support" ], "tools/ci/tcdownload.py": [ - "8813dccc888881ac8e96a05b22b113d887de0463", + "91c763a7acdd3416d7eff55407bf8f73b840d96a", "support" ], "tools/ci/tests/test_jobs.py": [ @@ -658414,11 +658452,11 @@ "support" ], "tools/py27-flake8.ini": [ - "1a5ce431ca808eb1683cd3d1eaa70fd5fdf6524f", + "99324b2aad14d921f469f52934f7ff9374a1d9ee", "support" ], "tools/py36-flake8.ini": [ - "9b01f22a3cdd25fc02d1334e5da99e71fa35bcb0", + "4ad34105b917670c78255d72d6a39b052b779339", "support" ], "tools/pytest.ini": [ @@ -658810,7 +658848,7 @@ "support" ], "tools/requirements_flake8.txt": [ - "6d6ee4d885a480addf06d4df057cd4e4e6a8575f", + "d2e7dd64232ad76a71d00368d163957922aeedcb", "support" ], "tools/runner/css/bootstrap-theme.min.css": [ @@ -663166,7 +663204,7 @@ "support" ], "tools/wptrunner/wptrunner/browsers/fennec.py": [ - "c783006cfa49857e236658ee17d1da3cf8c5bae4", + "15396fba22c2a39a9ccfce439cf7e477dc5e1378", "support" ], "tools/wptrunner/wptrunner/browsers/firefox.py": [ @@ -663210,7 +663248,7 @@ "support" ], "tools/wptrunner/wptrunner/browsers/webkit.py": [ - "b09114a9a5444717157edb37c24add6ba99cf421", + "19527a132c7d8c8c158f8b960560b3f1966b59d3", "support" ], "tools/wptrunner/wptrunner/config.py": [ @@ -663326,7 +663364,7 @@ "support" ], "tools/wptrunner/wptrunner/formatters.py": [ - "1ea09dbe553713c799b40c1e40d98f8ee2d4d81a", + "70cbef8c10b964a8b50590d39487c7543f87c3e4", "support" ], "tools/wptrunner/wptrunner/manifestexpected.py": [ @@ -663406,7 +663444,7 @@ "support" ], "tools/wptrunner/wptrunner/tests/test_formatters.py": [ - "fc2ce5bc11161057a0fa110e6aa64a21cc0e8aad", + "9e354f09db38d51804e50dde357cb2fc18e9caef", "support" ], "tools/wptrunner/wptrunner/tests/test_products.py": [ @@ -663778,7 +663816,7 @@ "support" ], "tools/wptserve/wptserve/handlers.py": [ - "7fbe4234ea0a252aaed07182fd3bed741c147285", + "2dd01e29338115c1c4c6e4a35973835fe0193137", "support" ], "tools/wptserve/wptserve/logger.py": [ @@ -663810,7 +663848,7 @@ "support" ], "tools/wptserve/wptserve/server.py": [ - "53f093b8e3da07839b54361216d649a4f870e30d", + "802ae9ca9a98feddcb68077985cf4be536d72f78", "support" ], "tools/wptserve/wptserve/sslutils/__init__.py": [ @@ -666390,7 +666428,7 @@ "testharness" ], "web-animations/animation-model/animation-types/property-list.js": [ - "0f84c376721d125afd8ec64a5689069273c68a68", + "6ad90a356e483cbfbd94c2cb147e68417f75357e", "support" ], "web-animations/animation-model/animation-types/property-types.js": [ @@ -668366,15 +668404,15 @@ "wdspec" ], "webdriver/tests/get_element_rect/__init__.py": [ - "abf1a91367517107b3b690466a4b570c0a3b7cab", + "8b137891791fe96927ad78e64b0aad7bded08bdc", "support" ], "webdriver/tests/get_element_rect/get.py": [ - "433e2f6bf8b428136a36b81138386e62eb257daf", + "e3744c4bce574b5c673b767a031b3a46185e4843", "wdspec" ], "webdriver/tests/get_element_rect/user_prompts.py": [ - "ec1047bd3893d51f4b2be9597d87ba4a63b6a353", + "c51866cb8758ad03554413aecafd42c13c1bc194", "wdspec" ], "webdriver/tests/get_element_tag_name/__init__.py": [ @@ -668770,7 +668808,7 @@ "support" ], "webdriver/tests/support/asserts.py": [ - "1dea6ce68779269b005061a391f7553a6741157f", + "67711987d4b7cf683ff4e6d1ace3ad0189b7ec91", "support" ], "webdriver/tests/support/defaults.py": [ @@ -668778,11 +668816,11 @@ "support" ], "webdriver/tests/support/fixtures.py": [ - "d16883256aca4f600400f060719d0a7ac8d16dfd", + "f662040e4066f14afa6a5f8c40778db23ccab29a", "support" ], "webdriver/tests/support/helpers.py": [ - "dd733809fd5a1169a433ba9bd0c2f4dd17b927a3", + "6c62d756259b6677bd5e77fc6b6a48def4b3b46b", "support" ], "webdriver/tests/support/http_request.py": [ @@ -668790,7 +668828,7 @@ "support" ], "webdriver/tests/support/image.py": [ - "1eb3a187a43b86ffe752d4d73f6e639bdd9e96da", + "81dd933943f78b4bad69967c26729b70b992acb6", "support" ], "webdriver/tests/support/inline.py": [ @@ -668830,27 +668868,27 @@ "wdspec" ], "webdriver/tests/take_element_screenshot/__init__.py": [ - "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + "d289ee3b912001e63cf3a34331098ce7b7258aa6", "support" ], "webdriver/tests/take_element_screenshot/screenshot.py": [ - "e4d2869af4f3a50aa4da87b499d84b75254967a7", + "35a1ffe75f042b6e2a995cf980ecaa19e97590e3", "wdspec" ], "webdriver/tests/take_element_screenshot/user_prompts.py": [ - "fa239999e4f3479526423498f5718a455ffde53f", + "221eaa9363528d3fa102f9506d81bca89546e9f5", "wdspec" ], "webdriver/tests/take_screenshot/__init__.py": [ - "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + "d38c8a0f79f81d5977d0a8dfa1a9f63e236988fb", "support" ], "webdriver/tests/take_screenshot/screenshot.py": [ - "d3153710f7b108f167a4ff82b9ef288bcfa9440c", + "07879530120dfbf8203fe8c4827d2bf36fb3eedb", "wdspec" ], "webdriver/tests/take_screenshot/user_prompts.py": [ - "4d4840f08ba6f57f3e22bda72a0071128bea9be0", + "902463f22c8165628ce5fccffafdc70481300f20", "wdspec" ], "webgl/META.yml": [ @@ -669482,7 +669520,7 @@ "testharness" ], "webrtc/RTCDTMFSender-ontonechange.https.html": [ - "ff6d117b3c75dde71cc52b4087f223477ad08bb4", + "49e23abe2f4aa631e39eb66dd0b619d28e7de1a7", "testharness" ], "webrtc/RTCDataChannel-bufferedAmount.html": [ @@ -669646,7 +669684,7 @@ "testharness" ], "webrtc/RTCPeerConnection-setRemoteDescription-replaceTrack.https.html": [ - "6c98eae52cd4ce78765671ccbea9ebe523bde17f", + "4bdcddec5115c3d9c953859950854b3ec97fbbef", "testharness" ], "webrtc/RTCPeerConnection-setRemoteDescription-rollback.html": [ @@ -669753,16 +669791,16 @@ "1278737414c418a2b1604eae32590c0999e0d645", "testharness" ], - "webrtc/RTCRtpTransceiver-setCodecPreferences.html": [ - "a1f7854e1a2f18036040f882889ff6758e9968c0", + "webrtc/RTCRtpTransceiver-direction.html": [ + "e76bc1fbb7740f7a575f0acba397284aa5d5db94", "testharness" ], - "webrtc/RTCRtpTransceiver-setDirection.html": [ - "32cbff5d98586840ab9c37a1e1e05f262560848e", + "webrtc/RTCRtpTransceiver-setCodecPreferences.html": [ + "a1f7854e1a2f18036040f882889ff6758e9968c0", "testharness" ], "webrtc/RTCRtpTransceiver.https.html": [ - "2de9fb9f6ee4dbc555bf30ba46f21df30385dd5c", + "7d16deaa8c7633928b39e1ed638f26e820e1e8d8", "testharness" ], "webrtc/RTCSctpTransport-constructor.html": [ @@ -669806,7 +669844,7 @@ "testharness" ], "webrtc/historical.html": [ - "d49503e16d6c5de6f7ea991120e7fb2b53bbcfd5", + "ffa28be5bca307e6662b2d3720f97367f8c47cde", "testharness" ], "webrtc/idlharness.https.window.js": [ @@ -672466,7 +672504,7 @@ "support" ], "webvtt/rendering/cues-with-video/processing-model/regions/basic.html": [ - "4ffed9193b9abedd04b76c8f4848c4d0d93f1fab", + "d799c8fa88a7218756c6c0b77ba0b0a13d55ade3", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent-ref.html": [ @@ -672474,7 +672512,7 @@ "support" ], "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent.html": [ - "b9ef28212a4f80e67378247c75afc30c70228281", + "7a1c0711624cfbbc0bf4fa1a53b44265dba32cac", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent-ref.html": [ @@ -672482,7 +672520,7 @@ "support" ], "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent.html": [ - "5067d12e6f40b40e7bcc75f809c1afb5000fbf2d", + "98b5fc540c635da9679de2ebaac7f1d16ad1ea94", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/regions/scroll_up-ref.html": [ @@ -672490,7 +672528,7 @@ "support" ], "webvtt/rendering/cues-with-video/processing-model/regions/scroll_up.html": [ - "e1619af932a5bef76c5fb72ef7a97e11c8851bcc", + "93fa0e0ec039c1044abaaf9b136b38cc12dda150", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left-ref.html": [ @@ -672498,7 +672536,7 @@ "support" ], "webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left.html": [ - "c2edcb9f626a0096f8cd5d95408caa8a3da0c201", + "3ed340b4bf4096da1cbcd44c80ab1a9e574d2a56", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/regions/support/basic.vtt": [ @@ -672538,7 +672576,7 @@ "support" ], "webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html": [ - "85e699a262b8e03fc8592a22e6acc6dabf73b29a", + "69e71bf83c0bfea4457d0ef31319e187c8c11c5e", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent-ref.html": [ @@ -672546,7 +672584,7 @@ "support" ], "webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html": [ - "0641b176e6f617359b8f93912dfe88eff56d1032", + "58f1362892d163cc8a787f01b5bab4b8d68836f4", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent-ref.html": [ @@ -672554,7 +672592,7 @@ "support" ], "webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html": [ - "4377e9b4c03b224d60d1fcd029804118346daf47", + "2d23d1641afaa1a7ba08e711ac5f782f6c94fc83", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/repaint-ref.html": [ @@ -675074,7 +675112,7 @@ "testharness" ], "workers/modules/dedicated-worker-import-failure.html": [ - "81d93322c77dd0d223ade30fed5c6b43ab8f05e0", + "439bea888b2bac65f5de50d47c12639fd49168a4", "testharness" ], "workers/modules/dedicated-worker-import-meta.html": [ @@ -675190,7 +675228,7 @@ "support" ], "workers/modules/resources/new-worker-window.html": [ - "5ae150725eb973ce1c2c7b54eb45669e057e8875", + "a7bd2eedef6ab6d639f28e063ccd50aefbbb0528", "support" ], "workers/modules/resources/post-message-on-load-worker.js": [ diff --git a/tests/wpt/metadata/css/css-animations/inheritance.html.ini b/tests/wpt/metadata/css/css-animations/inheritance.html.ini deleted file mode 100644 index 495d1fed41d..00000000000 --- a/tests/wpt/metadata/css/css-animations/inheritance.html.ini +++ /dev/null @@ -1,49 +0,0 @@ -[inheritance.html] - [Property animation-name has initial value none] - expected: FAIL - - [Property animation-name does not inherit] - expected: FAIL - - [Property animation-direction has initial value normal] - expected: FAIL - - [Property animation-duration does not inherit] - expected: FAIL - - [Property animation-play-state has initial value running] - expected: FAIL - - [Property animation-fill-mode has initial value none] - expected: FAIL - - [Property animation-delay has initial value 0s] - expected: FAIL - - [Property animation-timing-function does not inherit] - expected: FAIL - - [Property animation-direction does not inherit] - expected: FAIL - - [Property animation-duration has initial value 0s] - expected: FAIL - - [Property animation-delay does not inherit] - expected: FAIL - - [Property animation-iteration-count does not inherit] - expected: FAIL - - [Property animation-fill-mode does not inherit] - expected: FAIL - - [Property animation-timing-function has initial value ease] - expected: FAIL - - [Property animation-play-state does not inherit] - expected: FAIL - - [Property animation-iteration-count has initial value 1] - expected: FAIL - diff --git a/tests/wpt/metadata/css/css-backgrounds/background-size-001.html.ini b/tests/wpt/metadata/css/css-backgrounds/background-size-001.html.ini index d3541181b00..c5e74478dc1 100644 --- a/tests/wpt/metadata/css/css-backgrounds/background-size-001.html.ini +++ b/tests/wpt/metadata/css/css-backgrounds/background-size-001.html.ini @@ -27,3 +27,6 @@ [background-size_percentage_max] expected: FAIL + [background-size_auto_auto] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini index dc6e246e9db..bb5db0ba4eb 100644 --- a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini +++ b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini @@ -323,3 +323,15 @@ [Matching font-style: 'italic' should prefer 'oblique 5deg 10deg' over 'oblique 5deg'] expected: FAIL + [Matching font-style: 'italic' should prefer 'oblique 5deg' over 'normal'] + expected: FAIL + + [Matching font-weight: '400' should prefer '400' over '450 460'] + expected: FAIL + + [Matching font-weight: '501' should prefer '390 410' over '300 350'] + expected: FAIL + + [Matching font-weight: '430' should prefer '420 440' over '450 460'] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-text-decor/inheritance.html.ini b/tests/wpt/metadata/css/css-text-decor/inheritance.html.ini deleted file mode 100644 index 63a096a4e92..00000000000 --- a/tests/wpt/metadata/css/css-text-decor/inheritance.html.ini +++ /dev/null @@ -1,49 +0,0 @@ -[inheritance.html] - [Property text-emphasis-style inherits] - expected: FAIL - - [Property text-emphasis-style has initial value none] - expected: FAIL - - [Property text-decoration-style has initial value solid] - expected: FAIL - - [Property text-underline-position has initial value auto] - expected: FAIL - - [Property text-decoration-line has initial value none] - expected: FAIL - - [Property text-emphasis-color has initial value rgba(2, 3, 4, 0.5)] - expected: FAIL - - [Property text-shadow has initial value none] - expected: FAIL - - [Property text-decoration-color has initial value rgba(2, 3, 4, 0.5)] - expected: FAIL - - [Property text-decoration-line does not inherit] - expected: FAIL - - [Property text-underline-position inherits] - expected: FAIL - - [Property text-emphasis-position inherits] - expected: FAIL - - [Property text-decoration-color does not inherit] - expected: FAIL - - [Property text-emphasis-position has initial value over right] - expected: FAIL - - [Property text-decoration-style does not inherit] - expected: FAIL - - [Property text-shadow inherits] - expected: FAIL - - [Property text-emphasis-color inherits] - expected: FAIL - diff --git a/tests/wpt/metadata/css/css-text/inheritance.html.ini b/tests/wpt/metadata/css/css-text/inheritance.html.ini index 8b09b31bc33..ea3be987a40 100644 --- a/tests/wpt/metadata/css/css-text/inheritance.html.ini +++ b/tests/wpt/metadata/css/css-text/inheritance.html.ini @@ -1,91 +1,7 @@ [inheritance.html] - [Property white-space has initial value normal] - expected: FAIL - - [Property overflow-wrap has initial value normal] - expected: FAIL - - [Property text-align-all has initial value start] - expected: FAIL - - [Property word-break has initial value normal] - expected: FAIL - - [Property text-indent inherits] - expected: FAIL - - [Property overflow-wrap inherits] - expected: FAIL - - [Property word-wrap has initial value normal] - expected: FAIL - - [Property text-justify has initial value auto] - expected: FAIL - - [Property hanging-punctuation inherits] - expected: FAIL - - [Property text-transform inherits] - expected: FAIL - - [Property tab-size inherits] - expected: FAIL - - [Property letter-spacing inherits] - expected: FAIL - [Property text-justify inherits] expected: FAIL [Property word-spacing has initial value 0px] expected: FAIL - [Property text-indent has initial value 0px] - expected: FAIL - - [Property line-break inherits] - expected: FAIL - - [Property word-break inherits] - expected: FAIL - - [Property hyphens inherits] - expected: FAIL - - [Property text-align-last inherits] - expected: FAIL - - [Property letter-spacing has initial value normal] - expected: FAIL - - [Property word-wrap inherits] - expected: FAIL - - [Property white-space inherits] - expected: FAIL - - [Property hyphens has initial value manual] - expected: FAIL - - [Property hanging-punctuation has initial value none] - expected: FAIL - - [Property tab-size has initial value 8] - expected: FAIL - - [Property text-align-all inherits] - expected: FAIL - - [Property text-align-last has initial value auto] - expected: FAIL - - [Property line-break has initial value auto] - expected: FAIL - - [Property text-transform has initial value none] - expected: FAIL - - [Property word-spacing inherits] - expected: FAIL - diff --git a/tests/wpt/metadata/css/css-transforms/inheritance.html.ini b/tests/wpt/metadata/css/css-transforms/inheritance.html.ini index eaca94aa108..b945679bc4d 100644 --- a/tests/wpt/metadata/css/css-transforms/inheritance.html.ini +++ b/tests/wpt/metadata/css/css-transforms/inheritance.html.ini @@ -1,61 +1,10 @@ [inheritance.html] - [Property rotate does not inherit] - expected: FAIL - - [Property scale has initial value none] - expected: FAIL - - [Property scale does not inherit] - expected: FAIL - [Property transform-origin has initial value 30px 20px] expected: FAIL - [Property backface-visibility does not inherit] - expected: FAIL - - [Property transform has initial value none] - expected: FAIL - [Property perspective-origin has initial value 30px 20px] expected: FAIL - [Property transform-box has initial value view-box] - expected: FAIL - - [Property transform does not inherit] - expected: FAIL - - [Property transform-style does not inherit] - expected: FAIL - - [Property translate does not inherit] - expected: FAIL - - [Property translate has initial value none] - expected: FAIL - - [Property backface-visibility has initial value visible] - expected: FAIL - - [Property perspective-origin does not inherit] - expected: FAIL - - [Property transform-style has initial value auto] - expected: FAIL - - [Property transform-box does not inherit] - expected: FAIL - [Property transform-origin does not inherit] expected: FAIL - [Property perspective does not inherit] - expected: FAIL - - [Property rotate has initial value none] - expected: FAIL - - [Property perspective has initial value none] - expected: FAIL - diff --git a/tests/wpt/metadata/css/css-transitions/inheritance.html.ini b/tests/wpt/metadata/css/css-transitions/inheritance.html.ini deleted file mode 100644 index 549c97e7414..00000000000 --- a/tests/wpt/metadata/css/css-transitions/inheritance.html.ini +++ /dev/null @@ -1,25 +0,0 @@ -[inheritance.html] - [Property transition-delay does not inherit] - expected: FAIL - - [Property transition-property has initial value all] - expected: FAIL - - [Property transition-timing-function has initial value ease] - expected: FAIL - - [Property transition-duration has initial value 0s] - expected: FAIL - - [Property transition-duration does not inherit] - expected: FAIL - - [Property transition-delay has initial value 0s] - expected: FAIL - - [Property transition-timing-function does not inherit] - expected: FAIL - - [Property transition-property does not inherit] - expected: FAIL - diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini index bde5c07388a..130c0181e43 100644 --- a/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini +++ b/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini @@ -1055,3 +1055,27 @@ [min-width length(ex) / values] expected: FAIL + [text-indent length(ex) / values] + expected: FAIL + + [text-indent length(px) / values] + expected: FAIL + + [text-indent length(mm) / values] + expected: FAIL + + [text-indent length(cm) / values] + expected: FAIL + + [text-shadow shadow(shadow) / values] + expected: FAIL + + [text-indent length(in) / values] + expected: FAIL + + [text-indent length(em) / values] + expected: FAIL + + [text-indent percentage(%) / values] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini index 1c8f983cd37..8850ec200da 100644 --- a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini +++ b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini @@ -74,6 +74,3 @@ [opacity end] expected: FAIL - [outline-width end] - expected: FAIL - diff --git a/tests/wpt/metadata/css/cssom-view/inheritance.html.ini b/tests/wpt/metadata/css/cssom-view/inheritance.html.ini deleted file mode 100644 index d7fcc9c1eb9..00000000000 --- a/tests/wpt/metadata/css/cssom-view/inheritance.html.ini +++ /dev/null @@ -1,7 +0,0 @@ -[inheritance.html] - [Property scroll-behavior has initial value auto] - expected: FAIL - - [Property scroll-behavior does not inherit] - expected: FAIL - diff --git a/tests/wpt/metadata/css/filter-effects/inheritance.html.ini b/tests/wpt/metadata/css/filter-effects/inheritance.html.ini deleted file mode 100644 index ff3390e8cef..00000000000 --- a/tests/wpt/metadata/css/filter-effects/inheritance.html.ini +++ /dev/null @@ -1,31 +0,0 @@ -[inheritance.html] - [Property color-interpolation-filters has initial value linearrgb] - expected: FAIL - - [Property flood-color does not inherit] - expected: FAIL - - [Property lighting-color does not inherit] - expected: FAIL - - [Property color-interpolation-filters inherits] - expected: FAIL - - [Property lighting-color has initial value rgb(255, 255, 255)] - expected: FAIL - - [Property flood-opacity does not inherit] - expected: FAIL - - [Property flood-opacity has initial value 1] - expected: FAIL - - [Property filter does not inherit] - expected: FAIL - - [Property filter has initial value none] - expected: FAIL - - [Property flood-color has initial value rgb(0, 0, 0)] - expected: FAIL - diff --git a/tests/wpt/metadata/css/filter-effects/parsing/backdrop-filter-computed.html.ini b/tests/wpt/metadata/css/filter-effects/parsing/backdrop-filter-computed.html.ini new file mode 100644 index 00000000000..b89270eb2c2 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/parsing/backdrop-filter-computed.html.ini @@ -0,0 +1,85 @@ +[backdrop-filter-computed.html] + [Property backdrop-filter value 'blur(10px) url("https://www.example.com/picture.svg#f") contrast(20) brightness(30)' computes to 'blur(10px) url("https://www.example.com/picture.svg#f") contrast(20) brightness(30)'] + expected: FAIL + + [Property backdrop-filter value 'contrast()' computes to 'contrast(1)'] + expected: FAIL + + [Property backdrop-filter value 'grayscale(50%)' computes to 'grayscale(0.5)'] + expected: FAIL + + [Property backdrop-filter value 'opacity(100%)' computes to 'opacity(1)'] + expected: FAIL + + [Property backdrop-filter value 'invert()' computes to 'invert(0)'] + expected: FAIL + + [Property backdrop-filter value 'saturate(0)' computes to 'saturate(0)'] + expected: FAIL + + [Property backdrop-filter value 'invert(0)' computes to 'invert(0)'] + expected: FAIL + + [Property backdrop-filter value 'hue-rotate()' computes to 'hue-rotate(0deg)'] + expected: FAIL + + [Property backdrop-filter value 'drop-shadow(1px 2px)' computes to 'drop-shadow(rgb(0, 255, 0) 1px 2px 0px)'] + expected: FAIL + + [Property backdrop-filter value 'brightness(0)' computes to 'brightness(0)'] + expected: FAIL + + [Property backdrop-filter value 'opacity()' computes to 'opacity(1)'] + expected: FAIL + + [Property backdrop-filter value 'brightness(300%)' computes to 'brightness(3)'] + expected: FAIL + + [Property backdrop-filter value 'blur()' computes to 'blur(0px)'] + expected: FAIL + + [Property backdrop-filter value 'sepia()' computes to 'sepia(1)'] + expected: FAIL + + [Property backdrop-filter value 'grayscale()' computes to 'grayscale(1)'] + expected: FAIL + + [Property backdrop-filter value 'sepia(100%)' computes to 'sepia(1)'] + expected: FAIL + + [Property backdrop-filter value 'sepia(0)' computes to 'sepia(0)'] + expected: FAIL + + [Property backdrop-filter value 'brightness()' computes to 'brightness(0)'] + expected: FAIL + + [Property backdrop-filter value 'invert(100%)' computes to 'invert(1)'] + expected: FAIL + + [Property backdrop-filter value 'saturate(300%)' computes to 'saturate(3)'] + expected: FAIL + + [Property backdrop-filter value 'hue-rotate(90deg)' computes to 'hue-rotate(90deg)'] + expected: FAIL + + [Property backdrop-filter value 'contrast(0)' computes to 'contrast(0)'] + expected: FAIL + + [Property backdrop-filter value 'none' computes to 'none'] + expected: FAIL + + [Property backdrop-filter value 'contrast(300%)' computes to 'contrast(3)'] + expected: FAIL + + [Property backdrop-filter value 'drop-shadow(rgb(4, 5, 6) 1px 2px 0px)' computes to 'drop-shadow(rgb(4, 5, 6) 1px 2px 0px)'] + expected: FAIL + + [Property backdrop-filter value 'opacity(0)' computes to 'opacity(0)'] + expected: FAIL + + [Property backdrop-filter value 'saturate()' computes to 'saturate(1)'] + expected: FAIL + + [Property backdrop-filter value 'blur(100px)' computes to 'blur(100px)'] + expected: FAIL + diff --git a/tests/wpt/metadata/css/filter-effects/parsing/backdrop-filter-parsing-valid.html.ini b/tests/wpt/metadata/css/filter-effects/parsing/backdrop-filter-parsing-valid.html.ini new file mode 100644 index 00000000000..1b34741102d --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/parsing/backdrop-filter-parsing-valid.html.ini @@ -0,0 +1,112 @@ +[backdrop-filter-parsing-valid.html] + [e.style['backdrop-filter'\] = "sepia()" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "hue-rotate(0)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "brightness(300%)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "grayscale()" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "saturate()" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "invert(300%)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "opacity(300%)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "sepia(300%)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "url(\\"picture.svg#f\\")" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "opacity()" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "opacity(0)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "none" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "drop-shadow(0 0 0)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "blur()" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "contrast(300%)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "blur(0)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "invert(0)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "brightness(0)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "drop-shadow(1px 2px 3px)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "hue-rotate(90deg)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "drop-shadow(rgba(4, 5, 6, 0.75) 1px 2px 3px)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "drop-shadow(1px 2px rgb(4, 5, 6))" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "sepia(0)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "grayscale(300%)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "drop-shadow(rgb(4, 5, 6) 1px 2px)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "blur(10px) url(\\"picture.svg#f\\") contrast(20) brightness(30)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "drop-shadow(1px 2px)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "url(\\"https://www.example.com/picture.svg#f\\")" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "saturate(0)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "grayscale(0)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "saturate(300%)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "invert()" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "brightness()" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "contrast()" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "hue-rotate()" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "contrast(0)" should set the property value] + expected: FAIL + + [e.style['backdrop-filter'\] = "blur(100px)" should set the property value] + 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 71e9dfd26e9..91d6593e134 100644 --- a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini +++ b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini @@ -509,7 +509,7 @@ [single-byte-decoder.html?XMLHttpRequest] - expected: CRASH + expected: TIMEOUT [ISO-8859-2: iso_8859-2:1987 (XMLHttpRequest)] expected: FAIL @@ -540,9 +540,6 @@ [windows-1258: cp1258 (XMLHttpRequest)] expected: TIMEOUT - [windows-1253: x-cp1253 (XMLHttpRequest)] - expected: TIMEOUT - [windows-1256: cp1256 (XMLHttpRequest)] expected: TIMEOUT @@ -579,21 +576,9 @@ [windows-1257: x-cp1257 (XMLHttpRequest)] expected: TIMEOUT - [windows-1254: cp1254 (XMLHttpRequest)] - expected: TIMEOUT - [windows-1254: iso8859-9 (XMLHttpRequest)] expected: TIMEOUT - [windows-1253: windows-1253 (XMLHttpRequest)] - expected: TIMEOUT - - [windows-1253: cp1253 (XMLHttpRequest)] - expected: TIMEOUT - - [windows-1254: l5 (XMLHttpRequest)] - expected: TIMEOUT - [windows-1254: x-cp1254 (XMLHttpRequest)] expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini deleted file mode 100644 index 87b07c3e670..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_1.html] - [Multiple history traversals from the same task] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini new file mode 100644 index 00000000000..385376c7321 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_4.html] + [Multiple history traversals, last would be aborted] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini index 8c50bd0c259..29b0025a2ae 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini @@ -2,10 +2,10 @@ type: testharness expected: TIMEOUT [picture: source (max-width:500px) broken image, img valid image, resize to wide] - expected: FAIL + expected: TIMEOUT [picture: source (max-width:500px) valid image, img valid image, resize to wide] - expected: FAIL + expected: TIMEOUT [picture: source (max-width:500px) valid image, img broken image, resize to narrow] expected: TIMEOUT diff --git a/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini b/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini deleted file mode 100644 index 9e522297c94..00000000000 --- a/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini +++ /dev/null @@ -1,7 +0,0 @@ -[toggleEvent.html] - [Calling open twice on 'details' fires only one toggle event] - expected: FAIL - - [Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element] - expected: FAIL - diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-xml.window.js.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-xml.window.js.ini index 25f0d603b3d..2314441517b 100644 --- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-xml.window.js.ini +++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-xml.window.js.ini @@ -9,3 +9,6 @@ [document.open should throw an InvalidStateError with XML document even when the ignore-opens-during-unload counter is greater than 0 (during pagehide event)] expected: FAIL + [document.open should throw an InvalidStateError with XML document even when there is an active parser executing script] + expected: FAIL + diff --git a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini index 99a24216c88..7725b118e9d 100644 --- a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini +++ b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini @@ -12,3 +12,6 @@ [Verifies the resolution of entry.startTime is at least 5 microseconds.] expected: TIMEOUT + [Verifies the resolution of performance.now() is at least 5 microseconds.] + expected: FAIL + diff --git a/tests/wpt/metadata/quirks/unitless-length/no-quirks.html.ini b/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini index 818a429ed39..2ed601c6ff4 100644 --- a/tests/wpt/metadata/quirks/unitless-length/no-quirks.html.ini +++ b/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini @@ -1,4 +1,4 @@ -[no-quirks.html] +[quirks.html] [top: -\\31 .5] expected: FAIL diff --git a/tests/wpt/metadata/workers/modules/dedicated-worker-import-csp.html.ini b/tests/wpt/metadata/workers/modules/dedicated-worker-import-csp.html.ini index 0f5f503c53f..48e41ffe093 100644 --- a/tests/wpt/metadata/workers/modules/dedicated-worker-import-csp.html.ini +++ b/tests/wpt/metadata/workers/modules/dedicated-worker-import-csp.html.ini @@ -1,5 +1,5 @@ [dedicated-worker-import-csp.html] - expected: ERROR + expected: CRASH [DedicatedWorker: CSP for ES Modules] expected: FAIL diff --git a/tests/wpt/metadata/workers/modules/dedicated-worker-import-failure.html.ini b/tests/wpt/metadata/workers/modules/dedicated-worker-import-failure.html.ini index fa1a7f0722b..90f53ef6a9f 100644 --- a/tests/wpt/metadata/workers/modules/dedicated-worker-import-failure.html.ini +++ b/tests/wpt/metadata/workers/modules/dedicated-worker-import-failure.html.ini @@ -1,6 +1,5 @@ [dedicated-worker-import-failure.html] type: testharness - expected: ERROR [DedicatedWorker: import failure] expected: FAIL diff --git a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini index 9d72f08e38e..f806a845a2a 100644 --- a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini +++ b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini @@ -1,5 +1,6 @@ [005.html] type: testharness + expected: ERROR [dedicated worker in shared worker in dedicated worker] expected: FAIL diff --git a/tests/wpt/web-platform-tests/.azure-pipelines.yml b/tests/wpt/web-platform-tests/.azure-pipelines.yml index f2a7b84f358..e5d247af94e 100644 --- a/tests/wpt/web-platform-tests/.azure-pipelines.yml +++ b/tests/wpt/web-platform-tests/.azure-pipelines.yml @@ -2,6 +2,10 @@ # macOS. Documentation to help understand this setup: # https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema # https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables +# +# In addition to this configuration file, the "Build pull requests from forks +# of this repository" setting must also be enabled in the Azure DevOps project: +# https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/github#validate-contributions-from-forks trigger: none # disable builds for branches diff --git a/tests/wpt/web-platform-tests/.taskcluster.yml b/tests/wpt/web-platform-tests/.taskcluster.yml index d29e6867852..bcac7f5abbc 100644 --- a/tests/wpt/web-platform-tests/.taskcluster.yml +++ b/tests/wpt/web-platform-tests/.taskcluster.yml @@ -125,7 +125,7 @@ tasks: owner: ${event.pull_request.user.login}@users.noreply.github.com source: ${event.repository.url} payload: - image: jugglinmike/web-platform-tests:0.21 + image: harjgam/web-platform-tests:0.22 maxRunTime: 7200 artifacts: public/results: diff --git a/tests/wpt/web-platform-tests/background-fetch/service_workers/sw-update-ui.js b/tests/wpt/web-platform-tests/background-fetch/service_workers/sw-update-ui.js index 5dec087cd15..3848dc4402b 100644 --- a/tests/wpt/web-platform-tests/background-fetch/service_workers/sw-update-ui.js +++ b/tests/wpt/web-platform-tests/background-fetch/service_workers/sw-update-ui.js @@ -1,3 +1,4 @@ +importScripts('/resources/testharness.js'); importScripts('sw-helpers.js'); async function updateUI(event) { @@ -13,10 +14,20 @@ async function updateUI(event) { return Promise.all(updateParams.map(param => event.updateUI(param))) .then(() => 'update success') - .catch(e => e.message); + .catch(e => e.name); } self.addEventListener('backgroundfetchsuccess', event => { + if (event.registration.id === 'update-inactive') { + // Post an async task before calling updateUI from the inactive event. + // Any async behaviour outside `waitUntil` should mark the event as + // inactive, and subsequent calls to `updateUI` should fail. + new Promise(r => step_timeout(r, 0)) + .then(() => event.updateUI({ title: 'New title' })) + .catch(e => sendMessageToDocument({ update: e.name })); + return; + } + event.waitUntil(updateUI(event) - .then(update => sendMessageToDocument({ type: event.type, update }))) + .then(update => sendMessageToDocument({ update }))); }); diff --git a/tests/wpt/web-platform-tests/background-fetch/update-ui.https.window.js b/tests/wpt/web-platform-tests/background-fetch/update-ui.https.window.js index aed0bb86d26..90d3c2e7ed4 100644 --- a/tests/wpt/web-platform-tests/background-fetch/update-ui.https.window.js +++ b/tests/wpt/web-platform-tests/background-fetch/update-ui.https.window.js @@ -27,6 +27,17 @@ backgroundFetchTest(async (test, backgroundFetch) => { assert_equals(registration.id, registrationId); const message = await getMessageFromServiceWorker(); - assert_equals(message.update, 'updateUI may only be called once.'); + assert_equals(message.update, 'InvalidStateError'); }, 'Background Fetch updateUI called twice fails', swName); + +backgroundFetchTest(async (test, backgroundFetch) => { + const registrationId = 'update-inactive'; + const registration = + await backgroundFetch.fetch(registrationId, 'resources/feature-name.txt'); + assert_equals(registration.id, registrationId); + + const message = await getMessageFromServiceWorker(); + assert_equals(message.update, 'InvalidStateError'); + +}, 'Background Fetch updateUI fails when event is not active', swName); diff --git a/tests/wpt/web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html b/tests/wpt/web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html index 280f32a4852..81b0d189464 100644 --- a/tests/wpt/web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html @@ -645,7 +645,7 @@ test(t => { const expected = [ { offset: 0, computedOffset: 0, easing: "ease", composite: "auto", - backgroundSize: "auto auto" }, + backgroundSize: "auto" }, { offset: 1, computedOffset: 1, easing: "ease", composite: "auto", backgroundSize: "50% auto, 6px auto, contain" }, ]; @@ -657,7 +657,7 @@ test(t => { // Test inheriting a background-size value expected[0].backgroundSize = div.style.backgroundSize = - "30px auto, 40% auto, auto auto"; + "30px auto, 40% auto, auto"; frames = getKeyframes(div); for (let i = 0; i < frames.length; i++) { diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-001.html b/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-001.html index b5cf0c84c6a..3c9b9d5e55d 100644 --- a/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-001.html +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-001.html @@ -81,7 +81,7 @@ document.getElementById("test").style.backgroundSize = "auto auto"; test(function() { assert_equals(getComputedStyle(document.getElementById("test"), null).getPropertyValue("background-size"), - "auto auto", "background-size supporting value"); + "auto", "background-size supporting value"); }, "background-size_auto_auto"); document.getElementById("test").style.backgroundSize = "auto 15px"; diff --git a/tests/wpt/web-platform-tests/css/filter-effects/parsing/backdrop-filter-computed.html b/tests/wpt/web-platform-tests/css/filter-effects/parsing/backdrop-filter-computed.html new file mode 100644 index 00000000000..96de7b941ba --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/parsing/backdrop-filter-computed.html @@ -0,0 +1,62 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Filter Effects Module Level 2: getComputedValue().backdropFilter</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-2/#BackdropFilterProperty"> +<meta name="assert" content="backdrop-filter supports omitted arguments'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/computed-testcommon.js"></script> +</head> +<body> +<style> + #target { + color: lime; + } +</style> +<div id="target"></div> +<script> +test_computed_value("backdrop-filter", "none"); + +test_computed_value("backdrop-filter", "blur(100px)"); +test_computed_value("backdrop-filter", "blur()", "blur(0px)"); + +test_computed_value("backdrop-filter", "brightness(0)"); +test_computed_value("backdrop-filter", "brightness(300%)", "brightness(3)"); +test_computed_value("backdrop-filter", "brightness()", "brightness(0)"); + +test_computed_value("backdrop-filter", "contrast(0)"); +test_computed_value("backdrop-filter", "contrast(300%)", "contrast(3)"); +test_computed_value("backdrop-filter", "contrast()", "contrast(1)"); + +test_computed_value("backdrop-filter", "drop-shadow(1px 2px)", "drop-shadow(rgb(0, 255, 0) 1px 2px 0px)"); +test_computed_value("backdrop-filter", "drop-shadow(rgb(4, 5, 6) 1px 2px 0px)"); + +test_computed_value("backdrop-filter", "grayscale(50%)", "grayscale(0.5)"); +test_computed_value("backdrop-filter", "grayscale()", "grayscale(1)"); + +test_computed_value("backdrop-filter", "hue-rotate(90deg)"); +test_computed_value("backdrop-filter", "hue-rotate()", "hue-rotate(0deg)"); + +test_computed_value("backdrop-filter", "invert(0)"); +test_computed_value("backdrop-filter", "invert(100%)", "invert(1)"); +test_computed_value("backdrop-filter", "invert()", "invert(0)"); + +test_computed_value("backdrop-filter", "opacity(0)"); +test_computed_value("backdrop-filter", "opacity(100%)", "opacity(1)"); +test_computed_value("backdrop-filter", "opacity()", "opacity(1)"); + +test_computed_value("backdrop-filter", "saturate(0)"); +test_computed_value("backdrop-filter", "saturate(300%)", "saturate(3)"); +test_computed_value("backdrop-filter", "saturate()", "saturate(1)"); + +test_computed_value("backdrop-filter", "sepia(0)"); +test_computed_value("backdrop-filter", "sepia(100%)", "sepia(1)"); +test_computed_value("backdrop-filter", "sepia()", "sepia(1)"); + +test_computed_value("backdrop-filter", 'blur(10px) url("https://www.example.com/picture.svg#f") contrast(20) brightness(30)'); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/parsing/backdrop-filter-parsing-invalid.html b/tests/wpt/web-platform-tests/css/filter-effects/parsing/backdrop-filter-parsing-invalid.html new file mode 100644 index 00000000000..4e6b74682c5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/parsing/backdrop-filter-parsing-invalid.html @@ -0,0 +1,54 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Filter Effects Module Level 2: parsing backdrop-filter with invalid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-2/#BackdropFilterProperty"> +<meta name="assert" content="backdrop-filter supports only the grammar 'none | <backdrop-filter-function-list>'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/parsing-testcommon.js"></script> +</head> +<body> +<script> +// Edge fails: expected "" but got "none" + +test_invalid_value("backdrop-filter", "auto"); +test_invalid_value("backdrop-filter", "none hue-rotate(0deg)"); + +test_invalid_value("backdrop-filter", "blur(10)"); +test_invalid_value("backdrop-filter", "blur(-100px)"); + +test_invalid_value("backdrop-filter", "brightness(-20)"); +test_invalid_value("backdrop-filter", "brightness(30px)"); + +test_invalid_value("backdrop-filter", "contrast(-20)"); +test_invalid_value("backdrop-filter", "contrast(30px)"); + +test_invalid_value("backdrop-filter", "drop-shadow(10 20)"); +test_invalid_value("backdrop-filter", "drop-shadow(10% 20%)"); +test_invalid_value("backdrop-filter", "drop-shadow(1px)"); +test_invalid_value("backdrop-filter", "drop-shadow(1px 2px 3px 4px)"); +test_invalid_value("backdrop-filter", "drop-shadow(rgb(4, 5, 6))"); +test_invalid_value("backdrop-filter", "drop-shadow()"); + +test_invalid_value("backdrop-filter", "grayscale(-20)"); +test_invalid_value("backdrop-filter", "grayscale(30px)"); + +test_invalid_value("backdrop-filter", "hue-rotate(90)"); + +test_invalid_value("backdrop-filter", "invert(-20)"); +test_invalid_value("backdrop-filter", "invert(30px)"); + +test_invalid_value("backdrop-filter", "opacity(-20)"); +test_invalid_value("backdrop-filter", "opacity(30px)"); + +test_invalid_value("backdrop-filter", "saturate(-20)"); +test_invalid_value("backdrop-filter", "saturate(30px)"); + +test_invalid_value("backdrop-filter", "sepia(-20)"); +test_invalid_value("backdrop-filter", "sepia(30px)"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/parsing/backdrop-filter-parsing-valid.html b/tests/wpt/web-platform-tests/css/filter-effects/parsing/backdrop-filter-parsing-valid.html new file mode 100644 index 00000000000..2531b09a328 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/parsing/backdrop-filter-parsing-valid.html @@ -0,0 +1,67 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Filter Effects Module Level 2: parsing backdrop-filter with valid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-2/#BackdropFilterProperty"> +<meta name="assert" content="backdrop-filter supports the full grammar 'none | <backdrop-filter-function-list>'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_valid_value("backdrop-filter", "none"); + +test_valid_value("backdrop-filter", "blur(100px)"); +test_valid_value("backdrop-filter", "blur(0)", "blur(0px)"); +test_valid_value("backdrop-filter", "blur()"); + +test_valid_value("backdrop-filter", "brightness(0)"); +test_valid_value("backdrop-filter", "brightness(300%)"); +test_valid_value("backdrop-filter", "brightness()"); + +test_valid_value("backdrop-filter", "contrast(0)"); +test_valid_value("backdrop-filter", "contrast(300%)"); +test_valid_value("backdrop-filter", "contrast()"); + +test_valid_value("backdrop-filter", "drop-shadow(1px 2px)"); +test_valid_value("backdrop-filter", "drop-shadow(1px 2px 3px)"); +test_valid_value("backdrop-filter", "drop-shadow(0 0 0)", "drop-shadow(0px 0px 0px)"); +test_valid_value("backdrop-filter", "drop-shadow(rgb(4, 5, 6) 1px 2px)"); +test_valid_value("backdrop-filter", "drop-shadow(1px 2px rgb(4, 5, 6))", "drop-shadow(rgb(4, 5, 6) 1px 2px)"); +test_valid_value("backdrop-filter", "drop-shadow(rgba(4, 5, 6, 0.75) 1px 2px 3px)"); + +test_valid_value("backdrop-filter", "grayscale(0)"); +test_valid_value("backdrop-filter", "grayscale(300%)", "grayscale(100%)"); +test_valid_value("backdrop-filter", "grayscale()"); + +test_valid_value("backdrop-filter", "hue-rotate(90deg)"); +test_valid_value("backdrop-filter", "hue-rotate(0)", "hue-rotate(0deg)"); +test_valid_value("backdrop-filter", "hue-rotate()"); + +test_valid_value("backdrop-filter", "invert(0)"); +test_valid_value("backdrop-filter", "invert(300%)", "invert(100%)"); +test_valid_value("backdrop-filter", "invert()"); + +test_valid_value("backdrop-filter", "opacity(0)"); +test_valid_value("backdrop-filter", "opacity(300%)", "opacity(100%)"); +test_valid_value("backdrop-filter", "opacity()"); + +test_valid_value("backdrop-filter", "saturate(0)"); +test_valid_value("backdrop-filter", "saturate(300%)"); +test_valid_value("backdrop-filter", "saturate()"); + +test_valid_value("backdrop-filter", "sepia(0)"); +test_valid_value("backdrop-filter", "sepia(300%)", "sepia(100%)"); +test_valid_value("backdrop-filter", "sepia()"); + +test_valid_value("backdrop-filter", 'url("picture.svg#f")'); + +test_valid_value("backdrop-filter", 'url("https://www.example.com/picture.svg#f")'); + +test_valid_value("backdrop-filter", 'blur(10px) url("picture.svg#f") contrast(20) brightness(30)'); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/support/inheritance-testcommon.js b/tests/wpt/web-platform-tests/css/support/inheritance-testcommon.js index 9f59cbbb6de..9229f1268ea 100644 --- a/tests/wpt/web-platform-tests/css/support/inheritance-testcommon.js +++ b/tests/wpt/web-platform-tests/css/support/inheritance-testcommon.js @@ -1,7 +1,10 @@ 'use strict'; +(function() { + function assert_initial(property, initial) { test(() => { + const target = document.getElementById('target'); if (!getComputedStyle(target)[property]) return; target.style[property] = 'initial'; @@ -13,6 +16,8 @@ function assert_initial(property, initial) { /** * Create tests that a CSS property inherits and has the given initial value. * + * The current document must have an element #target within element #container. + * * @param {string} property The name of the CSS property being tested. * @param {string} initial The computed value for 'initial'. * @param {string} other An arbitrary value for the property that round @@ -22,6 +27,8 @@ function assert_inherited(property, initial, other) { assert_initial(property, initial); test(() => { + const container = document.getElementById('container'); + const target = document.getElementById('target'); if (!getComputedStyle(target)[property]) return; container.style[property] = 'initial'; @@ -45,6 +52,8 @@ function assert_inherited(property, initial, other) { * Create tests that a CSS property does not inherit, and that it has the * given initial value. * + * The current document must have an element #target within element #container. + * * @param {string} property The name of the CSS property being tested. * @param {string} initial The computed value for 'initial'. * @param {string} other An arbitrary value for the property that round @@ -54,6 +63,8 @@ function assert_not_inherited(property, initial, other) { assert_initial(property, initial); test(() => { + const container = document.getElementById('container'); + const target = document.getElementById('target'); if (!getComputedStyle(target)[property]) return; container.style[property] = 'initial'; @@ -69,3 +80,7 @@ function assert_not_inherited(property, initial, other) { target.style[property] = ''; }, 'Property ' + property + ' does not inherit'); } + +window.assert_inherited = assert_inherited; +window.assert_not_inherited = assert_not_inherited; +})(); diff --git a/tests/wpt/web-platform-tests/css/support/parsing-testcommon.js b/tests/wpt/web-platform-tests/css/support/parsing-testcommon.js index b075882f89a..7ecd588aaf5 100644 --- a/tests/wpt/web-platform-tests/css/support/parsing-testcommon.js +++ b/tests/wpt/web-platform-tests/css/support/parsing-testcommon.js @@ -10,14 +10,12 @@ function test_valid_value(property, value, serializedValue) { var stringifiedValue = JSON.stringify(value); test(function(){ - var div = document.createElement('div'); - div.style[property] = value; - assert_not_equals(div.style.getPropertyValue(property), "", "property should be set"); - - var div = document.createElement('div'); + var div = document.getElementById('target') || document.createElement('div'); + div.style[property] = ""; div.style[property] = value; var readValue = div.style.getPropertyValue(property); - if (serializedValue instanceof Array) + assert_not_equals(readValue, "", "property should be set"); + if (Array.isArray(serializedValue)) assert_in_array(readValue, serializedValue, "serialization should be sound"); else assert_equals(readValue, serializedValue, "serialization should be canonical"); @@ -32,7 +30,8 @@ function test_invalid_value(property, value) { var stringifiedValue = JSON.stringify(value); test(function(){ - var div = document.createElement('div'); + var div = document.getElementById('target') || document.createElement('div'); + div.style[property] = ""; div.style[property] = value; assert_equals(div.style.getPropertyValue(property), ""); }, "e.style['" + property + "'] = " + stringifiedValue + " should not set the property value"); diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/reftest.list b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/reftest.list index 75a318005eb..9a6799e9dcc 100644 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/reftest.list +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/reftest.list @@ -1,4 +1,3 @@ - # <shape-box> only == shape-outside-margin-box-001.html shape-outside-margin-box-001-ref.html == shape-outside-margin-box-002.html shape-outside-margin-box-002-ref.html diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-1-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-1-ref.html deleted file mode 100644 index 8a568d25d92..00000000000 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-1-ref.html +++ /dev/null @@ -1,90 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"> - <title>Individual transform: compare individual transform with transform functions</title> - <link rel="author" title="CJ Ku" href="mailto:cku@mozilla.com"> - <link rel="author" title="Mozilla" href="https://www.mozilla.org"> - <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#individual-transforms"> - <meta name="assert" content="Tests whether individaul transform works correctlyi by compare the rendering result with transfrom functions of the 'transform' property."/> - <style> - div { - position: fixed; - width: 100px; - height: 100px; - transform-origin: 0 0; - border-style: solid; - border-width: 10px 0px 10px 0px; - border-color: lime; - } - .row_1 { - top: 100px; - } - .scale_1{ - left: 100px; - width: 50px; - height: 100px; - transform: scaleX(2); - } - .translate_1 { - left: 150px; - transform: translateX(150px); - } - .rotate_1 { - left: 450px; - transform-origin: 50% 50%; - transform: rotate(90deg); - } - - .row_2 { - top: 250px; - } - .scale_2{ - left: 100px; - width: 50px; - height: 50px; - transform: scale(2, 2); - } - .translate_2 { - left: 150px; - top: 200px; - transform: translate(150px, 50px); - } - .rotate_2 { - left: 450px; - transform-origin: 50% 50%; - transform: rotate3d(0, 0, 1, 90deg); - } - .row_3 { - transform: perspective(500px); - top: 400px; - } - .scale_3{ - left: 100px; - width: 50px; - height: 50px; - transform: scale3d(2, 2, 2); - } - .translate_3 { - left: 150px; - transform: translate3d(150px, 10px, 10px); - } - .rotate_3 { - left: 450px; - transform-origin: 50% 50%; - transform: rotate3d(0, 1, 0, 45deg); - } - </style> - </head> - <body> - <div class="scale_1 row_1"></div> - <div class="translate_1 row_1"></div> - <div class="rotate_1 row_1"></div> - <div class="scale_2 row_2"></div> - <div class="translate_2 row_2"></div> - <div class="rotate_2 row_2"></div> - <div class="scale_3 row_3"></div> - <div class="translate_3 row_3"></div> - <div class="rotate_3 row_3"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-1.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-1.html deleted file mode 100644 index 4f83e2eac47..00000000000 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-1.html +++ /dev/null @@ -1,100 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"> - <title>Individual transform: compare individual transform with transform functions</title> - <link rel="author" title="CJ Ku" href="mailto:cku@mozilla.com"> - <link rel="author" title="Mozilla" href="https://www.mozilla.org"> - <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#individual-transforms"> - <meta name="assert" content="Tests whether individaul transform works correctlyi by compare the rendering result with transfrom functions of the 'transform' property."/> - <link rel="match" href="individual-transform-1-ref.html"> - <style> - div { - position: fixed; - width: 100px; - height: 100px; - transform-origin: 0 0; - border-style: solid; - border-width: 10px 0px 10px 0px; - border-color: lime; - } - .row_1 { - top: 100px; - } - .scale_1{ - left: 100px; - width: 50px; - height: 100px; - /* test 'scale: <number>' */ - scale: 2; - } - .translate_1 { - left: 150px; - /* test 'translate: <length-percentage>' */ - translate: 150px; - } - .rotate_1 { - left: 450px; - transform-origin: 50% 50%; - /* test 'rota: te<angle>' */ - rotate: 90deg; - } - - .row_2 { - top: 250px; - } - .scale_2{ - left: 100px; - width: 50px; - height: 50px; - /* test 'scale: <number>{2}'' */ - scale: 2 2; - } - .translate_2 { - left: 150px; - top: 200px; - /* test 'translate: <length-percentage><length-percentage>' */ - translate: 150px 50px; - } - .rotate_2 { - left: 450px; - transform-origin: 50% 50%; - /* test 'rotate: <number>{3}<angle>'*/ - rotate: 0 0 1 90deg; - } - .row_3 { - transform: perspective(500px); - top: 400px; - } - .scale_3{ - left: 100px; - width: 50px; - height: 50px; - /* test 'scale: <number>{3}'' */ - scale: 2 2 2; - } - .translate_3 { - left: 150px; - /* test 'translate: <length-percentage><length>' */ - translate: 150px 10px 10px; - } - .rotate_3 { - left: 450px; - transform-origin: 50% 50%; - /* test 'rotate: <number>{3}<angle>'*/ - rotate: 0 1 0 45deg; - } - </style> - </head> - <body> - <div class="scale_1 row_1"></div> - <div class="translate_1 row_1"></div> - <div class="rotate_1 row_1"></div> - <div class="scale_2 row_2"></div> - <div class="translate_2 row_2"></div> - <div class="rotate_2 row_2"></div> - <div class="scale_3 row_3"></div> - <div class="translate_3 row_3"></div> - <div class="rotate_3 row_3"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2-ref.html deleted file mode 100644 index ee956aa301f..00000000000 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2-ref.html +++ /dev/null @@ -1,30 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"> - <title>Individual transform: combine individual transform properties</title> - <link rel="author" title="CJ Ku" href="mailto:cku@mozilla.com"> - <link rel="author" title="Mozilla" href="https://www.mozilla.org"> - <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#individual-transforms"> - <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#ctm"> - <meta name="assert" content="Tests that we combine transforms in the correct order."/> - <style> - div { - position: fixed; - width: 100px; - height: 100px; - top: 200px; - left: 200px; - transform-origin: 0 0; - border-style: solid; - border-width: 10px 0px 10px 0px; - border-color: lime; - transform: translate(50px, 50px) rotate(45deg) scale(2, 2); - } - - </style> - </head> - <body> - <div></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2a.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2a.html deleted file mode 100644 index 3f6c97386ba..00000000000 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2a.html +++ /dev/null @@ -1,32 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"> - <title>Individual transform: combine individual transform properties</title> - <link rel="author" title="CJ Ku" href="mailto:cku@mozilla.com"> - <link rel="author" title="Mozilla" href="https://www.mozilla.org"> - <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#individual-transforms"> - <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#ctm"> - <meta name="assert" content="Tests that we combine transforms in the correct order."/> - <link rel="match" href="individual-transform-2-ref.html"> - <style> - div { - position: fixed; - width: 100px; - height: 100px; - top: 200px; - left: 200px; - transform-origin: 0 0; - border-style: solid; - border-width: 10px 0px 10px 0px; - border-color: lime; - translate: 50px 50px; - rotate: 45deg; - scale: 2 2; - } - </style> - </head> - <body> - <div></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2b.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2b.html deleted file mode 100644 index 94dac2f10ff..00000000000 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2b.html +++ /dev/null @@ -1,32 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"> - <title>Individual transform: combine individual transform properties</title> - <link rel="author" title="CJ Ku" href="mailto:cku@mozilla.com"> - <link rel="author" title="Mozilla" href="https://www.mozilla.org"> - <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#individual-transforms"> - <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#ctm"> - <meta name="assert" content="Tests that we combine transforms in the correct order."/> - <link rel="match" href="individual-transform-2-ref.html"> - <style> - div { - position: fixed; - width: 100px; - height: 100px; - top: 200px; - left: 200px; - transform-origin: 0 0; - border-style: solid; - border-width: 10px 0px 10px 0px; - border-color: lime; - rotate: 45deg; - scale: 2 2; - translate: 50px 50px; - } - </style> - </head> - <body> - <div></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2c.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2c.html deleted file mode 100644 index f84ae228065..00000000000 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2c.html +++ /dev/null @@ -1,32 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"> - <title>Individual transform: combine individual transform properties</title> - <link rel="author" title="CJ Ku" href="mailto:cku@mozilla.com"> - <link rel="author" title="Mozilla" href="https://www.mozilla.org"> - <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#individual-transforms"> - <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#ctm"> - <meta name="assert" content="Tests that we combine transforms in the correct order."/> - <link rel="match" href="individual-transform-2-ref.html"> - <style> - div { - position: fixed; - width: 100px; - height: 100px; - top: 200px; - left: 200px; - transform-origin: 0 0; - border-style: solid; - border-width: 10px 0px 10px 0px; - border-color: lime; - translate: 50px 50px; - rotate: 45deg; - transform: scale(2, 2); - } - </style> - </head> - <body> - <div></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2d.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2d.html deleted file mode 100644 index 5b5694f544e..00000000000 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2d.html +++ /dev/null @@ -1,31 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"> - <title>Individual transform: combine individual transform properties</title> - <link rel="author" title="CJ Ku" href="mailto:cku@mozilla.com"> - <link rel="author" title="Mozilla" href="https://www.mozilla.org"> - <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#individual-transforms"> - <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#ctm"> - <meta name="assert" content="Tests that we combine transforms in the correct order."/> - <link rel="match" href="individual-transform-2-ref.html"> - <style> - div { - position: fixed; - width: 100px; - height: 100px; - top: 200px; - left: 200px; - transform-origin: 0 0; - border-style: solid; - border-width: 10px 0px 10px 0px; - border-color: lime; - translate: 50px 50px; - transform: rotate(45deg) scale(2, 2); - } - </style> - </head> - <body> - <div></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2e.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2e.html deleted file mode 100644 index 0350137bede..00000000000 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2e.html +++ /dev/null @@ -1,31 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"> - <title>Individual transform: combine individual transform properties</title> - <link rel="author" title="CJ Ku" href="mailto:cku@mozilla.com"> - <link rel="author" title="Mozilla" href="https://www.mozilla.org"> - <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#individual-transforms"> - <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#ctm"> - <meta name="assert" content="Tests that we combine transforms in the correct order."/> - <link rel="match" href="individual-transform-2-ref.html"> - <style> - div { - position: fixed; - width: 100px; - height: 100px; - top: 200px; - left: 200px; - transform-origin: 0 0; - border-style: solid; - border-width: 10px 0px 10px 0px; - border-color: lime; - translate: 0px 50px; - transform: translateX(50px) rotate(45deg) scale(2, 2); - } - </style> - </head> - <body> - <div></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/reftest.list b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/reftest.list index 33773a4c09f..e4777148d4b 100644 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/reftest.list +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/reftest.list @@ -5,10 +5,3 @@ == perspective-zero.html reference/green.html == perspective-zero-2.html perspective-zero-2-ref.html == perspective-untransformable-no-stacking-context.html perspective-untransformable-no-stacking-context-ref.html - -== individual-transform-1.html individual-transform-1-ref.html -== individual-transform-2a.html individual-transform-2-ref.html -== individual-transform-2b.html individual-transform-2-ref.html -== individual-transform-2c.html individual-transform-2-ref.html -== individual-transform-2d.html individual-transform-2-ref.html -== individual-transform-2e.html individual-transform-2-ref.html diff --git a/tests/wpt/web-platform-tests/docs/_running-tests/safari.md b/tests/wpt/web-platform-tests/docs/_running-tests/safari.md index 1fb5cb02359..ca73fd6073d 100644 --- a/tests/wpt/web-platform-tests/docs/_running-tests/safari.md +++ b/tests/wpt/web-platform-tests/docs/_running-tests/safari.md @@ -9,6 +9,12 @@ To run Safari on macOS, some manual setup is required: * Allow pop-up windows: `defaults write com.apple.Safari WebKitJavaScriptCanOpenWindowsAutomatically 1` + * Turn on experimental features that are "off" by default: + + * `defaults write com.apple.Safari ExperimentalServerTimingEnabled -bool true` + + [//]: # (TODO\(cvazac\) Remove this if/when Server-Timing is enabled by default in Safari) + * Trust the certificate: `security add-trusted-cert -k "$(security default-keychain | cut -d\" -f2)" tools/certs/cacert.pem` diff --git a/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-all.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-all.https.sub.html index f3082c4200e..aede7e7876b 100644 --- a/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-all.https.sub.html +++ b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-all.https.sub.html @@ -1,7 +1,11 @@ <!DOCTYPE html> -<body> +<html> +<head> + <meta name="timeout" content="long"> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> +</head> +<body> <script src=/feature-policy/resources/featurepolicy.js></script> <!-- Feature-Policy: fullscreen *; --> <script> @@ -143,3 +147,4 @@ } </script> </body> +</html> diff --git a/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html index d2d0d1301aa..b2b668256ff 100644 --- a/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html +++ b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html @@ -1,7 +1,11 @@ <!DOCTYPE html> -<body> +<html> +<head> + <meta name="timeout" content="long"> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> +</head> +<body> <script src=/feature-policy/resources/featurepolicy.js></script> <!-- Feature-Policy: fullscreen 'self'; --> <script> @@ -177,3 +181,4 @@ } </script> </body> +</html> diff --git a/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html index c777b2f7698..9a020f9e6b5 100644 --- a/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html +++ b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html @@ -1,7 +1,11 @@ <!DOCTYPE html> -<body> +<html> +<head> + <meta name="timeout" content="long"> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> +</head> +<body> <script src=/feature-policy/resources/featurepolicy.js></script> <!-- Feature-Policy: fullscreen 'self' cross_origin https://www.example.com; --> <script> @@ -184,3 +188,4 @@ } </script> </body> +</html> diff --git a/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-disallowed-for-all.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-disallowed-for-all.https.sub.html index 33fcb4bb29d..7ac821d8856 100644 --- a/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-disallowed-for-all.https.sub.html +++ b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-disallowed-for-all.https.sub.html @@ -1,7 +1,11 @@ <!DOCTYPE html> -<body> +<html> +<head> + <meta name="timeout" content="long"> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> +</head> +<body> <script src=/feature-policy/resources/featurepolicy.js></script> <!-- Feature-Policy: fullscreen 'none'; --> <script> @@ -143,3 +147,4 @@ } </script> </body> +</html> diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/message-opener.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/message-opener.html index 12836f536f0..07662c63cd0 100644 --- a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/message-opener.html +++ b/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/message-opener.html @@ -1,12 +1,12 @@ <script src="/common/PrefixedPostMessage.js"></script> <script> var prefixedMessage = new PrefixedMessageResource(); -var max = 50, attempts = 0; +var max = 150, attempts = 0; function sendCoordinates() { // Certain windowing systems position windows asynchronously. // As a result, the window may not be positioned yet when the // load event fires. To accommodate this, allow waiting up to - // 5 seconds for positioning to take place. + // 15 seconds for positioning to take place. if (!window.screenX && !window.screenY && ++attempts < max) { setTimeout(sendCoordinates, 100); return; diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-SecureContext.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-SecureContext.html new file mode 100644 index 00000000000..d0fc70ca0e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-SecureContext.html @@ -0,0 +1,19 @@ +<!doctype html> +<html> +<head> +<title>MediaDevices and SecureContext</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +</head> +<body> +<script> + +assert_false(window.isSecureContext, "This test must be run in a non secure context"); +assert_false('MediaDevices' in window, "MediaDevices is not exposed"); +assert_false('getUserMedia' in navigator, "getUserMedia is not exposed"); +assert_false('mediaDevices' in navigator, "mediaDevices is not exposed"); + +done(); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/quirks/reference/vertical-align-in-quirks-ref.html b/tests/wpt/web-platform-tests/quirks/reference/vertical-align-in-quirks-ref.html new file mode 100644 index 00000000000..2395923cd2c --- /dev/null +++ b/tests/wpt/web-platform-tests/quirks/reference/vertical-align-in-quirks-ref.html @@ -0,0 +1,52 @@ +<!DOCTYPE html> +<style> +div { + font-size: 10px; + line-height: 50px; + border: 1px solid blue; +} +img { + width: 1em; + height: 2em; + background: orange; + border: 1px solid black; +} +.text-top { + vertical-align: text-top; +} +.text-bottom { + vertical-align: text-bottom; +} +.top { + vertical-align: top; +} +.bottom { + vertical-align: bottom; +} +</style> +<body> + <div> + <img class="text-top" src="../../css/support/60x60-red.png">Y + </div> + <div> + <img class="text-bottom" src="../../css/support/60x60-red.png">Y + </div> + <div> + <img class="top" src="../../css/support/60x60-red.png">Y + </div> + <div> + <img class="bottom" src="../../css/support/60x60-red.png">Y + </div> + <div> + <img class="text-top" src="../../css/support/60x60-red.png"><span>Y</span> + </div> + <div> + <img class="text-bottom" src="../../css/support/60x60-red.png"><span>Y</span> + </div> + <div> + <img class="top" src="../../css/support/60x60-red.png"><span>Y</span> + </div> + <div> + <img class="bottom" src="../../css/support/60x60-red.png"><span>Y</span> + </div> +</body> diff --git a/tests/wpt/web-platform-tests/quirks/vertical-align-in-quirks.html b/tests/wpt/web-platform-tests/quirks/vertical-align-in-quirks.html new file mode 100644 index 00000000000..1826d0152fb --- /dev/null +++ b/tests/wpt/web-platform-tests/quirks/vertical-align-in-quirks.html @@ -0,0 +1,56 @@ +<meta charset="utf-8"> +<title>CSS Text level 3 Test: letter spacing after bidi</title> +<link rel="author" href="kojii@chromium.org"> +<link rel="match" href="reference/vertical-align-in-quirks-ref.html"> +<meta name="assert" content="Tests some vertical-align values match in quirks and standard modes."> +<style> +div { + font-size: 10px; + line-height: 50px; + border: 1px solid blue; +} +img { + width: 1em; + height: 2em; + background: orange; + border: 1px solid black; +} +.text-top { + vertical-align: text-top; +} +.text-bottom { + vertical-align: text-bottom; +} +.top { + vertical-align: top; +} +.bottom { + vertical-align: bottom; +} +</style> +<body> + <div> + <img class="text-top" src="../css/support/60x60-red.png">Y + </div> + <div> + <img class="text-bottom" src="../css/support/60x60-red.png">Y + </div> + <div> + <img class="top" src="../css/support/60x60-red.png">Y + </div> + <div> + <img class="bottom" src="../css/support/60x60-red.png">Y + </div> + <div> + <img class="text-top" src="../css/support/60x60-red.png"><span>Y</span> + </div> + <div> + <img class="text-bottom" src="../css/support/60x60-red.png"><span>Y</span> + </div> + <div> + <img class="top" src="../css/support/60x60-red.png"><span>Y</span> + </div> + <div> + <img class="bottom" src="../css/support/60x60-red.png"><span>Y</span> + </div> +</body> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/clients-matchall-include-uncontrolled.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/clients-matchall-include-uncontrolled.https.html index d3b5a966d33..9f34e5709eb 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/clients-matchall-include-uncontrolled.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/clients-matchall-include-uncontrolled.https.html @@ -4,46 +4,13 @@ <script src="/resources/testharnessreport.js"></script> <script src="resources/test-helpers.sub.js"></script> <script> -const base_url = 'resources/blank.html'; // This is out-of-scope. -const scope = base_url + '?clients-matchAll-includeUncontrolled'; -let frames = []; - -// Creates 3 iframes, 2 for in-scope and 1 for out-of-scope. Returns the frame -// opened for scope + '#2'. -async function create_iframes(scope) { - frames.push(await with_iframe(base_url)); - frames.push(await with_iframe(scope + '#1')); - frames.push(await with_iframe(scope + '#2')); - return frames[2]; -} - -const expected_without_include_uncontrolled = [ - // visibilityState, focused, url, type, frameType - ['visible', false, new URL(scope + '#1', location).toString(), 'window', 'nested'], - ['visible', true, new URL(scope + '#2', location).toString(), 'window', 'nested'] -]; - -const expected_with_include_uncontrolled = [ - // visibilityState, focused, url, type, frameType - ['visible', true, location.href, 'window', 'top-level'], - ['visible', false, new URL(scope + '#1', location).toString(), 'window', 'nested'], - ['visible', true, new URL(scope + '#2', location).toString(), 'window', 'nested'], - ['visible', false, new URL(base_url, location).toString(), 'window', 'nested'] -]; - -function test_matchall(frame, expected, query_options) { - // Make sure we have focus for '#2' frame and its parent window. - frame.focus(); - frame.contentWindow.focus(); +function test_matchall(service_worker, expected, query_options) { expected.sort((a, b) => a[2] > b[2] ? 1 : -1); return new Promise((resolve, reject) => { const channel = new MessageChannel(); channel.port1.onmessage = e => { - // Ignore hidden clients which may be coming from background tabs, or - // clients unrelated to this test. const data = e.data.filter(info => { - return info[0] == 'visible' && - info[2].indexOf('service-worker') > -1; + return info[2].indexOf('clients-matchall') > -1; }); data.sort((a, b) => a[2] > b[2] ? 1 : -1); assert_equals(data.length, expected.length); @@ -51,9 +18,8 @@ function test_matchall(frame, expected, query_options) { assert_array_equals(data[i], expected[i]); resolve(); }; - frame.contentWindow.navigator.serviceWorker.controller.postMessage( - {port:channel.port2, options:query_options}, - [channel.port2]); + service_worker.postMessage({port:channel.port2, options:query_options}, + [channel.port2]); }); } @@ -61,14 +27,91 @@ function test_matchall(frame, expected, query_options) { // (We want to run the two tests sequentially in the same promise_test // so that we can use the same set of iframes without intefering each other. promise_test(async t => { + // |base_url| is out-of-scope. + const base_url = 'resources/blank.html?clients-matchall'; + const scope = base_url + '-includeUncontrolled'; + const registration = await service_worker_unregister_and_register( t, 'resources/clients-matchall-worker.js', scope); t.add_cleanup(() => service_worker_unregister(t, scope)); - await wait_for_state(t, registration.installing, 'activated'); - const frame = await create_iframes(scope); - await test_matchall(frame, expected_without_include_uncontrolled); - await test_matchall(frame, expected_with_include_uncontrolled, - {includeUncontrolled:true}); -}, 'Verify matchAll() respect includeUncontrolled'); + const service_worker = registration.installing; + await wait_for_state(t, service_worker, 'activated'); + + // Creates 3 iframes, 2 for in-scope and 1 for out-of-scope. + let frames = []; + frames.push(await with_iframe(base_url)); + frames.push(await with_iframe(scope + '#1')); + frames.push(await with_iframe(scope + '#2')); + + // Make sure we have focus for '#2' frame and its parent window. + frames[2].focus(); + frames[2].contentWindow.focus(); + + const expected_without_include_uncontrolled = [ + // visibilityState, focused, url, type, frameType + ['visible', false, new URL(scope + '#1', location).toString(), 'window', 'nested'], + ['visible', true, new URL(scope + '#2', location).toString(), 'window', 'nested'] + ]; + const expected_with_include_uncontrolled = [ + // visibilityState, focused, url, type, frameType + ['visible', true, location.href, 'window', 'top-level'], + ['visible', false, new URL(scope + '#1', location).toString(), 'window', 'nested'], + ['visible', true, new URL(scope + '#2', location).toString(), 'window', 'nested'], + ['visible', false, new URL(base_url, location).toString(), 'window', 'nested'] + ]; + + await test_matchall(service_worker, expected_without_include_uncontrolled); + await test_matchall(service_worker, expected_with_include_uncontrolled, + { includeUncontrolled: true }); +}, 'Verify matchAll() with windows respect includeUncontrolled'); + +// TODO: Add tests for clients.matchAll for dedicated workers. + +async function create_shared_worker(script_url) { + const shared_worker = new SharedWorker(script_url); + const msgEvent = await new Promise(r => shared_worker.port.onmessage = r); + assert_equals(msgEvent.data, 'started'); + return shared_worker; +} + +// Run clients.matchAll for shared workers without and with +// includeUncontrolled=true. +promise_test(async t => { + const script_url = 'resources/clients-matchall-client-types-shared-worker.js'; + const uncontrolled_script_url = + new URL(script_url + '?uncontrolled', location).toString(); + const controlled_script_url = + new URL(script_url + '?controlled', location).toString(); + + // Start a shared worker that is not controlled by a service worker. + const uncontrolled_shared_worker = + await create_shared_worker(uncontrolled_script_url); + + // Register a service worker. + const registration = + await service_worker_unregister_and_register( + t, 'resources/clients-matchall-worker.js', script_url); + t.add_cleanup(() => service_worker_unregister(t, script_url)); + const service_worker = registration.installing; + await wait_for_state(t, service_worker, 'activated'); + + // Start another shared worker controlled by the service worker. + await create_shared_worker(controlled_script_url); + + const expected_without_include_uncontrolled = [ + // visibilityState, focused, url, type, frameType + [undefined, undefined, controlled_script_url, 'sharedworker', 'none'], + ]; + const expected_with_include_uncontrolled = [ + // visibilityState, focused, url, type, frameType + [undefined, undefined, controlled_script_url, 'sharedworker', 'none'], + [undefined, undefined, uncontrolled_script_url, 'sharedworker', 'none'], + ]; + + await test_matchall(service_worker, expected_without_include_uncontrolled, + { type: 'sharedworker' }); + await test_matchall(service_worker, expected_with_include_uncontrolled, + { includeUncontrolled: true, type: 'sharedworker' }); +}, 'Verify matchAll() with shared workers respect includeUncontrolled'); </script> diff --git a/tests/wpt/web-platform-tests/streams/piping/abort.dedicatedworker.html b/tests/wpt/web-platform-tests/streams/piping/abort.dedicatedworker.html new file mode 100644 index 00000000000..231c3543d52 --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/piping/abort.dedicatedworker.html @@ -0,0 +1,11 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>abort.js dedicated worker wrapper file</title> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<script> +'use strict'; +fetch_tests_from_worker(new Worker('abort.js')); +</script> diff --git a/tests/wpt/web-platform-tests/streams/piping/abort.html b/tests/wpt/web-platform-tests/streams/piping/abort.html new file mode 100644 index 00000000000..d55e6f7074e --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/piping/abort.html @@ -0,0 +1,11 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>abort.js browser context wrapper file</title> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<script src="../resources/recording-streams.js"></script> +<script src="../resources/test-utils.js"></script> + +<script src="abort.js"></script> diff --git a/tests/wpt/web-platform-tests/streams/piping/abort.js b/tests/wpt/web-platform-tests/streams/piping/abort.js new file mode 100644 index 00000000000..bb20ee30b39 --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/piping/abort.js @@ -0,0 +1,365 @@ +'use strict'; + +// Tests for the use of pipeTo with AbortSignal. +// There is some extra complexity to avoid timeouts in environments where abort is not implemented. + +if (self.importScripts) { + self.importScripts('/resources/testharness.js'); + self.importScripts('../resources/recording-streams.js'); + self.importScripts('../resources/test-utils.js'); +} + +const error1 = new Error('error1'); +error1.name = 'error1'; +const error2 = new Error('error2'); +error2.name = 'error2'; + +const errorOnPull = { + pull(controller) { + // This will cause the test to error if pipeTo abort is not implemented. + controller.error('failed to abort'); + } +}; + +// To stop pull() being called immediately when the stream is created, we need to set highWaterMark to 0. +const hwm0 = { highWaterMark: 0 }; + +for (const invalidSignal of [null, 'AbortSignal', true, -1, Object.create(AbortSignal.prototype)]) { + promise_test(t => { + const rs = recordingReadableStream(errorOnPull, hwm0); + const ws = recordingWritableStream(); + return promise_rejects(t, new TypeError(), rs.pipeTo(ws, { signal: invalidSignal }), 'pipeTo should reject') + .then(() => { + assert_equals(rs.events.length, 0, 'no ReadableStream methods should have been called'); + assert_equals(ws.events.length, 0, 'no WritableStream methods should have been called'); + }); + }, `a signal argument '${invalidSignal}' should cause pipeTo() to reject`); +} + +promise_test(t => { + const rs = recordingReadableStream(errorOnPull, hwm0); + const ws = new WritableStream(); + const abortController = new AbortController(); + const signal = abortController.signal; + abortController.abort(); + return promise_rejects(t, 'AbortError', rs.pipeTo(ws, { signal }), 'pipeTo should reject') + .then(() => Promise.all([ + rs.getReader().closed, + promise_rejects(t, 'AbortError', ws.getWriter().closed, 'writer.closed should reject') + ])) + .then(() => { + assert_equals(rs.events.length, 2, 'cancel should have been called'); + assert_equals(rs.events[0], 'cancel', 'first event should be cancel'); + assert_equals(rs.events[1].name, 'AbortError', 'the argument to cancel should be an AbortError'); + assert_equals(rs.events[1].constructor.name, 'DOMException', + 'the argument to cancel should be a DOMException'); + }); +}, 'an aborted signal should cause the writable stream to reject with an AbortError'); + +promise_test(() => { + let error; + const rs = recordingReadableStream(errorOnPull, hwm0); + const ws = new WritableStream(); + const abortController = new AbortController(); + const signal = abortController.signal; + abortController.abort(); + return rs.pipeTo(ws, { signal }) + .catch(e => { + error = e; + }) + .then(() => Promise.all([ + rs.getReader().closed, + ws.getWriter().closed.catch(e => { + assert_equals(e, error, 'the writable should be errored with the same object'); + }) + ])) + .then(() => { + assert_equals(rs.events.length, 2, 'cancel should have been called'); + assert_equals(rs.events[0], 'cancel', 'first event should be cancel'); + assert_equals(rs.events[1], error, 'the readable should be canceled with the same object'); + }); +}, 'all the AbortError objects should be the same object'); + +promise_test(t => { + const rs = recordingReadableStream(errorOnPull, hwm0); + const ws = new WritableStream(); + const abortController = new AbortController(); + const signal = abortController.signal; + abortController.abort(); + return promise_rejects(t, 'AbortError', rs.pipeTo(ws, { signal, preventCancel: true }), 'pipeTo should reject') + .then(() => assert_equals(rs.events.length, 0, 'cancel should not be called')); +}, 'preventCancel should prevent canceling the readable'); + +promise_test(t => { + const rs = new ReadableStream(errorOnPull, hwm0); + const ws = recordingWritableStream(); + const abortController = new AbortController(); + const signal = abortController.signal; + abortController.abort(); + return promise_rejects(t, 'AbortError', rs.pipeTo(ws, { signal, preventAbort: true }), 'pipeTo should reject') + .then(() => { + assert_equals(ws.events.length, 0, 'writable should not have been aborted'); + return ws.getWriter().ready; + }); +}, 'preventAbort should prevent aborting the readable'); + +promise_test(t => { + const rs = new ReadableStream({ + start(controller) { + controller.enqueue('a'); + controller.enqueue('b'); + controller.close(); + } + }); + const abortController = new AbortController(); + const signal = abortController.signal; + const ws = recordingWritableStream({ + write() { + abortController.abort(); + } + }); + return promise_rejects(t, 'AbortError', rs.pipeTo(ws, { signal }), 'pipeTo should reject') + .then(() => { + assert_equals(ws.events.length, 4, 'only chunk "a" should have been written'); + assert_array_equals(ws.events.slice(0, 3), ['write', 'a', 'abort'], 'events should match'); + assert_equals(ws.events[3].name, 'AbortError', 'abort reason should be an AbortError'); + }); +}, 'abort should prevent further reads'); + +promise_test(t => { + let readController; + const rs = new ReadableStream({ + start(c) { + readController = c; + c.enqueue('a'); + c.enqueue('b'); + } + }); + const abortController = new AbortController(); + const signal = abortController.signal; + let resolveWrite; + const writePromise = new Promise(resolve => { + resolveWrite = resolve; + }); + const ws = recordingWritableStream({ + write() { + return writePromise; + } + }, new CountQueuingStrategy({ highWaterMark: Infinity })); + const pipeToPromise = rs.pipeTo(ws, { signal }); + return delay(0).then(() => { + abortController.abort(); + readController.close(); // Make sure the test terminates when signal is not implemented. + resolveWrite(); + return promise_rejects(t, 'AbortError', pipeToPromise, 'pipeTo should reject'); + }).then(() => { + assert_equals(ws.events.length, 6, 'chunks "a" and "b" should have been written'); + assert_array_equals(ws.events.slice(0, 5), ['write', 'a', 'write', 'b', 'abort'], 'events should match'); + assert_equals(ws.events[5].name, 'AbortError', 'abort reason should be an AbortError'); + }); +}, 'all pending writes should complete on abort'); + +promise_test(t => { + const rs = new ReadableStream({ + pull(controller) { + controller.error('failed to abort'); + }, + cancel() { + return Promise.reject(error1); + } + }, hwm0); + const ws = new WritableStream(); + const abortController = new AbortController(); + const signal = abortController.signal; + abortController.abort(); + return promise_rejects(t, error1, rs.pipeTo(ws, { signal }), 'pipeTo should reject'); +}, 'a rejection from underlyingSource.cancel() should be returned by pipeTo()'); + +promise_test(t => { + const rs = new ReadableStream(errorOnPull, hwm0); + const ws = new WritableStream({ + abort() { + return Promise.reject(error1); + } + }); + const abortController = new AbortController(); + const signal = abortController.signal; + abortController.abort(); + return promise_rejects(t, error1, rs.pipeTo(ws, { signal }), 'pipeTo should reject'); +}, 'a rejection from underlyingSink.abort() should be returned by pipeTo()'); + +promise_test(t => { + const events = []; + const rs = new ReadableStream({ + pull(controller) { + controller.error('failed to abort'); + }, + cancel() { + events.push('cancel'); + return Promise.reject(error1); + } + }, hwm0); + const ws = new WritableStream({ + abort() { + events.push('abort'); + return Promise.reject(error2); + } + }); + const abortController = new AbortController(); + const signal = abortController.signal; + abortController.abort(); + return promise_rejects(t, error2, rs.pipeTo(ws, { signal }), 'pipeTo should reject') + .then(() => assert_array_equals(events, ['abort', 'cancel'], 'abort() should be called before cancel()')); +}, 'a rejection from underlyingSink.abort() should be preferred to one from underlyingSource.cancel()'); + +promise_test(t => { + const rs = new ReadableStream({ + start(controller) { + controller.close(); + } + }); + const ws = new WritableStream(); + const abortController = new AbortController(); + const signal = abortController.signal; + abortController.abort(); + return promise_rejects(t, 'AbortError', rs.pipeTo(ws, { signal }), 'pipeTo should reject'); +}, 'abort signal takes priority over closed readable'); + +promise_test(t => { + const rs = new ReadableStream({ + start(controller) { + controller.error(error1); + } + }); + const ws = new WritableStream(); + const abortController = new AbortController(); + const signal = abortController.signal; + abortController.abort(); + return promise_rejects(t, 'AbortError', rs.pipeTo(ws, { signal }), 'pipeTo should reject'); +}, 'abort signal takes priority over errored readable'); + +promise_test(t => { + const rs = new ReadableStream({ + pull(controller) { + controller.error('failed to abort'); + } + }, hwm0); + const ws = new WritableStream(); + const abortController = new AbortController(); + const signal = abortController.signal; + abortController.abort(); + const writer = ws.getWriter(); + return writer.close().then(() => { + writer.releaseLock(); + return promise_rejects(t, 'AbortError', rs.pipeTo(ws, { signal }), 'pipeTo should reject'); + }); +}, 'abort signal takes priority over closed writable'); + +promise_test(t => { + const rs = new ReadableStream({ + pull(controller) { + controller.error('failed to abort'); + } + }, hwm0); + const ws = new WritableStream({ + start(controller) { + controller.error(error1); + } + }); + const abortController = new AbortController(); + const signal = abortController.signal; + abortController.abort(); + return promise_rejects(t, 'AbortError', rs.pipeTo(ws, { signal }), 'pipeTo should reject'); +}, 'abort signal takes priority over errored writable'); + +promise_test(() => { + let readController; + const rs = new ReadableStream({ + start(c) { + readController = c; + } + }); + const ws = new WritableStream(); + const abortController = new AbortController(); + const signal = abortController.signal; + const pipeToPromise = rs.pipeTo(ws, { signal, preventClose: true }); + readController.close(); + return Promise.resolve().then(() => { + abortController.abort(); + return pipeToPromise; + }).then(() => ws.getWriter().write('this should succeed')); +}, 'abort should do nothing after the readable is closed'); + +promise_test(t => { + let readController; + const rs = new ReadableStream({ + start(c) { + readController = c; + } + }); + const ws = new WritableStream(); + const abortController = new AbortController(); + const signal = abortController.signal; + const pipeToPromise = rs.pipeTo(ws, { signal, preventAbort: true }); + readController.error(error1); + return Promise.resolve().then(() => { + abortController.abort(); + return promise_rejects(t, error1, pipeToPromise, 'pipeTo should reject'); + }).then(() => ws.getWriter().write('this should succeed')); +}, 'abort should do nothing after the readable is errored'); + +promise_test(t => { + let readController; + const rs = new ReadableStream({ + start(c) { + readController = c; + } + }); + let resolveWrite; + const writePromise = new Promise(resolve => { + resolveWrite = resolve; + }); + const ws = new WritableStream({ + write() { + readController.error(error1); + return writePromise; + } + }); + const abortController = new AbortController(); + const signal = abortController.signal; + const pipeToPromise = rs.pipeTo(ws, { signal, preventAbort: true }); + readController.enqueue('a'); + return delay(0).then(() => { + abortController.abort(); + resolveWrite(); + return promise_rejects(t, error1, pipeToPromise, 'pipeTo should reject'); + }).then(() => ws.getWriter().write('this should succeed')); +}, 'abort should do nothing after the readable is errored, even with pending writes'); + +promise_test(t => { + const rs = recordingReadableStream({ + pull(controller) { + return delay(0).then(() => controller.close()); + } + }); + let writeController; + const ws = new WritableStream({ + start(c) { + writeController = c; + } + }); + const abortController = new AbortController(); + const signal = abortController.signal; + const pipeToPromise = rs.pipeTo(ws, { signal, preventCancel: true }); + return Promise.resolve().then(() => { + writeController.error(error1); + return Promise.resolve(); + }).then(() => { + abortController.abort(); + return promise_rejects(t, error1, pipeToPromise, 'pipeTo should reject'); + }).then(() => { + assert_array_equals(rs.events, ['pull'], 'cancel should not have been called'); + }); +}, 'abort should do nothing after the writable is errored'); + +done(); diff --git a/tests/wpt/web-platform-tests/streams/piping/abort.serviceworker.https.html b/tests/wpt/web-platform-tests/streams/piping/abort.serviceworker.https.html new file mode 100644 index 00000000000..5c0809f0d0c --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/piping/abort.serviceworker.https.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>abort.js service worker wrapper file</title> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script> + +<script> +'use strict'; +service_worker_test('abort.js', 'Service worker test setup'); +</script> diff --git a/tests/wpt/web-platform-tests/streams/piping/abort.sharedworker.html b/tests/wpt/web-platform-tests/streams/piping/abort.sharedworker.html new file mode 100644 index 00000000000..8cdf8512c81 --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/piping/abort.sharedworker.html @@ -0,0 +1,11 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>abort.js shared worker wrapper file</title> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<script> +'use strict'; +fetch_tests_from_worker(new SharedWorker('abort.js')); +</script> diff --git a/tests/wpt/web-platform-tests/svg/interact/inheritance.svg b/tests/wpt/web-platform-tests/svg/interact/inheritance.svg new file mode 100644 index 00000000000..e67f19ed435 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/interact/inheritance.svg @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:h="http://www.w3.org/1999/xhtml" + width="800px" height="8000px"> + <title>Inheritance of pointer-events</title> + <metadata> + <h:link rel="help" href="https://svgwg.org/svg2-draft/interact.html#PointerEventsProperty"/> + <h:meta name="assert" content="pointer-events inherits according to the spec."/> + <h:meta name="assert" content="pointer-events has initial value auto."/> + </metadata> + <g id="container"> + <g id="target"></g> + </g> + <h:script src="/resources/testharness.js"/> + <h:script src="/resources/testharnessreport.js"/> + <h:script src="/css/support/inheritance-testcommon.js"/> + <script><![CDATA[ + +assert_inherited('pointer-events', 'auto', 'none'); + + ]]></script> +</svg> diff --git a/tests/wpt/web-platform-tests/svg/interact/parsing/pointer-events-invalid.svg b/tests/wpt/web-platform-tests/svg/interact/parsing/pointer-events-invalid.svg new file mode 100644 index 00000000000..1c09010f694 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/interact/parsing/pointer-events-invalid.svg @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:h="http://www.w3.org/1999/xhtml" + width="800px" height="8000px"> + <title>SVG Scripting and Interactivity: parsing pointer-events with invalid values</title> + <metadata> + <h:link rel="help" href="https://svgwg.org/svg2-draft/interact.html#PointerEventsProperty"/> + <h:meta name="assert" content="pointer-events supports only the grammar 'auto | bounding-box | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | none'."/> + </metadata> + <g id="target"></g> + <h:script src="/resources/testharness.js"/> + <h:script src="/resources/testharnessreport.js"/> + <h:script src="/css/support/parsing-testcommon.js"/> + <script><![CDATA[ + +test_invalid_value("pointer-events", "markers"); +test_invalid_value("pointer-events", "0"); +test_invalid_value("pointer-events", "visiblePainted visibleFill"); + + ]]></script> +</svg> diff --git a/tests/wpt/web-platform-tests/svg/interact/parsing/pointer-events-valid.svg b/tests/wpt/web-platform-tests/svg/interact/parsing/pointer-events-valid.svg new file mode 100644 index 00000000000..643ddba1664 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/interact/parsing/pointer-events-valid.svg @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:h="http://www.w3.org/1999/xhtml" + width="800px" height="8000px"> + <title>SVG Scripting and Interactivity: parsing pointer-events with valid values</title> + <metadata> + <h:link rel="help" href="https://svgwg.org/svg2-draft/interact.html#PointerEventsProperty"/> + <h:meta name="assert" content="pointer-events supports the full grammar 'auto | bounding-box | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | none'."/> + </metadata> + <g id="target"></g> + <h:script src="/resources/testharness.js"/> + <h:script src="/resources/testharnessreport.js"/> + <h:script src="/css/support/parsing-testcommon.js"/> + <script><![CDATA[ + +test_valid_value("pointer-events", "auto"); +test_valid_value("pointer-events", "bounding-box"); +test_valid_value("pointer-events", "visiblePainted"); +test_valid_value("pointer-events", "visibleFill"); +test_valid_value("pointer-events", "visibleStroke"); +test_valid_value("pointer-events", "visible"); +test_valid_value("pointer-events", "painted"); +test_valid_value("pointer-events", "fill"); +test_valid_value("pointer-events", "stroke"); +test_valid_value("pointer-events", "all"); +test_valid_value("pointer-events", "none"); + + ]]></script> +</svg> diff --git a/tests/wpt/web-platform-tests/tools/ci/tcdownload.py b/tests/wpt/web-platform-tests/tools/ci/tcdownload.py index 8813dccc888..91c763a7acd 100644 --- a/tests/wpt/web-platform-tests/tools/ci/tcdownload.py +++ b/tests/wpt/web-platform-tests/tools/ci/tcdownload.py @@ -89,7 +89,11 @@ def run(*args, **kwargs): logger.info(path) -def __main__(): +def main(): kwargs = get_parser().parse_args() run(None, vars(kwargs)) + + +if __name__ == "__main__": + main() diff --git a/tests/wpt/web-platform-tests/tools/py27-flake8.ini b/tests/wpt/web-platform-tests/tools/py27-flake8.ini index 1a5ce431ca8..99324b2aad1 100644 --- a/tests/wpt/web-platform-tests/tools/py27-flake8.ini +++ b/tests/wpt/web-platform-tests/tools/py27-flake8.ini @@ -11,10 +11,14 @@ select = E,W,F,N # E305: expected 2 blank lines after end of function or class # E402: module level import not at top of file # E731: do not assign a lambda expression, use a def +# W504: line break after binary operator # W601: .has_key() is deprecated, use ‘in’ +# W605: invalid escape sequence +# W606: 'async' and 'await' are reserved keywords starting with Python 3.7 # N801: class names should use CapWords convention # N802: function name should be lowercase -ignore = E128,E129,E226,E231,E251,E265,E302,E303,E305,E402,E731,W601,N801,N802 +# N806: variable in function should be lowercase +ignore = E128,E129,E226,E231,E251,E265,E302,E303,E305,E402,E731,W504,W601,W605,W606,N801,N802,N806 exclude = .tox, pywebsocket, diff --git a/tests/wpt/web-platform-tests/tools/py36-flake8.ini b/tests/wpt/web-platform-tests/tools/py36-flake8.ini index 9b01f22a3cd..4ad34105b91 100644 --- a/tests/wpt/web-platform-tests/tools/py36-flake8.ini +++ b/tests/wpt/web-platform-tests/tools/py36-flake8.ini @@ -11,9 +11,11 @@ select = E,W,F,N # E305: expected 2 blank lines after end of function or class # E402: module level import not at top of file # E731: do not assign a lambda expression, use a def +# W504: line break after binary operator +# W605: invalid escape sequence # N801: class names should use CapWords convention # N802: function name should be lowercase -ignore = E128,E129,E226,E231,E251,E265,E302,E303,E305,E402,E731,N801,N802 +ignore = E128,E129,E226,E231,E251,E265,E302,E303,E305,E402,E731,W504,W605,N801,N802 exclude = .tox, pywebsocket, diff --git a/tests/wpt/web-platform-tests/tools/requirements_flake8.txt b/tests/wpt/web-platform-tests/tools/requirements_flake8.txt index 6d6ee4d885a..d2e7dd64232 100644 --- a/tests/wpt/web-platform-tests/tools/requirements_flake8.txt +++ b/tests/wpt/web-platform-tests/tools/requirements_flake8.txt @@ -1,4 +1,4 @@ -flake8==3.5.0 -pycodestyle==2.3.1 -pyflakes==1.6.0 -pep8-naming==0.4.1 +flake8==3.6.0 +pycodestyle==2.4.0 +pyflakes==2.0.0 +pep8-naming==0.7.0 diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/fennec.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/fennec.py index c783006cfa4..15396fba22c 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/fennec.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/fennec.py @@ -210,7 +210,7 @@ class FennecBrowser(FirefoxBrowser): process_class=ProcessHandler, process_args={"processOutputLine": [self.on_output]}) - self.logger.debug("Starting Fennec") + self.logger.debug("Starting %s" % self.package_name) # connect to a running emulator self.runner.device.connect() @@ -222,7 +222,7 @@ class FennecBrowser(FirefoxBrowser): local="tcp:{}".format(self.marionette_port), remote="tcp:{}".format(self.marionette_port)) - self.logger.debug("Fennec Started") + self.logger.debug("%s Started" % self.package_name) def stop(self, force=False): if self.runner is not None: diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/webkit.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/webkit.py index b09114a9a54..19527a132c7 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/webkit.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/webkit.py @@ -15,7 +15,8 @@ __wptrunner__ = {"product": "webkit", "wdspec": "WebKitDriverWdspecExecutor"}, "executor_kwargs": "executor_kwargs", "env_extras": "env_extras", - "env_options": "env_options"} + "env_options": "env_options", + "run_info_extras": "run_info_extras"} def check_args(**kwargs): @@ -31,22 +32,22 @@ def browser_kwargs(test_type, run_info_data, config, **kwargs): def capabilities_for_port(server_config, **kwargs): - if kwargs["webkit_port"] == "gtk": - capabilities = { + port_name = kwargs["webkit_port"] + if port_name in ["gtk", "wpe"]: + port_key_map = {"gtk": "webkitgtk"} + browser_options_port = port_key_map.get(port_name, port_name) + browser_options_key = "%s:browserOptions" % browser_options_port + + return { "browserName": "MiniBrowser", "browserVersion": "2.20", "platformName": "ANY", - "webkitgtk:browserOptions": { + browser_options_key: { "binary": kwargs["binary"], "args": kwargs.get("binary_args", []), "certificates": [ {"host": server_config["browser_host"], - "certificateFile": kwargs["host_cert_path"]} - ] - } - } - - return capabilities + "certificateFile": kwargs["host_cert_path"]}]}} return {} @@ -69,6 +70,10 @@ def env_options(): return {} +def run_info_extras(**kwargs): + return {"webkit_port": kwargs["webkit_port"]} + + class WebKitBrowser(Browser): """Generic WebKit browser is backed by WebKit's WebDriver implementation, which is supplied through ``wptrunner.webdriver.WebKitDriverServer``. diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters.py index 1ea09dbe553..70cbef8c10b 100755 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters.py @@ -1,8 +1,55 @@ import json +import re +import sys from mozlog.structured.formatters.base import BaseFormatter +LONE_SURROGATE_RE = re.compile(u"[\uD800-\uDFFF]") + + +def surrogate_replacement_ucs4(match): + return "U+" + hex(ord(match.group()))[2:] + + +class SurrogateReplacementUcs2(object): + def __init__(self): + self.skip = False + + def __call__(self, match): + char = match.group() + + if self.skip: + self.skip = False + return char + + is_low = 0xD800 <= ord(char) <= 0xDBFF + + escape = True + if is_low: + next_idx = match.end() + if next_idx < len(match.string): + next_char = match.string[next_idx] + if 0xDC00 <= ord(next_char) <= 0xDFFF: + escape = False + + if not escape: + self.skip = True + return char + + return "U+" + hex(ord(match.group()))[2:] + + +if sys.maxunicode == 0x10FFFF: + surrogate_replacement = surrogate_replacement_ucs4 +else: + surrogate_replacement = SurrogateReplacementUcs2() + + +def replace_lone_surrogate(data): + return LONE_SURROGATE_RE.subn(surrogate_replacement, data)[0] + + class WptreportFormatter(BaseFormatter): """Formatter that produces results in the format that wpreport expects.""" @@ -40,7 +87,7 @@ class WptreportFormatter(BaseFormatter): def create_subtest(self, data): test = self.find_or_create_test(data) - subtest_name = data["subtest"] + subtest_name = replace_lone_surrogate(data["subtest"]) subtest = { "name": subtest_name, @@ -57,7 +104,7 @@ class WptreportFormatter(BaseFormatter): if "expected" in data: subtest["expected"] = data["expected"] if "message" in data: - subtest["message"] = data["message"] + subtest["message"] = replace_lone_surrogate(data["message"]) def test_end(self, data): test = self.find_or_create_test(data) @@ -67,7 +114,7 @@ class WptreportFormatter(BaseFormatter): if "expected" in data: test["expected"] = data["expected"] if "message" in data: - test["message"] = data["message"] + test["message"] = replace_lone_surrogate(data["message"]) def assertion_count(self, data): test = self.find_or_create_test(data) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_formatters.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_formatters.py index fc2ce5bc111..9e354f09db3 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_formatters.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_formatters.py @@ -4,10 +4,13 @@ import time from os.path import dirname, join from StringIO import StringIO +import mock + from mozlog import handlers, structuredlog sys.path.insert(0, join(dirname(__file__), "..", "..")) +from wptrunner import formatters from wptrunner.formatters import WptreportFormatter @@ -62,3 +65,73 @@ def test_wptreport_run_info_optional(capfd): output.seek(0) output_obj = json.load(output) assert "run_info" not in output_obj or output_obj["run_info"] == {} + + +def test_wptreport_lone_surrogate(capfd): + output = StringIO() + logger = structuredlog.StructuredLogger("test_a") + logger.add_handler(handlers.StreamHandler(output, WptreportFormatter())) + + # output a bunch of stuff + logger.suite_start(["test-id-1"]) # no run_info arg! + logger.test_start("test-id-1") + logger.test_status("test-id-1", + subtest=u"Name with surrogate\uD800", + status="FAIL", + message=u"\U0001F601 \uDE0A\uD83D") + logger.test_end("test-id-1", + status="PASS", + message=u"\uDE0A\uD83D \U0001F601") + logger.suite_end() + + # check nothing got output to stdout/stderr + # (note that mozlog outputs exceptions during handling to stderr!) + captured = capfd.readouterr() + assert captured.out == "" + assert captured.err == "" + + # check the actual output of the formatter + output.seek(0) + output_obj = json.load(output) + test = output_obj["results"][0] + assert test["message"] == u"U+de0aU+d83d \U0001F601" + subtest = test["subtests"][0] + assert subtest["name"] == u"Name with surrogateU+d800" + assert subtest["message"] == u"\U0001F601 U+de0aU+d83d" + + +def test_wptreport_lone_surrogate_ucs2(capfd): + # Since UCS4 is a superset of UCS2 we can meaningfully test the UCS2 code on a + # UCS4 build, but not the reverse. However UCS2 is harder to handle and UCS4 is + # the commonest (and sensible) configuration, so that's OK. + output = StringIO() + logger = structuredlog.StructuredLogger("test_a") + logger.add_handler(handlers.StreamHandler(output, WptreportFormatter())) + + with mock.patch.object(formatters, 'surrogate_replacement', formatters.SurrogateReplacementUcs2()): + # output a bunch of stuff + logger.suite_start(["test-id-1"]) # no run_info arg! + logger.test_start("test-id-1") + logger.test_status("test-id-1", + subtest=u"Name with surrogate\uD800", + status="FAIL", + message=u"\U0001F601 \uDE0A\uD83D \uD83D\uDE0A") + logger.test_end("test-id-1", + status="PASS", + message=u"\uDE0A\uD83D \uD83D\uDE0A \U0001F601") + logger.suite_end() + + # check nothing got output to stdout/stderr + # (note that mozlog outputs exceptions during handling to stderr!) + captured = capfd.readouterr() + assert captured.out == "" + assert captured.err == "" + + # check the actual output of the formatter + output.seek(0) + output_obj = json.load(output) + test = output_obj["results"][0] + assert test["message"] == u"U+de0aU+d83d \U0001f60a \U0001F601" + subtest = test["subtests"][0] + assert subtest["name"] == u"Name with surrogateU+d800" + assert subtest["message"] == u"\U0001F601 U+de0aU+d83d \U0001f60a" diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/handlers.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/handlers.py index 7fbe4234ea0..2dd01e29338 100644 --- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/handlers.py +++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/handlers.py @@ -7,8 +7,6 @@ import traceback from six.moves.urllib.parse import parse_qs, quote, unquote, urljoin from six import iteritems -from h2.events import RequestReceived, DataReceived - from .constants import content_types from .pipes import Pipeline, template from .ranges import RangeParser @@ -79,7 +77,7 @@ class DirectoryHandler(object): %(items)s </ul> """ % {"path": cgi.escape(url_path), - "items": "\n".join(self.list_items(url_path, path))} # flake8: noqa + "items": "\n".join(self.list_items(url_path, path))} # noqa: E122 def list_items(self, base_path, path): assert base_path.endswith("/") diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py index 53f093b8e3d..802ae9ca9a9 100644 --- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py +++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py @@ -548,7 +548,7 @@ class Http1WebTestRequestHandler(BaseWebTestRequestHandler): self.close_connection = True return - except Exception as e: + except Exception: err = traceback.format_exc() if response: response.set_error(500, err) diff --git a/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-list.js b/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-list.js index 0f84c376721..6ad90a356e4 100644 --- a/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-list.js +++ b/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-list.js @@ -196,7 +196,7 @@ const gCSSProperties = { 'border-image-repeat': { // https://drafts.csswg.org/css-backgrounds-3/#border-image-repeat types: [ - { type: 'discrete', options: [ [ 'stretch stretch', 'repeat repeat' ] ] } + { type: 'discrete', options: [ [ 'stretch repeat', 'round space' ] ] } ] }, 'border-image-slice': { diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/__init__.py index abf1a913675..8b137891791 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/__init__.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/__init__.py @@ -1,10 +1 @@ -def retrieve_element_rect(session, element): - return session.execute_script(""" - let rect = arguments[0].getBoundingClientRect(); - return { - x: rect.left + window.pageXOffset, - y: rect.top + window.pageYOffset, - width: rect.width, - height: rect.height, - }; - """, args=(element,)) + diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py index 433e2f6bf8b..e3744c4bce5 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py @@ -1,8 +1,7 @@ from tests.support.asserts import assert_error, assert_success +from tests.support.helpers import element_rect from tests.support.inline import inline -from . import retrieve_element_rect - def get_element_rect(session, element_id): return session.transport.send( @@ -38,4 +37,4 @@ def test_basic(session): element = session.find.css("input", all=False) result = get_element_rect(session, element.id) - assert_success(result, retrieve_element_rect(session, element)) + assert_success(result, element_rect(session, element)) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/user_prompts.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/user_prompts.py index ec1047bd389..c51866cb875 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/user_prompts.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/user_prompts.py @@ -3,10 +3,9 @@ import pytest from tests.support.asserts import assert_error, assert_success, assert_dialog_handled +from tests.support.helpers import element_rect from tests.support.inline import inline -from . import retrieve_element_rect - def get_element_rect(session, element_id): return session.transport.send( @@ -27,7 +26,7 @@ def check_user_prompt_closed_without_exception(session, create_dialog): create_dialog(dialog_type, text=dialog_type) response = get_element_rect(session, element.id) - assert_success(response, retrieve_element_rect(session, element)) + assert_success(response, element_rect(session, element)) assert_dialog_handled(session, expected_text=dialog_type, expected_retval=retval) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/asserts.py b/tests/wpt/web-platform-tests/webdriver/tests/support/asserts.py index 1dea6ce6877..67711987d4b 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/support/asserts.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/support/asserts.py @@ -1,5 +1,6 @@ import base64 import imghdr +import struct from webdriver import Element, NoSuchAlertException, WebDriverException diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py index d16883256ac..f662040e406 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py @@ -231,4 +231,3 @@ def closed_window(session, create_window): yield new_handle session.window_handle = original_handle - diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/helpers.py b/tests/wpt/web-platform-tests/webdriver/tests/support/helpers.py index dd733809fd5..6c62d756259 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/support/helpers.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/support/helpers.py @@ -105,6 +105,34 @@ def clear_all_cookies(session): session.transport.send("DELETE", "session/%s/cookie" % session.session_id) +def document_dimensions(session): + return tuple(session.execute_script(""" + let {width, height} = document.documentElement.getBoundingClientRect(); + return [width, height]; + """)) + + +def document_hidden(session): + """Polls for the document to become hidden.""" + def hidden(session): + return session.execute_script("return document.hidden") + return Poll(session, timeout=3, raises=None).until(hidden) + + +def element_rect(session, element): + return session.execute_script(""" + let element = arguments[0]; + let {height, left, top, width} = element.getBoundingClientRect(); + + return { + x: left + window.pageXOffset, + y: top + window.pageYOffset, + width: width, + height: height, + }; + """, args=(element,)) + + def is_element_in_viewport(session, element): """Check if element is outside of the viewport""" return session.execute_script(""" @@ -121,13 +149,6 @@ def is_element_in_viewport(session, element): """, args=(element,)) -def document_hidden(session): - """Polls for the document to become hidden.""" - def hidden(session): - return session.execute_script("return document.hidden") - return Poll(session, timeout=3, raises=None).until(hidden) - - def is_fullscreen(session): # At the time of writing, WebKit does not conform to the # Fullscreen API specification. @@ -137,11 +158,3 @@ def is_fullscreen(session): return session.execute_script(""" return !!(window.fullScreen || document.webkitIsFullScreen) """) - - -def document_dimensions(session): - return tuple(session.execute_script(""" - let {devicePixelRatio} = window; - let {width, height} = document.documentElement.getBoundingClientRect(); - return [width * devicePixelRatio, height * devicePixelRatio]; - """)) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/image.py b/tests/wpt/web-platform-tests/webdriver/tests/support/image.py index 1eb3a187a43..81dd933943f 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/support/image.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/support/image.py @@ -1,4 +1,5 @@ import base64 +import math import struct from tests.support.asserts import assert_png diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/__init__.py index e69de29bb2d..d289ee3b912 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/__init__.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/__init__.py @@ -0,0 +1,12 @@ +def element_rect(session, element): + return session.execute_script(""" + let {devicePixelRatio} = window; + let rect = arguments[0].getBoundingClientRect(); + + return { + x: Math.floor((rect.left + window.pageXOffset) * devicePixelRatio), + y: Math.floor((rect.top + window.pageYOffset) * devicePixelRatio), + width: Math.floor(rect.width * devicePixelRatio), + height: Math.floor(rect.height * devicePixelRatio), + }; + """, args=(element,)) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py index e4d2869af4f..35a1ffe75f0 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py @@ -1,9 +1,9 @@ -import base64 -import imghdr - -from tests.support.asserts import assert_error, assert_success +from tests.support.asserts import assert_error, assert_png, assert_success +from tests.support.image import png_dimensions from tests.support.inline import inline +from . import element_rect + def take_element_screenshot(session, element_id): return session.transport.send( @@ -20,21 +20,22 @@ def test_no_browsing_context(session, closed_window): assert_error(response, "no such window") -def test_screenshot(session): +def test_stale(session): session.url = inline("<input>") element = session.find.css("input", all=False) + session.refresh() - response = take_element_screenshot(session, element.id) - value = assert_success(response) - - image = base64.decodestring(value) - assert imghdr.what("", image) == "png" + result = take_element_screenshot(session, element.id) + assert_error(result, "stale element reference") -def test_stale(session): +def test_format_and_dimensions(session): session.url = inline("<input>") element = session.find.css("input", all=False) - session.refresh() + rect = element_rect(session, element) - result = take_element_screenshot(session, element.id) - assert_error(result, "stale element reference") + response = take_element_screenshot(session, element.id) + value = assert_success(response) + + assert_png(value) + assert png_dimensions(value) == (rect["width"], rect["height"]) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/user_prompts.py b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/user_prompts.py index fa239999e4f..221eaa93635 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/user_prompts.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/user_prompts.py @@ -1,11 +1,8 @@ # META: timeout=long -import base64 -import imghdr - import pytest -from tests.support.asserts import assert_success +from tests.support.asserts import assert_png, assert_success from tests.support.inline import inline @@ -30,8 +27,7 @@ def check_user_prompt_not_closed_without_exception(session, create_dialog): response = take_element_screenshot(session, element.id) value = assert_success(response) - image = base64.decodestring(value) - assert imghdr.what("", image) == "png" + assert_png(value) assert session.alert.text == dialog_type session.alert.dismiss() diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/__init__.py index e69de29bb2d..d38c8a0f79f 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/__init__.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/__init__.py @@ -0,0 +1,6 @@ +def document_dimensions(session): + return tuple(session.execute_script(""" + let {devicePixelRatio} = window; + let {width, height} = document.documentElement.getBoundingClientRect(); + return [Math.floor(width * devicePixelRatio), Math.floor(height * devicePixelRatio)]; + """)) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/screenshot.py b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/screenshot.py index d3153710f7b..07879530120 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/screenshot.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/screenshot.py @@ -1,9 +1,9 @@ -import base64 -import imghdr - -from tests.support.asserts import assert_error, assert_success +from tests.support.asserts import assert_error, assert_png, assert_success +from tests.support.image import png_dimensions from tests.support.inline import inline +from . import document_dimensions + def take_screenshot(session): return session.transport.send( @@ -15,11 +15,11 @@ def test_no_browsing_context(session, closed_window): assert_error(response, "no such window") -def test_screenshot(session): +def test_format_and_dimensions(session): session.url = inline("<input>") response = take_screenshot(session) value = assert_success(response) - image = base64.decodestring(value) - assert imghdr.what("", image) == "png" + assert_png(value) + assert png_dimensions(value) == document_dimensions(session) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/user_prompts.py b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/user_prompts.py index 4d4840f08ba..902463f22c8 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/user_prompts.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/user_prompts.py @@ -1,11 +1,8 @@ # META: timeout=long -import base64 -import imghdr - import pytest -from tests.support.asserts import assert_success +from tests.support.asserts import assert_png, assert_success from tests.support.inline import inline @@ -24,8 +21,7 @@ def check_user_prompt_not_closed_without_exception(session, create_dialog): response = take_screenshot(session) value = assert_success(response) - image = base64.decodestring(value) - assert imghdr.what("", image) == "png" + assert_png(value) assert session.alert.text == dialog_type session.alert.dismiss() diff --git a/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-ontonechange.https.html b/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-ontonechange.https.html index ff6d117b3c7..49e23abe2f4 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-ontonechange.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-ontonechange.https.html @@ -247,7 +247,7 @@ // tonechange event, to make sure that tonechange is triggered // then stopped if(tone === 'A') { - transceiver.setDirection('recvonly'); + transceiver.direction = 'recvonly'; pc.createOffer() .then(offer => diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-replaceTrack.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-replaceTrack.https.html index 6c98eae52cd..4bdcddec511 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-replaceTrack.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-replaceTrack.https.html @@ -85,57 +85,27 @@ })); }, 'replaceTrack() rejects when the peer connection is closed.'); - async_test(t => { - const expectedException = 'InvalidModificationError'; + promise_test(async t => { const caller = new RTCPeerConnection(); t.add_cleanup(() => caller.close()); - return getUserMediaTracksAndStreams(2) - .then(t.step_func(([tracks, streams]) => { - const sender = caller.addTrack(tracks[0], streams[0]); - caller.removeTrack(sender); - // replaceTrack() should fail because the sender should be inactive after - // removeTrack(). - return sender.replaceTrack(tracks[1]) - .then(t.step_func(() => { - assert_unreached('Expected replaceTrack() to be rejected with ' + - expectedException + ' but the promise was resolved.'); - }), - t.step_func(e => { - assert_equals(e.name, expectedException); - t.done(); - })); - })) - .catch(t.step_func(reason => { - assert_unreached(reason); - })); - }, 'replaceTrack() rejects when invoked after removeTrack().'); + const [tracks, streams] = await getUserMediaTracksAndStreams(2); + const sender = caller.addTrack(tracks[0], streams[0]); + caller.removeTrack(sender); + await sender.replaceTrack(tracks[1]); + assert_equals(sender.track, tracks[1], "Make sure track gets updated"); + }, 'replaceTrack() does not reject when invoked after removeTrack().'); - async_test(t => { - const expectedException = 'InvalidModificationError'; + + promise_test(async t => { const caller = new RTCPeerConnection(); t.add_cleanup(() => caller.close()); - return getUserMediaTracksAndStreams(2) - .then(t.step_func(([tracks, streams]) => { - const sender = caller.addTrack(tracks[0], streams[0]); - let p = sender.replaceTrack(tracks[1]) - caller.removeTrack(sender); - // replaceTrack() should fail because it executes steps in parallel and - // queues a task to execute after removeTrack() has occurred. The sender - // should be inactive. If this can be racy, update or remove the test. - // https://github.com/w3c/webrtc-pc/issues/1728 - return p.then(t.step_func(() => { - assert_unreached('Expected replaceTrack() to be rejected with ' + - expectedException + ' but the promise was resolved.'); - }), - t.step_func(e => { - assert_equals(e.name, expectedException); - t.done(); - })); - })) - .catch(t.step_func(reason => { - assert_unreached(reason); - })); - }, 'replaceTrack() rejects after a subsequent removeTrack().'); + const [tracks, streams] = await getUserMediaTracksAndStreams(2); + const sender = caller.addTrack(tracks[0], streams[0]); + let p = sender.replaceTrack(tracks[1]) + caller.removeTrack(sender); + await p; + assert_equals(sender.track, tracks[1], "Make sure track gets updated"); + }, 'replaceTrack() does not reject after a subsequent removeTrack().'); // TODO(hbos): Verify that replaceTrack() changes what media is received on // the remote end of two connected peer connections. For video tracks, this diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver-setDirection.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver-direction.html index 32cbff5d985..e76bc1fbb77 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver-setDirection.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver-direction.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<title>RTCRtpTransceiver.prototype.setDirection</title> +<title>RTCRtpTransceiver.prototype.direction</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="RTCPeerConnection-helper.js"></script> @@ -8,7 +8,7 @@ 'use strict'; // Test is based on the following editor draft: - // https://rawgit.com/w3c/webrtc-pc/cc8d80f455b86c8041d63bceb8b457f45c72aa89/webrtc.html + // https://rawgit.com/w3c/webrtc-pc/8495678808d126d8bc764bf944996f32981fa6fd/webrtc.html // The following helper functions are called from RTCPeerConnection-helper.js: // generateAnswer @@ -16,16 +16,15 @@ /* 5.4. RTCRtpTransceiver Interface interface RTCRtpTransceiver { - readonly attribute RTCRtpTransceiverDirection direction; + attribute RTCRtpTransceiverDirection direction; readonly attribute RTCRtpTransceiverDirection? currentDirection; - void setDirection(RTCRtpTransceiverDirection direction); ... }; */ /* - 5.4. setDirection - 4. Set transceiver's [[Direction]] slot to newDirection. + 5.4. direction + 7. Set transceiver's [[Direction]] slot to newDirection. */ test(t => { const pc = new RTCPeerConnection(); @@ -33,15 +32,15 @@ assert_equals(transceiver.direction, 'sendrecv'); assert_equals(transceiver.currentDirection, null); - transceiver.setDirection('recvonly'); + transceiver.direction = 'recvonly'; assert_equals(transceiver.direction, 'recvonly'); assert_equals(transceiver.currentDirection, null, 'Expect transceiver.currentDirection to not change'); - }, 'setDirection should change transceiver.direction'); + }, 'setting direction should change transceiver.direction'); /* - 5.4. setDirection + 5.4. direction 3. If newDirection is equal to transceiver's [[Direction]] slot, abort these steps. */ @@ -49,10 +48,10 @@ const pc = new RTCPeerConnection(); const transceiver = pc.addTransceiver('audio', { direction: 'sendonly' }); assert_equals(transceiver.direction, 'sendonly'); - transceiver.setDirection('sendonly'); + transceiver.direction = 'sendonly'; assert_equals(transceiver.direction, 'sendonly'); - }, 'setDirection with same direction should have no effect'); + }, 'setting direction with same direction should have no effect'); promise_test(t => { const pc = new RTCPeerConnection(); @@ -67,22 +66,22 @@ .then(() => generateAnswer(offer))) .then(answer => pc.setRemoteDescription(answer)) .then(() => { - assert_equals(transceiver.currentDirection, 'recvonly'); - transceiver.setDirection('sendrecv'); + assert_equals(transceiver.currentDirection, 'inactive'); + transceiver.direction = 'sendrecv'; assert_equals(transceiver.direction, 'sendrecv'); - assert_equals(transceiver.currentDirection, 'recvonly'); + assert_equals(transceiver.currentDirection, 'inactive'); }); - }, 'setDirection should change transceiver.direction independent of transceiver.currentDirection'); + }, 'setting direction should change transceiver.direction independent of transceiver.currentDirection'); /* TODO - Calls to setDirection() do not take effect immediately. Instead, future calls + An update of directionality does not take effect immediately. Instead, future calls to createOffer and createAnswer mark the corresponding media description as sendrecv, sendonly, recvonly or inactive as defined in [JSEP] (section 5.2.2. and section 5.3.2.). Tested in RTCPeerConnection-onnegotiationneeded.html - 5.4. setDirection + 5.4. direction 6. Update the negotiation-needed flag for connection. Coverage Report diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html index 2de9fb9f6ee..7d16deaa8c7 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html @@ -1181,7 +1181,7 @@ "InvalidStateError", "replaceTrack on stopped transceiver"); checkThrows(() => transceiver.direction = "sendrecv", - "InvalidStateError", "setDirection on stopped transceiver"); + "InvalidStateError", "set direction on stopped transceiver"); checkThrows(() => transceiver.sender.dtmf.insertDTMF("111"), "InvalidStateError", "insertDTMF on stopped transceiver"); @@ -1775,7 +1775,7 @@ await pc2.setRemoteDescription({type: "rollback"}); // Transceiver should be _gone_, again. replaceTrack doesn't prevent this, - // nor does setDirection. + // nor does setting direction. hasProps(pc2.getTransceivers(), []); // Setting the same offer for a _third_ time should do the same thing diff --git a/tests/wpt/web-platform-tests/webrtc/historical.html b/tests/wpt/web-platform-tests/webrtc/historical.html index d49503e16d6..ffa28be5bca 100644 --- a/tests/wpt/web-platform-tests/webrtc/historical.html +++ b/tests/wpt/web-platform-tests/webrtc/historical.html @@ -25,6 +25,14 @@ test(function() { }); [ + "setDirection", +].forEach(function(name) { + test(function() { + assert_false(name in RTCRtpTransceiver.prototype); + }, "RTCRtpTransceiver member " + name + " should not exist"); +}); + +[ "DataChannel", "mozRTCIceCandidate", "mozRTCPeerConnection", diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/basic.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/basic.html index 4ffed9193b9..d799c8fa88a 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/basic.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/basic.html @@ -12,8 +12,8 @@ body { margin:0 } </style> <script src="/common/reftest-wait.js"></script> <video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> - <source src="../media/white.webm" type="video/webm"> - <source src="../media/white.mp4" type="video/mp4"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> <track src="support/basic.vtt"> <script> document.getElementsByTagName('track')[0].track.mode = 'showing'; diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent.html index b9ef28212a4..7a1c0711624 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent.html @@ -12,8 +12,8 @@ body { margin:0 } </style> <script src="/common/reftest-wait.js"></script> <video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> - <source src="../media/white.webm" type="video/webm"> - <source src="../media/white.mp4" type="video/mp4"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> <track src="support/regionanchor_x_50_percent.vtt"> <script> document.getElementsByTagName('track')[0].track.mode = 'showing'; diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent.html index 5067d12e6f4..98b5fc540c6 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent.html @@ -12,8 +12,8 @@ body { margin:0 } </style> <script src="/common/reftest-wait.js"></script> <video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> - <source src="../media/white.webm" type="video/webm"> - <source src="../media/white.mp4" type="video/mp4"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> <track src="support/regionanchor_y_50_percent.vtt"> <script> document.getElementsByTagName('track')[0].track.mode = 'showing'; diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up.html index e1619af932a..93fa0e0ec03 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up.html @@ -12,8 +12,8 @@ body { margin:0 } </style> <script src="/common/reftest-wait.js"></script> <video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshotDelayed(3000);"> - <source src="../media/white.webm" type="video/webm"> - <source src="../media/white.mp4" type="video/mp4"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> <track src="support/scroll_up.vtt"> <script> document.getElementsByTagName('track')[0].track.mode = 'showing'; diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left.html index c2edcb9f626..3ed340b4bf4 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left.html @@ -12,8 +12,8 @@ body { margin:0 } </style> <script src="/common/reftest-wait.js"></script> <video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> - <source src="../media/white.webm" type="video/webm"> - <source src="../media/white.mp4" type="video/mp4"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> <track src="support/single_line_top_left.vtt"> <script> document.getElementsByTagName('track')[0].track.mode = 'showing'; diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html index 85e699a262b..69e71bf83c0 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html @@ -12,8 +12,8 @@ body { margin:0 } </style> <script src="/common/reftest-wait.js"></script> <video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> - <source src="../media/white.webm" type="video/webm"> - <source src="../media/white.mp4" type="video/mp4"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> <track src="support/viewportanchor_x_50_percent.vtt"> <script> document.getElementsByTagName('track')[0].track.mode = 'showing'; diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html index 0641b176e6f..58f1362892d 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html @@ -12,8 +12,8 @@ body { margin:0 } </style> <script src="/common/reftest-wait.js"></script> <video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> - <source src="../media/white.webm" type="video/webm"> - <source src="../media/white.mp4" type="video/mp4"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> <track src="support/viewportanchor_y_50_percent.vtt"> <script> document.getElementsByTagName('track')[0].track.mode = 'showing'; diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html index 4377e9b4c03..2d23d1641af 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html @@ -12,8 +12,8 @@ body { margin:0 } </style> <script src="/common/reftest-wait.js"></script> <video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> - <source src="../media/white.webm" type="video/webm"> - <source src="../media/white.mp4" type="video/mp4"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> <track src="support/width_50_percent.vtt"> <script> document.getElementsByTagName('track')[0].track.mode = 'showing'; diff --git a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-failure.html b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-failure.html index 81d93322c77..439bea888b2 100644 --- a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-failure.html +++ b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-failure.html @@ -2,6 +2,7 @@ <title>DedicatedWorker: import failure</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +<script> setup({allow_uncaught_exception: true}); </script> <script> promise_test(async () => { diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/new-worker-window.html b/tests/wpt/web-platform-tests/workers/modules/resources/new-worker-window.html index 5ae150725eb..a7bd2eedef6 100644 --- a/tests/wpt/web-platform-tests/workers/modules/resources/new-worker-window.html +++ b/tests/wpt/web-platform-tests/workers/modules/resources/new-worker-window.html @@ -9,7 +9,10 @@ let worker; window.onmessage = e => { worker = new Worker(e.data, { type: 'module' }); worker.onmessage = msg => window.opener.postMessage(msg.data, '*'); - worker.onerror = err => window.opener.postMessage(['ERROR'], '*'); + worker.onerror = err => { + window.opener.postMessage(['ERROR'], '*'); + err.preventDefault(); + }; }; window.opener.postMessage('LOADED', '*'); </script> |