aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini2
-rw-r--r--tests/wpt/metadata/MANIFEST.json286
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.https.any.js.ini24
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js.ini54
-rw-r--r--tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini4
-rw-r--r--tests/wpt/metadata/css/CSS2/positioning/abspos-float-with-inline-container.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-images/animations/object-position-interpolation.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-transitions/animations/text-shadow-interpolation.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini2
-rw-r--r--tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_txt.html.ini2
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini7
-rw-r--r--tests/wpt/metadata/fetch/content-type/script.window.js.ini6
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini3
-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_2.html.ini (renamed from tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini)2
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/SubmitEvent.window.js.ini16
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini16
-rw-r--r--tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini7
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini1
-rw-r--r--tests/wpt/metadata/webmessaging/with-ports/017.html.ini5
-rw-r--r--tests/wpt/metadata/webmessaging/with-ports/018.html.ini5
-rw-r--r--tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini1
-rw-r--r--tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini2
-rw-r--r--tests/wpt/web-platform-tests/.taskcluster.yml40
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js8
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.js5
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js8
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.js5
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.any.js8
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.js11
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js8
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.js11
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/animations/object-position-interpolation.html158
-rw-r--r--tests/wpt/web-platform-tests/css/css-lists/list-style-type-string-001-ref.html (renamed from tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001-ref.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/css-lists/list-style-type-string-001a.html (renamed from tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001a.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/css-lists/list-style-type-string-001b.html (renamed from tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001b.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/marker-font-properties.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html60
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-align-002.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-align-003.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-margin-002.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-margin-003.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-padding-002.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-padding-003.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-snap-002.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-snap-003.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-align-001-iframe.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-margin-001-iframe.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-padding-001-iframe.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-snap-001-iframe.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-size-adjust/animations/text-size-adjust-interpolation.html104
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/animations/text-shadow-interpolation.html110
-rw-r--r--tests/wpt/web-platform-tests/css/support/computed-testcommon.js41
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/reftest.list3
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/reftest.list3
-rw-r--r--tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md91
-rw-r--r--tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-redirect-cache.https.html26
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/SubmitEvent.window.js36
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-submission-algorithm.html54
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/implicit-submission.optional.html39
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/resources/targetted-form.js7
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-button-element/button-submit-children.html34
-rw-r--r--tests/wpt/web-platform-tests/interfaces/media-capabilities.idl9
-rw-r--r--tests/wpt/web-platform-tests/interfaces/web-nfc.idl1
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webrtc.idl11
-rw-r--r--tests/wpt/web-platform-tests/loading/lazyload/image-loading-lazy-multicol-tentative.html48
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemFileHandle-getFile.js32
-rw-r--r--tests/wpt/web-platform-tests/preload/preload-csp.sub.html2
-rw-r--r--tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html2
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js12
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/webxr-test.js18
-rw-r--r--tests/wpt/web-platform-tests/svg/animations/pruning-first-interval.html28
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/azure/cleanup_win10.yml22
-rwxr-xr-xtests/wpt/web-platform-tests/tools/ci/run_tc.py20
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tcdownload.py13
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/browser.py21
-rw-r--r--tests/wpt/web-platform-tests/visual-viewport/viewport-no-resize-event-on-overflow-recalc.html.ini4
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFReader_options.https.html14
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html24
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFWriter_push.https.html18
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js15
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-parameterless.https.html142
-rw-r--r--tests/wpt/webgl/meta/conformance/rendering/multisample-corruption.html.ini72
-rw-r--r--tests/wpt/webgl/meta/conformance2/rendering/canvas-resizing-with-pbo-bound.html.ini1
93 files changed, 1641 insertions, 291 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
index a9e46713244..76b398963ae 100644
--- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
@@ -7,7 +7,7 @@
expected: FAIL
[Opening a blob URL in a new window immediately before revoking it works.]
- expected: TIMEOUT
+ expected: FAIL
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
expected: FAIL
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index b0152f38d61..99a4907821f 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -130339,6 +130339,30 @@
{}
]
],
+ "css/css-lists/list-style-type-string-001a.html": [
+ [
+ "css/css-lists/list-style-type-string-001a.html",
+ [
+ [
+ "/css/css-lists/list-style-type-string-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-lists/list-style-type-string-001b.html": [
+ [
+ "css/css-lists/list-style-type-string-001b.html",
+ [
+ [
+ "/css/css-lists/list-style-type-string-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-lists/list-style-type-string-002.html": [
[
"css/css-lists/list-style-type-string-002.html",
@@ -190757,30 +190781,6 @@
{}
]
],
- "css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001a.html": [
- [
- "css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001a.html",
- [
- [
- "/css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001b.html": [
- [
- "css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001b.html",
- [
- [
- "/css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
"css/vendor-imports/mozilla/mozilla-central-reftests/masking/clip-path-borderBox-1a.html": [
[
"css/vendor-imports/mozilla/mozilla-central-reftests/masking/clip-path-borderBox-1a.html",
@@ -251688,6 +251688,9 @@
"css/css-lists/list-marker-with-lineheight-and-overflow-hidden-001-ref.html": [
[]
],
+ "css/css-lists/list-style-type-string-001-ref.html": [
+ []
+ ],
"css/css-lists/list-style-type-string-002-ref.html": [
[]
],
@@ -263268,12 +263271,6 @@
"css/vendor-imports/mozilla/mozilla-central-reftests/images3/support/template-object-position-test.html": [
[]
],
- "css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001-ref.html": [
- []
- ],
- "css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/reftest.list": [
- []
- ],
"css/vendor-imports/mozilla/mozilla-central-reftests/masking/blank.html": [
[]
],
@@ -287766,6 +287763,9 @@
"visual-viewport/helper-resize-event-on-load-overflowing-page.html": [
[]
],
+ "visual-viewport/viewport-no-resize-event-on-overflow-recalc.html.ini": [
+ []
+ ],
"visual-viewport/viewport_support.js": [
[]
],
@@ -320878,6 +320878,12 @@
{}
]
],
+ "css/css-images/animations/object-position-interpolation.html": [
+ [
+ "css/css-images/animations/object-position-interpolation.html",
+ {}
+ ]
+ ],
"css/css-images/gradient/color-stops-parsing.html": [
[
"css/css-images/gradient/color-stops-parsing.html",
@@ -322984,6 +322990,12 @@
{}
]
],
+ "css/css-pseudo/parsing/marker-supported-properties.html": [
+ [
+ "css/css-pseudo/parsing/marker-supported-properties.html",
+ {}
+ ]
+ ],
"css/css-pseudo/parsing/tree-abiding-pseudo-elements.html": [
[
"css/css-pseudo/parsing/tree-abiding-pseudo-elements.html",
@@ -324550,6 +324562,12 @@
{}
]
],
+ "css/css-size-adjust/animations/text-size-adjust-interpolation.html": [
+ [
+ "css/css-size-adjust/animations/text-size-adjust-interpolation.html",
+ {}
+ ]
+ ],
"css/css-size-adjust/inheritance.html": [
[
"css/css-size-adjust/inheritance.html",
@@ -327886,6 +327904,12 @@
{}
]
],
+ "css/css-transitions/animations/text-shadow-interpolation.html": [
+ [
+ "css/css-transitions/animations/text-shadow-interpolation.html",
+ {}
+ ]
+ ],
"css/css-transitions/before-load-001.html": [
[
"css/css-transitions/before-load-001.html",
@@ -354792,7 +354816,9 @@
"html/cross-origin-opener-policy/popup-redirect-cache.https.html": [
[
"html/cross-origin-opener-policy/popup-redirect-cache.https.html",
- {}
+ {
+ "timeout": "long"
+ }
]
],
"html/cross-origin-opener-policy/popup-same-origin-non-initial-about-blank.https.html": [
@@ -360530,6 +360556,12 @@
{}
]
],
+ "html/semantics/forms/form-submission-0/SubmitEvent.window.js": [
+ [
+ "html/semantics/forms/form-submission-0/SubmitEvent.window.html",
+ {}
+ ]
+ ],
"html/semantics/forms/form-submission-0/constructing-form-data-set.html": [
[
"html/semantics/forms/form-submission-0/constructing-form-data-set.html",
@@ -360578,6 +360610,14 @@
{}
]
],
+ "html/semantics/forms/form-submission-0/implicit-submission.optional.html": [
+ [
+ "html/semantics/forms/form-submission-0/implicit-submission.optional.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"html/semantics/forms/form-submission-0/submission-checks.window.js": [
[
"html/semantics/forms/form-submission-0/submission-checks.window.html",
@@ -360796,6 +360836,12 @@
{}
]
],
+ "html/semantics/forms/the-button-element/button-submit-children.html": [
+ [
+ "html/semantics/forms/the-button-element/button-submit-children.html",
+ {}
+ ]
+ ],
"html/semantics/forms/the-button-element/button-type.html": [
[
"html/semantics/forms/the-button-element/button-type.html",
@@ -369042,6 +369088,12 @@
{}
]
],
+ "loading/lazyload/image-loading-lazy-multicol-tentative.html": [
+ [
+ "loading/lazyload/image-loading-lazy-multicol-tentative.html",
+ {}
+ ]
+ ],
"loading/lazyload/image-loading-lazy.tentative.html": [
[
"loading/lazyload/image-loading-lazy.tentative.html",
@@ -411912,6 +411964,12 @@
{}
]
],
+ "svg/animations/pruning-first-interval.html": [
+ [
+ "svg/animations/pruning-first-interval.html",
+ {}
+ ]
+ ],
"svg/animations/remove-animation-element-while-animation-is-running.html": [
[
"svg/animations/remove-animation-element-while-animation-is-running.html",
@@ -425537,6 +425595,12 @@
{}
]
],
+ "webrtc/RTCPeerConnection-setLocalDescription-parameterless.https.html": [
+ [
+ "webrtc/RTCPeerConnection-setLocalDescription-parameterless.https.html",
+ {}
+ ]
+ ],
"webrtc/RTCPeerConnection-setLocalDescription-pranswer.html": [
[
"webrtc/RTCPeerConnection-setLocalDescription-pranswer.html",
@@ -457048,7 +457112,7 @@
"support"
],
".taskcluster.yml": [
- "27479fb57e072114e7898494468740b239c7ae92",
+ "6de1e280cecdece123b42950a4c0a35cf85f4a5c",
"support"
],
".well-known/README.md": [
@@ -463356,27 +463420,27 @@
"support"
],
"WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js": [
- "c69249047bf2bfceef5001ffb5ee8fbcf9859a6c",
+ "37e3eb4324200c85cb65ee9f077ea7433bff7783",
"testharness"
],
"WebCryptoAPI/derive_bits_keys/ecdh_bits.js": [
- "fe82ffe5712e39aef2638ccf57a9695fb0197e2b",
+ "5cc7193aebd7942d2636d369328917b7acc3e16a",
"support"
],
"WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js": [
- "b212b92c74b0c318e8c32cb22735a1e29aa610eb",
+ "d8235fce5a74122591ee8b9462a1a66ac5da097c",
"testharness"
],
"WebCryptoAPI/derive_bits_keys/ecdh_keys.js": [
- "b1a0bcd485d92ef46be7908396c083b75aaf9204",
+ "99008e0cbbe09eab687c62b8935e85a3369e5ba0",
"support"
],
"WebCryptoAPI/derive_bits_keys/hkdf.https.any.js": [
- "d0d545a7d27222fede323a459fdee81e051f7106",
+ "02492c3741c7d1bb6f300bba51e08b911a1295bd",
"testharness"
],
"WebCryptoAPI/derive_bits_keys/hkdf.js": [
- "95889676c15960796a5e6d2b242d308b9c1f5afc",
+ "c18a433d7f9036d94fcc649b0294a68e7750e853",
"support"
],
"WebCryptoAPI/derive_bits_keys/hkdf_vectors.js": [
@@ -463384,11 +463448,11 @@
"support"
],
"WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js": [
- "539f390c8afc8bd9894f3dea35dcb94a4217489f",
+ "2efbe523f8cd7d5daeb4dce42b893369467f9bfe",
"testharness"
],
"WebCryptoAPI/derive_bits_keys/pbkdf2.js": [
- "7edc7ea5a2654ec39800cbe33b9a678bc8ee31fa",
+ "0403f382e1479c7c5018e91aba2ceb31b89998dc",
"support"
],
"WebCryptoAPI/derive_bits_keys/pbkdf2_vectors.js": [
@@ -577067,6 +577131,10 @@
"8d3b9472b2c9a2ee88dc97f907f9d16eb4fa3755",
"support"
],
+ "css/css-images/animations/object-position-interpolation.html": [
+ "055cbc8421b6af58e636729268f7323e1710458c",
+ "testharness"
+ ],
"css/css-images/css-image-fallbacks-and-annotations-ref.html": [
"f3193036766e428bf946e81b7df72bfc7f4901db",
"support"
@@ -578459,6 +578527,18 @@
"422be2304c891fbd0c4f256bc3b87514d935fc81",
"visual"
],
+ "css/css-lists/list-style-type-string-001-ref.html": [
+ "0d1b1362873483fa1b900e2da3efe603648f791e",
+ "support"
+ ],
+ "css/css-lists/list-style-type-string-001a.html": [
+ "f7ed6e3b342d6cd259b3df61a5445f83ab39b0f9",
+ "reftest"
+ ],
+ "css/css-lists/list-style-type-string-001b.html": [
+ "f02bf13a73cd0ee025bf3e3d6ae9215feadb12b4",
+ "reftest"
+ ],
"css/css-lists/list-style-type-string-002-ref.html": [
"8694b5f54424c9a6e96209950a5585352a836403",
"support"
@@ -584436,7 +584516,7 @@
"support"
],
"css/css-pseudo/marker-font-properties.html": [
- "a108792fa207b22110a2a70a5d3ebf635033dd5d",
+ "4dd780679845a34699f31febd927dc3b774a5ffd",
"reftest"
],
"css/css-pseudo/marker-inherit-line-height-ref.html": [
@@ -584471,6 +584551,10 @@
"94d0c42eca8cffbd5637a1039028925c19e1f851",
"reftest"
],
+ "css/css-pseudo/parsing/marker-supported-properties.html": [
+ "451aac149dbda8eb605dadc377bfa4186a871a50",
+ "testharness"
+ ],
"css/css-pseudo/parsing/tree-abiding-pseudo-elements.html": [
"05c23a3bc143ce2a005b3686af2eae2cb60cb7ba",
"testharness"
@@ -587396,11 +587480,11 @@
"reftest"
],
"css/css-scroll-snap/scroll-target-align-002.html": [
- "7e82f030e4c3a47e84475ad440a80b907ffbe99f",
+ "01db026dff29c62dbbe27a4e262bb2ed715ba5ef",
"reftest"
],
"css/css-scroll-snap/scroll-target-align-003.html": [
- "1d6fbebbcd7f652746ece943a240ba2540a10710",
+ "d13efa0abb5d1a13dbb43d78301730b322322ccb",
"reftest"
],
"css/css-scroll-snap/scroll-target-margin-001.html": [
@@ -587408,11 +587492,11 @@
"reftest"
],
"css/css-scroll-snap/scroll-target-margin-002.html": [
- "a02cf7db17517cb9bcfd56173c4b6f94cb5f1283",
+ "51cf553b3603f237226fa6b7d0ca33089f801a0e",
"reftest"
],
"css/css-scroll-snap/scroll-target-margin-003.html": [
- "d0434db515a68bb7b280edaebe8428dd705d4fc3",
+ "2ea8eff67c3d17b38031ca5534c8091cfa854409",
"reftest"
],
"css/css-scroll-snap/scroll-target-padding-001.html": [
@@ -587420,11 +587504,11 @@
"reftest"
],
"css/css-scroll-snap/scroll-target-padding-002.html": [
- "3a0ca3b8519e8dc73ed9a3b19c7af0312c5d69a6",
+ "fbed1e132ecf3805784436c4b13889f61ff8c7ba",
"reftest"
],
"css/css-scroll-snap/scroll-target-padding-003.html": [
- "1e92e9be72fa17d718a6e121c5e18edf8bbcae3d",
+ "ccbe7b0ec97c9ba14d2ac11df1a24b032e185fe0",
"reftest"
],
"css/css-scroll-snap/scroll-target-snap-001.html": [
@@ -587432,11 +587516,11 @@
"reftest"
],
"css/css-scroll-snap/scroll-target-snap-002.html": [
- "89df44cba28443c015032301df4c0088ed9fe228",
+ "28f3c124525c68fa3b108019aa6f30b0d878a0bf",
"reftest"
],
"css/css-scroll-snap/scroll-target-snap-003.html": [
- "3e90347a4dc9ee07e04350a6436309c673a13569",
+ "6fe3901e51c10b9d3d687d7b421b67e1ae6e5896",
"reftest"
],
"css/css-scroll-snap/scrollTo-scrollBy-snaps.html": [
@@ -587480,19 +587564,19 @@
"testharness"
],
"css/css-scroll-snap/support/scroll-target-align-001-iframe.html": [
- "20922ea18ea104bd613a27fcce58a1f0e9ba70ad",
+ "d86a5e86d01b5806c55123f07254f71d8891dfc0",
"support"
],
"css/css-scroll-snap/support/scroll-target-margin-001-iframe.html": [
- "8eb5b9c863853a29eeaefa33caa89ae237278071",
+ "2b2c1d2d8c11228fadf4a85ac2c627f4bc3b17c5",
"support"
],
"css/css-scroll-snap/support/scroll-target-padding-001-iframe.html": [
- "b9467e4347fe3dd005123f7c76e6cda1596e79d8",
+ "9260c81b1c3c5787d7b284601ab2ca350c282e5b",
"support"
],
"css/css-scroll-snap/support/scroll-target-snap-001-iframe.html": [
- "1a598fa72384b40ee0331c6a3aaeaaa0fac3ae02",
+ "3146a3bf8824d625b1e49032343d1956f496fdf7",
"support"
],
"css/css-scroll-snap/unreachable-snap-positions.html": [
@@ -588963,6 +589047,10 @@
"ed3590ceef222740139a4b9d3017478c8728bb30",
"support"
],
+ "css/css-size-adjust/animations/text-size-adjust-interpolation.html": [
+ "1d7e54b734158eb234a4d653b239f9de04187aac",
+ "testharness"
+ ],
"css/css-size-adjust/inheritance.html": [
"730bcfe2b59534534c2ddec225ceb70fbb7700a3",
"testharness"
@@ -602775,6 +602863,10 @@
"f11374e47b1876d06231854907c3082b5d4774ab",
"support"
],
+ "css/css-transitions/animations/text-shadow-interpolation.html": [
+ "c007816ecb04236421ff0aea8861da19c244338a",
+ "testharness"
+ ],
"css/css-transitions/before-load-001.html": [
"009260eea430721971053f6d98330f9a9ed56d6d",
"testharness"
@@ -620940,7 +621032,7 @@
"support"
],
"css/support/computed-testcommon.js": [
- "1e87f2a518cb1c7845a99d6a13330e7a13436eca",
+ "c7c7e073203a67844ebcdf029f5c323964a41c99",
"support"
],
"css/support/green.ico": [
@@ -626219,22 +626311,6 @@
"fb4b3ad3c7aeab61f44c394926735a97a8767d3c",
"support"
],
- "css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001-ref.html": [
- "0d1b1362873483fa1b900e2da3efe603648f791e",
- "support"
- ],
- "css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001a.html": [
- "f7ed6e3b342d6cd259b3df61a5445f83ab39b0f9",
- "reftest"
- ],
- "css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001b.html": [
- "f02bf13a73cd0ee025bf3e3d6ae9215feadb12b4",
- "reftest"
- ],
- "css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/reftest.list": [
- "f914145ab8f075cbbf03968e84d5487047dc0008",
- "support"
- ],
"css/vendor-imports/mozilla/mozilla-central-reftests/masking/blank.html": [
"abb1b5472843b7bcf63c946897cd66da456033e7",
"support"
@@ -626872,7 +626948,7 @@
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/reftest.list": [
- "2d9b459fa8e62ee70bb79567c5727650008f0c41",
+ "97621fe19fe42c95103d8bbd100fece50d0f51be",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/ruby/nested-ruby-pairing-001-ref.html": [
@@ -631100,7 +631176,7 @@
"support"
],
"docs/running-tests/from-local-system.md": [
- "5a9a776a285ad488509f6c494f43ebbdc8ec108f",
+ "0f337176c47d7c38bcaebd85fd86628e1870dfae",
"support"
],
"docs/running-tests/from-web.md": [
@@ -643516,7 +643592,7 @@
"testharness"
],
"html/cross-origin-opener-policy/popup-redirect-cache.https.html": [
- "519f710596005b5c460e03cfd398fafbb585ce40",
+ "0524878a03a8d3764c63b77b5c8c4f1453c5a288",
"testharness"
],
"html/cross-origin-opener-policy/popup-redirect-cache.https.html.headers": [
@@ -654415,6 +654491,10 @@
"145b5dd3727f995fba56407f07e158d1fb80ba5a",
"testharness"
],
+ "html/semantics/forms/form-submission-0/SubmitEvent.window.js": [
+ "93dbabb866beeba9e04d0d4f99dde78f448e8dff",
+ "testharness"
+ ],
"html/semantics/forms/form-submission-0/constructing-form-data-set.html": [
"8dad6cdd01a43fa17694c67939e8e5a05ab529e2",
"testharness"
@@ -654448,13 +654528,17 @@
"support"
],
"html/semantics/forms/form-submission-0/form-submission-algorithm.html": [
- "8f61cbc18c95133561e4dd8cbffd3cdb682420e4",
+ "df39b57353c67ebb02014865f28d739bbf24c690",
"testharness"
],
"html/semantics/forms/form-submission-0/getactionurl.html": [
"83de220267e7c37374bcd4d4490f27e4488e1126",
"testharness"
],
+ "html/semantics/forms/form-submission-0/implicit-submission.optional.html": [
+ "109d3b901a53537e9ae2fb17f84d25d4a764b2e2",
+ "testharness"
+ ],
"html/semantics/forms/form-submission-0/resources/file-submission.py": [
"5fc67faa880ffa9300a093aa0ef1f67c3a76eb0c",
"support"
@@ -654464,7 +654548,7 @@
"support"
],
"html/semantics/forms/form-submission-0/resources/targetted-form.js": [
- "6b6685291d2bd3d7dc64f97e2d9e460394d2eb3c",
+ "291251b7e8037ce5c9053d7c4b63142a5783b877",
"support"
],
"html/semantics/forms/form-submission-0/submission-checks.window.js": [
@@ -654631,6 +654715,10 @@
"1747bd727aa2fb4deb8f2a81601523776a51a355",
"testharness"
],
+ "html/semantics/forms/the-button-element/button-submit-children.html": [
+ "06218f4fc9e99efe2d87a9eb85582d3dc84434a1",
+ "testharness"
+ ],
"html/semantics/forms/the-button-element/button-type.html": [
"6cfd6687c707479600534de03156afa698daa314",
"testharness"
@@ -661944,7 +662032,7 @@
"support"
],
"interfaces/media-capabilities.idl": [
- "71bc46d24109f49d616e05e804bcda01dcd45afb",
+ "6fe43d87a80bb7229d5cebc5fbd4cac08f44fa39",
"support"
],
"interfaces/media-playback-quality.idl": [
@@ -662168,7 +662256,7 @@
"support"
],
"interfaces/web-nfc.idl": [
- "d2ec623e864141152f9ca2ac79b5252b246257bf",
+ "117812a1f276d0bb84de94c2357485d7670ad314",
"support"
],
"interfaces/web-share.idl": [
@@ -662212,7 +662300,7 @@
"support"
],
"interfaces/webrtc.idl": [
- "2989db5453f5333c8e04e6d237f4142aa9fa85f8",
+ "5a5eb7b10631f14245b158cc6b06a2a178ce1d20",
"support"
],
"interfaces/webusb.idl": [
@@ -662943,6 +663031,10 @@
"76eef3a8f45c131bdbf90028f8bcad75be0e5f32",
"testharness"
],
+ "loading/lazyload/image-loading-lazy-multicol-tentative.html": [
+ "eb69d6810d60a198ae5861211423acb7f76245f9",
+ "testharness"
+ ],
"loading/lazyload/image-loading-lazy.tentative.html": [
"5920eb1882df0a69e0d23c26433bf1b28b9275e9",
"testharness"
@@ -668292,7 +668384,7 @@
"support"
],
"native-file-system/script-tests/FileSystemFileHandle-getFile.js": [
- "88e5593ebad613dc30cbdb838fe481e5353bce69",
+ "6b7d9f9a3171c96aaa2e1312451b3a9cac6c2e9b",
"support"
],
"native-file-system/script-tests/FileSystemWriter.js": [
@@ -677124,11 +677216,11 @@
"testharness"
],
"preload/preload-csp.sub.html": [
- "62d0c71039b7c06a4299ac71e055ff3786de5c41",
+ "a11214e9ec8e41a518f9fdb6b3db1b96b6e55df9",
"testharness"
],
"preload/preload-default-csp.sub.html": [
- "9fc11945866834c70c9ad270fb11d37a443ac3d0",
+ "c649a53f874d854c1ed6052b06a7adad01b816e5",
"testharness"
],
"preload/preload-strict-dynamic.html": [
@@ -690736,7 +690828,7 @@
"support"
],
"resources/chromium/nfc-mock.js": [
- "811c0aeafceed8e16148ae4c678b55733fc6c8b8",
+ "aff72bbad028ecd6b8c6a8023841e08f072adfac",
"support"
],
"resources/chromium/sensor.mojom.js": [
@@ -690796,7 +690888,7 @@
"support"
],
"resources/chromium/webxr-test.js": [
- "94031657b4b6d2698739eddf0bd4028e0aa8fdea",
+ "d87b3420a85177ad5ef1c5c36cc5c4d785133eba",
"support"
],
"resources/chromium/webxr-test.js.headers": [
@@ -697043,6 +697135,10 @@
"e974e38177526e2e4bd8344712c37b00dc2e2bda",
"testharness"
],
+ "svg/animations/pruning-first-interval.html": [
+ "5a1d1463beaec5b8c3e86406de6138960de8e5ab",
+ "testharness"
+ ],
"svg/animations/remove-animation-element-while-animation-is-running.html": [
"764d25b69f158e028d8ec9fe14e1c43840d00925",
"testharness"
@@ -701588,7 +701684,7 @@
"support"
],
"tools/ci/azure/cleanup_win10.yml": [
- "76852b58cd39f057ae4441b26fd423714b07f445",
+ "f495a0c554537f1161981e19c12c597ba41ef2b2",
"support"
],
"tools/ci/azure/com.apple.Safari.plist": [
@@ -701688,7 +701784,7 @@
"support"
],
"tools/ci/run_tc.py": [
- "e6d8cd878aacc58f535be562a85ba511e18676f2",
+ "be7dbe082a1709493b62316d15668ea10ae93607",
"support"
],
"tools/ci/taskcluster-run.py": [
@@ -701696,7 +701792,7 @@
"support"
],
"tools/ci/tcdownload.py": [
- "6e4d960da900c670701807455bd67b247e37f34b",
+ "256726da7b568f32115dfeaa6bc1407490c0d076",
"support"
],
"tools/ci/tests/test_jobs.py": [
@@ -706472,7 +706568,7 @@
"support"
],
"tools/wpt/browser.py": [
- "bed8c59bf0729ed2327d499f7ec19817055379a6",
+ "fb10d75631305bd66044f033d3ac8f5e8ffb4a0b",
"support"
],
"tools/wpt/commands.json": [
@@ -711503,6 +711599,10 @@
"dcb9432da83cb21b6f0403080d3c7b3b5df1659e",
"testharness"
],
+ "visual-viewport/viewport-no-resize-event-on-overflow-recalc.html.ini": [
+ "75e29ae4c427efbaeb9e08ec4824b90c30c2aead",
+ "support"
+ ],
"visual-viewport/viewport-offset-manual.html": [
"c216e405a3e78765b95c815c45809f152dd97e41",
"manual"
@@ -713456,7 +713556,7 @@
"manual"
],
"web-nfc/NDEFReader_options.https.html": [
- "ab55e2c160bd39710a62238fce795ff63f03c995",
+ "389fff9e041e284358a87e5cc133046d4a579b84",
"testharness"
],
"web-nfc/NDEFReader_scan.https.html": [
@@ -713472,7 +713572,7 @@
"testharness"
],
"web-nfc/NDEFRecord_constructor.https.html": [
- "cea517d37aa17bf94c3d96c9abd19db5f1fa184c",
+ "1206afb4713dc7e4b48dcc837b3dd708382a9ce2",
"testharness"
],
"web-nfc/NDEFWriter-document-hidden-manual.https.html": [
@@ -713480,7 +713580,7 @@
"manual"
],
"web-nfc/NDEFWriter_push.https.html": [
- "fbebac946dfbf77a49c11c0472da900ca26759be",
+ "2be655fbbf93cfb0c0c8813f86dc3e98450af720",
"testharness"
],
"web-nfc/README.md": [
@@ -713496,7 +713596,7 @@
"testharness"
],
"web-nfc/resources/nfc-helpers.js": [
- "80f0882f9f8deff30b0c8c60ecb1bfc7c6df168c",
+ "cf9b510f30424e79412cc35098f63f5afd05707b",
"support"
],
"web-nfc/resources/support-iframe.html": [
@@ -716859,6 +716959,10 @@
"80faf85f15e1acff67205efef90bbf5fd491bbc8",
"testharness"
],
+ "webrtc/RTCPeerConnection-setLocalDescription-parameterless.https.html": [
+ "0cce78bfbca161016721c4e2b122382c4be868f7",
+ "testharness"
+ ],
"webrtc/RTCPeerConnection-setLocalDescription-pranswer.html": [
"1fbb30923f3d1e9abef6940a931a6d426ed01915",
"testharness"
diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js.ini
index 763dd68b4cd..fd2cc8a6f34 100644
--- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js.ini
+++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js.ini
@@ -2,8 +2,14 @@
[WebCryptoAPI: deriveBits() Using ECDH]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[ecdh_bits.https.any.html]
[WebCryptoAPI: deriveBits() Using ECDH]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js.ini
index 07be8dd8e0d..12e5082d0b8 100644
--- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js.ini
+++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js.ini
@@ -2,8 +2,14 @@
[WebCryptoAPI: deriveKey() Using ECDH]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[ecdh_keys.https.any.worker.html]
[WebCryptoAPI: deriveKey() Using ECDH]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.https.any.js.ini
index d8ae431d4c0..f73bc5284ab 100644
--- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.https.any.js.ini
+++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.https.any.js.ini
@@ -2,38 +2,62 @@
[WebCryptoAPI: deriveBits() and deriveKey() Using HKDF]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[hkdf.https.any.worker.html?1001-2000]
[WebCryptoAPI: deriveBits() and deriveKey() Using HKDF]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[hkdf.https.any.html?2001-3000]
[WebCryptoAPI: deriveBits() and deriveKey() Using HKDF]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[hkdf.https.any.worker.html?2001-3000]
[WebCryptoAPI: deriveBits() and deriveKey() Using HKDF]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[hkdf.https.any.html?1001-2000]
[WebCryptoAPI: deriveBits() and deriveKey() Using HKDF]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[hkdf.https.any.html?1-1000]
[WebCryptoAPI: deriveBits() and deriveKey() Using HKDF]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[hkdf.https.any.worker.html?3001-last]
[WebCryptoAPI: deriveBits() and deriveKey() Using HKDF]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[hkdf.https.any.html?3001-last]
[WebCryptoAPI: deriveBits() and deriveKey() Using HKDF]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js.ini
index e370d770d05..326510730d3 100644
--- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js.ini
+++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js.ini
@@ -2,88 +2,142 @@
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[pbkdf2.https.any.worker.html?1-1000]
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[pbkdf2.https.any.worker.html?1001-2000]
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[pbkdf2.https.any.worker.html?3001-4000]
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[pbkdf2.https.any.html?1001-2000]
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[pbkdf2.https.any.html?3001-4000]
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[pbkdf2.https.any.worker.html?8001-last]
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[pbkdf2.https.any.html?1-1000]
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[pbkdf2.https.any.html?5001-6000]
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[pbkdf2.https.any.html?7001-8000]
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[pbkdf2.https.any.worker.html?4001-5000]
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[pbkdf2.https.any.worker.html?7001-8000]
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[pbkdf2.https.any.html?2001-3000]
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[pbkdf2.https.any.worker.html?6001-7000]
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[pbkdf2.https.any.html?8001-last]
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[pbkdf2.https.any.html?4001-5000]
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[pbkdf2.https.any.worker.html?5001-6000]
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
[pbkdf2.https.any.html?6001-7000]
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
expected: FAIL
+ [setup - define tests]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini b/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini
index 9f60026f6d9..94a3570d26b 100644
--- a/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini
+++ b/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini
@@ -5,9 +5,9 @@
[[data-expected-height\] 7]
expected: FAIL
- [[data-expected-height\] 1]
+ [[data-expected-height\] 3]
expected: FAIL
- [[data-expected-height\] 2]
+ [[data-expected-height\] 4]
expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/positioning/abspos-float-with-inline-container.html.ini b/tests/wpt/metadata/css/CSS2/positioning/abspos-float-with-inline-container.html.ini
index 3f98bb1fa20..7203ab0404c 100644
--- a/tests/wpt/metadata/css/CSS2/positioning/abspos-float-with-inline-container.html.ini
+++ b/tests/wpt/metadata/css/CSS2/positioning/abspos-float-with-inline-container.html.ini
@@ -1,2 +1,2 @@
[abspos-float-with-inline-container.html]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/css/css-images/animations/object-position-interpolation.html.ini b/tests/wpt/metadata/css/css-images/animations/object-position-interpolation.html.ini
new file mode 100644
index 00000000000..748cf761f86
--- /dev/null
+++ b/tests/wpt/metadata/css/css-images/animations/object-position-interpolation.html.ini
@@ -0,0 +1,4 @@
+[object-position-interpolation.html]
+ [object-position-interpolation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transitions/animations/text-shadow-interpolation.html.ini b/tests/wpt/metadata/css/css-transitions/animations/text-shadow-interpolation.html.ini
new file mode 100644
index 00000000000..6619bd4efa4
--- /dev/null
+++ b/tests/wpt/metadata/css/css-transitions/animations/text-shadow-interpolation.html.ini
@@ -0,0 +1,4 @@
+[text-shadow-interpolation.html]
+ [text-shadow interpolation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini
index 9997350495a..7b7f0e1bdf6 100644
--- a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini
@@ -9,3 +9,6 @@
[throws if handleEvent is thruthy and not callable]
expected: NOTRUN
+ [doesn't look up handleEvent method on callable event listeners]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini
index c884dc82eab..7fe95a6c291 100644
--- a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini
@@ -2,6 +2,6 @@
[listeners are called when <iframe> is resized]
expected: FAIL
- [listeners are called correct number of times]
+ [listener that was added twice is called only once]
expected: FAIL
diff --git a/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_txt.html.ini b/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_txt.html.ini
new file mode 100644
index 00000000000..c3916f8555d
--- /dev/null
+++ b/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_txt.html.ini
@@ -0,0 +1,2 @@
+[contenttype_txt.html]
+ expected: CRASH
diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
index ac0004a36c8..ab300c199fb 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -312,9 +312,6 @@
[<iframe>: separate response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
- expected: FAIL
-
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
@@ -324,9 +321,9 @@
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*]
+ [<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: separate response Content-Type: text/html */*]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
index b603f668f1a..258fe374697 100644
--- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
@@ -53,15 +53,9 @@
[combined text/javascript ]
expected: FAIL
- [separate text/javascript;charset=windows-1252 error text/javascript]
- expected: FAIL
-
[separate text/javascript x/x]
expected: FAIL
- [separate text/javascript error]
- expected: FAIL
-
[separate text/javascript ]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
index a63e414f43a..87c807a49ff 100644
--- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,6 +11,3 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
- [X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
- expected: FAIL
-
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
new file mode 100644
index 00000000000..87b07c3e670
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
@@ -0,0 +1,4 @@
+[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_2.html.ini
index 385376c7321..75d75b4cda2 100644
--- 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_2.html.ini
@@ -1,4 +1,4 @@
-[traverse_the_history_4.html]
+[traverse_the_history_2.html]
[Multiple history traversals, last would be aborted]
expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini
new file mode 100644
index 00000000000..51f8272a6de
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_3.html]
+ [Multiple history traversals, last would be aborted]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
index 5f60c78e73c..f6a7aca3306 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
@@ -1,6 +1,5 @@
[iframe_sandbox_popups_escaping-3.html]
type: testharness
- expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/SubmitEvent.window.js.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/SubmitEvent.window.js.ini
new file mode 100644
index 00000000000..13cc8c489a3
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/SubmitEvent.window.js.ini
@@ -0,0 +1,16 @@
+[SubmitEvent.window.html]
+ [Successful SubmitEvent constructor]
+ expected: FAIL
+
+ [Failing SubmitEvent constructor]
+ expected: FAIL
+
+ [Successful SubmitEvent constructor; empty dictionary]
+ expected: FAIL
+
+ [Successful SubmitEvent constructor; null submitter]
+ expected: FAIL
+
+ [Successful SubmitEvent constructor; missing dictionary]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini
index 61799e4c935..f6eecd82b49 100644
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini
@@ -1,5 +1,5 @@
[form-double-submit-2.html]
expected: ERROR
[preventDefault should allow onclick submit() to succeed]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini
index df89cd21511..941d0dee0c8 100644
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini
@@ -1,5 +1,5 @@
[form-double-submit-3.html]
expected: ERROR
[<button> should have the same double-submit protection as <input type=submit>]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini
index dce74c6dd71..47a7bbb7975 100644
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini
@@ -1,5 +1,5 @@
[form-double-submit.html]
expected: ERROR
[default submit action should supersede onclick submit()]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini
index 127392316de..e6022ce120f 100644
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini
@@ -1,7 +1,23 @@
[form-submission-algorithm.html]
+ expected: TIMEOUT
[If form's firing submission events is true, then return; 'submit' event]
expected: FAIL
[If form's firing submission events is true, then return; 'invalid' event]
expected: FAIL
+ [firing an event named submit; form.requestSubmit(submitter)]
+ expected: FAIL
+
+ [firing an event named submit; clicking a submit button]
+ expected: FAIL
+
+ [Cannot navigate (after constructing the entry list)]
+ expected: TIMEOUT
+
+ [firing an event named submit; form.requestSubmit(null)]
+ expected: FAIL
+
+ [firing an event named submit; form.requestSubmit()]
+ expected: FAIL
+
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
new file mode 100644
index 00000000000..9e522297c94
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini
@@ -0,0 +1,7 @@
+[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/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
deleted file mode 100644
index a9677391662..00000000000
--- a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[DOMContentLoaded-defer.html]
- [The end: DOMContentLoaded and defer scripts]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
index a56bad443a2..66bd350083b 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
@@ -1,5 +1,4 @@
[realtimeanalyser-fft-scaling.html]
- expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL
diff --git a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini
deleted file mode 100644
index 064cf47545b..00000000000
--- a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[017.html]
- expected: TIMEOUT
- [origin of the script that invoked the method, about:blank]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini
new file mode 100644
index 00000000000..663a1f8fa30
--- /dev/null
+++ b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini
@@ -0,0 +1,5 @@
+[018.html]
+ expected: TIMEOUT
+ [origin of the script that invoked the method, javascript:]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini b/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini
index 333edb3a26e..650c91da4a6 100644
--- a/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini
+++ b/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini
@@ -1,4 +1,5 @@
[sharedworker-in-worker.html]
+ expected: ERROR
[Base URL in workers: new SharedWorker()]
expected: FAIL
diff --git a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
new file mode 100644
index 00000000000..80f9a4f15b8
--- /dev/null
+++ b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
@@ -0,0 +1,2 @@
+[Worker-constructor.html]
+ expected: ERROR
diff --git a/tests/wpt/web-platform-tests/.taskcluster.yml b/tests/wpt/web-platform-tests/.taskcluster.yml
index 27479fb57e0..6de1e280cec 100644
--- a/tests/wpt/web-platform-tests/.taskcluster.yml
+++ b/tests/wpt/web-platform-tests/.taskcluster.yml
@@ -4,6 +4,19 @@ policy:
tasks:
$let:
event_str: {$json: {$eval: event}}
+ provisionerId:
+ $if: 'taskcluster_root_url == "https://taskcluster.net"'
+ then: aws-provisioner-v1
+ else: proj-wpt
+ workerType:
+ $if: 'taskcluster_root_url == "https://taskcluster.net"'
+ then:
+ $if: event.repository.full_name == 'web-platform-tests/wpt'
+ then:
+ wpt-docker-worker
+ else:
+ github-worker
+ else: ci
in:
$flattenDeep:
- $if: tasks_for == "github-push"
@@ -52,13 +65,8 @@ tasks:
taskGroupId: {$eval: 'as_slugid("task group")'}
created: {$fromNow: ''}
deadline: {$fromNow: '24 hours'}
- provisionerId: aws-provisioner-v1
- workerType:
- $if: event.repository.full_name == 'web-platform-tests/wpt'
- then:
- wpt-docker-worker
- else:
- github-worker
+ provisionerId: ${provisionerId}
+ workerType: ${workerType}
metadata:
name: wpt-${browser.name}-${browser.channel}-${chunk[0]}-${chunk[1]}
description: >-
@@ -155,13 +163,8 @@ tasks:
taskGroupId: {$eval: 'as_slugid("task group")'}
created: {$fromNow: ''}
deadline: {$fromNow: '24 hours'}
- provisionerId: aws-provisioner-v1
- workerType:
- $if: event.repository.full_name == 'web-platform-tests/wpt'
- then:
- wpt-docker-worker
- else:
- github-worker
+ provisionerId: ${provisionerId}
+ workerType: ${workerType}
metadata:
name: ${operation.name}
description: ${operation.description}
@@ -321,13 +324,8 @@ tasks:
taskGroupId: {$eval: 'as_slugid("task group")'}
created: {$fromNow: ''}
deadline: {$fromNow: '24 hours'}
- provisionerId: aws-provisioner-v1
- workerType:
- $if: event.repository.full_name == 'web-platform-tests/wpt'
- then:
- wpt-docker-worker
- else:
- github-worker
+ provisionerId: ${provisionerId}
+ workerType: ${workerType}
metadata:
name: ${operation.name}
description: ${operation.description}
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js
index c69249047bf..37e3eb43242 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js
@@ -1,3 +1,9 @@
// META: title=WebCryptoAPI: deriveBits() Using ECDH
// META: script=ecdh_bits.js
-run_test();
+
+// Define subtests from a `promise_test` to ensure the harness does not
+// complete before the subtests are available. `explicit_done` cannot be used
+// for this purpose because the global `done` function is automatically invoked
+// by the WPT infrastructure in dedicated worker tests defined using the
+// "multi-global" pattern.
+promise_test(define_tests, 'setup - define tests');
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.js
index fe82ffe5712..5cc7193aebd 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.js
@@ -1,5 +1,5 @@
-function run_test() {
+function define_tests() {
// May want to test prefixed implementations.
var subtle = self.crypto.subtle;
@@ -27,7 +27,7 @@ function run_test() {
"P-384": new Uint8Array([224, 189, 107, 206, 10, 239, 140, 164, 136, 56, 166, 226, 252, 197, 126, 103, 185, 197, 232, 134, 12, 95, 11, 233, 218, 190, 197, 62, 69, 78, 24, 160, 161, 116, 196, 136, 136, 162, 100, 136, 17, 91, 45, 201, 241, 223, 165, 45])
};
- importKeys(pkcs8, spki, sizes)
+ return importKeys(pkcs8, spki, sizes)
.then(function(results) {
publicKeys = results.publicKeys;
privateKeys = results.privateKeys;
@@ -184,7 +184,6 @@ function run_test() {
});
}, namedCurve + " asking for too many bits");
});
- done()
});
function importKeys(pkcs8, spki, sizes) {
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js
index b212b92c74b..d8235fce5a7 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js
@@ -1,3 +1,9 @@
// META: title=WebCryptoAPI: deriveKey() Using ECDH
// META: script=ecdh_keys.js
-run_test();
+
+// Define subtests from a `promise_test` to ensure the harness does not
+// complete before the subtests are available. `explicit_done` cannot be used
+// for this purpose because the global `done` function is automatically invoked
+// by the WPT infrastructure in dedicated worker tests defined using the
+// "multi-global" pattern.
+promise_test(define_tests, 'setup - define tests');
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.js
index b1a0bcd485d..99008e0cbbe 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.js
@@ -1,5 +1,5 @@
-function run_test() {
+function define_tests() {
// May want to test prefixed implementations.
var subtle = self.crypto.subtle;
@@ -27,7 +27,7 @@ function run_test() {
"P-384": new Uint8Array([224, 189, 107, 206, 10, 239, 140, 164, 136, 56, 166, 226, 252, 197, 126, 103, 185, 197, 232, 134, 12, 95, 11, 233, 218, 190, 197, 62, 69, 78, 24, 160, 161, 116, 196, 136, 136, 162, 100, 136, 17, 91, 45, 201, 241, 223, 165, 45])
};
- importKeys(pkcs8, spki, sizes)
+ return importKeys(pkcs8, spki, sizes)
.then(function(results) {
publicKeys = results.publicKeys;
privateKeys = results.privateKeys;
@@ -153,7 +153,6 @@ function run_test() {
});
}, namedCurve + " public property value is a secret key");
});
- done();
});
function importKeys(pkcs8, spki, sizes) {
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.any.js
index d0d545a7d27..02492c3741c 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.any.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.any.js
@@ -6,4 +6,10 @@
// META: script=/common/subset-tests.js
// META: script=hkdf_vectors.js
// META: script=hkdf.js
-run_test();
+
+// Define subtests from a `promise_test` to ensure the harness does not
+// complete before the subtests are available. `explicit_done` cannot be used
+// for this purpose because the global `done` function is automatically invoked
+// by the WPT infrastructure in dedicated worker tests defined using the
+// "multi-global" pattern.
+promise_test(define_tests, 'setup - define tests');
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.js
index 95889676c15..c18a433d7f9 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.js
@@ -1,5 +1,5 @@
-function run_test() {
+function define_tests() {
// May want to test prefixed implementations.
var subtle = self.crypto.subtle;
@@ -14,7 +14,7 @@ function run_test() {
// What kinds of keys can be created with deriveKey? The following:
var derivedKeyTypes = testData.derivedKeyTypes;
- setUpBaseKeys(derivedKeys)
+ return setUpBaseKeys(derivedKeys)
.then(function(allKeys) {
// We get several kinds of base keys. Normal ones that can be used for
// derivation operations, ones that lack the deriveBits usage, ones
@@ -232,13 +232,6 @@ function run_test() {
});
});
-
- done();
- }, function(err) {
- subsetTest(test, function(test) {
- assert_unreached("setUpBaseKeys failed with error '" + err.message + "'");
- }, "setUpBaseKeys");
- done();
});
// Deriving bits and keys requires starting with a base key, which is created
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js
index 539f390c8af..2efbe523f8c 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js
@@ -12,4 +12,10 @@
// META: script=/common/subset-tests.js
// META: script=pbkdf2_vectors.js
// META: script=pbkdf2.js
-run_test();
+
+// Define subtests from a `promise_test` to ensure the harness does not
+// complete before the subtests are available. `explicit_done` cannot be used
+// for this purpose because the global `done` function is automatically invoked
+// by the WPT infrastructure in dedicated worker tests defined using the
+// "multi-global" pattern.
+promise_test(define_tests, 'setup - define tests');
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.js
index 7edc7ea5a26..0403f382e14 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.js
@@ -1,4 +1,4 @@
-function run_test() {
+function define_tests() {
// May want to test prefixed implementations.
var subtle = self.crypto.subtle;
@@ -12,7 +12,7 @@ function run_test() {
// What kinds of keys can be created with deriveKey? The following:
var derivedKeyTypes = testData.derivedKeyTypes;
- setUpBaseKeys(passwords)
+ return setUpBaseKeys(passwords)
.then(function(allKeys) {
// We get several kinds of base keys. Normal ones that can be used for
// derivation operations, ones that lack the deriveBits usage, ones
@@ -229,13 +229,6 @@ function run_test() {
});
});
-
- done();
- }, function(err) {
- subsetTest(test, function(test) {
- assert_unreached("setUpBaseKeys failed with error '" + err.message + "'");
- }, "setUpBaseKeys");
- done();
});
// Deriving bits and keys requires starting with a base key, which is created
diff --git a/tests/wpt/web-platform-tests/css/css-images/animations/object-position-interpolation.html b/tests/wpt/web-platform-tests/css/css-images/animations/object-position-interpolation.html
new file mode 100644
index 00000000000..055cbc8421b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/animations/object-position-interpolation.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>object-position-interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-images-3/#the-object-position">
+<meta name="assert" content="object-position supports animation by computation">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ object-position: 30px 10px;
+}
+
+.target {
+ position: relative;
+ width: 100px;
+ height: 100px;
+ background-color: black;
+ display: inline-block;
+ margin: 20px 0px 20px 0px;
+ object-fit: fill;
+ object-position: 10px 30px;
+}
+
+.expected {
+ background-color: green;
+}
+</style>
+<body>
+</body>
+<script>
+test_interpolation({
+ property: 'object-position',
+ from: neutralKeyframe,
+ to: '20px 20px',
+}, [
+ {at: -0.3, expect: '7px 33px'},
+ {at: 0, expect: '10px 30px'},
+ {at: 0.5, expect: '15px 25px'},
+ {at: 1, expect: '20px 20px'},
+ {at: 1.5, expect: '25px 15px'},
+]);
+
+test_interpolation({
+ property: 'object-position',
+ from: 'initial',
+ to: '20px 20px',
+}, [
+ {at: -0.3, expect: 'calc(-6px + 65%) calc(-6px + 65%)'},
+ {at: 0, expect: '50% 50%'},
+ {at: 0.5, expect: 'calc(10px + 25%) calc(10px + 25%)'},
+ {at: 1, expect: 'calc(20px + 0%) calc(20px + 0%)'},
+ {at: 1.5, expect: 'calc(30px + -25%) calc(30px + -25%)'},
+]);
+
+test_interpolation({
+ property: 'object-position',
+ from: 'inherit',
+ to: '20px 20px',
+}, [
+ {at: -0.3, expect: '33px 7px'},
+ {at: 0, expect: '30px 10px'},
+ {at: 0.5, expect: '25px 15px'},
+ {at: 1, expect: '20px 20px'},
+ {at: 1.5, expect: '15px 25px'},
+]);
+
+test_interpolation({
+ property: 'object-position',
+ from: 'unset',
+ to: '20px 20px',
+}, [
+ {at: -0.3, expect: 'calc(-6px + 65%) calc(-6px + 65%)'},
+ {at: 0, expect: '50% 50%'},
+ {at: 0.5, expect: 'calc(10px + 25%) calc(10px + 25%)'},
+ {at: 1, expect: 'calc(20px + 0%) calc(20px + 0%)'},
+ {at: 1.5, expect: 'calc(30px + -25%) calc(30px + -25%)'},
+]);
+
+test_interpolation({
+ property: 'object-position',
+ from: '50% 50%',
+ to: '100% 100%'
+}, [
+ {at: -0.3, expect: '35% 35%'},
+ {at: 0, expect: '50% 50%'},
+ {at: 0.5, expect: '75% 75%'},
+ {at: 1, expect: '100% 100%'},
+ {at: 1.5, expect: '125% 125%'}
+]);
+
+test_interpolation({
+ property: 'object-position',
+ from: '100px 200px',
+ to: '0px 0px'
+}, [
+ {at: -0.3, expect: '130px 260px'},
+ {at: 0, expect: '100px 200px'},
+ {at: 0.5, expect: '50px 100px'},
+ {at: 1, expect: '0px 0px'},
+ {at: 1.5, expect: '-50px -100px'}
+]);
+
+// Zero seem to be a special case in the old implementation
+test_interpolation({
+ property: 'object-position',
+ from: '50% 100%',
+ to: '0px 0px'
+}, [
+ {at: -0.3, expect: '65% 130%'},
+ {at: 0, expect: '50% 100%'},
+ {at: 0.5, expect: '25% 50%'},
+ {at: 1, expect: '0px 0px'},
+ {at: 1.5, expect: '-25% -50%'}
+]);
+
+test_interpolation({
+ property: 'object-position',
+ from: '50% 100%',
+ to: '50px 100px'
+}, [
+ {at: -0.3, expect: 'calc(65% + -15px) calc(130% + -30px)'},
+ {at: 0, expect: '50% 100%'},
+ {at: 0.5, expect: 'calc(25% + 25px) calc(50% + 50px)'},
+ {at: 1, expect: 'calc(0% + 50px) calc(0% + 100px)'},
+ {at: 1.5, expect: 'calc(-25% + 75px) calc(-50% + 150px)'}
+]);
+
+test_interpolation({
+ property: 'object-position',
+ from: 'center',
+ to: 'top right'
+}, [
+ {at: -0.3, expect: '35% 65%'},
+ {at: 0, expect: '50% 50%'},
+ {at: 0.5, expect: '75% 25%'},
+ {at: 1, expect: '100% 0%'},
+ {at: 1.5, expect: '125% -25%'}
+]);
+
+test_interpolation({
+ property: 'object-position',
+ from: 'center',
+ to: 'right 0% bottom 50%',
+}, [
+ {at: -0.5, expect: '25% 50%'},
+ {at: 0, expect: 'center'},
+ {at: 0.3, expect: '65% 50%'},
+ {at: 0.5, expect: '75% 50%'},
+ {at: 0.9, expect: '95% 50%'},
+ {at: 1, expect: '100% 50%'},
+ {at: 1.5, expect: '125% 50%'},
+ {at: 2, expect: '150% 50%'},
+]);
+</script>
+
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001-ref.html b/tests/wpt/web-platform-tests/css/css-lists/list-style-type-string-001-ref.html
index 0d1b1362873..0d1b1362873 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-lists/list-style-type-string-001-ref.html
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001a.html b/tests/wpt/web-platform-tests/css/css-lists/list-style-type-string-001a.html
index f7ed6e3b342..f7ed6e3b342 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001a.html
+++ b/tests/wpt/web-platform-tests/css/css-lists/list-style-type-string-001a.html
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001b.html b/tests/wpt/web-platform-tests/css/css-lists/list-style-type-string-001b.html
index f02bf13a73c..f02bf13a73c 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001b.html
+++ b/tests/wpt/web-platform-tests/css/css-lists/list-style-type-string-001b.html
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-font-properties.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-font-properties.html
index a108792fa20..4dd78067984 100644
--- a/tests/wpt/web-platform-tests/css/css-pseudo/marker-font-properties.html
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-font-properties.html
@@ -16,7 +16,7 @@ li {
list-style-type: lower-alpha;
}
-li::marker {
+li::marker, span {
font-family: sans-serif;
font-size: 24px;
font-style: italic;
@@ -27,7 +27,7 @@ li::marker {
</head>
<body>
<ol>
- <li><span style="font-size: 24px"><!-- FIXME: Needed to ensure consistent baseline position with expected result in WebKit (why?). --></span></li>
+ <li><span><!-- FIXME: Needed to ensure consistent baseline position with expected result in Chromium and WebKit (why?). --></span></li>
</ol>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html b/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html
new file mode 100644
index 00000000000..451aac149db
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Pseudo-Elements Test: Supported properties in ::marker</title>
+<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#marker-pseudo">
+<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
+<meta name="assert" content="This test checks that only certain properties apply to ::marker pseudo-elements." />
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+<div id="log"></div>
+<ul>
+ <li id="target">target</li>
+</ul>
+<script>
+// ::marker supports all font properties.
+test_pseudo_computed_value("::marker", "font", "italic small-caps 900 expanded 25px / 50px Ahem",
+ ["italic small-caps 900 expanded 25px Ahem", "italic small-caps 900 expanded 25px/normal Ahem"]);
+test_pseudo_computed_value("::marker", "font-family", "Ahem");
+test_pseudo_computed_value("::marker", "font-feature-settings", "\"smcp\"");
+test_pseudo_computed_value("::marker", "font-kerning", "none");
+test_pseudo_computed_value("::marker", "font-size", "25px");
+test_pseudo_computed_value("::marker", "font-size-adjust", "1");
+test_pseudo_computed_value("::marker", "font-stretch", "expanded", ["expanded", "125%"]);
+test_pseudo_computed_value("::marker", "font-style", "italic");
+test_pseudo_computed_value("::marker", "font-synthesis", "none");
+test_pseudo_computed_value("::marker", "font-variant", "small-caps");
+test_pseudo_computed_value("::marker", "font-variant-caps", "small-caps");
+test_pseudo_computed_value("::marker", "font-variant-east-asian", "full-width");
+test_pseudo_computed_value("::marker", "font-variant-ligatures", "historical-ligatures");
+test_pseudo_computed_value("::marker", "font-variant-numeric", "slashed-zero");
+test_pseudo_computed_value("::marker", "font-variant-position", "sub");
+test_pseudo_computed_value("::marker", "font-weight", "900");
+
+// ::marker supports `color`
+test_pseudo_computed_value("::marker", "color", "rgb(0, 100, 200)");
+
+// ::marker supports `text-combine-upright`, `unicode-bidi` and `direction`
+test_pseudo_computed_value("::marker", "text-combine-upright", "none");
+test_pseudo_computed_value("::marker", "unicode-bidi", "plaintext");
+test_pseudo_computed_value("::marker", "direction", "rtl");
+
+// ::marker supports `content`
+test_pseudo_computed_value("::marker", "content", "\"foo\"");
+
+// ::marker does NOT support layout properties
+test_pseudo_computed_value("::marker", "display", "none", ["block", "inline"]);
+test_pseudo_computed_value("::marker", "position", "absolute", "static");
+test_pseudo_computed_value("::marker", "float", "right", "none");
+
+// ::marker does NOT support list properties despite being affected by them,
+// they apply to the list item instead.
+test_pseudo_computed_value("::marker", "list-style", "inside url('foo') decimal", "outside none disc");
+test_pseudo_computed_value("::marker", "list-style-image", "url('foo')", "none");
+test_pseudo_computed_value("::marker", "list-style-position", "inside", "outside");
+test_pseudo_computed_value("::marker", "list-style-type", "decimal", "disc");
+
+// ::marker does NOT support `line-height` because, despite being a
+// longhand of `font`, it's not a font property.
+test_pseudo_computed_value("::marker", "line-height", "50px", "normal");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-align-002.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-align-002.html
index 7e82f030e4c..01db026dff2 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-align-002.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-align-002.html
@@ -31,6 +31,9 @@
scroll-snap-align: center; }
#stripe { background: green; } /* color part of the snap area */
.fail { color: red; } /* make failing more obvious */
+
+ /* emulate `scrollbar-width: none` for browsers that don't support it yet */
+ ::-webkit-scrollbar { display: none; }
</style>
<div id='instructions'>Test passes if there is a green stripe across the second quarter of the box below and no red.</div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-align-003.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-align-003.html
index 1d6fbebbcd7..d13efa0abb5 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-align-003.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-align-003.html
@@ -32,6 +32,9 @@
scroll-snap-align: center; }
#stripe { background: green; } /* color part of the snap area */
.fail { color: red; } /* make failing more obvious */
+
+ /* emulate `scrollbar-width: none` for browsers that don't support it yet */
+ ::-webkit-scrollbar { display: none; }
</style>
<div id='instructions'>Test passes if there is a green stripe across the second quarter of the box below and no red.</div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-margin-002.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-margin-002.html
index a02cf7db175..51cf553b360 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-margin-002.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-margin-002.html
@@ -28,6 +28,9 @@
#target { scroll-margin: 2em 0 1em; } /* snap area is exact fit for snapport */
#stripe { background: green; } /* color part of the snap area */
.fail { color: red; } /* make failing more obvious */
+
+ /* emulate `scrollbar-width: none` for browsers that don't support it yet */
+ ::-webkit-scrollbar { display: none; }
</style>
<div id='instructions'>Test passes if there is a green stripe across the second quarter of the box below and no red.</div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-margin-003.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-margin-003.html
index d0434db515a..2ea8eff67c3 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-margin-003.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-margin-003.html
@@ -30,6 +30,9 @@
#target { scroll-margin: 2em 0 1em; } /* snap area is exact fit for snapport */
#stripe { background: green; } /* color part of the snap area */
.fail { color: red; } /* make failing more obvious */
+
+ /* emulate `scrollbar-width: none` for browsers that don't support it yet */
+ ::-webkit-scrollbar { display: none; }
</style>
<div id='instructions'>Test passes if there is a green stripe across the second quarter of the box below and no red.</div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-padding-002.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-padding-002.html
index 3a0ca3b8519..fbed1e132ec 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-padding-002.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-padding-002.html
@@ -27,6 +27,9 @@
.container { scroll-padding: 2em 0 1em; } /* snap area is exact fit for snapport */
#stripe { background: green; } /* color part of the snap area */
.fail { color: red; } /* make failing more obvious */
+
+ /* emulate `scrollbar-width: none` for browsers that don't support it yet */
+ ::-webkit-scrollbar { display: none; }
</style>
<div id='instructions'>Test passes if there is a green stripe across the second quarter of the box below and no red.</div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-padding-003.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-padding-003.html
index 1e92e9be72f..ccbe7b0ec97 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-padding-003.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-padding-003.html
@@ -29,6 +29,9 @@
.container { scroll-padding: 2em 0 1em; } /* snap area is exact fit for snapport */
#stripe { background: green; } /* color part of the snap area */
.fail { color: red; } /* make failing more obvious */
+
+ /* emulate `scrollbar-width: none` for browsers that don't support it yet */
+ ::-webkit-scrollbar { display: none; }
</style>
<div id='instructions'>Test passes if there is a green stripe across the second quarter of the box below and no red.</div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-snap-002.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-snap-002.html
index 89df44cba28..28f3c124525 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-snap-002.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-snap-002.html
@@ -33,6 +33,8 @@
/* Try to foil the UA */
.foilup { margin-bottom: -1em; scroll-snap-align: start; }
.foildn { margin-top: -1em; scroll-snap-align: end; }
+ /* emulate `scrollbar-width: none` for browsers that don't support it yet */
+ ::-webkit-scrollbar { display: none; }
</style>
<div id='instructions'>Test passes if there is a green stripe across the second quarter of the box below and no red.</div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-snap-003.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-snap-003.html
index 3e90347a4dc..6fe3901e51c 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-snap-003.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-target-snap-003.html
@@ -35,6 +35,9 @@
/* Try to foil the UA */
.foilup { margin-bottom: -1em; scroll-snap-align: start; }
.foildn { margin-top: -1em; scroll-snap-align: end; }
+
+ /* emulate `scrollbar-width: none` for browsers that don't support it yet */
+ ::-webkit-scrollbar { display: none; }
</style>
<div id='instructions'>Test passes if there is a green stripe across the second quarter of the box below and no red.</div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-align-001-iframe.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-align-001-iframe.html
index 20922ea18ea..d86a5e86d01 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-align-001-iframe.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-align-001-iframe.html
@@ -19,7 +19,9 @@
scroll-snap-align: center; }
#stripe { background: green; } /* color part of the snap area */
.fail { color: red; } /* make failing more obvious */
- }
+
+ /* emulate `scrollbar-width: none` for browsers that don't support it yet */
+ ::-webkit-scrollbar { display: none; }
</style>
<div></div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-margin-001-iframe.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-margin-001-iframe.html
index 8eb5b9c8638..2b2c1d2d8c1 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-margin-001-iframe.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-margin-001-iframe.html
@@ -17,7 +17,9 @@
#target { scroll-margin: 2em 0 1em; } /* snap area is exact fit for snapport */
#stripe { background: green; } /* color part of the snap area */
.fail { color: red; } /* make failing more obvious */
- }
+
+ /* emulate `scrollbar-width: none` for browsers that don't support it yet */
+ ::-webkit-scrollbar { display: none; }
</style>
<div></div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-padding-001-iframe.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-padding-001-iframe.html
index b9467e4347f..9260c81b1c3 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-padding-001-iframe.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-padding-001-iframe.html
@@ -17,7 +17,9 @@
html { scroll-padding: 2em 0 1em; } /* snap area is exact fit for snapport */
#stripe { background: green; } /* color part of the snap area */
.fail { color: red; } /* make failing more obvious */
- }
+
+ /* emulate `scrollbar-width: none` for browsers that don't support it yet */
+ ::-webkit-scrollbar { display: none; }
</style>
<div></div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-snap-001-iframe.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-snap-001-iframe.html
index 1a598fa7238..3146a3bf882 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-snap-001-iframe.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/support/scroll-target-snap-001-iframe.html
@@ -25,6 +25,9 @@
/* Try to foil the UA */
.foilup { margin-bottom: -1em; scroll-snap-align: start; }
.foildn { margin-top: -1em; scroll-snap-align: end; }
+
+ /* emulate `scrollbar-width: none` for browsers that don't support it yet */
+ ::-webkit-scrollbar { display: none; }
</style>
<div></div>
diff --git a/tests/wpt/web-platform-tests/css/css-size-adjust/animations/text-size-adjust-interpolation.html b/tests/wpt/web-platform-tests/css/css-size-adjust/animations/text-size-adjust-interpolation.html
new file mode 100644
index 00000000000..1d7e54b7341
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-size-adjust/animations/text-size-adjust-interpolation.html
@@ -0,0 +1,104 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>text-size-adjust-interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-size-adjust/#adjustment-control">
+<meta name="assert" content="text-size-adjust supports animation">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style type="text/css">
+.container {
+ display: inline-block;
+}
+
+.parent {
+ text-size-adjust: 70%;
+}
+
+.target {
+ text-size-adjust: 60%;
+}
+
+.expected {
+ color: green;
+ margin-right: 30px;
+}
+</style>
+<body></body>
+<template id="target-template">
+ <span class="container">
+ <div class="target">x</span>
+ </div>
+</template>
+<script>
+test_interpolation({
+ property: 'text-size-adjust',
+ from: neutralKeyframe,
+ to: '50%',
+}, [
+ {at: -2, expect: '80%'},
+ {at: -0.3, expect: '63%'},
+ {at: 0, expect: '60%'},
+ {at: 0.3, expect: '57%'},
+ {at: 0.6, expect: '54%'},
+ {at: 1, expect: '50%'},
+ {at: 1.5, expect: '45%'},
+]);
+
+test_no_interpolation({
+ property: 'text-size-adjust',
+ from: 'initial',
+ to: '70%',
+});
+
+test_interpolation({
+ property: 'text-size-adjust',
+ from: 'inherit', // 70%
+ to: '50%',
+}, [
+ {at: -2, expect: '110%'},
+ {at: -0.3, expect: '76%'},
+ {at: 0, expect: '70%'},
+ {at: 0.3, expect: '64%'},
+ {at: 0.6, expect: '58%'},
+ {at: 1, expect: '50%'},
+ {at: 1.5, expect: '40%'},
+]);
+
+test_interpolation({
+ property: 'text-size-adjust',
+ from: 'unset',
+ to: '50%',
+}, [
+ {at: -2, expect: '110%'},
+ {at: -0.3, expect: '76%'},
+ {at: 0, expect: '70%'},
+ {at: 0.3, expect: '64%'},
+ {at: 0.6, expect: '58%'},
+ {at: 1, expect: '50%'},
+ {at: 1.5, expect: '40%'},
+]);
+
+
+test_interpolation({
+ property: 'text-size-adjust',
+ from: '10%',
+ to: '0%'
+}, [
+ {at: -2, expect: '30%'},
+ {at: -0.3, expect: '13%'},
+ {at: 0, expect: '10%'},
+ {at: 0.3, expect: '7%'},
+ {at: 0.6, expect: '4%'},
+ {at: 1, expect: '0%'},
+ {at: 1.5, expect: '0%'}, // text-size-adjust can't be negative
+]);
+
+test_no_interpolation({
+ property: 'text-size-adjust',
+ from: 'none',
+ to: '100%'
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/animations/text-shadow-interpolation.html b/tests/wpt/web-platform-tests/css/css-transitions/animations/text-shadow-interpolation.html
new file mode 100644
index 00000000000..c007816ecb0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transitions/animations/text-shadow-interpolation.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>text-shadow interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#text-shadow-property">
+<meta name="assert" content="text-shadow supports animation">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ text-shadow: 30px 10px 30px orange;
+}
+
+.target {
+ display: inline-block;
+ font-size: 60pt;
+ margin-right: 20px;
+ margin-bottom: 30px;
+ color: green;
+ text-shadow: 10px 30px 10px orange;
+}
+
+.expected {
+ margin-right: 40px;
+}
+</style>
+<body>
+<template id="target-template">T</template>
+<script>
+test_interpolation({
+ property: 'text-shadow',
+ from: neutralKeyframe,
+ to: 'green 20px 20px 20px',
+}, [
+ {at: -0.3, expect: 'rgb(255, 176, 0) 7px 33px 7px'},
+ {at: 0, expect: 'rgb(255, 165, 0) 10px 30px 10px'},
+ {at: 0.3, expect: 'rgb(179, 154, 0) 13px 27px 13px'},
+ {at: 0.6, expect: 'rgb(102, 143, 0) 16px 24px 16px'},
+ {at: 1, expect: 'rgb(0, 128, 0) 20px 20px 20px'},
+ {at: 1.5, expect: 'rgb(0, 110, 0) 25px 15px 25px'},
+]);
+
+test_interpolation({
+ property: 'text-shadow',
+ from: 'initial',
+ to: 'green 20px 20px 20px',
+}, [
+ {at: -0.3, expect: 'rgba(0, 0, 0, 0) -6px -6px 0px'},
+ {at: 0, expect: 'rgba(0, 0, 0, 0) 0px 0px 0px'},
+ {at: 0.3, expect: 'rgba(0, 128, 0, 0.3) 6px 6px 6px'},
+ {at: 0.6, expect: 'rgba(0, 128, 0, 0.6) 12px 12px 12px'},
+ {at: 1, expect: 'rgb(0, 128, 0) 20px 20px 20px'},
+ {at: 1.5, expect: 'rgb(0, 192, 0) 30px 30px 30px'},
+]);
+
+test_interpolation({
+ property: 'text-shadow',
+ from: 'inherit',
+ to: 'green 20px 20px 20px',
+}, [
+ {at: -0.3, expect: 'rgb(255, 176, 0) 33px 7px 33px'},
+ {at: 0, expect: 'rgb(255, 165, 0) 30px 10px 30px'},
+ {at: 0.3, expect: 'rgb(179, 154, 0) 27px 13px 27px'},
+ {at: 0.6, expect: 'rgb(102, 143, 0) 24px 16px 24px'},
+ {at: 1, expect: 'rgb(0, 128, 0) 20px 20px 20px'},
+ {at: 1.5, expect: 'rgb(0, 110, 0) 15px 25px 15px'},
+]);
+
+test_interpolation({
+ property: 'text-shadow',
+ from: 'unset',
+ to: 'green 20px 20px 20px',
+}, [
+ {at: -0.3, expect: 'rgb(255, 176, 0) 33px 7px 33px'},
+ {at: 0, expect: 'rgb(255, 165, 0) 30px 10px 30px'},
+ {at: 0.3, expect: 'rgb(179, 154, 0) 27px 13px 27px'},
+ {at: 0.6, expect: 'rgb(102, 143, 0) 24px 16px 24px'},
+ {at: 1, expect: 'rgb(0, 128, 0) 20px 20px 20px'},
+ {at: 1.5, expect: 'rgb(0, 110, 0) 15px 25px 15px'},
+]);
+
+test_interpolation({
+ property: 'text-shadow',
+ from: 'black 15px 10px 5px',
+ to: 'orange -15px -10px 25px',
+}, [
+ {at: -0.3, expect: 'rgb(0, 0, 0) 24px 16px 0px'},
+ {at: 0, expect: 'rgb(0, 0, 0) 15px 10px 5px'},
+ {at: 0.3, expect: 'rgb(77, 50, 0) 6px 4px 11px'},
+ {at: 0.6, expect: 'rgb(153, 99, 0) -3px -2px 17px'},
+ {at: 1, expect: 'rgb(255, 165, 0) -15px -10px 25px'},
+ {at: 1.5, expect: 'rgb(255, 248, 0) -30px -20px 35px'},
+]);
+
+test_interpolation({
+ property: 'text-shadow',
+ from: 'black 10px 10px 10px',
+ to: 'currentColor 10px 10px 10px',
+}, [
+ {at: -0.3, expect: 'rgb(0, 0, 0) 10px 10px 10px'},
+ {at: 0, expect: 'rgb(0, 0, 0) 10px 10px 10px'},
+ {at: 0.3, expect: 'rgb(0, 38, 0) 10px 10px 10px'},
+ {at: 0.6, expect: 'rgb(0, 77, 0) 10px 10px 10px'},
+ {at: 1, expect: 'rgb(0, 128, 0) 10px 10px 10px'},
+ {at: 1.5, expect: 'rgb(0, 192, 0) 10px 10px 10px'},
+]);
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/support/computed-testcommon.js b/tests/wpt/web-platform-tests/css/support/computed-testcommon.js
index 1e87f2a518c..c7c7e073203 100644
--- a/tests/wpt/web-platform-tests/css/support/computed-testcommon.js
+++ b/tests/wpt/web-platform-tests/css/support/computed-testcommon.js
@@ -40,3 +40,44 @@ function test_computed_value(property, specified, computed) {
}, "Property " + property + " value '" + specified + "' computes to " +
computedDesc);
}
+
+function test_pseudo_computed_value(pseudo, property, specified, computed) {
+ if (!computed)
+ computed = specified;
+
+ let computedDesc = "'" + computed + "'";
+ if (Array.isArray(computed))
+ computedDesc = '[' + computed.map(e => "'" + e + "'").join(' or ') + ']';
+
+ test(() => {
+ assert_true(/^::\w+$/.test(pseudo), pseudo + " doesn't seem to be a pseudo-element");
+ const styleElement = document.createElement("style");
+ document.documentElement.appendChild(styleElement);
+ try {
+ const {sheet} = styleElement;
+ sheet.insertRule("#target" + pseudo + "{}");
+ const {style} = sheet.cssRules[0];
+ const target = document.getElementById('target');
+
+ assert_true(property in getComputedStyle(target, pseudo), property + " doesn't seem to be supported in the computed style");
+ assert_true(CSS.supports(property, specified), "'" + specified + "' is a supported value for " + property + ".");
+ style[property] = specified;
+
+ let readValue = getComputedStyle(target, pseudo)[property];
+ if (Array.isArray(computed)) {
+ assert_in_array(readValue, computed);
+ } else {
+ assert_equals(readValue, computed);
+ }
+ if (readValue !== specified) {
+ style[property] = '';
+ style[property] = readValue;
+ assert_equals(getComputedStyle(target, pseudo)[property], readValue,
+ 'computed value should round-trip');
+ }
+ } finally {
+ document.documentElement.removeChild(styleElement);
+ }
+ }, "Property " + property + " value '" + specified + "' computes to " +
+ computedDesc + " in " + pseudo);
+}
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/reftest.list b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/reftest.list
deleted file mode 100644
index f914145ab8f..00000000000
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/reftest.list
+++ /dev/null
@@ -1,3 +0,0 @@
-# Tests for list-style-type
-== list-style-type-string-001a.html list-style-type-string-001-ref.html
-== list-style-type-string-001b.html list-style-type-string-001-ref.html
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/reftest.list b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/reftest.list
index 2d9b459fa8e..97621fe19fe 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/reftest.list
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/reftest.list
@@ -46,9 +46,6 @@ include ib-split/reftest.list
# Image Values and Replaced Content Level 3
include images3/reftest.list
-# Lists and Counters Level 3
-include lists-3/reftest.list
-
# Masking Level 1
include masking/reftest.list
diff --git a/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md b/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md
index 5a9a776a285..0f337176c47 100644
--- a/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md
+++ b/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md
@@ -4,36 +4,71 @@ The tests are designed to be run from your local computer.
## System Setup
-The test environment requires [Python 2.7+](http://www.python.org/downloads)
-(but not Python 3.x).
+Running the tests requires `python`, `pip` and `virtualenv`, as well as updating
+the system `hosts` file.
-On Windows, be sure to add the Python directory (`c:\python2x`, by default) to
-your `%Path%` [Environment Variable](http://www.computerhope.com/issues/ch000549.htm),
-and read the [Windows Notes](#windows-notes) section below.
+Note that Python 2.7 is required. Using Python 3 is not supported.
-<!--
- There does not appear to be a cross-platform means of installing `pip`.
- https://github.com/web-platform-tests/wpt/pull/16670
--->
+The required setup is different depending on your operating system.
-Install `pip`. On many systems, this can be achieved with the command `python
--m ensurepip`. If this is not possible, use your system's package manager to
-install the `python-pip` package.
+### Linux Setup
-Next, install `virtualenv` using the following command:
+If not already present, use the system package manager to install `python`,
+`pip` and `virtualenv`.
+
+On Debian or Ubuntu:
+
+```bash
+sudo apt-get install python python-pip virtualenv
+```
+
+### macOS Setup
+
+The system-provided Python can be used, while `pip` and `virtualenv` can be
+installed for the user only:
+
+```bash
+python -m ensurepip --user
+export PATH="$PATH:$HOME/Library/Python/2.7/bin"
+pip install --user virtualenv
+```
+
+To make the `PATH` change persistent, add it to your `~/.bash_profile` file or
+wherever you currently set your PATH.
+
+See also [additional setup required to run Safari](safari).
+
+### Windows Setup
+**Note:** In general, Windows Subsystem for Linux will provide the smoothest
+user experience for running web-platform-tests on Windows, where installation
+and usage are similar to Linux.
+
+Download and install [Python 2.7](https://www.python.org/downloads). The
+installer includes `pip` by default.
+
+Add `C:\Python27` and `C:\Python27\Scripts` to your `%Path%`
+[environment variable](http://www.computerhope.com/issues/ch000549.htm).
+
+Finally, install `virtualenv`:
```bash
pip install virtualenv
```
+The standard Windows shell requires that all `wpt` commands are prefixed
+by the Python binary i.e. assuming `python` is on your path the server is
+started using:
+
+```bash
+python wpt serve
+```
+
+### `hosts` File Setup
+
To get the tests running, you need to set up the test domains in your
[`hosts` file](http://en.wikipedia.org/wiki/Hosts_%28file%29%23Location_in_the_file_system).
-The necessary content can be generated with `./wpt make-hosts-file`; on
-Windows, you will need to preceed the prior command with `python` or
-the path to the Python binary (`python wpt make-hosts-file`).
-
-For example, on most UNIX-like systems, you can setup the hosts file with:
+On Linux, macOS or other UNIX-like system:
```bash
./wpt make-hosts-file | sudo tee -a /etc/hosts
@@ -48,26 +83,6 @@ python wpt make-hosts-file | Out-File %SystemRoot%\System32\drivers\etc\hosts -E
If you are behind a proxy, you also need to make sure the domains above are
excluded from your proxy lookups.
-[The Ahem font](../writing-tests/ahem) is used to test precise rendering
-behavior. This font should be loaded as a web font in tests, using the
-`/fonts/ahem.css` stylesheet, as follows:
-
-```
-<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
-```
-
-
-### Windows Notes
-
-Generally Windows Subsystem for Linux will provide the smoothest user
-experience for running web-platform-tests on Windows.
-
-The standard Windows shell requires that all `wpt` commands are prefixed
-by the Python binary i.e. assuming `python` is on your path the server is
-started using:
-
-`python wpt serve`
-
## Via the browser
The test environment can then be started using
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-redirect-cache.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-redirect-cache.https.html
index 519f7105960..0524878a03a 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-redirect-cache.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-redirect-cache.https.html
@@ -1,10 +1,10 @@
<!doctype html>
<meta charset=utf-8>
+<meta name="timeout" content="long">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="resources/common.js"></script>
-<script src="/common/utils.js"></script> <!-- Use token() to allow running tests in parallel -->
<div id=log></div>
<script>
@@ -44,27 +44,29 @@ function coop_redirect_cache_test(t, hostA, hostB, coop, coep, redirectCache, de
function run_redirect_cache_tests(documentCOOPValueTitle, testArray) {
for (const test of tests) {
async_test(t => {
- coop_redirect_cache_test(t, test[0], test[1], "same-origin", "require-corp", test[2], test[3], test[4], test[5]);
+ // Use a consistent channel name for deterministic failure output
+ let channelName = `${test[0].name}_${test[1].name}${test[2] ? "" : "_not"}_cache_redirect${test[3] ? "" : "_not"}_cache_destination`;
+ coop_redirect_cache_test(t, test[0], test[1], "same-origin", "require-corp", test[2], test[3], channelName, test[4]);
}, `${documentCOOPValueTitle} document opening popup redirect from ${test[0].origin} to ${test[1].origin} with redirectCache ${test[2]} and destCache ${test[3]}`);
}
}
let tests = [
- // popup Origin, final Origin, isCacheRedirect, isCacheDestination, channelName, hasOpener
+ // popup Origin, final Origin, isCacheRedirect, isCacheDestination, hasOpener
// Origin A->A->B
- [SAME_ORIGIN, CROSS_ORIGIN, true, false, token(), false],
- [SAME_ORIGIN, CROSS_ORIGIN, false, true, token(), false],
- [SAME_ORIGIN, CROSS_ORIGIN, true, true, token(), false],
+ [SAME_ORIGIN, CROSS_ORIGIN, true, false, false],
+ [SAME_ORIGIN, CROSS_ORIGIN, false, true, false],
+ [SAME_ORIGIN, CROSS_ORIGIN, true, true, false],
// Origin A->B->B
- [CROSS_ORIGIN, SAME_ORIGIN, true, false, token(), false],
- [CROSS_ORIGIN, SAME_ORIGIN, false, true, token(), false],
- [CROSS_ORIGIN, SAME_ORIGIN, true, true, token(), false],
+ [CROSS_ORIGIN, SAME_ORIGIN, true, false, false],
+ [CROSS_ORIGIN, SAME_ORIGIN, false, true, false],
+ [CROSS_ORIGIN, SAME_ORIGIN, true, true, false],
// Origin A->B->C
- [SAME_SITE, CROSS_ORIGIN, true, false, token(), false],
- [SAME_SITE, CROSS_ORIGIN, false, true, token(), false],
- [SAME_SITE, CROSS_ORIGIN, true, true, token(), false],
+ [SAME_SITE, CROSS_ORIGIN, true, false, false],
+ [SAME_SITE, CROSS_ORIGIN, false, true, false],
+ [SAME_SITE, CROSS_ORIGIN, true, true, false],
];
run_redirect_cache_tests("same-origin", tests);
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/SubmitEvent.window.js b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/SubmitEvent.window.js
new file mode 100644
index 00000000000..93dbabb866b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/SubmitEvent.window.js
@@ -0,0 +1,36 @@
+// https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#the-submitevent-interface
+
+test(() => {
+ let button = document.createElement('button');
+ let typeError = new TypeError();
+ assert_throws(typeError, () => { new SubmitEvent() }, '0 arguments');
+ assert_throws(typeError, () => { new SubmitEvent('bar', button) }, '1 invalid arguments');
+ assert_throws(typeError, () => { new SubmitEvent(button, button) }, '2 invalid arguments');
+ assert_throws(typeError, () => { new SubmitEvent('foo', null) }, 'Null dictionary');
+ assert_throws(typeError, () => { new SubmitEvent('foo', undefined) }, 'Undefined dictionary');
+ assert_throws(typeError, () => { new SubmitEvent('foo', { submitter: null }) }, 'Null submitter');
+ assert_throws(typeError, () => { new SubmitEvent('foo', { submitter: undefined }) }, 'Undefined submitter');
+ assert_throws(typeError, () => { new SubmitEvent('foo', { submitter: 'bar' }) }, 'Wrong type of submitter');
+}, 'Failing SubmitEvent constructor');
+
+test(() => {
+ let button = document.createElement('button');
+ let event = new SubmitEvent('bar', { submitter: button, bubbles: true });
+ assert_equals(event.submitter, button);
+ assert_true(event.bubbles);
+}, 'Successful SubmitEvent constructor');
+
+test(() => {
+ let event = new SubmitEvent('bar', { submitter: null});
+ assert_equals(event.submitter, null);
+}, 'Successful SubmitEvent constructor; null submitter');
+
+test(() => {
+ let event = new SubmitEvent('baz', {});
+ assert_equals(event.submitter, null);
+}, 'Successful SubmitEvent constructor; empty dictionary');
+
+test(() => {
+ let event = new SubmitEvent('baz');
+ assert_equals(event.submitter, null);
+}, 'Successful SubmitEvent constructor; missing dictionary');
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-submission-algorithm.html b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-submission-algorithm.html
index 8f61cbc18c9..df39b57353c 100644
--- a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-submission-algorithm.html
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-submission-algorithm.html
@@ -50,6 +50,60 @@ async_test(t => {
});
}, "If form's firing submission events is true, then return; 'submit' event");
+promise_test(async () => {
+ let form = populateForm('<button type=submit></button><input name=n1 value=submit type=submit>');
+ let iframe = form.previousSibling;
+ let submitter = form.querySelector('input[type=submit]');
+ let event;
+ form.addEventListener('submit', e => { event = e; });
+ submitter.click();
+ await loadPromise(iframe);
+ assert_true(event.bubbles);
+ assert_true(event.cancelable);
+ assert_equals(event.submitter, submitter);
+ assert_true(event instanceof SubmitEvent);
+}, 'firing an event named submit; clicking a submit button');
+
+promise_test(async () => {
+ let form = populateForm('');
+ let iframe = form.previousSibling;
+ let event;
+ form.addEventListener('submit', e => { event = e; });
+ form.requestSubmit();
+ await loadPromise(iframe);
+ assert_true(event.bubbles);
+ assert_true(event.cancelable);
+ assert_equals(event.submitter, null);
+ assert_true(event instanceof SubmitEvent);
+}, 'firing an event named submit; form.requestSubmit()');
+
+promise_test(async () => {
+ let form = populateForm('');
+ let iframe = form.previousSibling;
+ let event;
+ form.addEventListener('submit', e => { event = e; });
+ form.requestSubmit(null);
+ await loadPromise(iframe);
+ assert_true(event.bubbles);
+ assert_true(event.cancelable);
+ assert_equals(event.submitter, null);
+ assert_true(event instanceof SubmitEvent);
+}, 'firing an event named submit; form.requestSubmit(null)');
+
+promise_test(async () => {
+ let form = populateForm('<input type=submit><button type=submit></button>');
+ let iframe = form.previousSibling;
+ let submitter = form.querySelector('button');
+ let event;
+ form.addEventListener('submit', e => { event = e; });
+ form.requestSubmit(submitter);
+ await loadPromise(iframe);
+ assert_true(event.bubbles);
+ assert_true(event.cancelable);
+ assert_equals(event.submitter, submitter);
+ assert_true(event instanceof SubmitEvent);
+}, 'firing an event named submit; form.requestSubmit(submitter)');
+
async_test(t => {
let form = populateForm('<input name=n1 value=v1>');
form.onformdata = (e) => { e.target.remove(); };
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/implicit-submission.optional.html b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/implicit-submission.optional.html
new file mode 100644
index 00000000000..109d3b901a5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/implicit-submission.optional.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<link rel="help" href="https://html.spec.whatwg.org/C/#implicit-submission">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="./resources/targetted-form.js"></script>
+<body>
+<script>
+// This test file is "optional" because triggering implicit submission by
+// "Enter" key is not standardized.
+
+const ENTER = '\uE007';
+
+promise_test(async () => {
+ let form = populateForm('<input name=text value=abc><input name=submiButton type=submit>');
+ let event;
+ form.text.focus();
+ form.addEventListener('submit', e => { event = e; });
+ await test_driver.send_keys(form.text, ENTER);
+ assert_true(event.bubbles);
+ assert_true(event.cancelable);
+ assert_equals(event.submitter, form.submitButton);
+ assert_true(event instanceof SubmitEvent);
+}, 'Submit event with a submit button');
+
+promise_test(async () => {
+ let form = populateForm('<input name=text value=abc>');
+ let event;
+ form.text.focus();
+ form.addEventListener('submit', e => { event = e; });
+ await test_driver.send_keys(form.text, ENTER);
+ assert_true(event.bubbles);
+ assert_true(event.cancelable);
+ assert_equals(event.submitter, null);
+ assert_true(event instanceof SubmitEvent);
+}, 'Submit event with no submit button');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/resources/targetted-form.js b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/resources/targetted-form.js
index 6b6685291d2..291251b7e80 100644
--- a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/resources/targetted-form.js
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/resources/targetted-form.js
@@ -19,3 +19,10 @@ function submitPromise(form, iframe) {
form.submit();
});
}
+
+function loadPromise(iframe) {
+ return new Promise((resolve, reject) => {
+ iframe.onload = resolve;
+ iframe.onerror = () => reject(new Error('iframe onerror fired'));
+ });
+}
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-button-element/button-submit-children.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-button-element/button-submit-children.html
new file mode 100644
index 00000000000..06218f4fc9e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-button-element/button-submit-children.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link rel="author" title="Joey Arhar" href="mailto:jarhar@chromium.org">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<iframe name=frame1 id=frame1></iframe>
+<form id=form1 target=frame1 action="does_not_exist.html">
+ <button id=submitbutton type=submit>
+ <div id=buttonchilddiv>
+ button child div text
+ </div>
+ </button>
+</form>
+
+<script>
+async_test(t => {
+ window.addEventListener('load', () => {
+ const frame1 = document.getElementById('frame1');
+ frame1.addEventListener('load', t.step_func_done(() => {}));
+
+ const submitButton = document.getElementById('submitbutton');
+ submitButton.addEventListener('click', event => {
+ event.preventDefault();
+ const form = document.getElementById('form1');
+ form.submit();
+ });
+
+ const buttonChildDiv = document.getElementById('buttonchilddiv');
+ buttonChildDiv.click();
+ });
+}, 'This test will pass if a form navigation successfully occurs when clicking a child element of a <button type=submit> element with a onclick event handler which prevents the default form submission and manually calls form.submit() instead.');
+</script>
diff --git a/tests/wpt/web-platform-tests/interfaces/media-capabilities.idl b/tests/wpt/web-platform-tests/interfaces/media-capabilities.idl
index 71bc46d2410..6fe43d87a80 100644
--- a/tests/wpt/web-platform-tests/interfaces/media-capabilities.idl
+++ b/tests/wpt/web-platform-tests/interfaces/media-capabilities.idl
@@ -68,18 +68,21 @@ dictionary AudioConfiguration {
dictionary MediaCapabilitiesKeySystemConfiguration {
required DOMString keySystem;
DOMString initDataType = "";
- DOMString audioRobustness = "";
- DOMString videoRobustness = "";
MediaKeysRequirement distinctiveIdentifier = "optional";
MediaKeysRequirement persistentState = "optional";
sequence<DOMString> sessionTypes;
+ KeySystemTrackConfiguration audio;
+ KeySystemTrackConfiguration video;
+ };
+
+dictionary KeySystemTrackConfiguration {
+ DOMString robustness = "";
};
dictionary MediaCapabilitiesInfo {
required boolean supported;
required boolean smooth;
required boolean powerEfficient;
-
};
dictionary MediaCapabilitiesDecodingInfo : MediaCapabilitiesInfo {
diff --git a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
index d2ec623e864..117812a1f27 100644
--- a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
+++ b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
@@ -72,7 +72,6 @@ dictionary NDEFReadingEventInit : EventInit {
dictionary NDEFPushOptions {
NDEFPushTarget target = "any";
- unrestricted double timeout = Infinity;
boolean ignoreRead = true;
boolean overwrite = true;
AbortSignal? signal;
diff --git a/tests/wpt/web-platform-tests/interfaces/webrtc.idl b/tests/wpt/web-platform-tests/interfaces/webrtc.idl
index 2989db5453f..5a5eb7b1063 100644
--- a/tests/wpt/web-platform-tests/interfaces/webrtc.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webrtc.idl
@@ -612,7 +612,6 @@ dictionary RTCDTMFToneChangeEventInit : EventInit {
partial interface RTCPeerConnection {
Promise<RTCStatsReport> getStats(optional MediaStreamTrack? selector = null);
- attribute EventHandler onstatsended;
};
[Exposed=Window]
@@ -627,16 +626,6 @@ dictionary RTCStats {
};
[Exposed=Window]
-interface RTCStatsEvent : Event {
- constructor(DOMString type, RTCStatsEventInit eventInitDict);
- readonly attribute RTCStatsReport report;
-};
-
-dictionary RTCStatsEventInit : EventInit {
- required RTCStatsReport report;
-};
-
-[Exposed=Window]
interface RTCError : DOMException {
constructor(RTCErrorInit init, optional DOMString message = "");
readonly attribute RTCErrorDetailType errorDetail;
diff --git a/tests/wpt/web-platform-tests/loading/lazyload/image-loading-lazy-multicol-tentative.html b/tests/wpt/web-platform-tests/loading/lazyload/image-loading-lazy-multicol-tentative.html
new file mode 100644
index 00000000000..eb69d6810d6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/loading/lazyload/image-loading-lazy-multicol-tentative.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<head>
+ <title>Images with loading='lazy' load when in the viewport</title>
+ <link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
+ <link rel="help" href="https://github.com/scott-little/lazyload">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+</head>
+
+<!--
+Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
+-->
+
+<script>
+ const t = async_test("Test that images with loading='lazy' under multicol load once they enter the viewport.");
+
+ let has_in_viewport_loaded = false;
+ let has_window_loaded = false;
+
+ const in_viewport_img_onload = t.step_func(function() {
+ assert_false(has_in_viewport_loaded, "The in_viewport element should load only once.");
+ has_in_viewport_loaded = true;
+ });
+
+ window.addEventListener("load", t.step_func_done(function() {
+ assert_true(has_in_viewport_loaded, "The in_viewport element should have loaded before window.load().");
+ assert_false(has_window_loaded, "The window.load() event should only fire once.");
+ has_window_loaded = true;
+ }));
+
+</script>
+
+<div class=texty style="column-count: 2; height: 300px">
+ <div style="border: 1px solid black">
+ <h2 style="column-span: all"></h2>
+ <img loading="lazy" src="resources/image.png?first" width="160" height="120"
+ onload="in_viewport_img_onload()">
+ </div>
+</div>
+
+ <!--
+ This async script loads very slowly in order to ensure that, if the
+ below_viewport element has started loading, it has a chance to finish
+ loading before window.load() happens, so that the test will dependably fail
+ in that case instead of potentially passing depending on how long different
+ resource fetches take.
+ -->
+ <script async src="/common/slow.py"></script>
diff --git a/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemFileHandle-getFile.js b/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemFileHandle-getFile.js
index 88e5593ebad..6b7d9f9a317 100644
--- a/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemFileHandle-getFile.js
+++ b/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemFileHandle-getFile.js
@@ -6,3 +6,35 @@ directory_test(async (t, root) => {
let actualContents = await slice.text();
assert_equals(actualContents, fileContents.slice(1, fileContents.length));
}, 'getFile() provides a file that can be sliced');
+
+directory_test(async (t, root) => {
+ const handle = await createEmptyFile(t, 'mtime.txt', root);
+ let file = await handle.getFile();
+ const first_mtime = file.lastModified;
+
+ // We wait for 2s here to ensure that the files do not have the
+ // same modification time. Some filesystems have low resolutions
+ // for modification timestamps.
+ let timeout = new Promise(resolve => {
+ t.step_timeout(resolve, 2000);
+ });
+ await timeout;
+
+ const writer = await handle.createWriter({keepExistingData: false});
+ await writer.write(0, new Blob(['foo']));
+ await writer.close();
+
+ file = await handle.getFile();
+ const second_mtime = file.lastModified;
+
+ // We wait for 5 ms here to ensure that `lastModified`
+ // from the File objects is stable between getFile invocations.
+ timeout = new Promise(resolve => {
+ t.step_timeout(resolve, 5);
+ });
+ await timeout;
+ let fileReplica = await handle.getFile();
+ assert_equals(second_mtime, fileReplica.lastModified);
+
+ assert_less_than(first_mtime, second_mtime);
+}, 'getFile() returns last modified time');
diff --git a/tests/wpt/web-platform-tests/preload/preload-csp.sub.html b/tests/wpt/web-platform-tests/preload/preload-csp.sub.html
index 62d0c71039b..a11214e9ec8 100644
--- a/tests/wpt/web-platform-tests/preload/preload-csp.sub.html
+++ b/tests/wpt/web-platform-tests/preload/preload-csp.sub.html
@@ -15,7 +15,7 @@
<link rel=preload href="resources/dummy.xml">
<body>
<script>
- setup({explicit_done: true});
+ setup({single_test: true});
var iterations = 0;
diff --git a/tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html b/tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html
index 9fc11945866..c649a53f874 100644
--- a/tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html
+++ b/tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html
@@ -15,7 +15,7 @@
<link rel=preload href="resources/dummy.xml">
<body>
<script>
- setup({explicit_done: true});
+ setup({single_test: true});
var iterations = 0;
diff --git a/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js b/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js
index 811c0aeafce..aff72bbad02 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js
@@ -31,14 +31,16 @@ function toMojoNDEFRecord(record) {
return nfcRecord;
}
+// Converts JS objects to byte array.
function toByteArray(data) {
- // Converts JS objects to byte array.
+ if (data instanceof ArrayBuffer)
+ return new Uint8Array(data);
+ else if (ArrayBuffer.isView(data))
+ return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
+
let byteArray = new Uint8Array(0);
let tmpData = data;
-
- if (tmpData instanceof ArrayBuffer)
- byteArray = new Uint8Array(tmpData);
- else if (typeof tmpData === 'object' || typeof tmpData === 'number')
+ if (typeof tmpData === 'object' || typeof tmpData === 'number')
tmpData = JSON.stringify(tmpData);
if (typeof tmpData === 'string')
diff --git a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
index 94031657b4b..d87b3420a85 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
@@ -643,7 +643,7 @@ class MockXRInputSource {
this.primary_input_clicked_ = fakeInputSourceInit.selectionClicked;
}
- this.grip_ = null;
+ this.mojo_from_input_ = null;
if (fakeInputSourceInit.gripOrigin != null) {
this.setGripOrigin(fakeInputSourceInit.gripOrigin);
}
@@ -676,22 +676,22 @@ class MockXRInputSource {
}
setGripOrigin(transform, emulatedPosition = false) {
- this.grip_ = new gfx.mojom.Transform();
- this.grip_.matrix = getMatrixFromTransform(transform);
+ this.mojo_from_input_ = new gfx.mojom.Transform();
+ this.mojo_from_input_.matrix = getMatrixFromTransform(transform);
this.emulated_position_ = emulatedPosition;
}
clearGripOrigin() {
- if (this.grip_ != null) {
- this.grip_ = null;
+ if (this.mojo_from_input_ != null) {
+ this.mojo_from_input_ = null;
this.emulated_position_ = false;
}
}
setPointerOrigin(transform, emulatedPosition = false) {
this.desc_dirty_ = true;
- this.pointer_offset_ = new gfx.mojom.Transform();
- this.pointer_offset_.matrix = getMatrixFromTransform(transform);
+ this.input_from_pointer_ = new gfx.mojom.Transform();
+ this.input_from_pointer_.matrix = getMatrixFromTransform(transform);
this.emulated_position_ = emulatedPosition;
}
@@ -810,7 +810,7 @@ class MockXRInputSource {
input_state.primaryInputPressed = this.primary_input_pressed_;
input_state.primaryInputClicked = this.primary_input_clicked_;
- input_state.grip = this.grip_;
+ input_state.mojoFromInput = this.mojo_from_input_;
input_state.gamepad = this.gamepad_;
@@ -840,7 +840,7 @@ class MockXRInputSource {
break;
}
- input_desc.pointerOffset = this.pointer_offset_;
+ input_desc.inputFromPointer = this.input_from_pointer_;
input_desc.profiles = this.profiles_;
diff --git a/tests/wpt/web-platform-tests/svg/animations/pruning-first-interval.html b/tests/wpt/web-platform-tests/svg/animations/pruning-first-interval.html
new file mode 100644
index 00000000000..5a1d1463bea
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/animations/pruning-first-interval.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<title>Timed element not active after first interval active duration changes to unresolved</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<svg>
+ <rect width="100" height="100" fill="green">
+ <set attributeName="fill" to="red" fill="freeze"
+ begin="click" end="click" dur="100ms" repeatCount="indefinite"/>
+ </rect>
+</svg>
+<script>
+ async_test(function(t) {
+ let set = document.querySelector('set');
+ window.onload = t.step_func(function() {
+ t.step_timeout(function() {
+ set.setAttribute('begin', '-100ms');
+ set.setAttribute('begin', 'click');
+ set.parentNode.appendChild(set);
+ set.setAttribute('end', '-100ms');
+ set.setAttribute('end', 'click');
+ window.requestAnimationFrame(t.step_func_done(function() {
+ let target = set.targetElement;
+ assert_equals(getComputedStyle(target).fill, 'rgb(0, 128, 0)');
+ }));
+ }, 0);
+ });
+ });
+</script>
diff --git a/tests/wpt/web-platform-tests/tools/ci/azure/cleanup_win10.yml b/tests/wpt/web-platform-tests/tools/ci/azure/cleanup_win10.yml
index 76852b58cd3..f495a0c5545 100644
--- a/tests/wpt/web-platform-tests/tools/ci/azure/cleanup_win10.yml
+++ b/tests/wpt/web-platform-tests/tools/ci/azure/cleanup_win10.yml
@@ -95,3 +95,25 @@ steps:
condition: always()
errorActionPreference: silentlyContinue
ignoreLASTEXITCODE: true
+
+- powershell: |
+ ($webdriverFiles = Get-ChildItem -PATH "$env:systemdrive\*msedgedriver.exe" -Recurse) >$null 2>$null
+ Write-Host "Found $($webdriverFiles.Count) msedgedriver binaries"
+ foreach ($file in $webdriverFiles) {
+ Write-Host "Deleting $file"
+ Remove-Item -Path $file.FullName -Force -ErrorAction SilentlyContinue
+ }
+ ($driverNotesFolder = Get-ChildItem -PATH "$env:systemdrive\*Driver_Notes" -Recurse) >$null 2>$null
+ foreach ($file in $driverNotesFolder) {
+ Write-Host "Deleting $file folder"
+ Remove-Item -Path $file.FullName -Recurse -Force -ErrorAction SilentlyContinue
+ }
+ ($zipFile = Get-ChildItem -PATH "$env:systemdrive\*edgedriver_*.zip" -Recurse) >$null 2>$null
+ foreach ($file in $zipFile) {
+ Write-Host "Deleting $file file"
+ Remove-Item -Path $file.FullName -Force -ErrorAction SilentlyContinue
+ }
+ displayName: 'Cleanup Edge driver binaries'
+ condition: always()
+ errorActionPreference: silentlyContinue
+ ignoreLASTEXITCODE: true \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/tools/ci/run_tc.py b/tests/wpt/web-platform-tests/tools/ci/run_tc.py
index e6d8cd878aa..be7dbe082a1 100755
--- a/tests/wpt/web-platform-tests/tools/ci/run_tc.py
+++ b/tests/wpt/web-platform-tests/tools/ci/run_tc.py
@@ -51,9 +51,6 @@ except ImportError:
from urllib.request import urlopen
-QUEUE_BASE = "https://queue.taskcluster.net/v1/task"
-
-
root = os.path.abspath(
os.path.join(os.path.dirname(__file__),
os.pardir,
@@ -127,12 +124,8 @@ def checkout_revision(rev):
def install_chrome(channel):
- deb_prefix = "https://dl.google.com/linux/direct/"
if channel in ("experimental", "dev", "nightly"):
- # Pinned to 78 as 79 consistently fails reftests. TODO(foolip).
- # See https://github.com/web-platform-tests/wpt/issues/19297.
- deb_archive = "google-chrome-unstable_78.0.3904.17-1_amd64.deb"
- deb_prefix = "https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-unstable/"
+ deb_archive = "google-chrome-unstable_current_amd64.deb"
elif channel == "beta":
deb_archive = "google-chrome-beta_current_amd64.deb"
elif channel == "stable":
@@ -141,7 +134,7 @@ def install_chrome(channel):
raise ValueError("Unrecognized release channel: %s" % channel)
dest = os.path.join("/tmp", deb_archive)
- resp = urlopen(deb_prefix + deb_archive)
+ resp = urlopen("https://dl.google.com/linux/direct/%s" % deb_archive)
with open(dest, "w") as f:
f.write(resp.read())
@@ -329,7 +322,14 @@ def fetch_event_data():
# For example under local testing
return None
- resp = urlopen("%s/%s" % (QUEUE_BASE, task_id))
+ root_url = os.environ['TASKCLUSTER_ROOT_URL']
+ if root_url == 'https://taskcluster.net':
+ queue_base = "https://queue.taskcluster.net/v1/task"
+ else:
+ queue_base = root_url + "/api/queue/v1/task"
+
+
+ resp = urlopen("%s/%s" % (queue_base, task_id))
task_data = json.load(resp)
event_data = task_data.get("extra", {}).get("github_event")
diff --git a/tests/wpt/web-platform-tests/tools/ci/tcdownload.py b/tests/wpt/web-platform-tests/tools/ci/tcdownload.py
index 6e4d960da90..256726da7b5 100644
--- a/tests/wpt/web-platform-tests/tools/ci/tcdownload.py
+++ b/tests/wpt/web-platform-tests/tools/ci/tcdownload.py
@@ -10,6 +10,10 @@ import github
logging.basicConfig()
logger = logging.getLogger("tc-download")
+# The root URL of the Taskcluster deployment from which to download wpt reports
+# (after https://bugzilla.mozilla.org/show_bug.cgi?id=1574668 lands, this will
+# be https://community-tc.services.mozilla.com)
+TASKCLUSTER_ROOT_URL = 'https://taskcluster.net'
def get_parser():
parser = argparse.ArgumentParser()
@@ -74,8 +78,13 @@ def run(*args, **kwargs):
return 1
for taskgroup in taskgroups:
- taskgroup_url = "https://queue.taskcluster.net/v1/task-group/%s/list"
- artifacts_list_url = "https://queue.taskcluster.net/v1/task/%s/artifacts"
+ if TASKCLUSTER_ROOT_URL == 'https://taskcluster.net':
+ # NOTE: this condition can be removed after November 9, 2019
+ taskgroup_url = "https://queue.taskcluster.net/v1/task-group/%s/list"
+ artifacts_list_url = "https://queue.taskcluster.net/v1/task/%s/artifacts"
+ else:
+ taskgroup_url = TASKCLUSTER_ROOT_URL + "/api/queue/v1/task-group/%s/list"
+ artifacts_list_url = TASKCLUSTER_ROOT_URL + "/api/queue/v1/task/%s/artifacts"
tasks = get_json(taskgroup_url % taskgroup, "tasks")
for task in tasks:
task_id = task["status"]["taskId"]
diff --git a/tests/wpt/web-platform-tests/tools/wpt/browser.py b/tests/wpt/web-platform-tests/tools/wpt/browser.py
index bed8c59bf07..fb10d756313 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/browser.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/browser.py
@@ -17,6 +17,10 @@ from utils import call, get, untar, unzip
uname = platform.uname()
+# the rootUrl for the firefox-ci deployment of Taskcluster
+# (after November 9, https://firefox-ci-tc.services.mozilla.com/)
+FIREFOX_CI_ROOT_URL = 'https://taskcluster.net'
+
def _get_fileversion(binary, logger=None):
command = "(Get-Item '%s').VersionInfo.FileVersion" % binary.replace("'", "''")
@@ -423,8 +427,13 @@ class FirefoxAndroid(Browser):
if dest is None:
dest = os.pwd
- TC_QUEUE_BASE = "https://queue.taskcluster.net/v1/"
- TC_INDEX_BASE = "https://index.taskcluster.net/v1/"
+ if FIREFOX_CI_ROOT_URL == 'https://taskcluster.net':
+ # NOTE: this condition can be removed after November 9, 2019
+ TC_QUEUE_BASE = "https://queue.taskcluster.net/v1/"
+ TC_INDEX_BASE = "https://index.taskcluster.net/v1/"
+ else:
+ TC_QUEUE_BASE = FIREFOX_CI_ROOT_URL + "/api/queue/v1/"
+ TC_INDEX_BASE = FIREFOX_CI_ROOT_URL + "/api/index/v1/"
resp = requests.get(TC_INDEX_BASE +
@@ -874,10 +883,12 @@ class EdgeChromium(Browser):
if os.path.isfile(edgedriver_path):
# remove read-only attribute
os.chmod(edgedriver_path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO) # 0777
+ print("Delete %s file" % edgedriver_path)
os.remove(edgedriver_path)
- driver_notes_path = os.path.join(dest, "Driver_notes")
- if os.path.isdir(driver_notes_path):
- shutil.rmtree(driver_notes_path, ignore_errors=False, onerror=handle_remove_readonly)
+ driver_notes_path = os.path.join(dest, "Driver_notes")
+ if os.path.isdir(driver_notes_path):
+ print("Delete %s folder" % driver_notes_path)
+ shutil.rmtree(driver_notes_path, ignore_errors=False, onerror=handle_remove_readonly)
self.logger.info("Downloading MSEdgeDriver from %s" % url)
unzip(get(url).raw, dest)
diff --git a/tests/wpt/web-platform-tests/visual-viewport/viewport-no-resize-event-on-overflow-recalc.html.ini b/tests/wpt/web-platform-tests/visual-viewport/viewport-no-resize-event-on-overflow-recalc.html.ini
new file mode 100644
index 00000000000..75e29ae4c42
--- /dev/null
+++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-no-resize-event-on-overflow-recalc.html.ini
@@ -0,0 +1,4 @@
+[viewport-no-resize-event-on-overflow-recalc.html]
+ expected: TIMEOUT
+ [Resize event not fired at window.visualViewport when content is added]
+ expected: NOTRUN
diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFReader_options.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFReader_options.https.html
index ab55e2c160b..389fff9e041 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NDEFReader_options.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NDEFReader_options.https.html
@@ -35,6 +35,13 @@ const NDEFReaderOptionTests =
},
{
desc: "Test that reading data succeed when NDEFScanOptions'" +
+ " recordType is set to 'unknown'.",
+ scanOptions: {recordType: "unknown"},
+ unmatchedScanOptions: {recordType: "json"},
+ message: createMessage([createUnknownRecord(test_buffer_data)])
+ },
+ {
+ desc: "Test that reading data succeed when NDEFScanOptions'" +
" recordType is set to 'text'.",
scanOptions: {recordType: "text"},
unmatchedScanOptions: {recordType: "json"},
@@ -103,6 +110,13 @@ const ReadMultiMessagesTests =
unmatchedMessage: createMessage([createJsonRecord(test_json_data)])
},
{
+ desc: "Test that filtering 'unknown' record from different messages" +
+ " correctly with NDEFScanOptions' recordType is set to 'unknown'.",
+ scanOptions: {recordType: "unknown"},
+ message: createMessage([createUnknownRecord(test_buffer_data)]),
+ unmatchedMessage: createMessage([createUrlRecord(test_url_data)])
+ },
+ {
desc: "Test that filtering 'text' record from different messages" +
" correctly with NDEFScanOptions' recordType is set to 'text'.",
scanOptions: {recordType: "text"},
diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html
index cea517d37aa..1206afb4713 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html
@@ -162,6 +162,30 @@
}, 'NDEFRecord constructor with JSON record type');
test(() => {
+ assert_throws(new TypeError, () => new NDEFRecord(
+ createUnknownRecord("A string is not a BufferSource")),
+ 'Only BufferSource is allowed to be the record data.');
+
+ let buffer = new ArrayBuffer(4);
+ new Uint8Array(buffer).set([1, 2, 3, 4]);
+ // Feed ArrayBuffer.
+ {
+ const record = new NDEFRecord(createUnknownRecord(buffer));
+ assert_equals(record.recordType, 'unknown', 'recordType');
+ assert_array_equals(new Uint8Array(record.data.buffer), [1, 2, 3, 4],
+ 'data has the same content with the original buffer');
+ }
+ // Feed ArrayBufferView.
+ {
+ let buffer_view = new Uint8Array(buffer, 1);
+ const record = new NDEFRecord(createUnknownRecord(buffer_view));
+ assert_equals(record.recordType, 'unknown', 'recordType');
+ assert_array_equals(new Uint8Array(record.data.buffer), [2, 3, 4],
+ 'data has the same content with the original buffer view');
+ }
+ }, 'NDEFRecord constructor with unknown record type');
+
+ test(() => {
let buffer = new ArrayBuffer(4);
let buffer_view = new Uint8Array(buffer);
let original_data = new Uint8Array([1, 2, 3, 4]);
diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_push.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_push.https.html
index fbebac946df..2be655fbbf9 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_push.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_push.https.html
@@ -70,6 +70,14 @@ const invalid_type_messages =
createMessage([createOpaqueRecord(test_number_data)]),
createMessage([createOpaqueRecord(test_json_data)]),
+ // NDEFRecord must have data.
+ createMessage([createUnknownRecord()]),
+
+ // NDEFRecord.data for 'unknown' record must be BufferSource.
+ createMessage([createUnknownRecord(test_text_data)]),
+ createMessage([createUnknownRecord(test_number_data)]),
+ createMessage([createUnknownRecord(test_json_data)]),
+
// https://w3c.github.io/web-nfc/#dfn-map-external-data-to-ndef
// NDEFRecord must have data.
createMessage([createRecord('w3.org:xyz', '', undefined)]),
@@ -301,13 +309,14 @@ nfc_test(async (t, mockNFC) => {
createJsonRecord(test_json_data),
createJsonRecord(test_number_data),
createOpaqueRecord(test_buffer_data),
+ createUnknownRecord(test_buffer_data),
createUrlRecord(test_url_data),
createUrlRecord(test_url_data, true),
createRecord('w3.org:xyz', '', test_buffer_data)],
test_message_origin);
await writer.push(message);
assertNDEFMessagesEqual(message, mockNFC.pushedMessage());
-}, "NDEFWriter.push NDEFMessage containing text, json, opaque, url, absolute-url \
+}, "NDEFWriter.push NDEFMessage containing text, json, opaque, unknown, url, absolute-url \
and external records with default NDEFPushOptions.");
nfc_test(async (t, mockNFC) => {
@@ -322,6 +331,13 @@ nfc_test(async (t, mockNFC) => {
assertNDEFMessagesEqual(test_buffer_data, mockNFC.pushedMessage());
}, "Test that NDEFWriter.push succeeds when message is ArrayBuffer.");
+nfc_test(async (t, mockNFC) => {
+ let buffer_view = new Uint8Array(test_buffer_data, 2, 5);
+ const writer = new NDEFWriter();
+ await writer.push(buffer_view);
+ assertNDEFMessagesEqual(buffer_view, mockNFC.pushedMessage());
+}, "Test that NDEFWriter.push succeeds when message is ArrayBufferView.");
+
nfc_test(async () => {
const writer = new NDEFWriter();
await writer.push(createMessage([createRecord('empty')]));
diff --git a/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js b/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
index 80f0882f9f8..cf9b510f304 100644
--- a/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
+++ b/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
@@ -64,8 +64,8 @@ const test_json_data = {level: 1, score: 100, label: 'Game'};
const test_url_data = 'https://w3c.github.io/web-nfc/';
const test_message_origin = 'https://127.0.0.1:8443';
const test_buffer_data = new ArrayBuffer(test_text_byte_array.length);
-const test_buffer_view =
- new Uint8Array(test_buffer_data).set(test_text_byte_array);
+const test_buffer_view = new Uint8Array(test_buffer_data);
+test_buffer_view.set(test_text_byte_array);
const fake_tag_serial_number = 'c0:45:00:02';
const NFCHWStatus = {};
@@ -111,6 +111,10 @@ function createOpaqueRecord(buffer) {
return createRecord('opaque', 'application/octet-stream', buffer);
}
+function createUnknownRecord(buffer) {
+ return createRecord('unknown', '', buffer);
+}
+
function createUrlRecord(url, isAbsUrl) {
if (isAbsUrl) {
return createRecord('absolute-url', 'text/plain', url);
@@ -126,11 +130,12 @@ function createNDEFPushOptions(target, timeout, ignoreRead) {
// (e.g. NDEFWriter.push), and NDEFMessage that was received by the
// mock NFC service.
function assertNDEFMessagesEqual(providedMessage, receivedMessage) {
- // If simple data type is passed, e.g. String or ArrayBuffer, convert it
- // to NDEFMessage before comparing.
+ // If simple data type is passed, e.g. String or ArrayBuffer or
+ // ArrayBufferView, convert it to NDEFMessage before comparing.
// https://w3c.github.io/web-nfc/#dom-ndefmessagesource
let provided = providedMessage;
- if (providedMessage instanceof ArrayBuffer)
+ if (providedMessage instanceof ArrayBuffer ||
+ ArrayBuffer.isView(providedMessage))
provided = createMessage([createOpaqueRecord(providedMessage)]);
else if (typeof providedMessage === 'string')
provided = createMessage([createTextRecord(providedMessage)]);
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-parameterless.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-parameterless.https.html
new file mode 100644
index 00000000000..0cce78bfbca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-parameterless.https.html
@@ -0,0 +1,142 @@
+<!doctype html>
+<meta charset=utf-8>
+<title></title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src="RTCPeerConnection-helper.js"></script>
+<script>
+"use strict";
+
+const kSmallTimeoutMs = 10;
+
+promise_test(async t => {
+ const offerer = new RTCPeerConnection();
+ t.add_cleanup(() => offerer.close());
+
+ const signalingStateChangeEvent
+ = new EventWatcher(t, offerer, 'signalingstatechange')
+ .wait_for('signalingstatechange');
+ await offerer.setLocalDescription();
+ await signalingStateChangeEvent;
+ assert_equals(offerer.signalingState, 'have-local-offer');
+}, "Parameterless SLD() in 'stable' goes to 'have-local-offer'");
+
+promise_test(async t => {
+ const offerer = new RTCPeerConnection();
+ t.add_cleanup(() => offerer.close());
+
+ await offerer.setLocalDescription();
+ assert_not_equals(offerer.pendingLocalDescription, null);
+}, "Parameterless SLD() in 'stable' sets pendingLocalDescription");
+
+promise_test(async t => {
+ const offerer = new RTCPeerConnection();
+ t.add_cleanup(() => offerer.close());
+
+ const transceiver = offerer.addTransceiver('audio');
+ await offerer.setLocalDescription();
+ assert_not_equals(transceiver.mid, null);
+}, "Parameterless SLD() in 'stable' assigns transceiver.mid");
+
+promise_test(async t => {
+ const offerer = new RTCPeerConnection();
+ t.add_cleanup(() => offerer.close());
+ const answerer = new RTCPeerConnection();
+ t.add_cleanup(() => answerer.close());
+
+ await answerer.setRemoteDescription(await offerer.createOffer());
+ const signalingStateChangeEvent
+ = new EventWatcher(t, answerer, 'signalingstatechange')
+ .wait_for('signalingstatechange');
+ await answerer.setLocalDescription();
+ await signalingStateChangeEvent;
+ assert_equals(answerer.signalingState, 'stable');
+}, "Parameterless SLD() in 'have-remote-offer' goes to 'stable'");
+
+promise_test(async t => {
+ const offerer = new RTCPeerConnection();
+ t.add_cleanup(() => offerer.close());
+ const answerer = new RTCPeerConnection();
+ t.add_cleanup(() => answerer.close());
+
+ await answerer.setRemoteDescription(await offerer.createOffer());
+ await answerer.setLocalDescription();
+ assert_not_equals(answerer.currentLocalDescription, null);
+}, "Parameterless SLD() in 'have-remote-offer' sets currentLocalDescription");
+
+promise_test(async t => {
+ const offerer = new RTCPeerConnection();
+ t.add_cleanup(() => offerer.close());
+ const answerer = new RTCPeerConnection();
+ t.add_cleanup(() => answerer.close());
+
+ offerer.addTransceiver('audio');
+ const onTransceiverPromise = new Promise(resolve =>
+ answerer.ontrack = e => resolve(e.transceiver));
+ await answerer.setRemoteDescription(await offerer.createOffer());
+ const transceiver = await onTransceiverPromise;
+ await answerer.setLocalDescription();
+ assert_equals(transceiver.currentDirection, 'recvonly');
+}, "Parameterless SLD() in 'have-remote-offer' sets " +
+ "transceiver.currentDirection");
+
+promise_test(async t => {
+ const offerer = new RTCPeerConnection();
+ t.add_cleanup(() => offerer.close());
+
+ const offer = await offerer.createOffer();
+ await offerer.setLocalDescription();
+ // assert_true() is used rather than assert_equals() so that if the assertion
+ // fails, the -expected.txt file is not different on each run.
+ assert_true(offerer.pendingLocalDescription.sdp == offer.sdp,
+ "offerer.pendingLocalDescription.sdp == offer.sdp");
+}, "Parameterless SLD() uses [[LastCreatedOffer]] if it is still valid");
+
+promise_test(async t => {
+ const offerer = new RTCPeerConnection();
+ t.add_cleanup(() => offerer.close());
+ const answerer = new RTCPeerConnection();
+ t.add_cleanup(() => answerer.close());
+
+ await answerer.setRemoteDescription(await offerer.createOffer());
+ const answer = await answerer.createAnswer();
+ await answerer.setLocalDescription();
+ // assert_true() is used rather than assert_equals() so that if the assertion
+ // fails, the -expected.txt file is not different on each run.
+ assert_true(answerer.currentLocalDescription.sdp == answer.sdp,
+ "answerer.currentLocalDescription.sdp == answer.sdp");
+}, "Parameterless SLD() uses [[LastCreatedAnswer]] if it is still valid");
+
+promise_test(async t => {
+ const offerer = new RTCPeerConnection();
+ offerer.close();
+
+ offerer.setLocalDescription().then(t.step_func(() => assert_not_reached()));
+ await new Promise(resolve => t.step_timeout(resolve, kSmallTimeoutMs));
+}, "Parameterless SLD() never resolves if already closed");
+
+promise_test(async t => {
+ const offerer = new RTCPeerConnection();
+ t.add_cleanup(() => offerer.close());
+
+ offerer.setLocalDescription().then(t.step_func(() => assert_not_reached()));
+ offerer.close();
+ await new Promise(resolve => t.step_timeout(resolve, kSmallTimeoutMs));
+}, "Parameterless SLD() never resolves if closed while pending");
+
+
+promise_test(async t => {
+ const offerer = new RTCPeerConnection();
+ t.add_cleanup(() => offerer.close());
+ const answerer = new RTCPeerConnection();
+ t.add_cleanup(() => answerer.close());
+
+ // Implicitly create an offer.
+ await offerer.setLocalDescription();
+ await answerer.setRemoteDescription(offerer.pendingLocalDescription);
+ // Implicitly create an answer.
+ await answerer.setLocalDescription();
+ await offerer.setRemoteDescription(answerer.currentLocalDescription);
+}, "Parameterless SLD() in a full O/A exchange succeeds");
+
+</script> \ No newline at end of file
diff --git a/tests/wpt/webgl/meta/conformance/rendering/multisample-corruption.html.ini b/tests/wpt/webgl/meta/conformance/rendering/multisample-corruption.html.ini
index 2d68d489d35..a318722d23b 100644
--- a/tests/wpt/webgl/meta/conformance/rendering/multisample-corruption.html.ini
+++ b/tests/wpt/webgl/meta/conformance/rendering/multisample-corruption.html.ini
@@ -7,3 +7,75 @@
[WebGL test #1: context does not exist]
expected: FAIL
+ [WebGL test #9: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #17: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #23: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #8: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #13: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #18: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #5: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #14: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #22: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #20: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #3: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #24: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #7: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #11: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #2: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #4: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #1: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #21: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #6: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #19: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #12: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #16: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #10: Canvas should be red]
+ expected: FAIL
+
+ [WebGL test #15: Canvas should be red]
+ expected: FAIL
+
diff --git a/tests/wpt/webgl/meta/conformance2/rendering/canvas-resizing-with-pbo-bound.html.ini b/tests/wpt/webgl/meta/conformance2/rendering/canvas-resizing-with-pbo-bound.html.ini
index 436b6e96fe7..0e7c48f1481 100644
--- a/tests/wpt/webgl/meta/conformance2/rendering/canvas-resizing-with-pbo-bound.html.ini
+++ b/tests/wpt/webgl/meta/conformance2/rendering/canvas-resizing-with-pbo-bound.html.ini
@@ -1,5 +1,4 @@
[canvas-resizing-with-pbo-bound.html]
- expected: TIMEOUT
[WebGL test #0: Unable to fetch WebGL rendering context for Canvas]
expected: FAIL