diff options
author | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2018-12-05 21:05:42 -0500 |
---|---|---|
committer | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2018-12-05 23:54:15 -0500 |
commit | f9972c83e36c1303eca31b5a8a4b714f73b1fcf6 (patch) | |
tree | 1df4d52bd745fc513ff5657c2895543b9a405664 | |
parent | 16e4eb69644b74d120398cc2b3ac0d9a94075ae5 (diff) | |
download | servo-f9972c83e36c1303eca31b5a8a4b714f73b1fcf6.tar.gz servo-f9972c83e36c1303eca31b5a8a4b714f73b1fcf6.zip |
Update web-platform-tests to revision 093a97b6ecc6484c201d704d38b47bef1964d59d
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'; |