aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/wpt/metadata/MANIFEST.json400
-rw-r--r--tests/wpt/metadata/css/css-animations/inheritance.html.ini49
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/background-size-001.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini12
-rw-r--r--tests/wpt/metadata/css/css-text-decor/inheritance.html.ini49
-rw-r--r--tests/wpt/metadata/css/css-text/inheritance.html.ini84
-rw-r--r--tests/wpt/metadata/css/css-transforms/inheritance.html.ini51
-rw-r--r--tests/wpt/metadata/css/css-transitions/inheritance.html.ini25
-rw-r--r--tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini24
-rw-r--r--tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/inheritance.html.ini7
-rw-r--r--tests/wpt/metadata/css/filter-effects/inheritance.html.ini31
-rw-r--r--tests/wpt/metadata/css/filter-effects/parsing/backdrop-filter-computed.html.ini85
-rw-r--r--tests/wpt/metadata/css/filter-effects/parsing/backdrop-filter-parsing-valid.html.ini112
-rw-r--r--tests/wpt/metadata/encoding/single-byte-decoder.html.ini17
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini7
-rw-r--r--tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-xml.window.js.ini3
-rw-r--r--tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini3
-rw-r--r--tests/wpt/metadata/quirks/unitless-length/quirks.html.ini (renamed from tests/wpt/metadata/quirks/unitless-length/no-quirks.html.ini)2
-rw-r--r--tests/wpt/metadata/workers/modules/dedicated-worker-import-csp.html.ini2
-rw-r--r--tests/wpt/metadata/workers/modules/dedicated-worker-import-failure.html.ini1
-rw-r--r--tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini1
-rw-r--r--tests/wpt/web-platform-tests/.azure-pipelines.yml4
-rw-r--r--tests/wpt/web-platform-tests/.taskcluster.yml2
-rw-r--r--tests/wpt/web-platform-tests/background-fetch/service_workers/sw-update-ui.js15
-rw-r--r--tests/wpt/web-platform-tests/background-fetch/update-ui.https.window.js13
-rw-r--r--tests/wpt/web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/background-size-001.html2
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/parsing/backdrop-filter-computed.html62
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/parsing/backdrop-filter-parsing-invalid.html54
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/parsing/backdrop-filter-parsing-valid.html67
-rw-r--r--tests/wpt/web-platform-tests/css/support/inheritance-testcommon.js15
-rw-r--r--tests/wpt/web-platform-tests/css/support/parsing-testcommon.js13
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/reftest.list1
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-1-ref.html90
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-1.html100
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2-ref.html30
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2a.html32
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2b.html32
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2c.html32
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2d.html31
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/individual-transform-2e.html31
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/reftest.list7
-rw-r--r--tests/wpt/web-platform-tests/docs/_running-tests/safari.md6
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-all.https.sub.html7
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html7
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html7
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-disallowed-for-all.https.sub.html7
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/message-opener.html4
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-SecureContext.html19
-rw-r--r--tests/wpt/web-platform-tests/quirks/reference/vertical-align-in-quirks-ref.html52
-rw-r--r--tests/wpt/web-platform-tests/quirks/vertical-align-in-quirks.html56
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/clients-matchall-include-uncontrolled.https.html131
-rw-r--r--tests/wpt/web-platform-tests/streams/piping/abort.dedicatedworker.html11
-rw-r--r--tests/wpt/web-platform-tests/streams/piping/abort.html11
-rw-r--r--tests/wpt/web-platform-tests/streams/piping/abort.js365
-rw-r--r--tests/wpt/web-platform-tests/streams/piping/abort.serviceworker.https.html12
-rw-r--r--tests/wpt/web-platform-tests/streams/piping/abort.sharedworker.html11
-rw-r--r--tests/wpt/web-platform-tests/svg/interact/inheritance.svg22
-rw-r--r--tests/wpt/web-platform-tests/svg/interact/parsing/pointer-events-invalid.svg21
-rw-r--r--tests/wpt/web-platform-tests/svg/interact/parsing/pointer-events-valid.svg29
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tcdownload.py6
-rw-r--r--tests/wpt/web-platform-tests/tools/py27-flake8.ini6
-rw-r--r--tests/wpt/web-platform-tests/tools/py36-flake8.ini4
-rw-r--r--tests/wpt/web-platform-tests/tools/requirements_flake8.txt8
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/fennec.py4
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/webkit.py25
-rwxr-xr-xtests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters.py53
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_formatters.py73
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/wptserve/handlers.py4
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py2
-rw-r--r--tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-list.js2
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/__init__.py11
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py5
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/user_prompts.py5
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/support/asserts.py1
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py1
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/support/helpers.py43
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/support/image.py1
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/__init__.py12
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py29
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/user_prompts.py8
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/__init__.py6
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/screenshot.py14
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/user_prompts.py8
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-ontonechange.https.html2
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-replaceTrack.https.html62
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver-direction.html (renamed from tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver-setDirection.html)33
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html4
-rw-r--r--tests/wpt/web-platform-tests/webrtc/historical.html8
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/basic.html4
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent.html4
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent.html4
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up.html4
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left.html4
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html4
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html4
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html4
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-failure.html1
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/resources/new-worker-window.html5
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>