aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWPT Sync Bot <josh+wptsync@joshmatthews.net>2018-12-05 21:05:42 -0500
committerWPT Sync Bot <josh+wptsync@joshmatthews.net>2018-12-05 23:54:15 -0500
commitf9972c83e36c1303eca31b5a8a4b714f73b1fcf6 (patch)
tree1df4d52bd745fc513ff5657c2895543b9a405664
parent16e4eb69644b74d120398cc2b3ac0d9a94075ae5 (diff)
downloadservo-f9972c83e36c1303eca31b5a8a4b714f73b1fcf6.tar.gz
servo-f9972c83e36c1303eca31b5a8a4b714f73b1fcf6.zip
Update web-platform-tests to revision 093a97b6ecc6484c201d704d38b47bef1964d59d
-rw-r--r--tests/wpt/metadata/MANIFEST.json400
-rw-r--r--tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-break-word-span-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-break-word-span-002.html.ini4
-rw-r--r--tests/wpt/metadata/encoding/single-byte-decoder.html.ini18
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini5
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini1
-rw-r--r--tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini7
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini4
-rw-r--r--tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini3
-rw-r--r--tests/wpt/metadata/quirks/unitless-length/limited-quirks.html.ini283
-rw-r--r--tests/wpt/metadata/quirks/unitless-length/no-quirks.html.ini283
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/percentage-min-width.html13
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-004.html8
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-005.html8
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-span-001.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-span-002.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/overflow-wrap/reference/overflow-wrap-break-word-span-001-ref.html8
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-suppress-baseline-002.html2
-rw-r--r--tests/wpt/web-platform-tests/docs/_writing-tests/testharness.md2
-rw-r--r--tests/wpt/web-platform-tests/event-timing/event-timing-bufferbeforeonload.html12
-rw-r--r--tests/wpt/web-platform-tests/event-timing/event-timing-onloadthenobserve-firstInput.html8
-rw-r--r--tests/wpt/web-platform-tests/event-timing/event-timing-onloadthenobserve.html24
-rw-r--r--tests/wpt/web-platform-tests/event-timing/event-timing-retrieve-firstInput.html35
-rw-r--r--tests/wpt/web-platform-tests/event-timing/idlharness.any.js18
-rw-r--r--tests/wpt/web-platform-tests/interfaces/event-timing.idl18
-rw-r--r--tests/wpt/web-platform-tests/interfaces/web-nfc.idl6
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webxr.idl64
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https.html13
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-cors-xhr-iframe.html59
-rw-r--r--tests/wpt/web-platform-tests/storage/estimate-indexeddb.https.any.js155
-rw-r--r--tests/wpt/web-platform-tests/svg/geometry/parsing/cx-valid.svg1
-rw-r--r--tests/wpt/web-platform-tests/svg/geometry/parsing/cy-valid.svg1
-rw-r--r--tests/wpt/web-platform-tests/svg/geometry/parsing/rx-valid.svg1
-rw-r--r--tests/wpt/web-platform-tests/svg/geometry/parsing/ry-valid.svg1
-rw-r--r--tests/wpt/web-platform-tests/svg/geometry/parsing/x-valid.svg1
-rw-r--r--tests/wpt/web-platform-tests/svg/geometry/parsing/y-valid.svg1
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/color-interpolation-computed.svg21
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/color-rendering-computed.svg21
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/fill-computed.svg34
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/fill-opacity-computed.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/fill-rule-computed.svg20
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/image-rendering-computed.svg21
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/marker-end-computed.svg28
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/marker-mid-computed.svg28
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/marker-start-computed.svg28
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/paint-order-computed.svg37
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/shape-rendering-computed.svg22
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/stroke-computed.svg34
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/stroke-dasharray-computed.svg33
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/stroke-dasharray-valid.svg3
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/stroke-dashoffset-computed.svg37
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/stroke-dashoffset-valid.svg1
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/stroke-linecap-computed.svg21
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/stroke-linejoin-computed.svg22
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/stroke-miterlimit-computed.svg22
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/stroke-opacity-computed.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/stroke-width-computed.svg37
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/parsing/text-rendering-computed.svg22
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py3
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py15
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py4
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/GlobalEventHandlers-onclick.tentative.html23
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-no-name.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.html13
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP.tentative.html27
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-createXXX.tentative.html119
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-exposed.tentative.html25
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-name.tentative.html31
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.html15
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-exposedTests.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Document-write.tentative.html7
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html12
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Location-assign.tentative.html4
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Location-href.tentative.html5
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Location-replace.tentative.html4
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/support/helper.sub.js7
79 files changed, 1532 insertions, 826 deletions
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 47e0039577c..d5d32caa3ea 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -138745,6 +138745,18 @@
{}
]
],
+ "css/css-text/overflow-wrap/overflow-wrap-break-word-span-001.html": [
+ [
+ "/css/css-text/overflow-wrap/overflow-wrap-break-word-span-001.html",
+ [
+ [
+ "/css/css-text/overflow-wrap/reference/overflow-wrap-break-word-span-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text/overflow-wrap/overflow-wrap-min-content-size-001.html": [
[
"/css/css-text/overflow-wrap/overflow-wrap-min-content-size-001.html",
@@ -173018,7 +173030,7 @@
"/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-suppress-baseline-002.html",
[
[
- "/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-suppress-baseline-001-ref.html",
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-suppress-baseline-002-ref.html",
"=="
]
],
@@ -268536,6 +268548,11 @@
{}
]
],
+ "css/css-text/overflow-wrap/reference/overflow-wrap-break-word-span-001-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-text/overflow-wrap/reference/overflow-wrap-min-content-size-001-ref.html": [
[
{}
@@ -297856,6 +297873,11 @@
{}
]
],
+ "interfaces/event-timing.idl": [
+ [
+ {}
+ ]
+ ],
"interfaces/feature-policy.idl": [
[
{}
@@ -343187,6 +343209,12 @@
{}
]
],
+ "css/css-sizing/percentage-min-width.html": [
+ [
+ "/css/css-sizing/percentage-min-width.html",
+ {}
+ ]
+ ],
"css/css-syntax/charset/page-utf16-css-bomless-utf16.html": [
[
"/css/css-syntax/charset/page-utf16-css-bomless-utf16.html",
@@ -344621,6 +344649,12 @@
{}
]
],
+ "css/css-text/overflow-wrap/overflow-wrap-break-word-span-002.html": [
+ [
+ "/css/css-text/overflow-wrap/overflow-wrap-break-word-span-002.html",
+ {}
+ ]
+ ],
"css/css-text/overflow-wrap/word-wrap-alias.html": [
[
"/css/css-text/overflow-wrap/word-wrap-alias.html",
@@ -362001,6 +362035,14 @@
}
]
],
+ "event-timing/event-timing-retrieve-firstInput.html": [
+ [
+ "/event-timing/event-timing-retrieve-firstInput.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"event-timing/event-timing-timingconditions.html": [
[
"/event-timing/event-timing-timingconditions.html",
@@ -362009,6 +362051,24 @@
}
]
],
+ "event-timing/idlharness.any.js": [
+ [
+ "/event-timing/idlharness.any.html",
+ {}
+ ],
+ [
+ "/event-timing/idlharness.any.serviceworker.html",
+ {}
+ ],
+ [
+ "/event-timing/idlharness.any.sharedworker.html",
+ {}
+ ],
+ [
+ "/event-timing/idlharness.any.worker.html",
+ {}
+ ]
+ ],
"eventsource/dedicated-worker/eventsource-close.htm": [
[
"/eventsource/dedicated-worker/eventsource-close.htm",
@@ -408497,6 +408557,12 @@
{}
]
],
+ "svg/painting/parsing/color-interpolation-computed.svg": [
+ [
+ "/svg/painting/parsing/color-interpolation-computed.svg",
+ {}
+ ]
+ ],
"svg/painting/parsing/color-interpolation-invalid.svg": [
[
"/svg/painting/parsing/color-interpolation-invalid.svg",
@@ -408509,6 +408575,12 @@
{}
]
],
+ "svg/painting/parsing/color-rendering-computed.svg": [
+ [
+ "/svg/painting/parsing/color-rendering-computed.svg",
+ {}
+ ]
+ ],
"svg/painting/parsing/color-rendering-invalid.svg": [
[
"/svg/painting/parsing/color-rendering-invalid.svg",
@@ -408521,6 +408593,12 @@
{}
]
],
+ "svg/painting/parsing/fill-computed.svg": [
+ [
+ "/svg/painting/parsing/fill-computed.svg",
+ {}
+ ]
+ ],
"svg/painting/parsing/fill-invalid.svg": [
[
"/svg/painting/parsing/fill-invalid.svg",
@@ -408545,6 +408623,12 @@
{}
]
],
+ "svg/painting/parsing/fill-rule-computed.svg": [
+ [
+ "/svg/painting/parsing/fill-rule-computed.svg",
+ {}
+ ]
+ ],
"svg/painting/parsing/fill-rule-invalid.svg": [
[
"/svg/painting/parsing/fill-rule-invalid.svg",
@@ -408563,6 +408647,12 @@
{}
]
],
+ "svg/painting/parsing/image-rendering-computed.svg": [
+ [
+ "/svg/painting/parsing/image-rendering-computed.svg",
+ {}
+ ]
+ ],
"svg/painting/parsing/image-rendering-invalid.svg": [
[
"/svg/painting/parsing/image-rendering-invalid.svg",
@@ -408575,6 +408665,12 @@
{}
]
],
+ "svg/painting/parsing/marker-end-computed.svg": [
+ [
+ "/svg/painting/parsing/marker-end-computed.svg",
+ {}
+ ]
+ ],
"svg/painting/parsing/marker-end-invalid.svg": [
[
"/svg/painting/parsing/marker-end-invalid.svg",
@@ -408587,6 +408683,12 @@
{}
]
],
+ "svg/painting/parsing/marker-mid-computed.svg": [
+ [
+ "/svg/painting/parsing/marker-mid-computed.svg",
+ {}
+ ]
+ ],
"svg/painting/parsing/marker-mid-invalid.svg": [
[
"/svg/painting/parsing/marker-mid-invalid.svg",
@@ -408599,6 +408701,12 @@
{}
]
],
+ "svg/painting/parsing/marker-start-computed.svg": [
+ [
+ "/svg/painting/parsing/marker-start-computed.svg",
+ {}
+ ]
+ ],
"svg/painting/parsing/marker-start-invalid.svg": [
[
"/svg/painting/parsing/marker-start-invalid.svg",
@@ -408611,6 +408719,12 @@
{}
]
],
+ "svg/painting/parsing/paint-order-computed.svg": [
+ [
+ "/svg/painting/parsing/paint-order-computed.svg",
+ {}
+ ]
+ ],
"svg/painting/parsing/paint-order-invalid.svg": [
[
"/svg/painting/parsing/paint-order-invalid.svg",
@@ -408623,6 +408737,12 @@
{}
]
],
+ "svg/painting/parsing/shape-rendering-computed.svg": [
+ [
+ "/svg/painting/parsing/shape-rendering-computed.svg",
+ {}
+ ]
+ ],
"svg/painting/parsing/shape-rendering-invalid.svg": [
[
"/svg/painting/parsing/shape-rendering-invalid.svg",
@@ -408635,6 +408755,18 @@
{}
]
],
+ "svg/painting/parsing/stroke-computed.svg": [
+ [
+ "/svg/painting/parsing/stroke-computed.svg",
+ {}
+ ]
+ ],
+ "svg/painting/parsing/stroke-dasharray-computed.svg": [
+ [
+ "/svg/painting/parsing/stroke-dasharray-computed.svg",
+ {}
+ ]
+ ],
"svg/painting/parsing/stroke-dasharray-invalid.svg": [
[
"/svg/painting/parsing/stroke-dasharray-invalid.svg",
@@ -408647,6 +408779,12 @@
{}
]
],
+ "svg/painting/parsing/stroke-dashoffset-computed.svg": [
+ [
+ "/svg/painting/parsing/stroke-dashoffset-computed.svg",
+ {}
+ ]
+ ],
"svg/painting/parsing/stroke-dashoffset-invalid.svg": [
[
"/svg/painting/parsing/stroke-dashoffset-invalid.svg",
@@ -408665,6 +408803,12 @@
{}
]
],
+ "svg/painting/parsing/stroke-linecap-computed.svg": [
+ [
+ "/svg/painting/parsing/stroke-linecap-computed.svg",
+ {}
+ ]
+ ],
"svg/painting/parsing/stroke-linecap-invalid.svg": [
[
"/svg/painting/parsing/stroke-linecap-invalid.svg",
@@ -408677,6 +408821,12 @@
{}
]
],
+ "svg/painting/parsing/stroke-linejoin-computed.svg": [
+ [
+ "/svg/painting/parsing/stroke-linejoin-computed.svg",
+ {}
+ ]
+ ],
"svg/painting/parsing/stroke-linejoin-invalid.svg": [
[
"/svg/painting/parsing/stroke-linejoin-invalid.svg",
@@ -408689,6 +408839,12 @@
{}
]
],
+ "svg/painting/parsing/stroke-miterlimit-computed.svg": [
+ [
+ "/svg/painting/parsing/stroke-miterlimit-computed.svg",
+ {}
+ ]
+ ],
"svg/painting/parsing/stroke-miterlimit-invalid.svg": [
[
"/svg/painting/parsing/stroke-miterlimit-invalid.svg",
@@ -408743,6 +408899,12 @@
{}
]
],
+ "svg/painting/parsing/text-rendering-computed.svg": [
+ [
+ "/svg/painting/parsing/text-rendering-computed.svg",
+ {}
+ ]
+ ],
"svg/painting/parsing/text-rendering-invalid.svg": [
[
"/svg/painting/parsing/text-rendering-invalid.svg",
@@ -409295,6 +409457,12 @@
{}
]
],
+ "trusted-types/GlobalEventHandlers-onclick.tentative.html": [
+ [
+ "/trusted-types/GlobalEventHandlers-onclick.tentative.html",
+ {}
+ ]
+ ],
"trusted-types/HTMLElement-generic.tentative.html": [
[
"/trusted-types/HTMLElement-generic.tentative.html",
@@ -409325,6 +409493,42 @@
{}
]
],
+ "trusted-types/TrustedTypePolicy-CSP-no-name.tentative.html": [
+ [
+ "/trusted-types/TrustedTypePolicy-CSP-no-name.tentative.html",
+ {}
+ ]
+ ],
+ "trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.html": [
+ [
+ "/trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.html",
+ {}
+ ]
+ ],
+ "trusted-types/TrustedTypePolicy-CSP.tentative.html": [
+ [
+ "/trusted-types/TrustedTypePolicy-CSP.tentative.html",
+ {}
+ ]
+ ],
+ "trusted-types/TrustedTypePolicy-createXXX.tentative.html": [
+ [
+ "/trusted-types/TrustedTypePolicy-createXXX.tentative.html",
+ {}
+ ]
+ ],
+ "trusted-types/TrustedTypePolicy-exposed.tentative.html": [
+ [
+ "/trusted-types/TrustedTypePolicy-exposed.tentative.html",
+ {}
+ ]
+ ],
+ "trusted-types/TrustedTypePolicy-name.tentative.html": [
+ [
+ "/trusted-types/TrustedTypePolicy-name.tentative.html",
+ {}
+ ]
+ ],
"trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html": [
[
"/trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html",
@@ -566758,6 +566962,10 @@
"fa95069dbf0083b0dc7095d2bb3acf20a6ccf898",
"reftest"
],
+ "css/css-sizing/percentage-min-width.html": [
+ "11c34eafc32812da1b4da1552afe08c231cd69db",
+ "testharness"
+ ],
"css/css-sizing/whitespace-and-break.html": [
"f3ea3764478488b949433daccddf710cd0a91006",
"reftest"
@@ -570443,17 +570651,25 @@
"reftest"
],
"css/css-text/overflow-wrap/overflow-wrap-break-word-004.html": [
- "560ef63b2f94c5eeca83ee5ef63cdfc15fbdfe34",
+ "b277319cd23831a4911978f450d0bc812aedb695",
"reftest"
],
"css/css-text/overflow-wrap/overflow-wrap-break-word-005.html": [
- "3ef61bc9eff78b860c0bd2ed5c6bc4c28c168008",
+ "dd005a816f2febca4c41b52df75372019c5fb451",
"reftest"
],
"css/css-text/overflow-wrap/overflow-wrap-break-word-fit-content-001.html": [
"bce6c68389c32960d79e8fbbf61f9fa28c733165",
"reftest"
],
+ "css/css-text/overflow-wrap/overflow-wrap-break-word-span-001.html": [
+ "0565b8bb75d5feff2352a1dd3eb9a8f8ef0d1bef",
+ "reftest"
+ ],
+ "css/css-text/overflow-wrap/overflow-wrap-break-word-span-002.html": [
+ "39426d0420287a730dcac47696bd69520e8a6b72",
+ "testharness"
+ ],
"css/css-text/overflow-wrap/overflow-wrap-min-content-size-001.html": [
"608d4853a2425d9b4157bbe331fd78763985cecd",
"reftest"
@@ -570482,6 +570698,10 @@
"30787e204fa7003e85e78fc65a885d0521659545",
"support"
],
+ "css/css-text/overflow-wrap/reference/overflow-wrap-break-word-span-001-ref.html": [
+ "0264bcf322f4a6f9af451ffd6bed6e0fbdc46ef2",
+ "support"
+ ],
"css/css-text/overflow-wrap/reference/overflow-wrap-min-content-size-001-ref.html": [
"99d964777c663fb8ca37be00c162ddfbb82951c9",
"support"
@@ -595951,7 +596171,7 @@
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-suppress-baseline-002.html": [
- "eb791427c0c8e6716122bc7957ed5c68c80be52a",
+ "845290768acbe5b3bd81d4c78e4a4cf61fecc906",
"reftest"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-clip-001-ref.html": [
@@ -604243,7 +604463,7 @@
"support"
],
"docs/_writing-tests/testharness.md": [
- "9c21452607e8f3f9e5bbf3ef2fb7771441f4a680",
+ "c19fe0ee881bb0517ef0617e6412ee6025a5079f",
"support"
],
"docs/_writing-tests/visual.md": [
@@ -608691,7 +608911,7 @@
"support"
],
"event-timing/event-timing-bufferbeforeonload.html": [
- "223f5ed0fb5ce643d9f121f9af136e88a5d9e34d",
+ "22fc4d547b90da989a292a44535c73d761f61293",
"testharness"
],
"event-timing/event-timing-crossiframe.html": [
@@ -608707,11 +608927,11 @@
"testharness"
],
"event-timing/event-timing-onloadthenobserve-firstInput.html": [
- "16f48411f9f12f17407c29098b97ce5479daed0f",
+ "22ac4cb45e947ca3555fe57fbde03746397bfcb2",
"testharness"
],
"event-timing/event-timing-onloadthenobserve.html": [
- "7dc113247cd8cd7ffe452edeaffcc07ba67e516e",
+ "07cc236cb47258bce490d2b18a29863922617ba1",
"testharness"
],
"event-timing/event-timing-only-observe-firstInput.html": [
@@ -608722,10 +608942,18 @@
"f38761b469da693f2c14a62c96a4671098cbd4e5",
"testharness"
],
+ "event-timing/event-timing-retrieve-firstInput.html": [
+ "ded00e61c75dfb29a200082b0f9d477c09297fd4",
+ "testharness"
+ ],
"event-timing/event-timing-timingconditions.html": [
"1e5dd2fd65cde654f9223ee3a9180a5adfeb4a57",
"testharness"
],
+ "event-timing/idlharness.any.js": [
+ "5ee98548fb6f2209b8c4b5346830c0d723e68170",
+ "testharness"
+ ],
"event-timing/resources/event-timing-crossiframe-childframe.html": [
"7491fd88cb3c8cbfa849620e3690e4a42e454b9e",
"support"
@@ -631894,6 +632122,10 @@
"71e80c717b2becc9a005e471553910a26fd0a326",
"support"
],
+ "interfaces/event-timing.idl": [
+ "0e12737bcc6e75d643abdd0e6bc44d44bcd8e6af",
+ "support"
+ ],
"interfaces/feature-policy.idl": [
"c09cc33ce14daefd44db0a84c1a9b39264e856a1",
"support"
@@ -632195,7 +632427,7 @@
"support"
],
"interfaces/web-nfc.idl": [
- "699a31623a335641b8b8be21040f7f80df6555fa",
+ "d54773be499366806bbd93c7fc119ff7a3a2ff72",
"support"
],
"interfaces/web-share.idl": [
@@ -632247,7 +632479,7 @@
"support"
],
"interfaces/webxr.idl": [
- "5561369931f749224f2dcf87d5fc921af64d82b2",
+ "7f7b43c222bd3bc4dcab0c618402ff8ff61ae470",
"support"
],
"interfaces/worklets.idl": [
@@ -658235,7 +658467,7 @@
"testharness"
],
"service-workers/service-worker/fetch-cors-xhr.https.html": [
- "397cb81d5462c6a1db7b67c08ad9a5739147745b",
+ "f8ff445673bd42bafcc29c43eb86967dac1f9792",
"testharness"
],
"service-workers/service-worker/fetch-csp.https.html": [
@@ -659067,7 +659299,7 @@
"support"
],
"service-workers/service-worker/resources/fetch-cors-xhr-iframe.html": [
- "51952a988efe0700276cefa032865c442dfcb6c6",
+ "d88c5103d35b1880932608bea75d21a8d61cc038",
"support"
],
"service-workers/service-worker/resources/fetch-csp-iframe.html": [
@@ -661015,7 +661247,7 @@
"support"
],
"storage/estimate-indexeddb.https.any.js": [
- "3e34ad19babf53da04974ceafe0fd4cb7be33621",
+ "c62f5a96c1a2c22142988eabd5b59ce3d3409f95",
"testharness"
],
"storage/estimate-parallel.https.any.js": [
@@ -661615,7 +661847,7 @@
"testharness"
],
"svg/geometry/parsing/cx-valid.svg": [
- "e7f627ac721fcc90597314ef0c97765566c343b3",
+ "a96fee56555d69297ab833536ed3177cedfd7145",
"testharness"
],
"svg/geometry/parsing/cy-computed.svg": [
@@ -661627,7 +661859,7 @@
"testharness"
],
"svg/geometry/parsing/cy-valid.svg": [
- "4372c36ea225328926030830e895f64858e73784",
+ "022445662b7d9d519ca28a1eeca47c9199ceafca",
"testharness"
],
"svg/geometry/parsing/r-computed.svg": [
@@ -661651,7 +661883,7 @@
"testharness"
],
"svg/geometry/parsing/rx-valid.svg": [
- "e2b628f1de4bd8e2a3fec98fda1aa76b6af79b87",
+ "9d156b3cccfd6bb967372bb2c9ade6fc9527efd9",
"testharness"
],
"svg/geometry/parsing/ry-computed.svg": [
@@ -661663,7 +661895,7 @@
"testharness"
],
"svg/geometry/parsing/ry-valid.svg": [
- "4ce5bec4084cf0e6cf1e6744701b756cc18e2f91",
+ "e92e2cf6410ba4071baa81c18ec4462ba60b42dd",
"testharness"
],
"svg/geometry/parsing/x-computed.svg": [
@@ -661675,7 +661907,7 @@
"testharness"
],
"svg/geometry/parsing/x-valid.svg": [
- "5ff2fbd831d7373faee706538f08528dc4ac8a99",
+ "2b06f26ac4c2b7ec0bf2b295854dc8d15fed130e",
"testharness"
],
"svg/geometry/parsing/y-computed.svg": [
@@ -661687,7 +661919,7 @@
"testharness"
],
"svg/geometry/parsing/y-valid.svg": [
- "24885ccfc7059dd9e26e57e3839571d2883f73c3",
+ "aad0e4e2937064224de6a2313379fb43ffdf8322",
"testharness"
],
"svg/historical.html": [
@@ -664126,6 +664358,10 @@
"47f70336a6f6774805c08c99f37e8ee7c32ecc10",
"reftest"
],
+ "svg/painting/parsing/color-interpolation-computed.svg": [
+ "88604d75b069afa3bbf894a5ae6c869e420f940d",
+ "testharness"
+ ],
"svg/painting/parsing/color-interpolation-invalid.svg": [
"11fd05be070350c13fabbc3f2627ae80a381f389",
"testharness"
@@ -664134,6 +664370,10 @@
"9465edb232fb30ed7237f48c159a454e672cd76b",
"testharness"
],
+ "svg/painting/parsing/color-rendering-computed.svg": [
+ "4d63616c794b8c6666c34d46148cd0edd26c06b9",
+ "testharness"
+ ],
"svg/painting/parsing/color-rendering-invalid.svg": [
"bfdf95ab2ee9ba336b295a8fa8dcf2a91130cdd1",
"testharness"
@@ -664142,12 +664382,16 @@
"5f7baa2dd08ace602a0a46a2840cfea1925a4055",
"testharness"
],
+ "svg/painting/parsing/fill-computed.svg": [
+ "4678999e8efcfd892e2d83d4ccf252d08ce03ee5",
+ "testharness"
+ ],
"svg/painting/parsing/fill-invalid.svg": [
"1feb867c3ab9e83f96e0566b53c75aa3dccb0653",
"testharness"
],
"svg/painting/parsing/fill-opacity-computed.svg": [
- "aa24d3efe8130053ae174a343c074743805794c0",
+ "4526724b999419cd447d5f1a0acababd9653b425",
"testharness"
],
"svg/painting/parsing/fill-opacity-invalid.svg": [
@@ -664158,6 +664402,10 @@
"41cfe985d623d682788c538e87502732821ccfc8",
"testharness"
],
+ "svg/painting/parsing/fill-rule-computed.svg": [
+ "2b51c9edc4ac9e7cebeb378ad8cccca5b10c1a9b",
+ "testharness"
+ ],
"svg/painting/parsing/fill-rule-invalid.svg": [
"d89a81acbb1533cfb121f851a005dde64f82d996",
"testharness"
@@ -664170,6 +664418,10 @@
"d5bb5ceb0f719c31786e3667bdecd01e1fa248d2",
"testharness"
],
+ "svg/painting/parsing/image-rendering-computed.svg": [
+ "18662ef835589024e21a0cdba65861400c10b0cd",
+ "testharness"
+ ],
"svg/painting/parsing/image-rendering-invalid.svg": [
"5c3cc9f054bf4f0b21ba7c48c49fe810d9841615",
"testharness"
@@ -664178,6 +664430,10 @@
"18402493f3c779b9427b383cc668033ac46c4936",
"testharness"
],
+ "svg/painting/parsing/marker-end-computed.svg": [
+ "aa0bc6774a5cea491e36c3432670b3568d50ab7c",
+ "testharness"
+ ],
"svg/painting/parsing/marker-end-invalid.svg": [
"bc8e5fcc8bab475cdd086f533a7b9d6a82bcff7e",
"testharness"
@@ -664186,6 +664442,10 @@
"5be036e994637be7abfe4440618cd4bb16b5d5a7",
"testharness"
],
+ "svg/painting/parsing/marker-mid-computed.svg": [
+ "074c17c269e136d5fdacf34ec6920507526d141b",
+ "testharness"
+ ],
"svg/painting/parsing/marker-mid-invalid.svg": [
"25cfbba82eb54a30c09e00580100627ccf0420b5",
"testharness"
@@ -664194,6 +664454,10 @@
"119fd706b12189342a6ad9d9d94c512df57ccbdc",
"testharness"
],
+ "svg/painting/parsing/marker-start-computed.svg": [
+ "e0ad38bbbc8df4563b6a81fba6dcdc54b92c3e1e",
+ "testharness"
+ ],
"svg/painting/parsing/marker-start-invalid.svg": [
"6c1fdbcd4b577f3d5de2f747d74bb34c670ce3bd",
"testharness"
@@ -664202,6 +664466,10 @@
"fd6f2d6fe425ec1e4ab5c7ee6425a5e4ead823bc",
"testharness"
],
+ "svg/painting/parsing/paint-order-computed.svg": [
+ "0cba453f437a2e10f932ff83b95b6835a4920776",
+ "testharness"
+ ],
"svg/painting/parsing/paint-order-invalid.svg": [
"5043176dd97bd1d99ea2f9674abfa08f06d7383e",
"testharness"
@@ -664210,6 +664478,10 @@
"25759d222d15a18ca49645e1ff10a17b50341f58",
"testharness"
],
+ "svg/painting/parsing/shape-rendering-computed.svg": [
+ "8dbea5eba6c0b3962c8eec0bc04577762e56a90f",
+ "testharness"
+ ],
"svg/painting/parsing/shape-rendering-invalid.svg": [
"e20ca879dbaf7744157bca497a581d5f6083fcd5",
"testharness"
@@ -664218,12 +664490,24 @@
"803609476f8387710391fcc882ef4c6503eb5620",
"testharness"
],
+ "svg/painting/parsing/stroke-computed.svg": [
+ "331496b01b8f367dde202715251d52d77a864754",
+ "testharness"
+ ],
+ "svg/painting/parsing/stroke-dasharray-computed.svg": [
+ "2e3a74b5728594e7378d47da659e801cfcfec7a9",
+ "testharness"
+ ],
"svg/painting/parsing/stroke-dasharray-invalid.svg": [
"0c356b6433955588c7b0ed32d9ff8c2eab4c7619",
"testharness"
],
"svg/painting/parsing/stroke-dasharray-valid.svg": [
- "7301a54e65e2b38fd2e5d83ccb8780fe74ae6295",
+ "e47ebc62a1296f75c42af980b85073ebe135605b",
+ "testharness"
+ ],
+ "svg/painting/parsing/stroke-dashoffset-computed.svg": [
+ "bdb934614c109208326e357ea5b056dd4f754994",
"testharness"
],
"svg/painting/parsing/stroke-dashoffset-invalid.svg": [
@@ -664231,13 +664515,17 @@
"testharness"
],
"svg/painting/parsing/stroke-dashoffset-valid.svg": [
- "921b03a6a6f270307f281eafb609d81fc11f2b99",
+ "ff913e06e4f849b5b14fac050986f697df9c81d8",
"testharness"
],
"svg/painting/parsing/stroke-invalid.svg": [
"a976ccb97742bb9aefc94d6cfd9c1e57ee18a06a",
"testharness"
],
+ "svg/painting/parsing/stroke-linecap-computed.svg": [
+ "7b5ce96ce5de296af7aed3d85f76d3ba2fee2ccf",
+ "testharness"
+ ],
"svg/painting/parsing/stroke-linecap-invalid.svg": [
"ba4bd8640e40328f1fe913f497913df3dd7f3219",
"testharness"
@@ -664246,6 +664534,10 @@
"045c4eef7c708dbb7b33a04104290be8a93bbe2d",
"testharness"
],
+ "svg/painting/parsing/stroke-linejoin-computed.svg": [
+ "a8e9aab8eb098cc17d470245bf1cedde7a2c5866",
+ "testharness"
+ ],
"svg/painting/parsing/stroke-linejoin-invalid.svg": [
"6a6c4282803ae337685c5465362c9dcf8981d354",
"testharness"
@@ -664254,6 +664546,10 @@
"876b2f67dd665c358a207fa14abfa470b787e31f",
"testharness"
],
+ "svg/painting/parsing/stroke-miterlimit-computed.svg": [
+ "d2ec631b168de1f6a53825a00aec84c281ac2ef7",
+ "testharness"
+ ],
"svg/painting/parsing/stroke-miterlimit-invalid.svg": [
"c1307dab5b8c81e3ee1c68f37750a1466b022135",
"testharness"
@@ -664263,7 +664559,7 @@
"testharness"
],
"svg/painting/parsing/stroke-opacity-computed.svg": [
- "58cb144935a378e25644c40bc5b372799a88e792",
+ "02bef376f6178062e46b5035fb856db434351dc2",
"testharness"
],
"svg/painting/parsing/stroke-opacity-invalid.svg": [
@@ -664279,7 +664575,7 @@
"testharness"
],
"svg/painting/parsing/stroke-width-computed.svg": [
- "c9284be9a13a633872d9abb670f1c4390b540030",
+ "71dead0942fc2e660f6ffe239f00ef502c1a8728",
"testharness"
],
"svg/painting/parsing/stroke-width-invalid.svg": [
@@ -664290,6 +664586,10 @@
"02bca189f74fe91088ebe913f848b80dfc24868c",
"testharness"
],
+ "svg/painting/parsing/text-rendering-computed.svg": [
+ "e37f4fed5bbbc231a0d8e0e6989f4f18893c6e6d",
+ "testharness"
+ ],
"svg/painting/parsing/text-rendering-invalid.svg": [
"92da841cad69b8cce5628439f30da5b189259094",
"testharness"
@@ -670383,7 +670683,7 @@
"support"
],
"tools/wptrunner/wptrunner/browsers/sauce.py": [
- "02cc322aa35efb8db6c7a29ce5b95080f482124e",
+ "c6863005a0fc7b48d415daaedae63e759f9b2f27",
"support"
],
"tools/wptrunner/wptrunner/browsers/sauce_setup/edge-prerun.bat": [
@@ -670591,7 +670891,7 @@
"support"
],
"tools/wptrunner/wptrunner/tests/browsers/test_sauce.py": [
- "e8542959aa2efbcdc5190afc1c906f0a6717e2c1",
+ "06a5641d50fbbaed4de9df511c567753ef1a326d",
"support"
],
"tools/wptrunner/wptrunner/tests/test_chunker.py": [
@@ -670659,7 +670959,7 @@
"support"
],
"tools/wptrunner/wptrunner/wptcommandline.py": [
- "6881477a3c04de798ee3c30edfa00384da38961a",
+ "08810fcc0272d6cf3096c5fc111014fdae85c9e6",
"support"
],
"tools/wptrunner/wptrunner/wptlogging.py": [
@@ -670719,7 +671019,7 @@
"support"
],
"tools/wptrunner/wptrunner/wptrunner.py": [
- "14f6cb9068d02ef92fe776ce8cbc2efa39f505ad",
+ "7d35c51d90987672e34b8337d381ae7949845c33",
"support"
],
"tools/wptrunner/wptrunner/wpttest.py": [
@@ -671134,6 +671434,10 @@
"80128cfbf0ebce7d878dd349fc8838b2a6469a16",
"testharness"
],
+ "trusted-types/GlobalEventHandlers-onclick.tentative.html": [
+ "6e8c560ebd1dafb4cc2b4509b2340790dade49c2",
+ "testharness"
+ ],
"trusted-types/HTMLElement-generic.tentative.html": [
"d1fafa70cd2768e7b98b5eab6da9f5eb77175fbc",
"testharness"
@@ -671158,6 +671462,30 @@
"3a880a53778acb165fd5d957eeaca22685baf2b5",
"testharness"
],
+ "trusted-types/TrustedTypePolicy-CSP-no-name.tentative.html": [
+ "2dfec26f5a0432e19fdbd139dadd3908b8acac3f",
+ "testharness"
+ ],
+ "trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.html": [
+ "22b87965614fd16d280d5a97f9150d07ccca3d3e",
+ "testharness"
+ ],
+ "trusted-types/TrustedTypePolicy-CSP.tentative.html": [
+ "1293493ec1f7780b297d2040274150f0aba32adc",
+ "testharness"
+ ],
+ "trusted-types/TrustedTypePolicy-createXXX.tentative.html": [
+ "6a0151ad9bcf7d02b6a98532ba53db509e086f83",
+ "testharness"
+ ],
+ "trusted-types/TrustedTypePolicy-exposed.tentative.html": [
+ "e671c6fb61dcb58392c9fb0ac3f4fb37a67698bf",
+ "testharness"
+ ],
+ "trusted-types/TrustedTypePolicy-name.tentative.html": [
+ "c121fe4cab50ab52a7159184bfa012e85d555768",
+ "testharness"
+ ],
"trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html": [
"a162d84cd820051d6c5868c35b58cd347b0026e5",
"testharness"
@@ -671171,7 +671499,7 @@
"testharness"
],
"trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.html": [
- "9daf20ec1869919603965942fa6a4c99925ac8e9",
+ "1293493ec1f7780b297d2040274150f0aba32adc",
"testharness"
],
"trusted-types/TrustedTypePolicyFactory-createPolicy-defaultTests.tentative.html": [
@@ -671179,7 +671507,7 @@
"testharness"
],
"trusted-types/TrustedTypePolicyFactory-createPolicy-exposedTests.tentative.html": [
- "af6e04941c3b6206602bc7f547a3b0c9ef555a11",
+ "137d0f54c8228645aaf184cc64654e1d66ffbaa6",
"testharness"
],
"trusted-types/TrustedTypePolicyFactory-createPolicy-nameTests.tentative.html": [
@@ -671219,7 +671547,7 @@
"testharness"
],
"trusted-types/block-string-assignment-to-Document-write.tentative.html": [
- "0d9ff61c9b305e193f96cebe18810d597aa75158",
+ "5fa0b194df60c28dad98da828f5d22694d966e0f",
"testharness"
],
"trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.tentative.html": [
@@ -671231,7 +671559,7 @@
"testharness"
],
"trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html": [
- "646997de472ec98491d2d17fc65aeb77c999c03b",
+ "4d06f014f2934a218b9e54be40fa14b95e0b51a7",
"testharness"
],
"trusted-types/block-string-assignment-to-Element-setAttributeNS.tentative.html": [
@@ -671243,15 +671571,15 @@
"testharness"
],
"trusted-types/block-string-assignment-to-Location-assign.tentative.html": [
- "4ad4af9df5ae86b0bc2ab82d3b5ae062b88d70f6",
+ "4c295ffa284acb21436f06ecbf06ac4073365efe",
"testharness"
],
"trusted-types/block-string-assignment-to-Location-href.tentative.html": [
- "fd0a4e5ea0e53c5b85f0bfb6d092c4cd63ceb790",
+ "86bce7994d6e9e43bddc590519126f4ee266cf06",
"testharness"
],
"trusted-types/block-string-assignment-to-Location-replace.tentative.html": [
- "9b8cabe58359e664e1ad9d8c43f604f88c7b3784",
+ "aa3af64e12b1d2b296e8dedd40b9cef749b1431c",
"testharness"
],
"trusted-types/block-string-assignment-to-Range-createContextualFragment.tentative.html": [
@@ -671267,7 +671595,7 @@
"testharness"
],
"trusted-types/support/helper.sub.js": [
- "9ad605975555df539e6444d3b8935197c7925aef",
+ "bae9d2dc7aa963271bdcc6ae72e4064f10ab8d05",
"support"
],
"trusted-types/support/worker.js": [
diff --git a/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-break-word-span-001.html.ini b/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-break-word-span-001.html.ini
new file mode 100644
index 00000000000..83b12ab7bbe
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-break-word-span-001.html.ini
@@ -0,0 +1,2 @@
+[overflow-wrap-break-word-span-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-break-word-span-002.html.ini b/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-break-word-span-002.html.ini
new file mode 100644
index 00000000000..296d7fc187d
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-break-word-span-002.html.ini
@@ -0,0 +1,4 @@
+[overflow-wrap-break-word-span-002.html]
+ [#container 1]
+ 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 6a14d55c4bf..7babafb1e4a 100644
--- a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
+++ b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
@@ -612,5 +612,23 @@
[windows-1254: iso8859-9 (XMLHttpRequest)]
expected: TIMEOUT
+ [windows-1253: x-cp1253 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1254: cp1254 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1253: cp1253 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1252: x-cp1252 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1252: windows-1252 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1252: us-ascii (XMLHttpRequest)]
+ expected: TIMEOUT
+
[single-byte-decoder.html?TextDecoder]
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
deleted file mode 100644
index 75d75b4cda2..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_2.html]
- [Multiple history traversals, last would be aborted]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
deleted file mode 100644
index dc2e45516de..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_5.html]
- [Multiple history traversals, last would be aborted]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
index 6b57ca778ee..d1f06eba410 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
@@ -8,12 +8,9 @@
expected: TIMEOUT
[picture: source (max-width:500px) valid image, img broken image, resize to narrow]
- expected: TIMEOUT
-
- [picture: source (max-width:500px) valid image, img valid image, resize to narrow]
expected: FAIL
- [picture: source (max-width:500px) broken image, img valid image, resize to narrow]
+ [picture: source (max-width:500px) valid image, img valid image, resize to narrow]
expected: FAIL
[img (srcset 1 cand) valid image, resize to narrow]
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini
index a0e0184eb46..ba527d2f01b 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini
@@ -1,4 +1,5 @@
[parse-a-sizes-attribute-quirks-mode.html]
+ expected: TIMEOUT
[<img srcset="/images/green-1x1.png?e38b 50w, /images/green-16x16.png?e38b 51w" sizes="(min-width:max(-200vw, 0)) 1px"> ref sizes="1px" (quirks mode)]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini b/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini
deleted file mode 100644
index 9e522297c94..00000000000
--- a/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[toggleEvent.html]
- [Calling open twice on 'details' fires only one toggle event]
- expected: FAIL
-
- [Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
deleted file mode 100644
index a9677391662..00000000000
--- a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[DOMContentLoaded-defer.html]
- [The end: DOMContentLoaded and defer scripts]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini
index c6d49957c4a..ce482a60da8 100644
--- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini
+++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini
@@ -2,3 +2,6 @@
[document.open() after parser is aborted]
expected: FAIL
+ [async document.open() after parser is aborted]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/quirks/unitless-length/limited-quirks.html.ini b/tests/wpt/metadata/quirks/unitless-length/limited-quirks.html.ini
deleted file mode 100644
index c7e9c7434f5..00000000000
--- a/tests/wpt/metadata/quirks/unitless-length/limited-quirks.html.ini
+++ /dev/null
@@ -1,283 +0,0 @@
-[limited-quirks.html]
- [top: -\\31 .5]
- expected: FAIL
-
- [bottom: -1A]
- expected: FAIL
-
- [bottom: -1a]
- expected: FAIL
-
- [top: @1]
- expected: FAIL
-
- [top: "1a"]
- expected: FAIL
-
- [top: @a]
- expected: FAIL
-
- [bottom: "1"]
- expected: FAIL
-
- [bottom: -/**/1]
- expected: FAIL
-
- [top: +/**/1]
- expected: FAIL
-
- [bottom: @1a]
- expected: FAIL
-
- [top: 1\\31 ]
- expected: FAIL
-
- [top: url('1')]
- expected: FAIL
-
- [bottom: -\\31 ]
- expected: FAIL
-
- [top: calc(1)]
- expected: FAIL
-
- [top: \\31 ]
- expected: FAIL
-
- [bottom: +1\\31 ]
- expected: FAIL
-
- [bottom: 1\\31 .5]
- expected: FAIL
-
- [bottom: #0001]
- expected: FAIL
-
- [top: calc(2 * 2px)]
- expected: FAIL
-
- [bottom: 1a]
- expected: FAIL
-
- [bottom: A]
- expected: FAIL
-
- [bottom: #01]
- expected: FAIL
-
- [top: +\\31 .5]
- expected: FAIL
-
- [bottom: #1]
- expected: FAIL
-
- [top: -/**/1]
- expected: FAIL
-
- [bottom: +\\31 .5]
- expected: FAIL
-
- [bottom: \\31 ]
- expected: FAIL
-
- [bottom: calc(1)]
- expected: FAIL
-
- [top: #001]
- expected: FAIL
-
- [top: +\\31 ]
- expected: FAIL
-
- [bottom: +\\31 ]
- expected: FAIL
-
- [top: +1.5]
- expected: FAIL
-
- [top: +1\\31 ]
- expected: FAIL
-
- [bottom: @a]
- expected: FAIL
-
- [bottom: @1]
- expected: FAIL
-
- [top: #1]
- expected: FAIL
-
- [top: 1a]
- expected: FAIL
-
- [bottom: +1a]
- expected: FAIL
-
- [bottom: +1A]
- expected: FAIL
-
- [bottom: "a"]
- expected: FAIL
-
- [top: #00001]
- expected: FAIL
-
- [bottom: -1\\31 .5]
- expected: FAIL
-
- [top: "1"]
- expected: FAIL
-
- [bottom: 1.5]
- expected: FAIL
-
- [bottom: -\\31 .5]
- expected: FAIL
-
- [bottom: url('1')]
- expected: FAIL
-
- [bottom: -1.5]
- expected: FAIL
-
- [top: \\31 .5]
- expected: FAIL
-
- [bottom: "1a"]
- expected: FAIL
-
- [bottom: calc(2 * 2px)]
- expected: FAIL
-
- [bottom: +1\\31 .5]
- expected: FAIL
-
- [bottom: 1\\31 ]
- expected: FAIL
-
- [bottom: +/**/1]
- expected: FAIL
-
- [bottom: #00001]
- expected: FAIL
-
- [top: url(1)]
- expected: FAIL
-
- [bottom: #001]
- expected: FAIL
-
- [top: +1\\31 .5]
- expected: FAIL
-
- [top: -1a]
- expected: FAIL
-
- [top: -1A]
- expected: FAIL
-
- [bottom: url(1)]
- expected: FAIL
-
- [top: a]
- expected: FAIL
-
- [top: A]
- expected: FAIL
-
- [top: #000001]
- expected: FAIL
-
- [top: 1]
- expected: FAIL
-
- [top: 1\\31 .5]
- expected: FAIL
-
- [bottom: a]
- expected: FAIL
-
- [bottom: 1]
- expected: FAIL
-
- [bottom: +1]
- expected: FAIL
-
- [bottom: #000001]
- expected: FAIL
-
- [bottom: +a]
- expected: FAIL
-
- [bottom: +A]
- expected: FAIL
-
- [top: 1.5]
- expected: FAIL
-
- [top: +A]
- expected: FAIL
-
- [top: +a]
- expected: FAIL
-
- [top: +1]
- expected: FAIL
-
- [top: -1.5]
- expected: FAIL
-
- [top: -1\\31 .5]
- expected: FAIL
-
- [top: +1a]
- expected: FAIL
-
- [top: +1A]
- expected: FAIL
-
- [top: @1a]
- expected: FAIL
-
- [bottom: \\31 .5]
- expected: FAIL
-
- [top: "a"]
- expected: FAIL
-
- [top: #01]
- expected: FAIL
-
- [bottom: +1.5]
- expected: FAIL
-
- [bottom: -A]
- expected: FAIL
-
- [bottom: -a]
- expected: FAIL
-
- [bottom: -1\\31 ]
- expected: FAIL
-
- [top: #0001]
- expected: FAIL
-
- [bottom: -1]
- expected: FAIL
-
- [top: -\\31 ]
- expected: FAIL
-
- [top: -A]
- expected: FAIL
-
- [top: -a]
- expected: FAIL
-
- [top: -1]
- expected: FAIL
-
- [top: -1\\31 ]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/quirks/unitless-length/no-quirks.html.ini b/tests/wpt/metadata/quirks/unitless-length/no-quirks.html.ini
deleted file mode 100644
index 818a429ed39..00000000000
--- a/tests/wpt/metadata/quirks/unitless-length/no-quirks.html.ini
+++ /dev/null
@@ -1,283 +0,0 @@
-[no-quirks.html]
- [top: -\\31 .5]
- expected: FAIL
-
- [bottom: -1A]
- expected: FAIL
-
- [bottom: -1a]
- expected: FAIL
-
- [top: @1]
- expected: FAIL
-
- [top: "1a"]
- expected: FAIL
-
- [top: @a]
- expected: FAIL
-
- [bottom: "1"]
- expected: FAIL
-
- [bottom: -/**/1]
- expected: FAIL
-
- [top: +/**/1]
- expected: FAIL
-
- [bottom: @1a]
- expected: FAIL
-
- [top: 1\\31 ]
- expected: FAIL
-
- [top: url('1')]
- expected: FAIL
-
- [bottom: -\\31 ]
- expected: FAIL
-
- [top: calc(1)]
- expected: FAIL
-
- [top: \\31 ]
- expected: FAIL
-
- [bottom: +1\\31 ]
- expected: FAIL
-
- [bottom: 1\\31 .5]
- expected: FAIL
-
- [bottom: #0001]
- expected: FAIL
-
- [top: calc(2 * 2px)]
- expected: FAIL
-
- [bottom: 1a]
- expected: FAIL
-
- [bottom: A]
- expected: FAIL
-
- [bottom: #01]
- expected: FAIL
-
- [top: +\\31 .5]
- expected: FAIL
-
- [bottom: #1]
- expected: FAIL
-
- [top: -/**/1]
- expected: FAIL
-
- [bottom: +\\31 .5]
- expected: FAIL
-
- [bottom: \\31 ]
- expected: FAIL
-
- [bottom: calc(1)]
- expected: FAIL
-
- [top: #001]
- expected: FAIL
-
- [top: +\\31 ]
- expected: FAIL
-
- [bottom: +\\31 ]
- expected: FAIL
-
- [top: +1.5]
- expected: FAIL
-
- [top: +1\\31 ]
- expected: FAIL
-
- [bottom: @a]
- expected: FAIL
-
- [bottom: @1]
- expected: FAIL
-
- [top: #1]
- expected: FAIL
-
- [top: 1a]
- expected: FAIL
-
- [bottom: +1a]
- expected: FAIL
-
- [bottom: +1A]
- expected: FAIL
-
- [bottom: "a"]
- expected: FAIL
-
- [top: #00001]
- expected: FAIL
-
- [bottom: -1\\31 .5]
- expected: FAIL
-
- [top: "1"]
- expected: FAIL
-
- [bottom: 1.5]
- expected: FAIL
-
- [bottom: -\\31 .5]
- expected: FAIL
-
- [bottom: url('1')]
- expected: FAIL
-
- [bottom: -1.5]
- expected: FAIL
-
- [top: \\31 .5]
- expected: FAIL
-
- [bottom: "1a"]
- expected: FAIL
-
- [bottom: calc(2 * 2px)]
- expected: FAIL
-
- [bottom: +1\\31 .5]
- expected: FAIL
-
- [bottom: 1\\31 ]
- expected: FAIL
-
- [bottom: +/**/1]
- expected: FAIL
-
- [bottom: #00001]
- expected: FAIL
-
- [top: url(1)]
- expected: FAIL
-
- [bottom: #001]
- expected: FAIL
-
- [top: +1\\31 .5]
- expected: FAIL
-
- [top: -1a]
- expected: FAIL
-
- [top: -1A]
- expected: FAIL
-
- [bottom: url(1)]
- expected: FAIL
-
- [top: a]
- expected: FAIL
-
- [top: A]
- expected: FAIL
-
- [top: #000001]
- expected: FAIL
-
- [top: 1]
- expected: FAIL
-
- [top: 1\\31 .5]
- expected: FAIL
-
- [bottom: a]
- expected: FAIL
-
- [bottom: 1]
- expected: FAIL
-
- [bottom: +1]
- expected: FAIL
-
- [bottom: #000001]
- expected: FAIL
-
- [bottom: +a]
- expected: FAIL
-
- [bottom: +A]
- expected: FAIL
-
- [top: 1.5]
- expected: FAIL
-
- [top: +A]
- expected: FAIL
-
- [top: +a]
- expected: FAIL
-
- [top: +1]
- expected: FAIL
-
- [top: -1.5]
- expected: FAIL
-
- [top: -1\\31 .5]
- expected: FAIL
-
- [top: +1a]
- expected: FAIL
-
- [top: +1A]
- expected: FAIL
-
- [top: @1a]
- expected: FAIL
-
- [bottom: \\31 .5]
- expected: FAIL
-
- [top: "a"]
- expected: FAIL
-
- [top: #01]
- expected: FAIL
-
- [bottom: +1.5]
- expected: FAIL
-
- [bottom: -A]
- expected: FAIL
-
- [bottom: -a]
- expected: FAIL
-
- [bottom: -1\\31 ]
- expected: FAIL
-
- [top: #0001]
- expected: FAIL
-
- [bottom: -1]
- expected: FAIL
-
- [top: -\\31 ]
- expected: FAIL
-
- [top: -A]
- expected: FAIL
-
- [top: -a]
- expected: FAIL
-
- [top: -1]
- expected: FAIL
-
- [top: -1\\31 ]
- expected: FAIL
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/percentage-min-width.html b/tests/wpt/web-platform-tests/css/css-sizing/percentage-min-width.html
new file mode 100644
index 00000000000..11c34eafc32
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-sizing/percentage-min-width.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-sizing-3/#sizing-values">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div id="container" data-expected-width="100" style="width:fit-content; min-width:100px; height:100px; background:red;">
+ <div data-expected-width="100" style="width:fit-content; min-width:100%; height:100px; background:green;"></div>
+</div>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<script>
+ checkLayout("#container");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-004.html b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-004.html
index 560ef63b2f9..b277319cd23 100644
--- a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-004.html
+++ b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-004.html
@@ -8,9 +8,10 @@
<meta name="assert" content="A Single leading white-space constitutes a soft breaking opportunity, honoring the 'white-space: pre-wrap' property, that must prevent the word to be broken.">
<style>
div {
- position: relative;
- font-size: 20px;
- font-family: Ahem;
+ position: relative;
+ font-size: 20px;
+ font-family: Ahem;
+ line-height: 1em;
}
.red {
position: absolute;
@@ -22,7 +23,6 @@ div {
}
.test {
color: green;
- line-height: 1em;
width: 5ch;
white-space: pre-wrap;
diff --git a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-005.html b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-005.html
index 3ef61bc9eff..dd005a816f2 100644
--- a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-005.html
+++ b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-005.html
@@ -9,9 +9,10 @@
<meta name="assert" content="A Single leading white-space constitutes a soft breaking opportunity, honoring the 'white-space: pre-wrap' property, that must prevent the word to be broken.">
<style>
div {
- position: relative;
- font-size: 20px;
- font-family: Ahem;
+ position: relative;
+ font-size: 20px;
+ font-family: Ahem;
+ line-height: 1em;
}
.fail {
position: absolute;
@@ -21,7 +22,6 @@ div {
span { color: green; }
.test {
color: green;
- line-height: 1em;
width: 5ch;
white-space: pre-wrap;
diff --git a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-span-001.html b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-span-001.html
new file mode 100644
index 00000000000..0565b8bb75d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-span-001.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<title>CSS Text Test: overflow-wrap: break-word</title>
+<link rel="author" title="Koji Ishii" href="kojii@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-overflow-wrap-break-word">
+<link rel="match" href="reference/overflow-wrap-break-word-span-001-ref.html">
+<meta name="assert" content="Test when the `break-word` value is applied to an inline element.">
+<style>
+div {
+ font-size: 10px;
+ line-height: 1;
+ width: 8ch;
+}
+span {
+ word-wrap: break-word;
+}
+</style>
+<div>12345<span>67890</span></div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-span-002.html b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-span-002.html
new file mode 100644
index 00000000000..39426d04202
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-span-002.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<title>CSS Text Test: overflow-wrap: break-word</title>
+<link rel="author" title="Koji Ishii" href="kojii@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-overflow-wrap-break-word">
+<meta name="assert" content="Test when the `break-word` value is applied to an inline element.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script><style>
+div {
+ font-size: 10px;
+ line-height: 1;
+ width: 5ch;
+}
+span {
+ word-wrap: break-word;
+}
+</style>
+<div id=container data-expected-height=20>12345678<span>90</span></div>
+
+<script>
+checkLayout('#container')
+</script> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/reference/overflow-wrap-break-word-span-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/reference/overflow-wrap-break-word-span-001-ref.html
new file mode 100644
index 00000000000..0264bcf322f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/reference/overflow-wrap-break-word-span-001-ref.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<style>
+div {
+ font-size: 10px;
+ line-height: 1;
+}
+</style>
+<div>12345678<br>90</div>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-suppress-baseline-002.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-suppress-baseline-002.html
index eb791427c0c..845290768ac 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-suppress-baseline-002.html
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-suppress-baseline-002.html
@@ -6,7 +6,7 @@
<link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
<link rel="help" href="https://drafts.csswg.org/css-contain/#containment-layout">
<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#valdef-align-items-baseline">
- <link rel="match" href="contain-layout-suppress-baseline-001-ref.html">
+ <link rel="match" href="contain-layout-suppress-baseline-002-ref.html">
<style>
.flexBaselineCheck {
display: flex;
diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/testharness.md b/tests/wpt/web-platform-tests/docs/_writing-tests/testharness.md
index 9c21452607e..c19fe0ee881 100644
--- a/tests/wpt/web-platform-tests/docs/_writing-tests/testharness.md
+++ b/tests/wpt/web-platform-tests/docs/_writing-tests/testharness.md
@@ -32,7 +32,7 @@ for example:
The test can then do different things based on the URL.
There are two utility scripts in that work well together with variants,
-`/common /subset-tests.js` and `/common/subset-tests-by- key.js`, where
+`/common/subset-tests.js` and `/common/subset-tests-by-key.js`, where
a test that would otherwise have too many tests to be useful can be
split up in ranges of subtests. For example:
diff --git a/tests/wpt/web-platform-tests/event-timing/event-timing-bufferbeforeonload.html b/tests/wpt/web-platform-tests/event-timing/event-timing-bufferbeforeonload.html
index 223f5ed0fb5..22fc4d547b9 100644
--- a/tests/wpt/web-platform-tests/event-timing/event-timing-bufferbeforeonload.html
+++ b/tests/wpt/web-platform-tests/event-timing/event-timing-bufferbeforeonload.html
@@ -65,12 +65,22 @@
async_test(function(t) {
clickTimeMin = performance.now();
clickAndBlockMain('button');
+ // Use a dummy observer to know when both clicks have been dispatched.
+ const observerPromise = new Promise((resolve, reject) => {
+ let entryCount = 0;
+ new PerformanceObserver(entryList => {
+ entryCount += entryList.getEntries().length;
+ if (entryCount >= 2)
+ resolve();
+ }).observe({ entryTypes: ['event'] });
+ });
// Event handlers will be dispatched asynchronously, so this will be called
// before processing begins.
processingStartMin = performance.now();
on_event(window, 'load', e => {
onloadStart = performance.now();
- clickAndBlockMain('button').then(wait).then(
+ const clickPromise = clickAndBlockMain('button');
+ Promise.all([observerPromise, clickPromise]).then(
t.step_func_done(validateEntries));
});
}, "Event Timing: click, onload.");
diff --git a/tests/wpt/web-platform-tests/event-timing/event-timing-onloadthenobserve-firstInput.html b/tests/wpt/web-platform-tests/event-timing/event-timing-onloadthenobserve-firstInput.html
index 16f48411f9f..22ac4cb45e9 100644
--- a/tests/wpt/web-platform-tests/event-timing/event-timing-onloadthenobserve-firstInput.html
+++ b/tests/wpt/web-platform-tests/event-timing/event-timing-onloadthenobserve-firstInput.html
@@ -31,8 +31,8 @@
if (numEventsObserved >= 2) {
assert_equals(performance.getEntriesByType('event').length, 0,
"There should be no buffered event entries.");
- assert_equals(performance.getEntriesByType('firstInput').length, 0,
- "There should be no buffered firstInput entries.");
+ assert_equals(performance.getEntriesByType('firstInput').length, 1,
+ "There should be a buffered firstInput entry.");
// There should be 2 event entries and one firstInput entry.
assert_equals(numEventsObserved, 2,
"There should be 2 observed event entries.");
@@ -42,8 +42,8 @@
}
})).observe({ entryTypes: ['event', 'firstInput'] });
on_event(window, 'load', () => {
- clickAndBlockMain('button').then(wait).then(() => {
- clickAndBlockMain('button').then(wait);
+ clickAndBlockMain('button').then(() => {
+ clickAndBlockMain('button');
});
});
},
diff --git a/tests/wpt/web-platform-tests/event-timing/event-timing-onloadthenobserve.html b/tests/wpt/web-platform-tests/event-timing/event-timing-onloadthenobserve.html
index 7dc113247cd..07cc236cb47 100644
--- a/tests/wpt/web-platform-tests/event-timing/event-timing-onloadthenobserve.html
+++ b/tests/wpt/web-platform-tests/event-timing/event-timing-onloadthenobserve.html
@@ -61,16 +61,22 @@ registration are lost
(Dispatch and Process Click 2 (not buffered, observed))
*/
async_test(function(t) {
- on_event(window, 'load', () => {
- clickAndBlockMain('button').then(() => {
- startObserver(t);
- clickAndBlockMain('button').then(wait);
- processingStartMin = performance.now();
- });
+ // Use a dummy observer to know when the first click has been dispatched.
+ const observerPromise = new Promise((resolve, reject) => {
+ new PerformanceObserver((entryList, observer) => {
+ resolve();
+ observer.disconnect();
+ }).observe({ entryTypes: ['event'] });
+ });
+ on_event(window, 'load', () => {
+ const clickPromise = clickAndBlockMain('button');
+ Promise.all([observerPromise, clickPromise]).then(() => {
+ startObserver(t);
+ clickAndBlockMain('button');
+ processingStartMin = performance.now();
});
- },
- "Event Timing: onload, click, observer, click."
- );
+ });
+ },"Event Timing: onload, click, observer, click.");
</script>
</html>
diff --git a/tests/wpt/web-platform-tests/event-timing/event-timing-retrieve-firstInput.html b/tests/wpt/web-platform-tests/event-timing/event-timing-retrieve-firstInput.html
new file mode 100644
index 00000000000..ded00e61c75
--- /dev/null
+++ b/tests/wpt/web-platform-tests/event-timing/event-timing-retrieve-firstInput.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8 />
+<title>Event Timing: firstInput entry should be buffered even without observer</title>
+<button id='button'>Generate a 'click' event</button>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/resources/testdriver.js></script>
+<script src=/resources/testdriver-vendor.js></script>
+
+<script src=resources/event-timing-support.js></script>
+
+<script>
+ async_test(function(t) {
+ function testEntries() {
+ // First callback is not ensured to have the entry.
+ if (performance.getEntriesByType('firstInput').length === 0) {
+ t.step_timeout(testEntries, 10);
+ return;
+ }
+ assert_equals(performance.getEntriesByType('firstInput').length, 1,
+ "There should be a firstInput entry in the performance timeline");
+ const entry = performance.getEntriesByType('firstInput')[0];
+ assert_equals(entry.name, 'click');
+ assert_equals(entry.entryType, 'firstInput');
+ assert_greater_than(entry.duration, 50,
+ "The first input was a long one.");
+ t.done();
+ }
+ clickAndBlockMain('button').then(wait).then(t.step_func(testEntries));
+ },
+ "Event Timing: check firstInput after onload, observer, click, click."
+ );
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/event-timing/idlharness.any.js b/tests/wpt/web-platform-tests/event-timing/idlharness.any.js
new file mode 100644
index 00000000000..5ee98548fb6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/event-timing/idlharness.any.js
@@ -0,0 +1,18 @@
+// META: global=window,worker
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+
+// https://wicg.github.io/event-timing/
+
+'use strict';
+
+idl_test(
+ ['event-timing'],
+ ['performance-timeline', 'hr-time', 'dom'],
+ idl_array => {
+ idl_array.add_objects({
+ Performance: ['performance'],
+ // PerformanceEventTiming: [ TODO ]
+ });
+ }
+);
diff --git a/tests/wpt/web-platform-tests/interfaces/event-timing.idl b/tests/wpt/web-platform-tests/interfaces/event-timing.idl
new file mode 100644
index 00000000000..0e12737bcc6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/interfaces/event-timing.idl
@@ -0,0 +1,18 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into reffy-reports
+// (https://github.com/tidoust/reffy-reports)
+// Source: Event Timing API (https://wicg.github.io/event-timing/)
+
+interface PerformanceEventTiming : PerformanceEntry {
+ readonly attribute DOMHighResTimeStamp processingStart;
+ readonly attribute DOMHighResTimeStamp processingEnd;
+ readonly attribute boolean cancelable;
+};
+
+interface EventCounts {
+ readonly maplike<DOMString, unsigned long>;
+};
+
+partial interface Performance {
+ readonly attribute EventCounts eventCounts;
+};
diff --git a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
index 699a31623a3..d54773be499 100644
--- a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
+++ b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
@@ -28,12 +28,12 @@ partial interface Navigator {
[SecureContext, SameObject] readonly attribute NFC nfc;
};
-typedef (DOMString or ArrayBuffer or NFCMessage) NFCPushMessage;
+typedef (DOMString or ArrayBuffer or NFCMessage) NFCMessageSource;
[SecureContext]
interface NFC {
- Promise<void> push(NFCPushMessage message, optional NFCPushOptions options);
- Promise<long> watch(MessageCallback callback, optional NFCWatchOptions options);
+ Promise<void> push(NFCMessageSource message, optional NFCPushOptions options);
+ Promise<void> watch(MessageCallback callback, optional NFCWatchOptions options);
};
callback MessageCallback = void (NFCMessage message);
diff --git a/tests/wpt/web-platform-tests/interfaces/webxr.idl b/tests/wpt/web-platform-tests/interfaces/webxr.idl
index 5561369931f..7f7b43c222b 100644
--- a/tests/wpt/web-platform-tests/interfaces/webxr.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webxr.idl
@@ -45,7 +45,7 @@ enum XREnvironmentBlendMode {
attribute XRLayer baseLayer;
// Methods
- Promise<XRFrameOfReference> requestFrameOfReference(XRFrameOfReferenceType type, optional XRFrameOfReferenceOptions options);
+ Promise<XRReferenceSpace> requestReferenceSpace(XRReferenceSpaceType type, optional XRReferenceSpaceOptions options);
FrozenArray<XRInputSource> getInputSources();
@@ -57,7 +57,6 @@ enum XREnvironmentBlendMode {
// Events
attribute EventHandler onblur;
attribute EventHandler onfocus;
- attribute EventHandler onresetpose;
attribute EventHandler onend;
attribute EventHandler onselect;
attribute EventHandler oninputsourceschange;
@@ -70,34 +69,51 @@ callback XRFrameRequestCallback = void (DOMHighResTimeStamp time, XRFrame frame)
[SecureContext, Exposed=Window] interface XRFrame {
readonly attribute XRSession session;
- XRViewerPose? getViewerPose(XRFrameOfReference frameOfRef);
- XRInputPose? getInputPose(XRInputSource inputSource, XRFrameOfReference frameOfRef);
+ XRViewerPose? getViewerPose(optional XRReferenceSpace referenceSpace);
+ XRInputPose? getInputPose(XRInputSource inputSource, optional XRReferenceSpace referenceSpace);
};
-[SecureContext, Exposed=Window] interface XRCoordinateSystem : EventTarget {
- Float32Array? getTransformTo(XRCoordinateSystem other);
+[SecureContext, Exposed=Window] interface XRSpace : EventTarget {
+ Float32Array? getTransformTo(XRSpace other);
};
-enum XRFrameOfReferenceType {
- "head-model",
+enum XRReferenceSpaceType {
+ "stationary",
+ "bounded",
+ "unbounded"
+};
+
+dictionary XRReferenceSpaceOptions {
+ required XRReferenceSpaceType type;
+};
+
+[SecureContext, Exposed=Window] interface XRReferenceSpace : XRSpace {
+ attribute EventHandler onreset;
+};
+
+enum XRStationaryReferenceSpaceSubtype {
"eye-level",
- "stage",
+ "floor-level",
+ "position-disabled"
};
-dictionary XRFrameOfReferenceOptions {
- boolean disableStageEmulation = false;
- double stageEmulationHeight = 0.0;
+dictionary XRStationaryReferenceSpaceOptions : XRReferenceSpaceOptions {
+ required XRStationaryReferenceSpaceSubtype subtype;
};
-[SecureContext, Exposed=Window] interface XRFrameOfReference : XRCoordinateSystem {
- readonly attribute XRStageBounds? bounds;
- readonly attribute double emulatedHeight;
+[SecureContext, Exposed=Window]
+interface XRStationaryReferenceSpace : XRReferenceSpace {
+ readonly attribute XRStationaryReferenceSpaceSubtype subtype;
+};
- attribute EventHandler onboundschange;
+[SecureContext, Exposed=Window]
+interface XRBoundedReferenceSpace : XRReferenceSpace {
+ readonly attribute FrozenArray<DOMPointReadOnly> boundsGeometry;
};
-[SecureContext, Exposed=Window] interface XRStageBounds {
- readonly attribute FrozenArray<DOMPointReadOnly> geometry;
+[SecureContext, Exposed=Window]
+
+interface XRUnboundedReferenceSpace : XRReferenceSpace {
};
enum XREye {
@@ -224,11 +240,13 @@ dictionary XRInputSourceEventInit : EventInit {
required XRInputSource inputSource;
};
-[SecureContext, Exposed=Window, Constructor(DOMString type, XRCoordinateSystemEventInit eventInitDict)]
-interface XRCoordinateSystemEvent : Event {
- readonly attribute XRCoordinateSystem coordinateSystem;
+[SecureContext, Exposed=Window, Constructor(DOMString type, XRReferenceSpaceEventInit eventInitDict)]
+interface XRReferenceSpaceEvent : Event {
+ readonly attribute XRReferenceSpace referenceSpace;
+ readonly attribute Float32Array? transformMatrix;
};
-dictionary XRCoordinateSystemEventInit : EventInit {
- required XRCoordinateSystem coordinateSystem;
+dictionary XRReferenceSpaceEventInit : EventInit {
+ required XRReferenceSpace referenceSpace;
+ Float32Array transformMatrix;
};
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https.html
index 397cb81d546..f8ff445673b 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https.html
@@ -30,14 +30,19 @@ promise_test(function(t) {
return new Promise(function(resolve, reject) {
var channel = new MessageChannel();
- channel.port1.onmessage = resolve;
+ channel.port1.onmessage = (event) => {
+ if (event.data === 'done') {
+ resolve();
+ return;
+ }
+ test(() => {
+ assert_true(event.data.result);
+ }, event.data.testName);
+ };
frame.contentWindow.postMessage({},
host_info['HTTPS_ORIGIN'],
[channel.port2]);
});
- })
- .then(function(e) {
- assert_equals(e.data.results, 'finish');
});
}, 'Verify CORS XHR of fetch() in a Service Worker');
</script>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-cors-xhr-iframe.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-cors-xhr-iframe.html
index 51952a988ef..d88c5103d35 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-cors-xhr-iframe.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-cors-xhr-iframe.html
@@ -26,38 +26,10 @@ function create_test_case_promise(url, with_credentials) {
});
}
-function create_test_promise(url, with_credentials, expected_result) {
- return new Promise(function(resolve, reject) {
- create_test_case_promise(url, with_credentials)
- .then(function(result) {
- if (result == expected_result) {
- resolve();
- } else {
- reject('Result of url:' + url + ' ' +
- ' with_credentials: ' + with_credentials + ' must be ' +
- expected_result + ' but ' + result);
- }
- })
- });
-}
-
-function create_serial_promise(test_cases) {
- var promise = Promise.resolve();
- test_cases.forEach(function(test_case) {
- promise = promise.then(function() {
- return create_test_promise(test_case[0], test_case[1], test_case[2]);
- });
- });
- return promise;
-}
-
-window.addEventListener('message', function(evt) {
+window.addEventListener('message', async (evt) => {
var port = evt.ports[0];
var url = host_info['HTTPS_ORIGIN'] + path;
var remote_url = host_info['HTTPS_REMOTE_ORIGIN'] + path;
- // If the 4th value of the item of TEST_CASES is true, the test case outputs
- // warning messages. So such tests must be executed in serial to match the
- // expected output text.
var TEST_CASES = [
// Reject tests
[url + '?reject', false, FAIL],
@@ -95,8 +67,8 @@ window.addEventListener('message', function(evt) {
// Credential test (fallback)
[url + '?Auth&ignore', false, SUCCESS],
[url + '?Auth&ignore', true, SUCCESS],
- [remote_url + '?Auth&ignore', false, FAIL, true], // Executed in serial.
- [remote_url + '?Auth&ignore', true, FAIL, true], // Executed in serial.
+ [remote_url + '?Auth&ignore', false, FAIL],
+ [remote_url + '?Auth&ignore', true, FAIL],
[
remote_url + '?Auth&ACAOrigin=' + host_info['HTTPS_ORIGIN'] + '&ignore',
false, 'STATUS401'
@@ -186,24 +158,13 @@ window.addEventListener('message', function(evt) {
true, SUCCESS
]
];
- var promises = [];
- var serial_tests = [];
- for (var i = 0; i < TEST_CASES.length ; ++i) {
- if (!TEST_CASES[i][3]) {
- promises.push(create_test_promise(TEST_CASES[i][0],
- TEST_CASES[i][1],
- TEST_CASES[i][2]));
- } else {
- serial_tests.push(TEST_CASES[i]);
- }
+
+ let counter = 0;
+ for (let test of TEST_CASES) {
+ let result = await create_test_case_promise(test[0], test[1]);
+ let testName = 'test ' + (++counter) + ': ' + test[0] + ' with credentials ' + test[1] + ' must be ' + test[2];
+ port.postMessage({testName: testName, result: result === test[2]});
}
- promises.push(create_serial_promise(serial_tests));
- Promise.all(promises)
- .then(function() {
- port.postMessage({results: 'finish'});
- })
- .catch(function(e) {
- port.postMessage({results: 'failure:' + e});
- });
+ port.postMessage('done');
}, false);
</script>
diff --git a/tests/wpt/web-platform-tests/storage/estimate-indexeddb.https.any.js b/tests/wpt/web-platform-tests/storage/estimate-indexeddb.https.any.js
index 3e34ad19bab..c62f5a96c1a 100644
--- a/tests/wpt/web-platform-tests/storage/estimate-indexeddb.https.any.js
+++ b/tests/wpt/web-platform-tests/storage/estimate-indexeddb.https.any.js
@@ -1,92 +1,101 @@
// META: title=StorageManager: estimate() for indexeddb
+function indexedDbOpenRequest(t, dbname, upgrade_func) {
+ return new Promise((resolve, reject) => {
+ const openRequest = indexedDB.open(dbname);
+ t.add_cleanup(() => {
+ indexedDbDeleteRequest(dbname);
+ });
+
+ openRequest.onerror = () => {
+ reject(openRequest.error);
+ };
+ openRequest.onsuccess = () => {
+ resolve(openRequest.result);
+ };
+ openRequest.onupgradeneeded = event => {
+ upgrade_func(openRequest.result);
+ };
+ });
+}
+
+function indexedDbDeleteRequest(name) {
+ return new Promise((resolve, reject) => {
+ const deleteRequest = indexedDB.deleteDatabase(name);
+ deleteRequest.onerror = () => {
+ reject(deleteRequest.error);
+ };
+ deleteRequest.onsuccess = () => {
+ resolve();
+ };
+ });
+}
+
+function transactionPromise(txn) {
+ return new Promise((resolve, reject) => {
+ txn.onabort = () => {
+ reject(txn.error);
+ };
+ txn.oncomplete = () => {
+ resolve();
+ };
+ });
+}
+
test(t => {
assert_true('estimate' in navigator.storage);
assert_equals(typeof navigator.storage.estimate, 'function');
assert_true(navigator.storage.estimate() instanceof Promise);
}, 'estimate() method exists and returns a Promise');
-promise_test(t => {
- return navigator.storage.estimate().then(result => {
- assert_true(typeof result === 'object');
- assert_true('usage' in result);
- assert_equals(typeof result.usage, 'number');
- assert_true('quota' in result);
- assert_equals(typeof result.quota, 'number');
- });
+promise_test(async t => {
+ const estimate = await navigator.storage.estimate();
+ assert_true(typeof estimate === 'object');
+ assert_true('usage' in estimate);
+ assert_equals(typeof estimate.usage, 'number');
+ assert_true('quota' in estimate);
+ assert_equals(typeof estimate.quota, 'number');
}, 'estimate() resolves to dictionary with members');
-promise_test(t => {
+promise_test(async t => {
const arraySize = 1e6;
const objectStoreName = "storageManager";
const dbname = this.window ? window.location.pathname :
"estimate-worker.https.html";
- let db;
- let usageBeforeCreate, usageAfterCreate, usageAfterPut;
+ await indexedDbDeleteRequest(dbname);
+ let estimate = await navigator.storage.estimate();
- function deleteDB(name) {
- return new Promise((resolve, reject) => {
- let deleteRequest = indexedDB.deleteDatabase(name);
- deleteRequest.onerror = () => { reject(deleteRequest.error); };
- deleteRequest.onsuccess = () => { resolve(); };
- });
+ const usageBeforeCreate = estimate.usage;
+ const db = await indexedDbOpenRequest(t, dbname, (db_to_upgrade) => {
+ db_to_upgrade.createObjectStore(objectStoreName);
+ });
+
+ estimate = await navigator.storage.estimate();
+ const usageAfterCreate = estimate.usage;
+
+ assert_greater_than(
+ usageAfterCreate, usageBeforeCreate,
+ 'estimated usage should increase after object store is created');
+
+ const txn = db.transaction(objectStoreName, 'readwrite');
+ const buffer = new ArrayBuffer(arraySize);
+ const view = new Uint8Array(buffer);
+
+ for (let i = 0; i < arraySize; i++) {
+ view[i] = Math.floor(Math.random() * 255);
}
- return deleteDB(dbname)
- .then(() => {
- return navigator.storage.estimate();
- })
- .then(estimate => {
- usageBeforeCreate = estimate.usage;
- return new Promise((resolve, reject) => {
- let openRequest = indexedDB.open(dbname);
- openRequest.onerror = () => { reject(openRequest.error); };
- openRequest.onupgradeneeded = event => {
- openRequest.result.createObjectStore(objectStoreName);
- };
- openRequest.onsuccess = () => { resolve(openRequest.result); };
- });
- })
- .then(connection => {
- db = connection;
- return navigator.storage.estimate();
- })
- .then(estimate => {
- usageAfterCreate = estimate.usage;
- assert_greater_than(
- usageAfterCreate, usageBeforeCreate,
- 'estimated usage should increase after object store is created');
-
- let txn = db.transaction(objectStoreName, 'readwrite');
- let buffer = new ArrayBuffer(arraySize);
- let view = new Uint8Array(buffer);
-
- for (let i = 0; i < arraySize; i++) {
- view[i] = parseInt(Math.random() * 255);
- }
-
- let testBlob = new Blob([buffer], {type: "binary/random"});
- txn.objectStore(objectStoreName).add(testBlob, 1);
-
- return new Promise((resolve, reject) => {
- txn.onabort = () => { reject(txn.error); };
- txn.oncomplete = () => { resolve(); };
- });
- })
- .then(() => {
- return navigator.storage.estimate();
- })
- .then(estimate => {
- usageAfterPut = estimate.usage;
- assert_greater_than(
- usageAfterPut, usageAfterCreate,
- 'estimated usage should increase after large value is stored');
-
- db.close();
- return deleteDB(dbname);
- })
- .then(() => {
- t.done();
- });
+ const testBlob = new Blob([buffer], {type: "binary/random"});
+ txn.objectStore(objectStoreName).add(testBlob, 1);
+
+ await transactionPromise(txn);
+
+ estimate = await navigator.storage.estimate();
+ const usageAfterPut = estimate.usage;
+ assert_greater_than(
+ usageAfterPut, usageAfterCreate,
+ 'estimated usage should increase after large value is stored');
+
+ db.close();
}, 'estimate() shows usage increase after large value is stored');
diff --git a/tests/wpt/web-platform-tests/svg/geometry/parsing/cx-valid.svg b/tests/wpt/web-platform-tests/svg/geometry/parsing/cx-valid.svg
index e7f627ac721..a96fee56555 100644
--- a/tests/wpt/web-platform-tests/svg/geometry/parsing/cx-valid.svg
+++ b/tests/wpt/web-platform-tests/svg/geometry/parsing/cx-valid.svg
@@ -17,6 +17,7 @@ test_valid_value("cx", "0", "0px");
test_valid_value("cx", "-1px");
test_valid_value("cx", "calc(2em + 3ex)");
test_valid_value("cx", "4%");
+test_valid_value("cx", "5ch");
]]></script>
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/geometry/parsing/cy-valid.svg b/tests/wpt/web-platform-tests/svg/geometry/parsing/cy-valid.svg
index 4372c36ea22..022445662b7 100644
--- a/tests/wpt/web-platform-tests/svg/geometry/parsing/cy-valid.svg
+++ b/tests/wpt/web-platform-tests/svg/geometry/parsing/cy-valid.svg
@@ -17,6 +17,7 @@ test_valid_value("cy", "0", "0px");
test_valid_value("cy", "-1px");
test_valid_value("cy", "calc(2em + 3ex)");
test_valid_value("cy", "4%");
+test_valid_value("cy", "5rem");
]]></script>
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/geometry/parsing/rx-valid.svg b/tests/wpt/web-platform-tests/svg/geometry/parsing/rx-valid.svg
index e2b628f1de4..9d156b3cccf 100644
--- a/tests/wpt/web-platform-tests/svg/geometry/parsing/rx-valid.svg
+++ b/tests/wpt/web-platform-tests/svg/geometry/parsing/rx-valid.svg
@@ -19,6 +19,7 @@ test_valid_value("rx", "0", "0px");
test_valid_value("rx", "1px");
test_valid_value("rx", "calc(2em + 3ex)");
test_valid_value("rx", "4%");
+test_valid_value("rx", "5vw");
]]></script>
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/geometry/parsing/ry-valid.svg b/tests/wpt/web-platform-tests/svg/geometry/parsing/ry-valid.svg
index 4ce5bec4084..e92e2cf6410 100644
--- a/tests/wpt/web-platform-tests/svg/geometry/parsing/ry-valid.svg
+++ b/tests/wpt/web-platform-tests/svg/geometry/parsing/ry-valid.svg
@@ -19,6 +19,7 @@ test_valid_value("rx", "0", "0px");
test_valid_value("rx", "1px");
test_valid_value("rx", "calc(2em + 3ex)");
test_valid_value("rx", "4%");
+test_valid_value("rx", "5vh");
]]></script>
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/geometry/parsing/x-valid.svg b/tests/wpt/web-platform-tests/svg/geometry/parsing/x-valid.svg
index 5ff2fbd831d..2b06f26ac4c 100644
--- a/tests/wpt/web-platform-tests/svg/geometry/parsing/x-valid.svg
+++ b/tests/wpt/web-platform-tests/svg/geometry/parsing/x-valid.svg
@@ -17,6 +17,7 @@ test_valid_value("x", "0", "0px");
test_valid_value("x", "-1px");
test_valid_value("x", "calc(2em + 3ex)");
test_valid_value("x", "4%");
+test_valid_value("x", "5cm");
]]></script>
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/geometry/parsing/y-valid.svg b/tests/wpt/web-platform-tests/svg/geometry/parsing/y-valid.svg
index 24885ccfc70..aad0e4e2937 100644
--- a/tests/wpt/web-platform-tests/svg/geometry/parsing/y-valid.svg
+++ b/tests/wpt/web-platform-tests/svg/geometry/parsing/y-valid.svg
@@ -17,6 +17,7 @@ test_valid_value("y", "0", "0px");
test_valid_value("y", "-1px");
test_valid_value("y", "calc(2em + 3ex)");
test_valid_value("y", "4%");
+test_valid_value("y", "5mm");
]]></script>
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/color-interpolation-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/color-interpolation-computed.svg
new file mode 100644
index 00000000000..88604d75b06
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/color-interpolation-computed.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="800px">
+ <title>SVG Painting: getComputedValue().colorInterpolation</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#ColorInterpolationProperty"/>
+ <h:meta name="assert" content="color-interpolation computed value is as specified."/>
+ </metadata>
+ <g id="target"></g>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("color-interpolation", "auto");
+test_computed_value("color-interpolation", "srgb");
+test_computed_value("color-interpolation", "linearrgb");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/color-rendering-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/color-rendering-computed.svg
new file mode 100644
index 00000000000..4d63616c794
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/color-rendering-computed.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="800px">
+ <title>SVG Painting: getComputedValue().colorRendering</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#ColorRenderingProperty"/>
+ <h:meta name="assert" content="color-rendering computed value is as specified."/>
+ </metadata>
+ <g id="target"></g>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("color-rendering", "auto");
+test_computed_value("color-rendering", "optimizespeed");
+test_computed_value("color-rendering", "optimizequality");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/fill-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/fill-computed.svg
new file mode 100644
index 00000000000..4678999e8ef
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/fill-computed.svg
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="800px">
+ <title>SVG Painting: getComputedValue().fill</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#FillProperty"/>
+ <h:meta name="assert" content="fill computed value is as specified, with url values absolute."/>
+ </metadata>
+ <g id="target"></g>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("fill", "none");
+test_computed_value("fill", "rgb(12, 34, 56)");
+
+test_computed_value("fill", 'url("https://example.com/")');
+test_computed_value("fill", 'url("https://example.com/") none');
+test_computed_value("fill", 'url("https://example.com/") rgb(12, 34, 56)');
+
+// context-fill and context-stroke are not yet supported by browsers.
+
+test(() => {
+ const target = document.getElementById('target');
+ target.style['fill'] = 'url("a.b#c")';
+ const result = getComputedStyle(target)['fill'];
+ const resolved = new URL("a.b#c", document.URL).href;
+ assert_equals(result, 'url("' + resolved + '")');
+}, 'url values are made absolute');
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/fill-opacity-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/fill-opacity-computed.svg
index aa24d3efe81..4526724b999 100644
--- a/tests/wpt/web-platform-tests/svg/painting/parsing/fill-opacity-computed.svg
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/fill-opacity-computed.svg
@@ -2,7 +2,7 @@
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:h="http://www.w3.org/1999/xhtml"
width="800px" height="800px">
- <title>SVG Geometry Properties: getComputedValue().fillOpacity</title>
+ <title>SVG Painting: getComputedValue().fillOpacity</title>
<metadata>
<h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#FillOpacity"/>
<h:meta name="assert" content="fill-opacity computed value is clamped to the range [0,1]."/>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/fill-rule-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/fill-rule-computed.svg
new file mode 100644
index 00000000000..2b51c9edc4a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/fill-rule-computed.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="800px">
+ <title>SVG Painting: getComputedValue().fillRule</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#FillRuleProperty"/>
+ <h:meta name="assert" content="fill-rule computed value is as specified."/>
+ </metadata>
+ <g id="target"></g>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("fill-rule", "nonzero");
+test_computed_value("fill-rule", "evenodd");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/image-rendering-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/image-rendering-computed.svg
new file mode 100644
index 00000000000..18662ef8355
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/image-rendering-computed.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="800px">
+ <title>SVG Painting: getComputedValue().imageRendering</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#ImageRenderingProperty"/>
+ <h:meta name="assert" content="image-rendering computed value is as specified."/>
+ </metadata>
+ <g id="target"></g>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("image-rendering", "auto");
+test_computed_value("image-rendering", "optimizequality");
+test_computed_value("image-rendering", "optimizespeed");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/marker-end-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/marker-end-computed.svg
new file mode 100644
index 00000000000..aa0bc6774a5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/marker-end-computed.svg
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="800px">
+ <title>SVG Painting: getComputedValue().MarkerEnd</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#MarkerEndProperty"/>
+ <h:meta name="assert" content="marker-end computed value is as specified, with url values absolute."/>
+ </metadata>
+ <g id="target"></g>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("marker-end", "none");
+test_computed_value("marker-end", 'url("https://example.com/")');
+
+test(() => {
+ const target = document.getElementById('target');
+ target.style['marker-end'] = 'url("a.b#c")';
+ const result = getComputedStyle(target)['marker-end'];
+ const resolved = new URL("a.b#c", document.URL).href;
+ assert_equals(result, 'url("' + resolved + '")');
+}, 'url values are made absolute');
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/marker-mid-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/marker-mid-computed.svg
new file mode 100644
index 00000000000..074c17c269e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/marker-mid-computed.svg
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="800px">
+ <title>SVG Painting: getComputedValue().markerMid</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#MarkerMidProperty"/>
+ <h:meta name="assert" content="marker-mid computed value is as specified, with url values absolute."/>
+ </metadata>
+ <g id="target"></g>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("marker-mid", "none");
+test_computed_value("marker-mid", 'url("https://example.com/")');
+
+test(() => {
+ const target = document.getElementById('target');
+ target.style['marker-mid'] = 'url("a.b#c")';
+ const result = getComputedStyle(target)['marker-mid'];
+ const resolved = new URL("a.b#c", document.URL).href;
+ assert_equals(result, 'url("' + resolved + '")');
+}, 'url values are made absolute');
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/marker-start-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/marker-start-computed.svg
new file mode 100644
index 00000000000..e0ad38bbbc8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/marker-start-computed.svg
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="800px">
+ <title>SVG Painting: getComputedValue().markerStart</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#MarkerStartProperty"/>
+ <h:meta name="assert" content="marker-start computed value is as specified, with url values absolute."/>
+ </metadata>
+ <g id="target"></g>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("marker-start", "none");
+test_computed_value("marker-start", 'url("https://example.com/")');
+
+test(() => {
+ const target = document.getElementById('target');
+ target.style['marker-start'] = 'url("a.b#c")';
+ const result = getComputedStyle(target)['marker-start'];
+ const resolved = new URL("a.b#c", document.URL).href;
+ assert_equals(result, 'url("' + resolved + '")');
+}, 'url values are made absolute');
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/paint-order-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/paint-order-computed.svg
new file mode 100644
index 00000000000..0cba453f437
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/paint-order-computed.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="800px">
+ <title>SVG Painting: getComputedValue().paintOrder</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#PaintOrderProperty"/>
+ <h:meta name="assert" content="paint-order computed value is as specified."/>
+ </metadata>
+ <g id="target"></g>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("paint-order", "normal");
+
+test_computed_value("paint-order", "fill");
+test_computed_value("paint-order", "stroke");
+test_computed_value("paint-order", "markers");
+
+test_computed_value("paint-order", "fill stroke", "fill");
+test_computed_value("paint-order", "fill markers");
+test_computed_value("paint-order", "stroke fill", "stroke");
+test_computed_value("paint-order", "stroke markers");
+test_computed_value("paint-order", "markers fill", "markers");
+test_computed_value("paint-order", "markers stroke");
+
+test_computed_value("paint-order", "fill stroke markers", "fill");
+test_computed_value("paint-order", "fill markers stroke", "fill markers");
+test_computed_value("paint-order", "stroke fill markers", "stroke");
+test_computed_value("paint-order", "stroke markers fill", "stroke markers");
+test_computed_value("paint-order", "markers fill stroke", "markers");
+test_computed_value("paint-order", "markers stroke fill", "markers stroke");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/shape-rendering-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/shape-rendering-computed.svg
new file mode 100644
index 00000000000..8dbea5eba6c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/shape-rendering-computed.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="800px">
+ <title>SVG Painting: getComputedValue().shapeRendering</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#ShapeRenderingProperty"/>
+ <h:meta name="assert" content="shape-rendering computed value is as specified."/>
+ </metadata>
+ <g id="target"></g>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("shape-rendering", "auto");
+test_computed_value("shape-rendering", "optimizespeed");
+test_computed_value("shape-rendering", "crispedges");
+test_computed_value("shape-rendering", "geometricprecision");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-computed.svg
new file mode 100644
index 00000000000..331496b01b8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-computed.svg
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="800px">
+ <title>SVG Painting: getComputedValue().stroke</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#StrokeProperty"/>
+ <h:meta name="assert" content="stroke computed value is as specified, with url values absolute."/>
+ </metadata>
+ <g id="target"></g>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("stroke", "none");
+test_computed_value("stroke", "rgb(12, 34, 56)");
+
+test_computed_value("stroke", 'url("https://example.com/")');
+test_computed_value("stroke", 'url("https://example.com/") none');
+test_computed_value("stroke", 'url("https://example.com/") rgb(12, 34, 56)');
+
+// context-fill and context-stroke are not yet supported by browsers.
+
+test(() => {
+ const target = document.getElementById('target');
+ target.style['stroke'] = 'url("a.b#c")';
+ const result = getComputedStyle(target)['stroke'];
+ const resolved = new URL("a.b#c", document.URL).href;
+ assert_equals(result, 'url("' + resolved + '")');
+}, 'url values are made absolute');
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-dasharray-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-dasharray-computed.svg
new file mode 100644
index 00000000000..2e3a74b5728
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-dasharray-computed.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="800px">
+ <title>SVG Painting: getComputedValue().strokeDasharray</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#StrokeDasharrayProperty"/>
+ <h:meta name="assert" content="stroke-dasharray computed value uses absolute lengths."/>
+ </metadata>
+ <g id="target"></g>
+ <style>
+ #target {
+ font-size: 40px;
+ }
+ </style>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("stroke-dasharray", "none");
+
+test_computed_value("stroke-dasharray", "10", "10px");
+test_computed_value("stroke-dasharray", "calc(10px + 0.5em)", "30px");
+test_computed_value("stroke-dasharray", "calc(10px - 0.5em)", "0px");
+test_computed_value("stroke-dasharray", "40%");
+test_computed_value("stroke-dasharray", "calc(50% + 60px)");
+
+test_computed_value("stroke-dasharray", "10px 20% 30px", "10px, 20%, 30px");
+test_computed_value("stroke-dasharray", "0, 5", "0px, 5px");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-dasharray-valid.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-dasharray-valid.svg
index 7301a54e65e..e47ebc62a12 100644
--- a/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-dasharray-valid.svg
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-dasharray-valid.svg
@@ -20,7 +20,8 @@ test_valid_value("stroke-dasharray", "10px");
test_valid_value("stroke-dasharray", "20%");
test_valid_value("stroke-dasharray", "calc(2em + 3ex)");
-test_valid_value("stroke-dasharray", "10px, 20%, 30px");
+test_valid_value("stroke-dasharray", "10pt 20% 30pc 40in", "10pt, 20%, 30pc, 40in");
+test_valid_value("stroke-dasharray", "10vmin, 20vmax, 30em, 40ex");
test_valid_value("stroke-dasharray", "0, 5", ["0, 5", "0px, 5px"]); // Edge/Safari serialize numbers as lengths.
]]></script>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-dashoffset-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-dashoffset-computed.svg
new file mode 100644
index 00000000000..bdb934614c1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-dashoffset-computed.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="800px">
+ <title>SVG Painting: getComputedValue().strokeDashoffset</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#StrokeDashoffsetProperty"/>
+ <h:meta name="assert" content="stroke-dashoffset computed value is absolute length."/>
+ </metadata>
+ <g id="target"></g>
+ <style>
+ #target {
+ font-size: 40px;
+ }
+ </style>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("stroke-dashoffset", "10", "10px");
+test_computed_value("stroke-dashoffset", "0.5em", "20px");
+test_computed_value("stroke-dashoffset", "calc(10px + 0.5em)", "30px");
+test_computed_value("stroke-dashoffset", "calc(10px - 0.5em)", "-10px");
+test_computed_value("stroke-dashoffset", "-40%");
+test_computed_value("stroke-dashoffset", "calc(50% + 60px)");
+
+// https://www.w3.org/TR/css-values-3/#absolute-lengths
+test_computed_value("stroke-dashoffset", "254cm", "9600px");
+test_computed_value("stroke-dashoffset", "2540mm", "9600px");
+test_computed_value("stroke-dashoffset", "10160Q", "9600px");
+test_computed_value("stroke-dashoffset", "1in", "96px");
+test_computed_value("stroke-dashoffset", "6pc", "96px");
+test_computed_value("stroke-dashoffset", "72pt", "96px");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-dashoffset-valid.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-dashoffset-valid.svg
index 921b03a6a6f..ff913e06e4f 100644
--- a/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-dashoffset-valid.svg
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-dashoffset-valid.svg
@@ -17,6 +17,7 @@ test_valid_value("stroke-dashoffset", "0");
test_valid_value("stroke-dashoffset", "10px");
test_valid_value("stroke-dashoffset", "-20%");
test_valid_value("stroke-dashoffset", "30");
+test_valid_value("stroke-dashoffset", "40Q", "40q");
test_valid_value("stroke-dashoffset", "calc(2em + 3ex)");
]]></script>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-linecap-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-linecap-computed.svg
new file mode 100644
index 00000000000..7b5ce96ce5d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-linecap-computed.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="800px">
+ <title>SVG Painting: getComputedValue().strokeLinecap</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#StrokeLinecapProperty"/>
+ <h:meta name="assert" content="stroke-linecap computed value is as specified."/>
+ </metadata>
+ <g id="target"></g>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("stroke-linecap", "butt");
+test_computed_value("stroke-linecap", "round");
+test_computed_value("stroke-linecap", "square");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-linejoin-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-linejoin-computed.svg
new file mode 100644
index 00000000000..a8e9aab8eb0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-linejoin-computed.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="800px">
+ <title>SVG Painting: getComputedValue().strokeLinejoin</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#StrokeLinejoinProperty"/>
+ <h:meta name="assert" content="stroke-linejoin computed value is as specified."/>
+ </metadata>
+ <g id="target"></g>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("stroke-linejoin", "miter");
+test_computed_value("stroke-linejoin", "round");
+test_computed_value("stroke-linejoin", "bevel");
+// "miter-clip" and "arcs" are not yet supported by browsers.
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-miterlimit-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-miterlimit-computed.svg
new file mode 100644
index 00000000000..d2ec631b168
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-miterlimit-computed.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="800px">
+ <title>SVG Painting: getComputedValue().strokeMiterlimit</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#StrokeMiterlimitProperty"/>
+ <h:meta name="assert" content="stroke-miterlimit computed value is as specified."/>
+ </metadata>
+ <g id="target"></g>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("stroke-miterlimit", "0");
+test_computed_value("stroke-miterlimit", "0.5");
+test_computed_value("stroke-miterlimit", "1");
+test_computed_value("stroke-miterlimit", "7.5");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-opacity-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-opacity-computed.svg
index 58cb144935a..02bef376f61 100644
--- a/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-opacity-computed.svg
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-opacity-computed.svg
@@ -2,7 +2,7 @@
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:h="http://www.w3.org/1999/xhtml"
width="800px" height="800px">
- <title>SVG Geometry Properties: getComputedValue().strokeOpacity</title>
+ <title>SVG Painting: getComputedValue().strokeOpacity</title>
<metadata>
<h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#StrokeOpacityProperty"/>
<h:meta name="assert" content="stroke-opacity computed value is clamped to the range [0,1]."/>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-width-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-width-computed.svg
index c9284be9a13..71dead0942f 100644
--- a/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-width-computed.svg
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/stroke-width-computed.svg
@@ -2,13 +2,15 @@
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:h="http://www.w3.org/1999/xhtml"
width="800px" height="800px">
- <title>SVG Geometry Properties: getComputedValue().strokeWidth</title>
+ <title>SVG Painting: getComputedValue().strokeWidth</title>
<metadata>
<h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#StrokeWidth"/>
+ <h:meta name="assert" content="stroke-width computed value is absolute length."/>
</metadata>
<g id="target"></g>
+ <g id="ref"></g>
<style>
- #target {
+ #target, #ref {
font-size: 40px;
}
</style>
@@ -23,5 +25,36 @@ test_computed_value("stroke-width", "calc(10px - 0.5em)", "0px");
test_computed_value("stroke-width", "40%");
test_computed_value("stroke-width", "calc(50% + 60px)");
+const lengthUnits = [
+ 'em',
+ 'ex',
+ 'ch',
+ 'rem',
+ 'vw',
+ 'vh',
+ 'vmin',
+ 'vmax',
+ 'cm',
+ 'mm',
+ 'Q',
+ 'in',
+ 'pt',
+ 'pc',
+ 'px'
+];
+
+for (let lengthUnit of lengthUnits) {
+ const length = '987' + lengthUnit;
+ test(() => {
+ const target = document.getElementById('target');
+ target.style.strokeWidth = length;
+
+ const ref = document.getElementById('ref');
+ ref.style.wordSpacing = length;
+
+ assert_equals(getComputedStyle(target).strokeWidth, getComputedStyle(ref).wordSpacing);
+ }, 'stroke-width computes ' + lengthUnit + ' lengths');
+}
+
]]></script>
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/parsing/text-rendering-computed.svg b/tests/wpt/web-platform-tests/svg/painting/parsing/text-rendering-computed.svg
new file mode 100644
index 00000000000..e37f4fed5bb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/parsing/text-rendering-computed.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="800px">
+ <title>SVG Painting: getComputedValue().textRendering</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#TextRenderingProperty"/>
+ <h:meta name="assert" content="text-rendering computed value is as specified."/>
+ </metadata>
+ <g id="target"></g>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("text-rendering", "auto");
+test_computed_value("text-rendering", "optimizespeed");
+test_computed_value("text-rendering", "optimizelegibility");
+test_computed_value("text-rendering", "geometricprecision");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py
index 02cc322aa35..c6863005a0f 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py
@@ -133,6 +133,7 @@ class SauceConnect():
self.sauce_key = kwargs["sauce_key"]
self.sauce_tunnel_id = kwargs["sauce_tunnel_id"]
self.sauce_connect_binary = kwargs.get("sauce_connect_binary")
+ self.sauce_connect_args = kwargs.get("sauce_connect_args")
self.sauce_init_timeout = kwargs.get("sauce_init_timeout")
self.sc_process = None
self.temp_dir = None
@@ -171,7 +172,7 @@ class SauceConnect():
"--readyfile=./sauce_is_ready",
"--tunnel-domains",
",".join(self.env_config.domains_set)
- ])
+ ] + self.sauce_connect_args)
tot_wait = 0
while not os.path.exists('./sauce_is_ready') and self.sc_process.poll() is None:
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py
index e8542959aa2..06a5641d50f 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py
@@ -25,7 +25,8 @@ def test_sauceconnect_success():
sauce_user="aaa",
sauce_key="bbb",
sauce_tunnel_id="ccc",
- sauce_connect_binary="ddd")
+ sauce_connect_binary="ddd",
+ sauce_connect_args=[])
with ConfigBuilder(browser_host="example.net") as env_config:
sauce_connect(None, env_config)
@@ -54,7 +55,8 @@ def test_sauceconnect_failure_exit(readyfile, returncode):
sauce_user="aaa",
sauce_key="bbb",
sauce_tunnel_id="ccc",
- sauce_connect_binary="ddd")
+ sauce_connect_binary="ddd",
+ sauce_connect_args=[])
with ConfigBuilder(browser_host="example.net") as env_config:
sauce_connect(None, env_config)
@@ -82,7 +84,8 @@ def test_sauceconnect_cleanup():
sauce_user="aaa",
sauce_key="bbb",
sauce_tunnel_id="ccc",
- sauce_connect_binary="ddd")
+ sauce_connect_binary="ddd",
+ sauce_connect_args=[])
with ConfigBuilder(browser_host="example.net") as env_config:
sauce_connect(None, env_config)
@@ -106,7 +109,8 @@ def test_sauceconnect_failure_never_ready():
sauce_user="aaa",
sauce_key="bbb",
sauce_tunnel_id="ccc",
- sauce_connect_binary="ddd")
+ sauce_connect_binary="ddd",
+ sauce_connect_args=[])
with ConfigBuilder(browser_host="example.net") as env_config:
sauce_connect(None, env_config)
@@ -134,7 +138,8 @@ def test_sauceconnect_tunnel_domains():
sauce_user="aaa",
sauce_key="bbb",
sauce_tunnel_id="ccc",
- sauce_connect_binary="ddd")
+ sauce_connect_binary="ddd",
+ sauce_connect_args=[])
with ConfigBuilder(browser_host="example.net",
alternate_hosts={"alt": "example.org"},
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py
index 6881477a3c0..08810fcc027 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py
@@ -302,6 +302,10 @@ scheme host and port.""")
help="Number of seconds to wait for Sauce "
"Connect tunnel to be available before "
"aborting")
+ sauce_group.add_argument("--sauce-connect-arg", action="append",
+ default=[], dest="sauce_connect_args",
+ help="Command-line argument to forward to the "
+ "Sauce Connect binary (repeatable)")
webkit_group = parser.add_argument_group("WebKit-specific")
webkit_group.add_argument("--webkit-port", dest="webkit_port",
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py
index 14f6cb9068d..7d35c51d909 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py
@@ -284,6 +284,8 @@ def run_tests(config, test_paths, product, **kwargs):
logger.suite_end()
if repeat_until_unexpected and unexpected_total > 0:
break
+ if len(test_loader.test_ids) == skipped_tests:
+ break
if test_total == 0:
if skipped_tests > 0:
diff --git a/tests/wpt/web-platform-tests/trusted-types/GlobalEventHandlers-onclick.tentative.html b/tests/wpt/web-platform-tests/trusted-types/GlobalEventHandlers-onclick.tentative.html
new file mode 100644
index 00000000000..6e8c560ebd1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/trusted-types/GlobalEventHandlers-onclick.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>
+
+<meta http-equiv="Content-Security-Policy" content="trusted-types *">
+<body>
+<div id="container"></div>
+<script>
+var container = document.querySelector('#container');
+
+// Trusted Type assignments do not throw.
+async_test(t => {
+ window.onclickTest = t.step_func_done();
+ let policy = createScript_policy(window, 'onclick');
+ let script = policy.createScript("window.onclickTest();");
+
+ let el = document.createElement('a');
+ el.setAttribute('onclick', script);
+ container.appendChild(el);
+ el.click();
+}, "a.onclick assigned via policy (successful Script transformation).");
+</script>
diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-no-name.tentative.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-no-name.tentative.html
new file mode 100644
index 00000000000..2dfec26f5a0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-no-name.tentative.html
@@ -0,0 +1,16 @@
+<!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="trusted-types">
+<body>
+<script>
+ // No name given test
+ test(t => {
+ assert_throws(new TypeError(),
+ () => window.TrustedTypes.createPolicy('SomeName', { createHTML: s => s } ),
+ "createPolicy with an empty trusted-types CSP directive");
+ }, "No name list given - policy creation fails.");
+</script>
+
diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.html
new file mode 100644
index 00000000000..22b87965614
--- /dev/null
+++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.html
@@ -0,0 +1,13 @@
+<!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="trusted-types *">
+<body>
+<script>
+ test(t => {
+ let policy = window.TrustedTypes.createPolicy('SomeName', { createHTML: s => s } );
+ assert_equals(policy.name, 'SomeName');
+ }, "CSP supports wildcards.");
+</script>
diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP.tentative.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP.tentative.html
new file mode 100644
index 00000000000..1293493ec1f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP.tentative.html
@@ -0,0 +1,27 @@
+<!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="trusted-types SomeName JustOneMoreName">
+<body>
+<script>
+ // Whitelisted name test
+ test(t => {
+ let policy = window.TrustedTypes.createPolicy('SomeName', { createHTML: s => s } );
+ assert_equals(policy.name, 'SomeName');
+ }, "Whitelisted policy creation works.");
+
+ // Another whitelisted name test
+ test(t => {
+ let policy = window.TrustedTypes.createPolicy('JustOneMoreName', { createHTML: s => s } );
+ assert_equals(policy.name, 'JustOneMoreName');
+ }, "Another whitelisted policy creation works.");
+
+ // Non-whitelisted names test
+ test(t => {
+ assert_throws(new TypeError(), _ => {
+ window.TrustedTypes.createPolicy('SomeOtherName', { createURL: s => s } );
+ });
+ }, "Non-whitelisted policy creation throws.");
+</script>
diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-createXXX.tentative.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-createXXX.tentative.html
new file mode 100644
index 00000000000..6a0151ad9bc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-createXXX.tentative.html
@@ -0,0 +1,119 @@
+<!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="trusted-types *">
+<body>
+<script>
+ test(t => {
+ const p1 = TrustedTypes.createPolicy("policyHTMLAndScript", {
+ createHTML: s => s,
+ createScript: s => s
+ });
+ assert_throws(new TypeError(), _ => { p1.createScriptURL("foo"); });
+ assert_throws(new TypeError(), _ => { p1.createURL("foo"); });
+
+ const p2 = TrustedTypes.createPolicy("policyURLAndScriptURL", {
+ createURL: s => s,
+ createScriptURL: s => s
+ });
+ assert_throws(new TypeError(), _ => { p2.createHTML("foo"); });
+ assert_throws(new TypeError(), _ => { p2.createScript("foo"); });
+ }, "calling undefined callbacks throws");
+
+ test(t => {
+ const noopPolicy = {
+ createHTML: (s) => s,
+ createScriptURL: (s) => s,
+ createURL: (s) => s,
+ createScript: (s) => s,
+ };
+ policy = TrustedTypes.createPolicy(Math.random(), noopPolicy, true);
+ let el = document.createElement("div");
+
+ el.title = policy.createHTML(INPUTS.URL);
+ assert_equals(el.title, INPUTS.URL);
+
+ el.title = policy.createURL(INPUTS.HTML);
+ assert_equals(el.title, "");
+ }, "Attributes without type constraints will work as before.");
+
+ test(t => {
+ const policy = TrustedTypes.createPolicy("nullpolicy", null);
+ assert_throws(new TypeError(), _ => { policy.createScriptURL("foo"); });
+ assert_throws(new TypeError(), _ => { policy.createURL("foo"); });
+ assert_throws(new TypeError(), _ => { policy.createHTML("foo"); });
+ assert_throws(new TypeError(), _ => { policy.createScript("foo"); });
+ }, "TrustedTypes.createPolicy(.., null) creates empty policy.");
+
+
+ // testCases contains a list of policy functions and expected results (when
+ // called with a given default argument). They also use various helper
+ // variables (declared just below) to test side effects or interactions of
+ // global vars/functions with policy callbacks.
+ let aGlobalVarForSideEffectTesting = "global";
+ var aGlobalObject = { "foo": "well," };
+ function aGlobalFunction(s) { return this.foo + " " + s; }
+ function anotherGlobalFunction(s) { return s + "#" + this.foo; }
+ var foo = "a global var named foo";
+
+ const stringTestCases = [
+ [ s => s, "whatever" ],
+ [ s => null, "null" ],
+ [ s => "well, " + s, "well, whatever" ],
+ [ s => { throw new Error() }, new Error() ],
+ [ s => { aGlobalVarForSideEffectTesting = s; return s }, "whatever" ],
+ [ s => aGlobalVarForSideEffectTesting + s, "whateverwhatever" ],
+ [ aGlobalFunction.bind(aGlobalObject), "well, whatever" ],
+ [ s => aGlobalFunction(s), "a global var named foo whatever" ],
+ ];
+
+ const urlTestCases = [
+ [ s => s, INPUTS.SCRIPTURL ],
+ [ s => null, "" ],
+ [ s => s + "#duck", INPUTS.SCRIPTURL + "#duck" ],
+ [ s => { throw new Error() }, new Error() ],
+ [ s => s + "#" + aGlobalVarForSideEffectTesting,
+ INPUTS.SCRIPTURL + "#global" ],
+ [ anotherGlobalFunction.bind(aGlobalObject), INPUTS.SCRIPTURL + "#well," ],
+ [ s => anotherGlobalFunction(s),
+ INPUTS.SCRIPTURL + "#a%20global%20var%20named%20foo" ],
+ ];
+
+ function policyBuilder(trustedMethodName, trustedType, defaultArg) {
+ return function(name, fn) {
+ let options = {};
+ options[trustedMethodName] = fn;
+ let policy = window.TrustedTypes.createPolicy(name, options);
+ let result = policy[trustedMethodName](defaultArg);
+ assert_true(result instanceof trustedType);
+ return result;
+ }
+ }
+
+ const testCases = [
+ [TrustedHTML, "createHTML", "whatever", stringTestCases],
+ [TrustedScript, "createScript", "whatever", stringTestCases],
+ [TrustedURL, "createURL", INPUTS.SCRIPTURL, urlTestCases],
+ [TrustedScriptURL, "createScriptURL", INPUTS.SCRIPTURL, urlTestCases],
+ ];
+
+ // Iterate over all trusted types, iterate over all test cases.
+ // For each, build the suitable policy and check the result.
+ for (let [trusted_class, trusted_method, default_arg, test_cases] of testCases) {
+ aGlobalVarForSideEffectTesting = "global";
+ let builder = policyBuilder(trusted_method, trusted_class, default_arg);
+ for (let [index, [policy_fn, value]] of test_cases.entries()) {
+ let subtest_name = "TestPolicy" + trusted_class.name + index;
+ test(t => {
+ if (value instanceof Error) {
+ assert_throws(value, () => builder(subtest_name, policy_fn));
+ } else {
+ assert_equals("" + builder(subtest_name, policy_fn), value);
+ }
+ }, subtest_name + " (" + trusted_class.name + ": " +
+ policy_fn.toString() + ")");
+ }
+ }
+</script>
diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-exposed.tentative.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-exposed.tentative.html
new file mode 100644
index 00000000000..e671c6fb61d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-exposed.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>
+
+<meta http-equiv="Content-Security-Policy" content="trusted-types *">
+<body>
+<script>
+ // Not exposed policy test
+ test(t => {
+ let policy = window.TrustedTypes.createPolicy('SomeName', { createHTML: s => s } );
+ assert_equals(window.TrustedTypes.getExposedPolicy('SomeName'), null);
+ }, "Null is returned when policy is not exposed - by default");
+
+ // Non-existent policy test
+ test(t => {
+ assert_equals(window.TrustedTypes.getExposedPolicy('JustAName'), null);
+ }, "Null is returned when policy is non-existent.");
+
+ // Exposed policy test
+ test(t => {
+ let policy = window.TrustedTypes.createPolicy('SomeOtherName', { createHTML: s => s }, true );
+ assert_equals(window.TrustedTypes.getExposedPolicy('SomeOtherName'), policy);
+ }, "Policy is returned when exposed == true.");
+</script>
diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-name.tentative.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-name.tentative.html
new file mode 100644
index 00000000000..c121fe4cab5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-name.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>
+
+<meta http-equiv="Content-Security-Policy" content="trusted-types *">
+<body>
+<script>
+ // Policy name test
+ test(t => {
+ let policy = TrustedTypes.createPolicy('hidden', { createHTML: s => s }, false );
+ assert_true(policy instanceof TrustedTypePolicy);
+ assert_equals(policy.name, 'hidden');
+ }, "policy.name = name");
+
+ // Duplicate names test
+ test(t => {
+ assert_throws(new TypeError(), _ => {
+ TrustedTypes.createPolicy('hidden', { createURL: s => s } );
+ });
+ }, "duplicate policy name attempt throws");
+
+ // Retrieve policy names tests
+ test(t => {
+ let policy = TrustedTypes.createPolicy('exposed', { createURL: s => s }, true );
+ let names = TrustedTypes.getPolicyNames();
+ assert_equals(names.length, 2);
+ assert_true(names.includes('hidden'));
+ assert_true(names.includes('exposed'));
+ }, "getPolicyNames returns all policy names");
+</script>
diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.html
index 9daf20ec186..1293493ec1f 100644
--- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.html
+++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.html
@@ -2,23 +2,26 @@
<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="trusted-types SomeName JustOneMoreName">
<body>
<script>
- //Whitelisted name test
+ // Whitelisted name test
test(t => {
let policy = window.TrustedTypes.createPolicy('SomeName', { createHTML: s => s } );
assert_equals(policy.name, 'SomeName');
- }, "Whitelisted policy creation works");
- //Another whitelisted name test
+ }, "Whitelisted policy creation works.");
+
+ // Another whitelisted name test
test(t => {
let policy = window.TrustedTypes.createPolicy('JustOneMoreName', { createHTML: s => s } );
assert_equals(policy.name, 'JustOneMoreName');
- }, "Another whitelisted policy creation works");
- //Non-whitelisted names test
+ }, "Another whitelisted policy creation works.");
+
+ // Non-whitelisted names test
test(t => {
assert_throws(new TypeError(), _ => {
window.TrustedTypes.createPolicy('SomeOtherName', { createURL: s => s } );
});
- }, "Non-whitelisted policy creation throws");
+ }, "Non-whitelisted policy creation throws.");
</script>
diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-exposedTests.tentative.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-exposedTests.tentative.html
index af6e04941c3..137d0f54c82 100644
--- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-exposedTests.tentative.html
+++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-exposedTests.tentative.html
@@ -2,23 +2,25 @@
<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="trusted-types *">
<body>
<script>
- //Not exposed policy test
+ // Not exposed policy test
test(t => {
let policy = window.TrustedTypes.createPolicy('SomeName', { createHTML: s => s } );
assert_equals(window.TrustedTypes.getExposedPolicy('SomeName'), null);
- }, "Null is returned when policy is not exposed");
+ }, "Null is returned when policy is not exposed - by default");
- //Non-existent policy test
+ // Non-existent policy test
test(t => {
let policy = window.TrustedTypes.createPolicy('SomeOtherName', { createHTML: s => s } );
assert_equals(window.TrustedTypes.getExposedPolicy('JustAName'), null);
- }, "Null is returned when policy is non-existent");
+ }, "Null is returned when policy is non-existent.");
- //Exposed policy test
+ // Exposed policy test
test(t => {
let policy = window.TrustedTypes.createPolicy('EvenSomeOtherName', { createHTML: s => s }, true );
assert_equals(window.TrustedTypes.getExposedPolicy('EvenSomeOtherName'), policy);
- }, "Policy is returned when exposed == true");
+ }, "Policy is returned when exposed == true.");
</script>
diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Document-write.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Document-write.tentative.html
index 0d9ff61c9b3..5fa0b194df6 100644
--- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Document-write.tentative.html
+++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Document-write.tentative.html
@@ -9,8 +9,9 @@
</head>
<body>
<script>
- // TrustedHTML assignments do not throw.
+ // TrustedURL assignments do not throw.
test(t => {
+ document.body.innerText = '';
let p = createHTML_policy(window, 1);
let html = p.createHTML(INPUTS.HTML);
document.write(html);
@@ -19,15 +20,19 @@
// String assignments throw.
test(t => {
+ const old = document.body.innerText;
assert_throws(new TypeError(), _ => {
document.write('A string');
});
+ assert_equals(document.body.innerText, old);
}, "`document.write(string)` throws");
// Null assignment throws.
test(t => {
+ const old = document.body.innerText;
assert_throws(new TypeError(), _ => {
document.write(null);
});
+ assert_equals(document.body.innerText, old);
}, "`document.write(null)` throws");
</script>
diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html
index 646997de472..4d06f014f29 100644
--- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html
+++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html
@@ -104,6 +104,18 @@
}, "a.rel accepts null");
test(t => {
+ let div = document.createElement('div');
+ let span = document.createElement('span');
+
+ div.setAttribute('src', INPUTS.URL);
+ let attr = div.getAttributeNode('src');
+ div.removeAttributeNode(attr);
+ span.setAttributeNode(attr);
+
+ assert_equals(span.getAttribute('src'), INPUTS.URL);
+ }, "`span.src = setAttributeNode(div.src)` with string works.");
+
+ test(t => {
let el = document.createElement('iframe');
assert_throws(new TypeError(), _ => {
diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Location-assign.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Location-assign.tentative.html
index 4ad4af9df5a..4c295ffa284 100644
--- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Location-assign.tentative.html
+++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Location-assign.tentative.html
@@ -19,16 +19,20 @@
// String assignments throw.
test(t => {
+ let href = location.href;
assert_throws(new TypeError(), _ => {
location.assign("A string");
});
+ assert_equals(location.href, href);
}, "`location.assign = string` throws");
// Null assignment throws.
test(t => {
+ let href = location.href;
assert_throws(new TypeError(), _ => {
location.assign(null);
});
+ assert_equals(location.href, href);
}, "`location.assign = null` throws");
// Create default policy. Applies to all subsequent tests.
diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Location-href.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Location-href.tentative.html
index fd0a4e5ea0e..86bce7994d6 100644
--- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Location-href.tentative.html
+++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Location-href.tentative.html
@@ -19,19 +19,22 @@
// String assignments throw.
test(t => {
+ let href = location.href;
assert_throws(new TypeError(), _ => {
location.href = 'A string';
});
+ assert_equals(location.href, href);
}, "`location.href = string` throws");
// Null assignment throws.
test(t => {
+ let href = location.href;
assert_throws(new TypeError(), _ => {
location.href = null;
});
+ assert_equals(location.href, href);
}, "`location.href = null` throws");
-
// Create default policy. Applies to all subsequent tests.
let p = window.TrustedTypes.createPolicy("default",
{ createURL: createLocationURLJS }, true);
diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Location-replace.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Location-replace.tentative.html
index 9b8cabe5835..aa3af64e12b 100644
--- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Location-replace.tentative.html
+++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Location-replace.tentative.html
@@ -19,16 +19,20 @@
// String replacements throw.
test(t => {
+ let href = location.href;
assert_throws(new TypeError(), _ => {
location.replace("A string");
});
+ assert_equals(location.href, href);
}, "`location.replace = string` throws");
// Null replacement throws.
test(t => {
+ let href = location.href;
assert_throws(new TypeError(), _ => {
location.replace(null);
});
+ assert_equals(location.href, href);
}, "`location.replace = null` throws");
// Create default policy. Applies to all subsequent tests.
diff --git a/tests/wpt/web-platform-tests/trusted-types/support/helper.sub.js b/tests/wpt/web-platform-tests/trusted-types/support/helper.sub.js
index 9ad60597555..bae9d2dc7aa 100644
--- a/tests/wpt/web-platform-tests/trusted-types/support/helper.sub.js
+++ b/tests/wpt/web-platform-tests/trusted-types/support/helper.sub.js
@@ -87,9 +87,11 @@ function assert_element_accepts_trusted_type(tag, attribute, value, expected) {
function assert_throws_no_trusted_type(tag, attribute, value) {
let elem = document.createElement(tag);
+ let prev = elem[attribute];
assert_throws(new TypeError(), _ => {
elem[attribute] = value;
});
+ assert_equals(elem[attribute], prev);
}
function assert_element_accepts_trusted_html_explicit_set(win, c, t, tag, attribute, expected) {
@@ -120,19 +122,24 @@ function assert_element_accepts_trusted_type_explicit_set(tag, attribute, value,
let elem = document.createElement(tag);
elem.setAttribute(attribute, value);
assert_equals(elem[attribute] + "", expected);
+ assert_equals(elem.getAttribute(attribute), expected);
}
function assert_throws_no_trusted_type_explicit_set(tag, attribute, value) {
let elem = document.createElement(tag);
+ let prev = elem[attribute];
assert_throws(new TypeError(), _ => {
elem.setAttribute(attribute, value);
});
+ assert_equals(elem[attribute], prev);
+ assert_equals(elem.getAttribute(attribute), null);
}
function assert_element_accepts_non_trusted_type_explicit_set(tag, attribute, value, expected) {
let elem = document.createElement(tag);
elem.setAttribute(attribute, value);
assert_equals(elem[attribute] + "", expected);
+ assert_equals(elem.getAttribute(attribute), expected);
}
let namespace = 'http://www.w3.org/1999/xhtml';