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