diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini index 947e223fb28..6a3af4e2ece 100644 --- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini +++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini @@ -14,6 +14,9 @@ [Revoke blob URL after creating Request, will fetch] expected: FAIL + [Revoke blob URL after calling fetch, fetch should succeed] + expected: FAIL + [url-with-fetch.any.html] [Untitled] diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index fe2077f0d1f..e6476761ebf 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -110793,6 +110793,18 @@ {} ] ], + "css/css-color/opacity-overlapping-letters.html": [ + [ + "css/css-color/opacity-overlapping-letters.html", + [ + [ + "/css/css-color/opacity-overlapping-letters-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-color/rgb-001.html": [ [ "css/css-color/rgb-001.html", @@ -152151,6 +152163,54 @@ {} ] ], + "css/css-text/white-space/pre-wrap-017.html": [ + [ + "css/css-text/white-space/pre-wrap-017.html", + [ + [ + "/css/css-text/white-space/reference/pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text/white-space/pre-wrap-018.html": [ + [ + "css/css-text/white-space/pre-wrap-018.html", + [ + [ + "/css/css-text/white-space/reference/pre-wrap-018-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text/white-space/pre-wrap-019.html": [ + [ + "css/css-text/white-space/pre-wrap-019.html", + [ + [ + "/css/css-text/white-space/reference/pre-wrap-019-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text/white-space/pre-wrap-020.html": [ + [ + "css/css-text/white-space/pre-wrap-020.html", + [ + [ + "/css/css-text/white-space/reference/pre-wrap-020-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-text/white-space/pre-wrap-float-001.html": [ [ "css/css-text/white-space/pre-wrap-float-001.html", @@ -152636,7 +152696,7 @@ "css/css-text/white-space/textarea-pre-wrap-012.html", [ [ - "/css/css-text/white-space/reference/textarea-pre-wrap-001-ref.html", + "/css/css-text/white-space/reference/pre-wrap-012-ref.html", "==" ] ], @@ -152648,7 +152708,7 @@ "css/css-text/white-space/textarea-pre-wrap-013.html", [ [ - "/css/css-text/white-space/reference/textarea-pre-wrap-001-ref.html", + "/css/css-text/white-space/reference/pre-wrap-013-ref.html", "==" ] ], @@ -152660,7 +152720,7 @@ "css/css-text/white-space/textarea-pre-wrap-014.html", [ [ - "/css/css-text/white-space/reference/textarea-pre-wrap-001-ref.html", + "/css/css-text/white-space/reference/textarea-pre-wrap-014-ref.html", "==" ] ], @@ -157795,9 +157855,21 @@ {} ] ], - "css/css-transforms/transform-box/fill-box-mutation.html": [ + "css/css-transforms/transform-box/fill-box-mutation-001.html": [ [ - "css/css-transforms/transform-box/fill-box-mutation.html", + "css/css-transforms/transform-box/fill-box-mutation-001.html", + [ + [ + "/css/css-transforms/transform-box/reference/greensquare200x200.html", + "==" + ] + ], + {} + ] + ], + "css/css-transforms/transform-box/fill-box-mutation-002.html": [ + [ + "css/css-transforms/transform-box/fill-box-mutation-002.html", [ [ "/css/css-transforms/transform-box/reference/greensquare200x200.html", @@ -212820,6 +212892,12 @@ "battery-status/META.yml": [ [] ], + "battery-status/battery-allowed-by-feature-policy.https.sub.html.headers": [ + [] + ], + "battery-status/battery-disabled-by-feature-policy.https.sub.html.headers": [ + [] + ], "battery-status/support-iframe.html": [ [] ], @@ -243018,6 +243096,9 @@ "css/css-color/lab-007-ref.html": [ [] ], + "css/css-color/opacity-overlapping-letters-ref.html": [ + [] + ], "css/css-color/rebeccapurple-ref.html": [ [] ], @@ -255012,6 +255093,15 @@ "css/css-text/white-space/reference/pre-wrap-014-ref.html": [ [] ], + "css/css-text/white-space/reference/pre-wrap-018-ref.html": [ + [] + ], + "css/css-text/white-space/reference/pre-wrap-019-ref.html": [ + [] + ], + "css/css-text/white-space/reference/pre-wrap-020-ref.html": [ + [] + ], "css/css-text/white-space/reference/pre-wrap-float-001-ref.html": [ [] ], @@ -255033,6 +255123,9 @@ "css/css-text/white-space/reference/textarea-pre-wrap-001-ref.html": [ [] ], + "css/css-text/white-space/reference/textarea-pre-wrap-014-ref.html": [ + [] + ], "css/css-text/white-space/reference/trailing-ideographic-space-001-ref.html": [ [] ], @@ -263238,6 +263331,9 @@ "docs/running-tests/safari.md": [ [] ], + "docs/running-tests/webkitgtk_minibrowser.md": [ + [] + ], "docs/test-suite-design.md": [ [] ], @@ -265029,6 +265125,9 @@ "feature-policy/resources/feature-policy-autoplay.html": [ [] ], + "feature-policy/resources/feature-policy-battery.html": [ + [] + ], "feature-policy/resources/feature-policy-generic-sensor.html": [ [] ], @@ -273246,9 +273345,6 @@ "interfaces/ambient-light.idl": [ [] ], - "interfaces/animation-worklet.idl": [ - [] - ], "interfaces/appmanifest.idl": [ [] ], @@ -273285,6 +273381,9 @@ "interfaces/csp-embedded-enforcement.idl": [ [] ], + "interfaces/css-animation-worklet.idl": [ + [] + ], "interfaces/css-animations.idl": [ [] ], @@ -285183,6 +285282,9 @@ "tools/wptrunner/wptrunner/browsers/webkit.py": [ [] ], + "tools/wptrunner/wptrunner/browsers/webkitgtk_minibrowser.py": [ + [] + ], "tools/wptrunner/wptrunner/config.py": [ [] ], @@ -289176,6 +289278,12 @@ "worklets/resources/import-remote-origin-referrer-checker-worklet-script.sub.js.headers": [ [] ], + "worklets/resources/import-same-origin-referrer-checker-worklet-script-from-remote-origin.sub.js": [ + [] + ], + "worklets/resources/import-same-origin-referrer-checker-worklet-script-from-remote-origin.sub.js.headers": [ + [] + ], "worklets/resources/import-syntax-error-worklet-script.js": [ [] ], @@ -304903,9 +305011,45 @@ } ] ], - "battery-status/battery-iframe.https.html": [ + "battery-status/battery-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ [ - "battery-status/battery-iframe.https.html", + "battery-status/battery-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html", + {} + ] + ], + "battery-status/battery-allowed-by-feature-policy-attribute.https.sub.html": [ + [ + "battery-status/battery-allowed-by-feature-policy-attribute.https.sub.html", + {} + ] + ], + "battery-status/battery-allowed-by-feature-policy.https.sub.html": [ + [ + "battery-status/battery-allowed-by-feature-policy.https.sub.html", + {} + ] + ], + "battery-status/battery-allowed-in-same-origin-iframe.https.html": [ + [ + "battery-status/battery-allowed-in-same-origin-iframe.https.html", + {} + ] + ], + "battery-status/battery-default-feature-policy.https.sub.html": [ + [ + "battery-status/battery-default-feature-policy.https.sub.html", + {} + ] + ], + "battery-status/battery-disabled-by-feature-policy.https.sub.html": [ + [ + "battery-status/battery-disabled-by-feature-policy.https.sub.html", + {} + ] + ], + "battery-status/battery-disallowed-in-cross-origin-iframe.https.sub.html": [ + [ + "battery-status/battery-disallowed-in-cross-origin-iframe.https.sub.html", {} ] ], @@ -317720,6 +317864,18 @@ {} ] ], + "css/css-grid/parsing/grid-template-columns-computed-nogrid.html": [ + [ + "css/css-grid/parsing/grid-template-columns-computed-nogrid.html", + {} + ] + ], + "css/css-grid/parsing/grid-template-columns-computed.html": [ + [ + "css/css-grid/parsing/grid-template-columns-computed.html", + {} + ] + ], "css/css-grid/parsing/grid-template-columns-invalid.html": [ [ "css/css-grid/parsing/grid-template-columns-invalid.html", @@ -317732,6 +317888,18 @@ {} ] ], + "css/css-grid/parsing/grid-template-rows-computed-nogrid.html": [ + [ + "css/css-grid/parsing/grid-template-rows-computed-nogrid.html", + {} + ] + ], + "css/css-grid/parsing/grid-template-rows-computed.html": [ + [ + "css/css-grid/parsing/grid-template-rows-computed.html", + {} + ] + ], "css/css-grid/parsing/grid-template-rows-invalid.html": [ [ "css/css-grid/parsing/grid-template-rows-invalid.html", @@ -324062,6 +324230,12 @@ {} ] ], + "css/css-text/white-space/pre-with-whitespace-crash.html": [ + [ + "css/css-text/white-space/pre-with-whitespace-crash.html", + {} + ] + ], "css/css-text/white-space/seg-break-transformation-000.html": [ [ "css/css-text/white-space/seg-break-transformation-000.html", @@ -327530,6 +327704,12 @@ {} ] ], + "css/css-values/minmax-time-serialize.html": [ + [ + "css/css-values/minmax-time-serialize.html", + {} + ] + ], "css/css-values/rgba-011.html": [ [ "css/css-values/rgba-011.html", @@ -421897,7 +422077,9 @@ "worklets/animation-worklet-referrer.https.html": [ [ "worklets/animation-worklet-referrer.https.html", - {} + { + "timeout": "long" + } ] ], "worklets/animation-worklet-service-worker-interception.https.html": [ @@ -421929,7 +422111,9 @@ "worklets/audio-worklet-referrer.https.html": [ [ "worklets/audio-worklet-referrer.https.html", - {} + { + "timeout": "long" + } ] ], "worklets/audio-worklet-service-worker-interception.https.html": [ @@ -421967,7 +422151,9 @@ "worklets/layout-worklet-referrer.https.html": [ [ "worklets/layout-worklet-referrer.https.html", - {} + { + "timeout": "long" + } ] ], "worklets/layout-worklet-service-worker-interception.https.html": [ @@ -421997,7 +422183,9 @@ "worklets/paint-worklet-referrer.https.html": [ [ "worklets/paint-worklet-referrer.https.html", - {} + { + "timeout": "long" + } ] ], "worklets/paint-worklet-service-worker-interception.https.html": [ @@ -449641,7 +449829,7 @@ "support" ], "2dcontext/tools/tests2d.yaml": [ - "7feebd0c0e0aa2f41ef63e471abd3ec8bddfa2b8", + "cc78986d452bb4c342984ec1e93c032cb2f784e1", "support" ], "2dcontext/tools/tests2dtext.yaml": [ @@ -451797,7 +451985,7 @@ "testharness" ], "IndexedDB/transaction-relaxed-durability.tentative.any.js": [ - "2ba96ec08edd3e35c85bef4712a94a9a75174624", + "865c28ce163c2dea2f55b25ec1145cb8bcc6bb45", "testharness" ], "IndexedDB/transaction-requestqueue.htm": [ @@ -453589,7 +453777,7 @@ "testharness" ], "animation-worklet/META.yml": [ - "c6918965843779e02522af1abf48acda8d0a128b", + "7a53b4d76d2c41ece6d9acc86482f92a28173e03", "support" ], "animation-worklet/animate-multiple-effects-on-different-targets-via-main-thread.https.html": [ @@ -453621,7 +453809,7 @@ "testharness" ], "animation-worklet/idlharness.any.js": [ - "e821a2fee8a3ace54e8e7092ab17c490a0ded914", + "efd2fdeb98dc5093babd24c785145ace9fdc8757", "testharness" ], "animation-worklet/inactive-timeline.https.html": [ @@ -455889,13 +456077,49 @@ "testharness" ], "battery-status/META.yml": [ - "12a2f12c32e9c58912a209e369af59d6ceee3aa4", + "a069984ddb226b6f07cd5f1408e159634dfec7f4", "support" ], + "battery-status/battery-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ + "47a9cbac0fc4da3ec56e63896d62fa51feb512c6", + "testharness" + ], + "battery-status/battery-allowed-by-feature-policy-attribute.https.sub.html": [ + "96bca54ec8e087ba98961c303e7f96c955963450", + "testharness" + ], + "battery-status/battery-allowed-by-feature-policy.https.sub.html": [ + "5849af5750148f9af220e9781827fd3b10b32de1", + "testharness" + ], + "battery-status/battery-allowed-by-feature-policy.https.sub.html.headers": [ + "03b98040cc4d2e5cd352584b69ffd09ca1cb308c", + "support" + ], + "battery-status/battery-allowed-in-same-origin-iframe.https.html": [ + "c0d684f26d7d272cdff5e9545ffbd4f2c354c4a3", + "testharness" + ], "battery-status/battery-charging-manual.https.html": [ "9ff7421638a85e077532eecbeab417d0fe5b0314", "manual" ], + "battery-status/battery-default-feature-policy.https.sub.html": [ + "5486a453e4e99c26e50b6de99a27a48c78f896de", + "testharness" + ], + "battery-status/battery-disabled-by-feature-policy.https.sub.html": [ + "515c64fe490fbf11fd516f932af429215e655ea5", + "testharness" + ], + "battery-status/battery-disabled-by-feature-policy.https.sub.html.headers": [ + "09a5ae84a123aac7591b20f78ffeea1cbd279a7c", + "support" + ], + "battery-status/battery-disallowed-in-cross-origin-iframe.https.sub.html": [ + "8b48626b5511414e2e8d8ffa93f63779cd37b3cb", + "testharness" + ], "battery-status/battery-discharging-manual.https.html": [ "f321cf75481effd2b427437bb8569d742990b6cb", "manual" @@ -455904,10 +456128,6 @@ "0680b7d93322dbbc55a335304888cf8c17d1d708", "manual" ], - "battery-status/battery-iframe.https.html": [ - "1f95b4ecb32037ef818cc2a01d5f4fecd35cb444", - "testharness" - ], "battery-status/battery-insecure-context.html": [ "9d2c9fd1d41dc299a59c4e374c954302db1ac502", "testharness" @@ -546116,6 +546336,14 @@ "61a98dcb7bb02fab3db18ed337eee5ddb07724fc", "reftest" ], + "css/css-color/opacity-overlapping-letters-ref.html": [ + "bab1f80f685f9e52ea74b8b98f5153dcd9516624", + "support" + ], + "css/css-color/opacity-overlapping-letters.html": [ + "65ab3742de39205341e04b18001deea3f7be192d", + "reftest" + ], "css/css-color/parsing/color-computed.html": [ "973b454aaddd25dadbe5a7309c9d9bb131c1abbf", "testharness" @@ -564768,6 +564996,14 @@ "9c9bd47ec894ccc0e389287120082fb4bf5c9905", "testharness" ], + "css/css-grid/parsing/grid-template-columns-computed-nogrid.html": [ + "b95914fe3e55bebd04a77f1146279089efd5f964", + "testharness" + ], + "css/css-grid/parsing/grid-template-columns-computed.html": [ + "f6d0d9721c9dd8ed1c0441a9dd2e2077b71350d3", + "testharness" + ], "css/css-grid/parsing/grid-template-columns-invalid.html": [ "9d7aac48721a763ab778e22523b16b3f99b3f16a", "testharness" @@ -564776,6 +565012,14 @@ "6bf2e7bce63c88d028f5dea1bf3e7be8cab7775c", "testharness" ], + "css/css-grid/parsing/grid-template-rows-computed-nogrid.html": [ + "03e601acb93191cecaa73b571d5f6cd8e2a6710a", + "testharness" + ], + "css/css-grid/parsing/grid-template-rows-computed.html": [ + "40722623aaa1ee805dc6e282951febb0021e2a8a", + "testharness" + ], "css/css-grid/parsing/grid-template-rows-invalid.html": [ "8a0fe9ddfa23e12985c99c1fe9196eebfc04c8cc", "testharness" @@ -583513,7 +583757,7 @@ "visual" ], "css/css-text/text-align/text-align-last-empty-inline.html": [ - "07dcb3ba896c1f393896a397775cc3ff83fb5ef3", + "fd3d706d1ee4acd3fda03cd46c12f20dfb69b9b9", "testharness" ], "css/css-text/text-align/text-align-start-001.html": [ @@ -584972,6 +585216,10 @@ "c7e1855f9794f42f965e64fc390e1b50b83059fb", "testharness" ], + "css/css-text/white-space/pre-with-whitespace-crash.html": [ + "89e5c3a71feb52183061da6b1e5906cda185ea04", + "testharness" + ], "css/css-text/white-space/pre-wrap-001.html": [ "87ffad96310532a6501e1b75c30f986433cc634e", "reftest" @@ -585009,15 +585257,15 @@ "reftest" ], "css/css-text/white-space/pre-wrap-012.html": [ - "f0eb17c4f975d49047faa0547ecee6ecbb675d4a", + "e844d97860450c1e324745e17d4fb2fd099a8a82", "reftest" ], "css/css-text/white-space/pre-wrap-013.html": [ - "29333f5946e196ed2f0d551b4aceead81f9c2ba1", + "23c4b536cde73a22c32a19637312337c47952c0a", "reftest" ], "css/css-text/white-space/pre-wrap-014.html": [ - "ac867771d58b9b3346a7338cc17e1d764794c424", + "26423c192842516fd491f2ec89e3bf0bad9c7828", "reftest" ], "css/css-text/white-space/pre-wrap-015.html": [ @@ -585028,6 +585276,22 @@ "0590f669e918a8782142784080179b1f37cbaf45", "reftest" ], + "css/css-text/white-space/pre-wrap-017.html": [ + "541e1abe575b8af2c359cdf36fcfa2fb672bfb09", + "reftest" + ], + "css/css-text/white-space/pre-wrap-018.html": [ + "f911b2dcdeac18fb6c5e1f531985a3d144077899", + "reftest" + ], + "css/css-text/white-space/pre-wrap-019.html": [ + "58dae9f50070e7820c09e901f197700e4226e2e5", + "reftest" + ], + "css/css-text/white-space/pre-wrap-020.html": [ + "ec3e8621159a28103527809c582e1ac0ea365bcc", + "reftest" + ], "css/css-text/white-space/pre-wrap-float-001.html": [ "af29b0505e0eefbab09b011798c0dd6136598cca", "reftest" @@ -585152,6 +585416,18 @@ "87d51f6067d5718b03f74df1532058f765ab2b76", "support" ], + "css/css-text/white-space/reference/pre-wrap-018-ref.html": [ + "a87649432fea65476e82dd09d212cbc35417f766", + "support" + ], + "css/css-text/white-space/reference/pre-wrap-019-ref.html": [ + "e3be478a351dc3ea98cb40010c4627d05ebce5fd", + "support" + ], + "css/css-text/white-space/reference/pre-wrap-020-ref.html": [ + "2ef5e7f408e3451f22530d24cfc9e2f188a14213", + "support" + ], "css/css-text/white-space/reference/pre-wrap-float-001-ref.html": [ "e72b3c94ea454eceee9e934ff7929d18da2fc441", "support" @@ -585180,6 +585456,10 @@ "31070ea92815e4d3a3ece48ed69da03de02f671e", "support" ], + "css/css-text/white-space/reference/textarea-pre-wrap-014-ref.html": [ + "99a38bf88b21722910494852fa5b2254c5f1d13f", + "support" + ], "css/css-text/white-space/reference/trailing-ideographic-space-001-ref.html": [ "aa97e2bc8347a12b03eae593860f6403da311cd8", "support" @@ -585289,7 +585569,7 @@ "support" ], "css/css-text/white-space/reference/white-space-intrinsic-size-004-ref.html": [ - "0c31cb4299673421f45572c3bec54ce474e048bb", + "93b8b913cc9f4325a676af9c04640979a0eda604", "support" ], "css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-001-ref.html": [ @@ -585297,7 +585577,7 @@ "support" ], "css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-002-ref.html": [ - "5f94d076e840080f8cc855e013039ef16f1d993c", + "0971868116fcd7c5fed8801de1caf71aa8ad3ec3", "support" ], "css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-003-ref.html": [ @@ -585457,15 +585737,15 @@ "reftest" ], "css/css-text/white-space/textarea-pre-wrap-012.html": [ - "04e07d6bcc815fb640e843a36420bab6b3bef9bc", + "5ca12811280592d9253668787de454408113e7df", "reftest" ], "css/css-text/white-space/textarea-pre-wrap-013.html": [ - "853d2c33d140d3e8b973ba01b40d004049a71b16", + "e3d5c3253d6268864e1e09bbedef70e782a85811", "reftest" ], "css/css-text/white-space/textarea-pre-wrap-014.html": [ - "b6d62ce2bff35103f46a81918e622a938d0c9491", + "f2812af2fbf4cee10b7fd8f292d5d5219fe859f4", "reftest" ], "css/css-text/white-space/trailing-ideographic-space-001.html": [ @@ -585597,27 +585877,27 @@ "reftest" ], "css/css-text/white-space/white-space-intrinsic-size-004.html": [ - "cc2d73992d54b9340b4eb7aad4ec7d9b29793f08", + "a5be242e23a7d00785f520aa52adf794a19aaed3", "reftest" ], "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-001.html": [ - "ca6f65e613d035cb3f79abaa0e527643126cadce", + "82fbfbc976cd02629d1180e4470170a533aa27e9", "reftest" ], "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-002.html": [ - "76ca5ef77dbb5ab32c9da92c7a2c4f181a1f98ff", + "f7e0f21f45761400e5f7b317de521added098b73", "reftest" ], "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-003.html": [ - "15e47a7adba3d4fc5534eab8811e3c91518aa771", + "def9bcaee32b6c9327e8785df3901549f17c8759", "reftest" ], "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html": [ - "aa048b512e940511030631f2c379aaa995e6b868", + "d271057c43cc7b232c00fa0f3426e2ef5a7666f3", "reftest" ], "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html": [ - "62ecb84757e61b6866213b71503c4dd6ae204410", + "e10b4e19033ea81edd8aefb8131db8a8b49828d3", "reftest" ], "css/css-text/white-space/white-space-wrap-after-nowrap-001.html": [ @@ -586109,7 +586389,7 @@ "testharness" ], "css/css-transforms/animation/scale-interpolation.html": [ - "146575c902c10b8f34a6e9a12ee66abae1904223", + "c6fec26461155ec15d9eb0ab469205c4868db161", "testharness" ], "css/css-transforms/animation/transform-interpolation-001.html": [ @@ -586141,7 +586421,7 @@ "testharness" ], "css/css-transforms/animation/translate-interpolation.html": [ - "aed6c41cf641ffc3b5eb7ef22b4b7353d98004fb", + "c73f68a130e86b39b4832111bbfb05c633e09429", "testharness" ], "css/css-transforms/backface-visibility-hidden-001.html": [ @@ -588136,10 +588416,14 @@ "6dfeba6e167649e6d4f3b84fccd1e9fedfe0c9d1", "support" ], - "css/css-transforms/transform-box/fill-box-mutation.html": [ + "css/css-transforms/transform-box/fill-box-mutation-001.html": [ "1f0dfd01bb9ab6acf183721f23f8590293e9e32f", "reftest" ], + "css/css-transforms/transform-box/fill-box-mutation-002.html": [ + "676d5cdd03b25ce2c5d25df03237819196fa1a66", + "reftest" + ], "css/css-transforms/transform-box/fill-box.html": [ "7e9b133aead426b36702e5377c3cd1347e36ff5f", "reftest" @@ -590589,7 +590873,7 @@ "testharness" ], "css/css-transitions/parsing/transition-timing-function-computed.html": [ - "fa03b2295b9c2f92ab4e520cc75153d9eaa6e672", + "e57856bab4f16f11f288197bb0244aaffa57be7e", "testharness" ], "css/css-transitions/parsing/transition-timing-function-invalid.html": [ @@ -595601,7 +595885,7 @@ "testharness" ], "css/css-values/minmax-angle-serialize.html": [ - "3f424589ba6f9806fefc444320301da5a12303ac", + "07b7d3c2b232612334555603325560259cb41203", "testharness" ], "css/css-values/minmax-integer-computed.html": [ @@ -595648,6 +595932,10 @@ "bebe674cd79565a364253f3290dd60b7073e2af1", "testharness" ], + "css/css-values/minmax-time-serialize.html": [ + "d7dd4edb5880e9162a702e3c1ce0a5540dc42679", + "testharness" + ], "css/css-values/q-unit-case-insensitivity-001.html": [ "b4a08aa117952c6f92e2aec6f57843b46a460104", "reftest" @@ -618601,7 +618889,7 @@ "support" ], "docs/running-tests/from-local-system.md": [ - "d1a5177894a826d0c8857a9b818d4a87ea022d71", + "2d44ecb7d2f771c5e2ceb06b5847db3ac82a4f1c", "support" ], "docs/running-tests/from-web.md": [ @@ -618616,6 +618904,10 @@ "fb8b7be2e5275dc7196c559573a73d3685e1f2a0", "support" ], + "docs/running-tests/webkitgtk_minibrowser.md": [ + "b12859bcca9e6e90998735c97932c42d60aecba4", + "support" + ], "docs/test-suite-design.md": [ "6a104e2f1d42fda1111124022dd7d94aaea3a598", "support" @@ -624628,6 +624920,10 @@ "79f8eefb9d619c3f54524fd53649cf03d66713b3", "support" ], + "feature-policy/resources/feature-policy-battery.html": [ + "dff4b3290d66c4c804267ecfe2fb9717a6449cff", + "support" + ], "feature-policy/resources/feature-policy-generic-sensor.html": [ "59652e2e7ae0056a6cc4be7f004b6d0151fb9d44", "support" @@ -629769,7 +630065,7 @@ "testharness" ], "html/browsers/origin/cross-origin-objects/cross-origin-objects.html": [ - "50fe71a2c6fba3c1ec6e42c94dd05899eb24245c", + "72aec0b7542b685945982186f1e2570e80ac6087", "testharness" ], "html/browsers/origin/cross-origin-objects/frame-with-then.html": [ @@ -641149,7 +641445,7 @@ "reftest" ], "html/semantics/embedded-content/the-img-element/img.complete.html": [ - "dcacf43db2ddf8c2a179d67326a18f78b03ff0a9", + "d8d5a84eb7998044fb24847cc0ac5a1185b82bb6", "testharness" ], "html/semantics/embedded-content/the-img-element/invalid-src.html": [ @@ -648788,10 +649084,6 @@ "ce335161a2570fa9f2ab8051c75c0ab71aa2df76", "support" ], - "interfaces/animation-worklet.idl": [ - "02deca73a3a3378c9906776d547a37b7c31e0fb5", - "support" - ], "interfaces/appmanifest.idl": [ "4a6425829f23da3cd1f78f74ff52a18635f7af7c", "support" @@ -648840,6 +649132,10 @@ "167bc96eb53c5d1e67f34b1cc39622a30d30a7f8", "support" ], + "interfaces/css-animation-worklet.idl": [ + "4aca84e5a024efdc2d3e674540bf2091758551c9", + "support" + ], "interfaces/css-animations.idl": [ "f87015f6a87fccc0accab30920cd8371eee99e63", "support" @@ -648909,7 +649205,7 @@ "support" ], "interfaces/dom.idl": [ - "03a0201b16fed569429c6cfc709063ed31681422", + "d1557a676ef0f7c458c8654c59ec713a42833d0a", "support" ], "interfaces/element-timing.idl": [ @@ -648985,7 +649281,7 @@ "support" ], "interfaces/html.idl": [ - "d856cd578aa0a0d15f09d0c95bebf48b0f95c0d6", + "8347c5d4cdc9b00550efcec7f2a77993f2b7ccf6", "support" ], "interfaces/image-capture.idl": [ @@ -649169,7 +649465,7 @@ "support" ], "interfaces/scroll-animations.idl": [ - "f2560d9ffc88eaadf961b055480ed605610f72bf", + "8fd67a7af7bbdaa8129fb03cf395eb6e411dbcd4", "support" ], "interfaces/secure-contexts.idl": [ @@ -649249,7 +649545,7 @@ "support" ], "interfaces/web-nfc.idl": [ - "b08bc7d4069747ed785dd62db23bb94fc269153b", + "c3e53350901c7b1e1c608ff4ee07be475c97cd9a", "support" ], "interfaces/web-share.idl": [ @@ -649309,7 +649605,7 @@ "support" ], "interfaces/webxr.idl": [ - "b03aa556bb815127203e79c7b4bbc864d539314b", + "012b67cf246dc4c7641e819bbc8e4b39d190d078", "support" ], "interfaces/worklets.idl": [ @@ -649317,7 +649613,7 @@ "support" ], "interfaces/xhr.idl": [ - "27660bfd573b6dbd38f7c52b514fab9f4bd52996", + "de478734ca96985e9868a1e64fbf617faa9c11e5", "support" ], "interfaces/xslt.tentative.idl": [ @@ -662637,15 +662933,15 @@ "testharness" ], "payment-request/PaymentValidationErrors/retry-shows-error-member-manual.https.html": [ - "b3a539ef8f4b8aa9dd9a3ed0cb6b527f184cb04f", + "9d25e9e1524663fb6520d8c6bf41aca4e1b14e4e", "manual" ], "payment-request/PaymentValidationErrors/retry-shows-payer-member-manual.https.html": [ - "8dbc760fd07fe990b8bbded56ffca59091492fd8", + "ad5ad72fbb64aa85b56062fedd9a7f596d0bdb0f", "manual" ], "payment-request/PaymentValidationErrors/retry-shows-shippingAddress-member-manual.https.html": [ - "c3e2ba713223c94689d4549aa90008fe91faeb7c", + "837ab79cbefa9eebd358f72a227014d5c71af72f", "manual" ], "payment-request/algorithms-manual.https.html": [ @@ -662829,7 +663125,7 @@ "manual" ], "payment-request/payment-response/onpayerdetailchange-attribute-manual.https.html": [ - "f3f3f76357c1467f4032c5749849bd0063b41010", + "5731952c0ebc0e8085cb340b5b7cfc478849fc99", "manual" ], "payment-request/payment-response/onpayerdetailchange-attribute.https.html": [ @@ -662849,11 +663145,11 @@ "manual" ], "payment-request/payment-response/payerdetailschange-updateWith-immediate-manual.https.html": [ - "912ceaa6086fd616908115d4f17117e76867d830", + "5747a2ac0cbd8745abff93c8afc789128a3f7a26", "manual" ], "payment-request/payment-response/payerdetailschange-updateWith-manual.https.html": [ - "30e27088e7de1384489fcf9aa72391d353e34b36", + "2e6a31a19f5932077dac5d6996a5adb4371dd5e2", "manual" ], "payment-request/payment-response/rejects_if_not_active-manual.https.html": [ @@ -686417,7 +686713,7 @@ "support" ], "tools/ci/manifest_build.py": [ - "de17089214ed041ed98a07583ea8c4628b147e5a", + "a563c3b88314beafb2ed8b5fb18210bcfe147a20", "support" ], "tools/ci/run_tc.py": [ @@ -686697,7 +686993,7 @@ "support" ], "tools/manifest/download.py": [ - "8f3e9d5fd653cba24aeeeda5ba4d5661f81722fc", + "3736d54f15dc5e9c66c560730acd08f43e53db30", "support" ], "tools/manifest/item.py": [ @@ -686741,7 +687037,7 @@ "support" ], "tools/manifest/update.py": [ - "166a7c9caddbab5dfa40712be8840de7b3efb65f", + "bfbaaf897126d8eeca69dcef94bb31308897fde2", "support" ], "tools/manifest/utils.py": [ @@ -691213,7 +691509,7 @@ "support" ], "tools/wpt/browser.py": [ - "ca86c55d45f065b7a8ac0c047dbb22f2edc9414f", + "c04162fe2a15ecb0cbebf1e0c57672b24f2efc56", "support" ], "tools/wpt/commands.json": [ @@ -691245,7 +691541,7 @@ "support" ], "tools/wpt/run.py": [ - "bea36c7c24a80868980861466d8b962624446434", + "077d4a7eb87f850017298a0bb971ed74ff7ff694", "support" ], "tools/wpt/testfiles.py": [ @@ -691257,7 +691553,7 @@ "support" ], "tools/wpt/tests/test_browser.py": [ - "a2e518a9d07dcb69ea61d7885e0beae9e039c91d", + "f691c380b7abdb97fb616217cb710eac2480e3e9", "support" ], "tools/wpt/tests/test_run.py": [ @@ -691341,7 +691637,7 @@ "support" ], "tools/wptrunner/requirements.txt": [ - "3584c93a199716d0b9809dc4180195647887d1a0", + "9eeb836230c39def1291c210a9690cbb5b24c117", "support" ], "tools/wptrunner/requirements_android_webview.txt": [ @@ -691525,7 +691821,7 @@ "support" ], "tools/wptrunner/wptrunner/browsers/__init__.py": [ - "75ec775658ce5d3b15e919bcd166a4af08ccb868", + "957d2a689acda4801cddc351e1c2cd4c06a8d7e3", "support" ], "tools/wptrunner/wptrunner/browsers/android_webview.py": [ @@ -691608,6 +691904,10 @@ "bd444eef1dfcf61247c3322e79cc0b085ac67750", "support" ], + "tools/wptrunner/wptrunner/browsers/webkitgtk_minibrowser.py": [ + "65f78125ad7a89d43c08b6986bf41145cc71d04c", + "support" + ], "tools/wptrunner/wptrunner/config.py": [ "d2a61a87594bc8f7753530ab3bd02795b68e3c37", "support" @@ -691889,7 +692189,7 @@ "support" ], "tools/wptrunner/wptrunner/wptlogging.py": [ - "6751f8907f411de8ee2b8999b86a1ab1cd9ee57b", + "69cee744879eb6780cb99ec93123922e166d9e16", "support" ], "tools/wptrunner/wptrunner/wptmanifest/__init__.py": [ @@ -692625,7 +692925,7 @@ "support" ], "trusted-types/trusted-types-reporting.tentative.https.html": [ - "16e6d2a7d8d3e01c1cc469ea67b9e0361658495d", + "11ef305064d2af10ffc07ca09e51dcb1a3661e76", "testharness" ], "trusted-types/trusted-types-reporting.tentative.https.html.headers": [ @@ -692641,19 +692941,19 @@ "support" ], "uievents/click/auxclick_event.html": [ - "9f4ffed96e6cb186f8441e9681c281d087ff8faf", + "8bb2e137f5bce9333e4687b7603432195107745b", "testharness" ], "uievents/click/click_event_target_child_parent.html": [ - "1e07e4340392ef0830869876c06e5ee0c1238c91", + "a09e5532affd93cafca51391591b7ff882636310", "testharness" ], "uievents/click/click_event_target_siblings.html": [ - "0306b6f05f0d4c3c6ef58ab638c186184bb6bf5a", + "24d64dc9ac344f9c856241221d7323b162434932", "testharness" ], "uievents/click/mouse-dblclick-event.html": [ - "5bf0bbc07e00d3d01bfcc1379b8ac0c2f78fb7b7", + "31a600b3cb715e408cd4aa8920fb54fd77064e57", "testharness" ], "uievents/constructors/README.md": [ @@ -692745,7 +693045,7 @@ "manual" ], "uievents/mouse/mouse_buttons_back_forward.html": [ - "787abac44472960844b5b3eda3955134f17240a8", + "2323bc10269a7238fbe655aa1341d9dde210e3a6", "testharness" ], "uievents/mouse/mouseevent_move_button-manual.html": [ @@ -705589,7 +705889,7 @@ "testharness" ], "worklets/animation-worklet-referrer.https.html": [ - "494e06a8472795016e2ee346397d7c227477809c", + "49933dea47d554b0d9dbdeb8305c522c076c9c81", "testharness" ], "worklets/animation-worklet-service-worker-interception.https.html": [ @@ -705609,7 +705909,7 @@ "testharness" ], "worklets/audio-worklet-referrer.https.html": [ - "f258cd5a452d57002d041211cb44ee6f27f0b3aa", + "61cb63d75ca647a7385200573c3a6b5aca27ae34", "testharness" ], "worklets/audio-worklet-service-worker-interception.https.html": [ @@ -705633,7 +705933,7 @@ "testharness" ], "worklets/layout-worklet-referrer.https.html": [ - "cb383a935a2a6d154d804595e78275e289076a4c", + "dc7b84b350c5114624caf7afd87924d5c673763a", "testharness" ], "worklets/layout-worklet-service-worker-interception.https.html": [ @@ -705653,7 +705953,7 @@ "testharness" ], "worklets/paint-worklet-referrer.https.html": [ - "a4b5a6f498c2755d498fd22afc1ab7398fab56ec", + "8f3d82a1ddc62a482caf70dd6591cb7244bd7fe5", "testharness" ], "worklets/paint-worklet-service-worker-interception.https.html": [ @@ -705744,6 +706044,14 @@ "cb762eff806849df46dc758ef7b98b63f27f54c9", "support" ], + "worklets/resources/import-same-origin-referrer-checker-worklet-script-from-remote-origin.sub.js": [ + "33af2258ff3504db7dc1f7c7564fd2306779c206", + "support" + ], + "worklets/resources/import-same-origin-referrer-checker-worklet-script-from-remote-origin.sub.js.headers": [ + "cb762eff806849df46dc758ef7b98b63f27f54c9", + "support" + ], "worklets/resources/import-syntax-error-worklet-script.js": [ "1539ad004ed41f521f42b7e564fdf1cbfbdc2de3", "support" @@ -705757,11 +706065,11 @@ "support" ], "worklets/resources/referrer-tests.js": [ - "01b8e2ab57acb4c41d898f1541e2011c4946bd0a", + "b3c4a048f5a12350ce79ba93049d81858f54201f", "support" ], "worklets/resources/referrer-window.html": [ - "4817f0452a2999ae2774b2849130cb11e670778d", + "934e3dc41b1cda364a00fe4fae0e4bc114e9c4b6", "support" ], "worklets/resources/service-worker-interception-tests.js": [ diff --git a/tests/wpt/metadata/css/css-text/white-space/pre-wrap-017.html.ini b/tests/wpt/metadata/css/css-text/white-space/pre-wrap-017.html.ini new file mode 100644 index 00000000000..750e1959546 --- /dev/null +++ b/tests/wpt/metadata/css/css-text/white-space/pre-wrap-017.html.ini @@ -0,0 +1,2 @@ +[pre-wrap-017.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/white-space/pre-wrap-018.html.ini b/tests/wpt/metadata/css/css-text/white-space/pre-wrap-018.html.ini new file mode 100644 index 00000000000..43602b2e21b --- /dev/null +++ b/tests/wpt/metadata/css/css-text/white-space/pre-wrap-018.html.ini @@ -0,0 +1,2 @@ +[pre-wrap-018.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/white-space/pre-wrap-019.html.ini b/tests/wpt/metadata/css/css-text/white-space/pre-wrap-019.html.ini new file mode 100644 index 00000000000..793142eff28 --- /dev/null +++ b/tests/wpt/metadata/css/css-text/white-space/pre-wrap-019.html.ini @@ -0,0 +1,2 @@ +[pre-wrap-019.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/white-space/pre-wrap-020.html.ini b/tests/wpt/metadata/css/css-text/white-space/pre-wrap-020.html.ini new file mode 100644 index 00000000000..2954a812945 --- /dev/null +++ b/tests/wpt/metadata/css/css-text/white-space/pre-wrap-020.html.ini @@ -0,0 +1,2 @@ +[pre-wrap-020.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/white-space/white-space-intrinsic-size-004.html.ini b/tests/wpt/metadata/css/css-text/white-space/white-space-intrinsic-size-004.html.ini deleted file mode 100644 index ec010b1bfd9..00000000000 --- a/tests/wpt/metadata/css/css-text/white-space/white-space-intrinsic-size-004.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[white-space-intrinsic-size-004.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini b/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini index 03f2f3fe9d1..c511d92d674 100644 --- a/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini +++ b/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini @@ -1,5 +1,4 @@ [perspective-interpolation.html] - expected: CRASH [ perspective interpolation] expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-box/fill-box-mutation-001.html.ini b/tests/wpt/metadata/css/css-transforms/transform-box/fill-box-mutation-001.html.ini new file mode 100644 index 00000000000..289789d004a --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-box/fill-box-mutation-001.html.ini @@ -0,0 +1,2 @@ +[fill-box-mutation-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-box/fill-box-mutation-002.html.ini b/tests/wpt/metadata/css/css-transforms/transform-box/fill-box-mutation-002.html.ini new file mode 100644 index 00000000000..31fd46eca02 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-box/fill-box-mutation-002.html.ini @@ -0,0 +1,2 @@ +[fill-box-mutation-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-values/minmax-angle-serialize.html.ini b/tests/wpt/metadata/css/css-values/minmax-angle-serialize.html.ini index d08c22371d7..087d8045750 100644 --- a/tests/wpt/metadata/css/css-values/minmax-angle-serialize.html.ini +++ b/tests/wpt/metadata/css/css-values/minmax-angle-serialize.html.ini @@ -23,3 +23,45 @@ [e.style['transform'\] = "rotate(min(1turn))" should set the property value] expected: FAIL + [e.style['transform'\] = "rotate(min(1deg, 2deg, 3deg))" should set the property value] + expected: FAIL + + [e.style['transform'\] = "rotate(calc(1rad + min(1deg)))" should set the property value] + expected: FAIL + + [e.style['transform'\] = "rotate(max(3deg, 2deg, 1deg))" should set the property value] + expected: FAIL + + [e.style['transform'\] = "rotate(calc(1rad + max(1deg)))" should set the property value] + expected: FAIL + + [e.style['transform'\] = "rotate(min(3deg, 2deg, 1deg))" should set the property value] + expected: FAIL + + [e.style['transform'\] = "rotate(max(0.25turn, 1.57rad, 90deg))" should set the property value] + expected: FAIL + + [e.style['transform'\] = "rotate(calc(min(1deg) + 1rad))" should set the property value] + expected: FAIL + + [e.style['transform'\] = "rotate(max(90deg, 1.57rad, 0.25turn))" should set the property value] + expected: FAIL + + [e.style['transform'\] = "rotate(min(90deg, 1.57rad, 0.25turn))" should set the property value] + expected: FAIL + + [e.style['transform'\] = "rotate(min(0.25turn, 1.57rad, 90deg))" should set the property value] + expected: FAIL + + [e.style['transform'\] = "rotate(calc(max(1deg) + max(2deg)))" should set the property value] + expected: FAIL + + [e.style['transform'\] = "rotate(calc(max(1deg) + 1rad))" should set the property value] + expected: FAIL + + [e.style['transform'\] = "rotate(max(1deg, 2deg, 3deg))" should set the property value] + expected: FAIL + + [e.style['transform'\] = "rotate(calc(min(1deg) + min(2deg)))" should set the property value] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-values/minmax-time-serialize.html.ini b/tests/wpt/metadata/css/css-values/minmax-time-serialize.html.ini new file mode 100644 index 00000000000..6be83f82dc2 --- /dev/null +++ b/tests/wpt/metadata/css/css-values/minmax-time-serialize.html.ini @@ -0,0 +1,61 @@ +[minmax-time-serialize.html] + [e.style['transition-delay'\] = "calc(min(1s) + min(2s))" should set the property value] + expected: FAIL + + [e.style['transition-delay'\] = "calc(max(1s) + max(2s))" should set the property value] + expected: FAIL + + [e.style['transition-delay'\] = "calc(max(2s) + max(1s))" should set the property value] + expected: FAIL + + [e.style['transition-delay'\] = "min(1ms)" should set the property value] + expected: FAIL + + [e.style['transition-delay'\] = "calc(1s + max(2s))" should set the property value] + expected: FAIL + + [e.style['transition-delay'\] = "max(1ms)" should set the property value] + expected: FAIL + + [e.style['transition-delay'\] = "min(1s, 1000ms)" should set the property value] + expected: FAIL + + [e.style['transition-delay'\] = "calc(min(2s) + min(1s))" should set the property value] + expected: FAIL + + [e.style['transition-delay'\] = "calc(max(2s) + 1s)" should set the property value] + expected: FAIL + + [e.style['transition-delay'\] = "max(1ms, 2ms, 3ms)" should set the property value] + expected: FAIL + + [e.style['transition-delay'\] = "min(1ms, 2ms, 3ms)" should set the property value] + expected: FAIL + + [e.style['transition-delay'\] = "min(1000ms, 1s)" should set the property value] + expected: FAIL + + [e.style['transition-delay'\] = "min(1s)" should set the property value] + expected: FAIL + + [e.style['transition-delay'\] = "calc(1s + min(2s))" should set the property value] + expected: FAIL + + [e.style['transition-delay'\] = "max(1s)" should set the property value] + expected: FAIL + + [e.style['transition-delay'\] = "calc(min(2s) + 1s)" should set the property value] + expected: FAIL + + [e.style['transition-delay'\] = "max(1s, 1000ms)" should set the property value] + expected: FAIL + + [e.style['transition-delay'\] = "max(1000ms, 1s)" should set the property value] + expected: FAIL + + [e.style['transition-delay'\] = "max(3ms, 2ms, 1ms)" should set the property value] + expected: FAIL + + [e.style['transition-delay'\] = "min(3ms, 2ms, 1ms)" should set the property value] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini b/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini deleted file mode 100644 index e6e1f29e274..00000000000 --- a/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[matchMedia-display-none-iframe.html] - expected: ERROR diff --git a/tests/wpt/metadata/dom/idlharness.window.js.ini b/tests/wpt/metadata/dom/idlharness.window.js.ini index 2b018c8e4bd..b8f32512457 100644 --- a/tests/wpt/metadata/dom/idlharness.window.js.ini +++ b/tests/wpt/metadata/dom/idlharness.window.js.ini @@ -829,3 +829,6 @@ [XPathEvaluator interface: existence and properties of interface prototype object] expected: FAIL + [ShadowRoot interface: attribute onslotchange] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_txt.html.ini b/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_txt.html.ini new file mode 100644 index 00000000000..c3916f8555d --- /dev/null +++ b/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_txt.html.ini @@ -0,0 +1,2 @@ +[contenttype_txt.html] + expected: CRASH diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini index bb3703d3f92..ef1273a21ab 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -315,27 +315,15 @@ [ + diff --git a/tests/wpt/web-platform-tests/css/css-color/opacity-overlapping-letters-ref.html b/tests/wpt/web-platform-tests/css/css-color/opacity-overlapping-letters-ref.html new file mode 100644 index 00000000000..bab1f80f685 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/opacity-overlapping-letters-ref.html @@ -0,0 +1,3 @@ + + +
X X X
diff --git a/tests/wpt/web-platform-tests/css/css-color/opacity-overlapping-letters.html b/tests/wpt/web-platform-tests/css/css-color/opacity-overlapping-letters.html new file mode 100644 index 00000000000..65ab3742de3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-color/opacity-overlapping-letters.html @@ -0,0 +1,6 @@ + + + + + +
XXXXX
diff --git a/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-columns-computed-nogrid.html b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-columns-computed-nogrid.html new file mode 100644 index 00000000000..b95914fe3e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-columns-computed-nogrid.html @@ -0,0 +1,40 @@ + + +CSS Grid Layout Test: getComputedStyle().gridTemplateColumns + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-columns-computed.html b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-columns-computed.html new file mode 100644 index 00000000000..f6d0d9721c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-columns-computed.html @@ -0,0 +1,40 @@ + + +CSS Grid Layout Test: getComputedStyle().gridTemplateColumns + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-rows-computed-nogrid.html b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-rows-computed-nogrid.html new file mode 100644 index 00000000000..03e601acb93 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-rows-computed-nogrid.html @@ -0,0 +1,40 @@ + + +CSS Grid Layout Test: getComputedStyle().gridTemplateRows + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-rows-computed.html b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-rows-computed.html new file mode 100644 index 00000000000..40722623aaa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-rows-computed.html @@ -0,0 +1,40 @@ + + +CSS Grid Layout Test: getComputedStyle().gridTemplateRows + + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-empty-inline.html b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-empty-inline.html index 07dcb3ba896..fd3d706d1ee 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-empty-inline.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-align/text-align-last-empty-inline.html @@ -13,6 +13,9 @@ padding: 1px; background: black; } + #reference { + text-align: center; + }
@@ -29,5 +32,5 @@ test(function() { const ref_rect = ref_element.firstElementChild.getBoundingClientRect(); assert_equals(justify_rect.left, ref_rect.left); assert_equals(justify_rect.right, ref_rect.right); -}, 'Left and right edges of empty inlines should align.'); +}, 'content that cannot be justified should be centered when text-align-last is justify'); diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/pre-with-whitespace-crash.html b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-with-whitespace-crash.html new file mode 100644 index 00000000000..89e5c3a71fe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-with-whitespace-crash.html @@ -0,0 +1,18 @@ + + + + pre(white-space's one of values) crash if there is no available width + + + + + + + abcdef +
+
  • + success if does not crash +
  • +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-012.html b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-012.html index f0eb17c4f97..e844d978604 100644 --- a/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-012.html +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-012.html @@ -1,10 +1,10 @@ -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap with right alignement +CSS Text level 3 Test: preserved white space at the end of soft-wrapped lines and white-space:pre-wrap with right alignement - +

    Test passes if there is a filled green square and no red.

    -
    XX -XX
    +
    XX XX
    diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-013.html b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-013.html index 29333f5946e..23c4b536cde 100644 --- a/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-013.html +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-013.html @@ -1,10 +1,10 @@ -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap with center alignement +CSS Text level 3 Test: preserved white space at the end of soft-wrapped lines and white-space:pre-wrap with center alignement - +

    Test passes if there is a filled green square and no red.

    -
    XX -XX
    +
    XX XX
    diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-014.html b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-014.html index ac867771d58..26423c19284 100644 --- a/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-014.html +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-014.html @@ -1,10 +1,10 @@ -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap with justification +CSS Text level 3 Test: preserved white space at the end of soft-wrapped lines and white-space:pre-wrap with justification - +

    Test passes if there is a filled green rectangle and no red.

    -
    X X - X
    +
    X X X
    + diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-017.html b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-017.html new file mode 100644 index 00000000000..541e1abe575 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-017.html @@ -0,0 +1,30 @@ + + +CSS Text level 3 Test: pre-wrap trailing spaces and max-content + + + + + + + +

    Test passes if there is a filled green square and no red.

    + +
    +
    X
    diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-018.html b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-018.html new file mode 100644 index 00000000000..f911b2dcdea --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-018.html @@ -0,0 +1,37 @@ + + +CSS Text level 3 Test: pre-wrap spaces and centering + + + + + + +

    Test passes if the two boxes below are identical. + +

    0
    +
    0
    diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-019.html b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-019.html new file mode 100644 index 00000000000..58dae9f5007 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-019.html @@ -0,0 +1,38 @@ + + +CSS Text level 3 Test: trailing pre-wrap spaces and hanging + + + + + + + +

    Test passes if there are green squares below and no red. + +

    0
    0 0
    0
    +
    0 0 0 0
    + +
    0
    0 0
    0
    +
    0 0 0 0
    diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-020.html b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-020.html new file mode 100644 index 00000000000..ec3e8621159 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-020.html @@ -0,0 +1,32 @@ + + +CSS Text level 3 Test: trailing pre-wrap spaces and conditional hanging + + + + + + + +

    Test passes if there are green rectangles below and no red. + +

    0 0
    0 0
    +
    0 0 0 0
    diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/pre-wrap-018-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/pre-wrap-018-ref.html new file mode 100644 index 00000000000..a87649432fe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/pre-wrap-018-ref.html @@ -0,0 +1,23 @@ + + +Test reference + + + +

    Test passes if the two boxes below are identical. + +

    0
    +
    0
    diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/pre-wrap-019-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/pre-wrap-019-ref.html new file mode 100644 index 00000000000..e3be478a351 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/pre-wrap-019-ref.html @@ -0,0 +1,21 @@ + + +Test reference + + + + +

    Test passes if there are green squares below and no red. + +

    0
    0 0
    0
    + +
    0
    0 0
    0
    diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/pre-wrap-020-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/pre-wrap-020-ref.html new file mode 100644 index 00000000000..2ef5e7f408e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/pre-wrap-020-ref.html @@ -0,0 +1,19 @@ + + +test reference + + + + +

    Test passes if there are green rectangles below and no red. + +

    0 0
    0 0
    diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/textarea-pre-wrap-014-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/textarea-pre-wrap-014-ref.html new file mode 100644 index 00000000000..99a38bf88b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/textarea-pre-wrap-014-ref.html @@ -0,0 +1,5 @@ + + +Test reference + +

    Test passes if there is no red below.

    diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-intrinsic-size-004-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-intrinsic-size-004-ref.html index 0c31cb42996..93b8b913cc9 100644 --- a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-intrinsic-size-004-ref.html +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-intrinsic-size-004-ref.html @@ -2,14 +2,13 @@ test reference - diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-002-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-002-ref.html index 5f94d076e84..0971868116f 100644 --- a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-002-ref.html +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-002-ref.html @@ -2,7 +2,19 @@ CSS test Reference + + -

    This test passes if the letters below are spaced equally. +

    This test passes if the orange blocks below are vertically aligned with the blue ones. -

    X X X X
    +
    X X X X
    +
    X X X X
    diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/textarea-pre-wrap-012.html b/tests/wpt/web-platform-tests/css/css-text/white-space/textarea-pre-wrap-012.html index 04e07d6bcc8..5ca12811280 100644 --- a/tests/wpt/web-platform-tests/css/css-text/white-space/textarea-pre-wrap-012.html +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/textarea-pre-wrap-012.html @@ -1,10 +1,10 @@ -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap with right alignement in a textarea +CSS Text level 3 Test: preserved white space at the end of soft-wrapped lines and white-space:pre-wrap with right alignement in a textarea - - + +

    Test passes if there is a filled green square and no red.

    - + diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/textarea-pre-wrap-014.html b/tests/wpt/web-platform-tests/css/css-text/white-space/textarea-pre-wrap-014.html index b6d62ce2bff..f2812af2fbf 100644 --- a/tests/wpt/web-platform-tests/css/css-text/white-space/textarea-pre-wrap-014.html +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/textarea-pre-wrap-014.html @@ -1,10 +1,10 @@ -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap with justification in a textarea +CSS Text level 3 Test: preserved white space at the end of soft-wrapped lines and white-space:pre-wrap with justification in a textarea - - + + -

    Test passes if there is a filled green square and no red.

    - +

    Test passes if there is no red below.

    + diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-004.html b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-004.html index cc2d73992d5..a5be242e23a 100644 --- a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-004.html +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-004.html @@ -6,8 +6,7 @@ - - + diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-001.html b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-001.html index ca6f65e613d..82fbfbc976c 100644 --- a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-001.html +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-001.html @@ -1,19 +1,18 @@ -CSS Text test: hanging trailing spaces with white-space:pre-wrap +CSS Text test: alignement and trailing spaces with white-space:pre-wrap - + -

    This test passes if the letters below are spaced equally. +

    This test passes if the orange blocks below are vertically aligned with the blue ones. -

    X X X X
    +
    X X X X
    +
    X X X X
    diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-003.html b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-003.html index 15e47a7adba..def9bcaee32 100644 --- a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-003.html +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-003.html @@ -4,7 +4,7 @@ - + + + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/translate-interpolation.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/translate-interpolation.html index aed6c41cf64..c73f68a130e 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/animation/translate-interpolation.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/translate-interpolation.html @@ -18,10 +18,70 @@ width: 10px; height: 10px; } + .parent { + translate: 100px 200px 300px; + } + .target { + width: 100px; + height: 100px; + background-color: black; + translate: 10px; + } + .expected { + background-color: green; + } + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform-box/fill-box-mutation.html b/tests/wpt/web-platform-tests/css/css-transforms/transform-box/fill-box-mutation-001.html similarity index 100% rename from tests/wpt/web-platform-tests/css/css-transforms/transform-box/fill-box-mutation.html rename to tests/wpt/web-platform-tests/css/css-transforms/transform-box/fill-box-mutation-001.html diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform-box/fill-box-mutation-002.html b/tests/wpt/web-platform-tests/css/css-transforms/transform-box/fill-box-mutation-002.html new file mode 100644 index 00000000000..676d5cdd03b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/transform-box/fill-box-mutation-002.html @@ -0,0 +1,25 @@ + + +transform-box: fill-box, image mutated + + + +

    There should be a green 200x200 rectangle below, and no red.

    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed.html b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed.html index fa03b2295b9..e57856bab4f 100644 --- a/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed.html +++ b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed.html @@ -26,6 +26,7 @@ test_computed_value("transition-timing-function", "cubic-bezier(0, 0.7, 1, 1.3)" test_computed_value("transition-timing-function", "step-start", "steps(1, start)"); test_computed_value("transition-timing-function", "step-end", "steps(1)"); +test_computed_value("transition-timing-function", "steps(4)"); test_computed_value("transition-timing-function", "steps(4, start)"); test_computed_value("transition-timing-function", "steps(2, end)", "steps(2)"); test_computed_value("transition-timing-function", "steps(2, jump-start)"); diff --git a/tests/wpt/web-platform-tests/css/css-values/minmax-angle-serialize.html b/tests/wpt/web-platform-tests/css/css-values/minmax-angle-serialize.html index 3f424589ba6..07b7d3c2b23 100644 --- a/tests/wpt/web-platform-tests/css/css-values/minmax-angle-serialize.html +++ b/tests/wpt/web-platform-tests/css/css-values/minmax-angle-serialize.html @@ -1,7 +1,7 @@ - + @@ -20,6 +20,20 @@ test_valid_angle('max(1rad)', 'max(1rad)'); test_valid_angle('max(1turn)', 'max(1turn)'); test_valid_angle('max(1grad)', 'max(1grad)'); -// TODO(crbug.com/978682): Complete this test suite +test_valid_angle('min(1deg, 2deg, 3deg)', 'min(1deg, 2deg, 3deg)'); +test_valid_angle('min(3deg, 2deg, 1deg)', 'min(3deg, 2deg, 1deg)'); +test_valid_angle('min(90deg, 1.57rad, 0.25turn)', 'min(90deg, 1.57rad, 0.25turn)'); +test_valid_angle('min(0.25turn, 1.57rad, 90deg)', 'min(0.25turn, 1.57rad, 90deg)'); +test_valid_angle('max(1deg, 2deg, 3deg)', 'max(1deg, 2deg, 3deg)'); +test_valid_angle('max(3deg, 2deg, 1deg)', 'max(3deg, 2deg, 1deg)'); +test_valid_angle('max(90deg, 1.57rad, 0.25turn)', 'max(90deg, 1.57rad, 0.25turn)'); +test_valid_angle('max(0.25turn, 1.57rad, 90deg)', 'max(0.25turn, 1.57rad, 90deg)'); + +test_valid_angle('calc(min(1deg) + min(2deg))', 'calc(min(1deg) + min(2deg))'); +test_valid_angle('calc(max(1deg) + max(2deg))', 'calc(max(1deg) + max(2deg))'); +test_valid_angle('calc(1rad + min(1deg))', 'calc(1rad + min(1deg))'); +test_valid_angle('calc(min(1deg) + 1rad)', 'calc(1rad + min(1deg))'); +test_valid_angle('calc(1rad + max(1deg))', 'calc(1rad + max(1deg))'); +test_valid_angle('calc(max(1deg) + 1rad)', 'calc(1rad + max(1deg))'); diff --git a/tests/wpt/web-platform-tests/css/css-values/minmax-time-serialize.html b/tests/wpt/web-platform-tests/css/css-values/minmax-time-serialize.html new file mode 100644 index 00000000000..d7dd4edb588 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/minmax-time-serialize.html @@ -0,0 +1,38 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md b/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md index d1a5177894a..2d44ecb7d2f 100644 --- a/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md +++ b/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md @@ -145,4 +145,5 @@ Additional browser-specific documentation: chrome_android android_webview safari + webkitgtk_minibrowser ``` diff --git a/tests/wpt/web-platform-tests/docs/running-tests/webkitgtk_minibrowser.md b/tests/wpt/web-platform-tests/docs/running-tests/webkitgtk_minibrowser.md new file mode 100644 index 00000000000..b12859bcca9 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/running-tests/webkitgtk_minibrowser.md @@ -0,0 +1,32 @@ +# WebKitGTK MiniBrowser + + +To be able to run tests with the WebKitGTK MiniBrowser you need the +following packages installed: + +* Fedora: `webkit2gtk3-devel` +* Debian or Ubuntu: `webkit2gtk-driver` + + +The WebKitGTK MiniBrowser is not installed on the default binary path. +The `wpt` script will try to automatically locate it, but if you need +to run it manually you can find it on any of this paths: + +* Fedora: `/usr/libexec/webkit2gtk-4.0/MiniBrowser` +* Debian or Ubuntu: `/usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/MiniBrowser` + * Note: if the machine architecture is not `x86_64`, then it will be located + inside: + `/usr/lib/${TRIPLET}/webkit2gtk-4.0/MiniBrowser` + where `TRIPLET=$(gcc -dumpmachine)` + + +Known issues: + +* On a docker container WebKitWebDriver fails to listen on localhost, +because the docker container doesn't provide an IPv6 localhost address. +To workaround this issue, manually tell it to only listen on IPv4 localhost +by passing this parameter to wpt run: `--webdriver-arg=--host=127.0.0.1` +Example: +```bash +./wpt run --webdriver-arg=--host=127.0.0.1 webkitgtk_minibrowser TESTS +``` diff --git a/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-battery.html b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-battery.html new file mode 100644 index 00000000000..dff4b3290d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-battery.html @@ -0,0 +1,9 @@ + diff --git a/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html index 50fe71a2c6f..72aec0b7542 100644 --- a/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html +++ b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html @@ -95,8 +95,20 @@ function addTest(func, desc) { promiseTest: false}); } +function addPromiseTest(func, desc) { + testList.push( + {tests: [ + {func: func.bind(null, C), + desc: desc + " (cross-origin)"}, + {func: func.bind(null, E), + desc: desc + " (same-origin + document.domain)"}, + {func: func.bind(null, G), + desc: desc + " (cross-site)"}], + promiseTest: true}); +} + /** - * A similar helper, but for the subframes that load frame-with-then.html + * Similar helpers, but for the subframes that load frame-with-then.html */ function addThenTest(func, desc) { testList.push( @@ -110,8 +122,17 @@ function addThenTest(func, desc) { promiseTest: false}); } -function addPromiseTest(func, desc) { - testList.push({tests:[{func, desc}], promiseTest: true}); } +function addPromiseThenTest(func, desc) { + testList.push( + {tests: [ + {func: func.bind(null, D), + desc: desc + " (cross-origin)"}, + {func: func.bind(null, F), + desc: desc + " (same-origin + document.domain)"}, + {func: func.bind(null, H), + desc: desc + " (cross-site)"}], + promiseTest: true}); +} /* * Basic sanity testing. @@ -135,20 +156,64 @@ addTest(function(win) { * Also tests for [[GetOwnProperty]] and [[HasOwnProperty]] behavior. */ -var whitelistedWindowIndices = ['0', '1']; -var whitelistedWindowPropNames = ['location', 'postMessage', 'window', 'frames', 'self', 'top', 'parent', - 'opener', 'closed', 'close', 'blur', 'focus', 'length', 'then']; -whitelistedWindowPropNames = whitelistedWindowPropNames.concat(whitelistedWindowIndices); -whitelistedWindowPropNames.sort(); -var whitelistedLocationPropNames = ['href', 'replace', 'then']; -whitelistedLocationPropNames.sort(); var whitelistedSymbols = [Symbol.toStringTag, Symbol.hasInstance, Symbol.isConcatSpreadable]; -var whitelistedWindowProps = whitelistedWindowPropNames.concat(whitelistedSymbols); +var windowWhitelists = { + namedFrames: ['donotleakme'], + indices: ['0', '1'], + getters: ['location', 'window', 'frames', 'self', 'top', 'parent', + 'opener', 'closed', 'length'], + setters: ['location'], + methods: ['postMessage', 'close', 'blur', 'focus'], + // These are methods which return promises and, therefore, when called with a + // cross-origin `this` object, do not throw immediately, but instead return a + // Promise which rejects with the same SecurityError that they would + // otherwise throw. They are not, however, cross-origin accessible. + promiseMethods: ['createImageBitmap', 'fetch'], +} +windowWhitelists.propNames = Array.from(new Set([...windowWhitelists.indices, + ...windowWhitelists.getters, + ...windowWhitelists.setters, + ...windowWhitelists.methods, + 'then'])).sort(); +windowWhitelists.props = windowWhitelists.propNames.concat(whitelistedSymbols); + +var locationWhitelists = { + getters: [], + setters: ['href'], + methods: ['replace'], + promiseMethods: [], +} +locationWhitelists.propNames = Array.from(new Set([...locationWhitelists.getters, + ...locationWhitelists.setters, + ...locationWhitelists.methods, + 'then'])).sort(); + +// Define various sets of arguments to call cross-origin methods with. Arguments +// for any cross-origin-callable method must be valid, and should aim to have no +// side-effects. Any method without an entry in this list will be called with +// an empty arguments list. +var methodArgs = new Map(Object.entries({ + // As a basic smoke test, we call one cross-origin-inaccessible method with + // both valid and invalid arguments to make sure that it rejects with the + // same SecurityError regardless. + assign: [ + [], + ["javascript:undefined"], + ], + // Note: If we post a message to frame.html with a matching origin, its + // "onmessage" handler will change its `document.domain`, and potentially + // invalidate subsequent tests, so be sure to only pass non-matching origins. + postMessage: [ + ["foo", "http://does-not.exist/"], + ["foo", {}], + ], + replace: [["javascript:undefined"]], +})); addTest(function(win) { for (var prop in window) { - if (whitelistedWindowProps.indexOf(prop) != -1) { + if (windowWhitelists.props.indexOf(prop) != -1) { win[prop]; // Shouldn't throw. Object.getOwnPropertyDescriptor(win, prop); // Shouldn't throw. assert_true(Object.prototype.hasOwnProperty.call(win, prop), "hasOwnProperty for " + String(prop)); @@ -162,6 +227,11 @@ addTest(function(win) { if (prop != 'location') assert_throws("SecurityError", function() { win[prop] = undefined; }, "Should throw when writing to " + prop + " on Window"); } + for (var prop of windowWhitelists.namedFrames) { + win[prop]; // Shouldn't throw. + Object.getOwnPropertyDescriptor(win, prop); // Shouldn't throw. + assert_true(Object.prototype.hasOwnProperty.call(win, prop), "hasOwnProperty for " + String(prop)); + } for (var prop in location) { if (prop == 'replace') { win.location[prop]; // Shouldn't throw. @@ -186,6 +256,60 @@ addTest(function(win) { } }, "Only whitelisted properties are accessible cross-origin"); +addPromiseTest(async function(win, test_obj) { + async function checkProperties(objName, whitelists) { + var localObj = window[objName]; + var otherObj = win[objName]; + + for (var prop in localObj) { + let desc; + for (let obj = localObj; !desc; obj = Object.getPrototypeOf(obj)) { + desc = Object.getOwnPropertyDescriptor(obj, prop); + + } + + if ("value" in desc) { + if (typeof desc.value === "function" && String(desc.value).includes("[native code]")) { + if (whitelists.promiseMethods.includes(prop)) { + await promise_rejects(test_obj, "SecurityError", desc.value.call(otherObj), + `Should throw when calling ${objName}.${prop} with cross-origin this object`); + } else if (!whitelists.methods.includes(prop)) { + for (let args of methodArgs.get(prop) || [[]]) { + assert_throws("SecurityError", desc.value.bind(otherObj, ...args), + `Should throw when calling ${objName}.${prop} with cross-origin this object`); + } + + } else { + for (let args of methodArgs.get(prop) || [[]]) { + desc.value.apply(otherObj, args); // Shouldn't throw. + } + } + } + } else { + if (desc.get) { + if (whitelists.getters.includes(prop)) { + desc.get.call(otherObj); // Shouldn't throw. + } else { + assert_throws("SecurityError", desc.get.bind(otherObj), + `Should throw when calling ${objName}.${prop} getter with cross-origin this object`); + } + } + if (desc.set) { + if (whitelists.setters.includes(prop)) { + desc.set.call(otherObj, "javascript:undefined"); // Shouldn't throw. + } else { + assert_throws("SecurityError", desc.set.bind(otherObj, "foo"), + `Should throw when calling ${objName}.${prop} setter with cross-origin this object`); + } + } + } + } + } + + await checkProperties("location", locationWhitelists); + await checkProperties("window", windowWhitelists); +}, "Only whitelisted properties are usable as cross-origin this objects"); + /* * ES Internal Methods. */ @@ -291,7 +415,7 @@ function checkPropertyDescriptor(desc, propName, expectWritable) { } addTest(function(win) { - whitelistedWindowProps.forEach(function(prop) { + windowWhitelists.props.forEach(function(prop) { var desc = Object.getOwnPropertyDescriptor(win, prop); checkPropertyDescriptor(desc, prop, prop == 'location'); }); @@ -367,9 +491,9 @@ addTest(function(win) { let i = 0; for (var prop in win) { i++; - assert_true(whitelistedWindowIndices.includes(prop), prop + " is not safelisted for a cross-origin Window"); + assert_true(windowWhitelists.indices.includes(prop), prop + " is not safelisted for a cross-origin Window"); } - assert_equals(i, whitelistedWindowIndices.length, "Enumerate all enumerable safelisted cross-origin Window properties"); + assert_equals(i, windowWhitelists.indices.length, "Enumerate all enumerable safelisted cross-origin Window properties"); i = 0; for (var prop in win.location) { i++; @@ -383,13 +507,13 @@ addTest(function(win) { addTest(function(win) { assert_array_equals(Object.getOwnPropertyNames(win).sort(), - whitelistedWindowPropNames, + windowWhitelists.propNames, "Object.getOwnPropertyNames() gives the right answer for cross-origin Window"); assert_array_equals(Object.keys(win).sort(), - whitelistedWindowIndices, + windowWhitelists.indices, "Object.keys() gives the right answer for cross-origin Window"); assert_array_equals(Object.getOwnPropertyNames(win.location).sort(), - whitelistedLocationPropNames, + locationWhitelists.propNames, "Object.getOwnPropertyNames() gives the right answer for cross-origin Location"); assert_equals(Object.keys(win.location).length, 0, "Object.keys() gives the right answer for cross-origin Location"); @@ -405,16 +529,16 @@ addTest(function(win) { addTest(function(win) { var allWindowProps = Reflect.ownKeys(win); - indexedWindowProps = allWindowProps.slice(0, whitelistedWindowIndices.length); + indexedWindowProps = allWindowProps.slice(0, windowWhitelists.indices.length); stringWindowProps = allWindowProps.slice(0, -1 * whitelistedSymbols.length); symbolWindowProps = allWindowProps.slice(-1 * whitelistedSymbols.length); // stringWindowProps should have "then" last in this case. Do this // check before we call stringWindowProps.sort() below. assert_equals(stringWindowProps[stringWindowProps.length - 1], "then", "'then' property should be added to the end of the string list if not there"); - assert_array_equals(indexedWindowProps, whitelistedWindowIndices, + assert_array_equals(indexedWindowProps, windowWhitelists.indices, "Reflect.ownKeys should start with the indices exposed on the cross-origin window."); - assert_array_equals(stringWindowProps.sort(), whitelistedWindowPropNames, + assert_array_equals(stringWindowProps.sort(), windowWhitelists.propNames, "Reflect.ownKeys should continue with the cross-origin window properties for a cross-origin Window."); assert_array_equals(symbolWindowProps, whitelistedSymbols, "Reflect.ownKeys should end with the cross-origin symbols for a cross-origin Window."); @@ -422,7 +546,7 @@ addTest(function(win) { var allLocationProps = Reflect.ownKeys(win.location); stringLocationProps = allLocationProps.slice(0, -1 * whitelistedSymbols.length); symbolLocationProps = allLocationProps.slice(-1 * whitelistedSymbols.length); - assert_array_equals(stringLocationProps.sort(), whitelistedLocationPropNames, + assert_array_equals(stringLocationProps.sort(), locationWhitelists.propNames, "Reflect.ownKeys should start with the cross-origin window properties for a cross-origin Location.") assert_array_equals(symbolLocationProps, whitelistedSymbols, "Reflect.ownKeys should end with the cross-origin symbols for a cross-origin Location.") @@ -507,59 +631,23 @@ addTest(function(win) { assert_equals({}.toString.call(win.location), "[object Object]"); }, "{}.toString.call() does the right thing on cross-origin objects"); -addPromiseTest(function() { - return Promise.resolve(C).then((arg) => { - assert_equals(arg, C); +addPromiseTest(function(win) { + return Promise.resolve(win).then((arg) => { + assert_equals(arg, win); }); -}, "Resolving a promise with a cross-origin window without a 'then' subframe should work (cross-origin)."); +}, "Resolving a promise with a cross-origin window without a 'then' subframe should work"); -addPromiseTest(function() { - return Promise.resolve(E).then((arg) => { - assert_equals(arg, E); +addPromiseThenTest(function(win) { + return Promise.resolve(win).then((arg) => { + assert_equals(arg, win); }); -}, "Resolving a promise with a cross-origin window without a 'then' subframe should work (same-origin + document.domain)."); +}, "Resolving a promise with a cross-origin window with a 'then' subframe should work"); -addPromiseTest(function() { - return Promise.resolve(G).then((arg) => { - assert_equals(arg, G); +addPromiseThenTest(function(win) { + return Promise.resolve(win.location).then((arg) => { + assert_equals(arg, win.location); }); -}, "Resolving a promise with a cross-origin window without a 'then' subframe should work (cross-site)."); - -addPromiseTest(function() { - return Promise.resolve(D).then((arg) => { - assert_equals(arg, D); - }); -}, "Resolving a promise with a cross-origin window with a 'then' subframe should work (cross-origin)."); - -addPromiseTest(function() { - return Promise.resolve(F).then((arg) => { - assert_equals(arg, F); - }); -}, "Resolving a promise with a cross-origin window with a 'then' subframe should work (same-origin + document.domain)."); - -addPromiseTest(function() { - return Promise.resolve(H).then((arg) => { - assert_equals(arg, H); - }); -}, "Resolving a promise with a cross-origin window with a 'then' subframe should work (cross-site)."); - -addPromiseTest(function() { - return Promise.resolve(D.location).then((arg) => { - assert_equals(arg, D.location); - }); -}, "Resolving a promise with a cross-origin location should work (cross-origin)."); - -addPromiseTest(function() { - return Promise.resolve(F.location).then((arg) => { - assert_equals(arg, F.location); - }); -}, "Resolving a promise with a cross-origin location should work (same-origin + document.domain)."); - -addPromiseTest(function() { - return Promise.resolve(H.location).then((arg) => { - assert_equals(arg, H.location); - }); -}, "Resolving a promise with a cross-origin location should work (cross-site)."); +}, "Resolving a promise with a cross-origin location should work"); addTest(function(win) { var desc = Object.getOwnPropertyDescriptor(window, "onmouseenter"); @@ -598,19 +686,22 @@ function testDone() { } } -function runNextTest() { +async function runNextTest() { var entry = testList.shift(); if (entry.promiseTest) { - test(function() { - assert_equals(entry.tests.length, 1, "We can't handle this yet"); - }); - promise_test(() => entry.tests[0].func().finally(testDone), entry.tests[0].desc); + for (let t of entry.tests) { + await new Promise(resolve => { + promise_test(test_obj => { + return new Promise(res => res(t.func(test_obj))).finally(resolve); + }, t.desc); + }); + } } else { - for (t of entry.tests) { + for (let t of entry.tests) { test(t.func, t.desc); } - testDone(); } + testDone(); } reloadSubframes(runNextTest); diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img.complete.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img.complete.html index dcacf43db2d..d8d5a84eb79 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img.complete.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img.complete.html @@ -1,9 +1,7 @@ DOM img complete Test - + - - @@ -82,42 +80,41 @@ }, "img src and srcset omitted on image after it started a load"); // test if set to true after img is completely available - var t = async_test("async src complete test"); - - t.step(function(){ + async_test(t => { var loaded = false; - document.getElementById("imgTestTag3").onload = t.step_func_done(function(){ + const img = document.getElementById("imgTestTag3"); + img.onload = t.step_func_done(function(){ assert_false(loaded); loaded = true; - assert_true(document.getElementById("imgTestTag3").complete); - var currentSrc = document.getElementById("imgTestTag3").currentSrc; + assert_true(img.complete); + var currentSrc = img.currentSrc; var expectedUrl = new URL("3.jpg", window.location); assert_equals(new URL(currentSrc).pathname, expectedUrl.pathname); }, "Only one onload, despite setting the src twice"); - document.getElementById("imgTestTag3").src = 'test' + Math.random(); + img.src = 'test' + Math.random(); //test if img.complete is set to false if src is changed - assert_false(document.getElementById("imgTestTag3").complete, "src changed, should be set to false") + assert_false(img.complete, "src changed, should be set to false") //change src again, should make only one request as per 'await stable state' - document.getElementById("imgTestTag3").src = '3.jpg?nocache=' + Math.random(); - }); + img.src = '3.jpg?nocache=' + Math.random(); + }, "async src complete test"); - var t1 = async_test("async srcset complete test"); - t1.step(function(){ + async_test(t => { var loaded = false; - document.getElementById("imgTestTag5").onload = t1.step_func_done(function(){ + const img = document.getElementById("imgTestTag5") + img.onload = t.step_func_done(function(){ assert_false(loaded); loaded = true; - assert_true(document.getElementById("imgTestTag5").complete); + assert_true(img.complete); }, "Only one onload, despite setting the srcset twice"); //Test if src, srcset is omitted - assert_true(document.getElementById("imgTestTag5").complete) - document.getElementById("imgTestTag5").srcset = "/images/green-256x256.png 1x"; + assert_true(img.complete) + img.srcset = "/images/green-256x256.png 1x"; //test if img.complete is set to false if srcset is present - assert_false(document.getElementById("imgTestTag5").complete, "srcset present, should be set to false"); + assert_false(img.complete, "srcset present, should be set to false"); //change src again, should make only one request as per 'await stable state' - document.getElementById("imgTestTag5").srcset="/images/green-256x256.png 1.6x" - }); + img.srcset="/images/green-256x256.png 1.6x" + }, "async srcset complete test"); // https://html.spec.whatwg.org/multipage/multipage/embedded-content-1.html#update-the-image-data // says to "await a stable state" before fetching so we use a separate diff --git a/tests/wpt/web-platform-tests/interfaces/animation-worklet.idl b/tests/wpt/web-platform-tests/interfaces/css-animation-worklet.idl similarity index 92% rename from tests/wpt/web-platform-tests/interfaces/animation-worklet.idl rename to tests/wpt/web-platform-tests/interfaces/css-animation-worklet.idl index 02deca73a3a..4aca84e5a02 100644 --- a/tests/wpt/web-platform-tests/interfaces/animation-worklet.idl +++ b/tests/wpt/web-platform-tests/interfaces/css-animation-worklet.idl @@ -1,7 +1,7 @@ // GENERATED CONTENT - DO NOT EDIT // Content was automatically extracted by Reffy into reffy-reports // (https://github.com/tidoust/reffy-reports) -// Source: CSS Animation Worklet API (https://wicg.github.io/animation-worklet/) +// Source: CSS Animation Worklet API (https://drafts.css-houdini.org/css-animationworklet-1/) [Exposed=Window] partial namespace CSS { diff --git a/tests/wpt/web-platform-tests/interfaces/dom.idl b/tests/wpt/web-platform-tests/interfaces/dom.idl index 03a0201b16f..d1557a676ef 100644 --- a/tests/wpt/web-platform-tests/interfaces/dom.idl +++ b/tests/wpt/web-platform-tests/interfaces/dom.idl @@ -3,9 +3,10 @@ // (https://github.com/tidoust/reffy-reports) // Source: DOM Standard (https://dom.spec.whatwg.org/) -[Constructor(DOMString type, optional EventInit eventInitDict = {}), - Exposed=(Window,Worker,AudioWorklet)] +[Exposed=(Window,Worker,AudioWorklet)] interface Event { + constructor(DOMString type, optional EventInit eventInitDict = {}); + readonly attribute DOMString type; readonly attribute EventTarget? target; readonly attribute EventTarget? srcElement; // historical @@ -45,9 +46,10 @@ partial interface Window { [Replaceable] readonly attribute any event; // historical }; -[Constructor(DOMString type, optional CustomEventInit eventInitDict = {}), - Exposed=(Window,Worker)] +[Exposed=(Window,Worker)] interface CustomEvent : Event { + constructor(DOMString type, optional CustomEventInit eventInitDict = {}); + readonly attribute any detail; void initCustomEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false, optional any detail = null); @@ -57,9 +59,10 @@ dictionary CustomEventInit : EventInit { any detail = null; }; -[Constructor, - Exposed=(Window,Worker,AudioWorklet)] +[Exposed=(Window,Worker,AudioWorklet)] interface EventTarget { + constructor(); + void addEventListener(DOMString type, EventListener? callback, optional (AddEventListenerOptions or boolean) options = {}); void removeEventListener(DOMString type, EventListener? callback, optional (EventListenerOptions or boolean) options = {}); boolean dispatchEvent(Event event); @@ -78,13 +81,15 @@ dictionary AddEventListenerOptions : EventListenerOptions { boolean once = false; }; -[Constructor, - Exposed=(Window,Worker)] +[Exposed=(Window,Worker)] interface AbortController { + constructor(); + [SameObject] readonly attribute AbortSignal signal; void abort(); }; + [Exposed=(Window,Worker)] interface AbortSignal : EventTarget { readonly attribute boolean aborted; @@ -155,9 +160,10 @@ interface HTMLCollection { getter Element? namedItem(DOMString name); }; -[Constructor(MutationCallback callback), - Exposed=Window] +[Exposed=Window] interface MutationObserver { + constructor(MutationCallback callback); + void observe(Node target, optional MutationObserverInit options = {}); void disconnect(); sequence takeRecords(); @@ -250,9 +256,10 @@ dictionary GetRootNodeOptions { boolean composed = false; }; -[Constructor, - Exposed=Window] +[Exposed=Window] interface Document : Node { + constructor(); + [SameObject] readonly attribute DOMImplementation implementation; readonly attribute USVString URL; readonly attribute USVString documentURI; @@ -315,15 +322,16 @@ interface DocumentType : Node { readonly attribute DOMString systemId; }; -[Constructor, - Exposed=Window] +[Exposed=Window] interface DocumentFragment : Node { + constructor(); }; [Exposed=Window] interface ShadowRoot : DocumentFragment { readonly attribute ShadowRootMode mode; readonly attribute Element host; + attribute EventHandler onslotchange; }; enum ShadowRootMode { "open", "closed" }; @@ -376,6 +384,7 @@ interface Element : Node { dictionary ShadowRootInit { required ShadowRootMode mode; + boolean delegatesFocus = false; }; [Exposed=Window, @@ -414,12 +423,14 @@ interface CharacterData : Node { void replaceData(unsigned long offset, unsigned long count, DOMString data); }; -[Constructor(optional DOMString data = ""), - Exposed=Window] +[Exposed=Window] interface Text : CharacterData { + constructor(optional DOMString data = ""); + [NewObject] Text splitText(unsigned long offset); readonly attribute DOMString wholeText; }; + [Exposed=Window] interface CDATASection : Text { }; @@ -427,9 +438,9 @@ interface CDATASection : Text { interface ProcessingInstruction : CharacterData { readonly attribute DOMString target; }; -[Constructor(optional DOMString data = ""), - Exposed=Window] +[Exposed=Window] interface Comment : CharacterData { + constructor(optional DOMString data = ""); }; [Exposed=Window] @@ -448,14 +459,15 @@ dictionary StaticRangeInit { required unsigned long endOffset; }; -[Constructor(StaticRangeInit init), - Exposed=Window] +[Exposed=Window] interface StaticRange : AbstractRange { + constructor(StaticRangeInit init); }; -[Constructor, - Exposed=Window] +[Exposed=Window] interface Range : AbstractRange { + constructor(); + readonly attribute Node commonAncestorContainer; void setStart(Node node, unsigned long offset); @@ -602,7 +614,9 @@ interface mixin XPathEvaluatorBase { }; Document includes XPathEvaluatorBase; -[Exposed=Window, Constructor] -interface XPathEvaluator {}; +[Exposed=Window] +interface XPathEvaluator { + constructor(); +}; XPathEvaluator includes XPathEvaluatorBase; diff --git a/tests/wpt/web-platform-tests/interfaces/html.idl b/tests/wpt/web-platform-tests/interfaces/html.idl index d856cd578aa..8347c5d4cdc 100644 --- a/tests/wpt/web-platform-tests/interfaces/html.idl +++ b/tests/wpt/web-platform-tests/interfaces/html.idl @@ -100,9 +100,10 @@ partial interface mixin DocumentOrShadowRoot { readonly attribute Element? activeElement; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLElement : Element { + [HTMLConstructor] constructor(); + // metadata attributes [CEReactions] attribute DOMString title; [CEReactions] attribute DOMString lang; @@ -128,9 +129,10 @@ HTMLElement includes DocumentAndElementEventHandlers; HTMLElement includes ElementContentEditable; HTMLElement includes HTMLOrSVGElement; -// Note: intentionally not [HTMLConstructor] [Exposed=Window] -interface HTMLUnknownElement : HTMLElement { }; +interface HTMLUnknownElement : HTMLElement { + // Note: intentionally no [HTMLConstructor] +}; interface mixin HTMLOrSVGElement { [SameObject] readonly attribute DOMStringMap dataset; @@ -150,32 +152,37 @@ interface DOMStringMap { [CEReactions] deleter void (DOMString name); }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLHtmlElement : HTMLElement { + [HTMLConstructor] constructor(); + // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] -interface HTMLHeadElement : HTMLElement {}; +[Exposed=Window] +interface HTMLHeadElement : HTMLElement { + [HTMLConstructor] constructor(); +}; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLTitleElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute DOMString text; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLBaseElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute USVString href; [CEReactions] attribute DOMString target; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLLinkElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute USVString href; [CEReactions] attribute DOMString? crossOrigin; [CEReactions] attribute DOMString rel; @@ -194,9 +201,10 @@ interface HTMLLinkElement : HTMLElement { }; HTMLLinkElement includes LinkStyle; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLMetaElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute DOMString name; [CEReactions] attribute DOMString httpEquiv; [CEReactions] attribute DOMString content; @@ -204,50 +212,57 @@ interface HTMLMetaElement : HTMLElement { // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLStyleElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute DOMString media; // also has obsolete members }; HTMLStyleElement includes LinkStyle; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLBodyElement : HTMLElement { + [HTMLConstructor] constructor(); + // also has obsolete members }; HTMLBodyElement includes WindowEventHandlers; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLHeadingElement : HTMLElement { + [HTMLConstructor] constructor(); + // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLParagraphElement : HTMLElement { + [HTMLConstructor] constructor(); + // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLHRElement : HTMLElement { + [HTMLConstructor] constructor(); + // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLPreElement : HTMLElement { + [HTMLConstructor] constructor(); + // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLQuoteElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute USVString cite; }; @@ -261,9 +276,10 @@ interface HTMLOListElement : HTMLElement { // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLUListElement : HTMLElement { + [HTMLConstructor] constructor(); + // also has obsolete members }; @@ -282,21 +298,24 @@ interface HTMLLIElement : HTMLElement { // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLDListElement : HTMLElement { + [HTMLConstructor] constructor(); + // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLDivElement : HTMLElement { + [HTMLConstructor] constructor(); + // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLAnchorElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute DOMString target; [CEReactions] attribute DOMString download; [CEReactions] attribute USVString ping; @@ -313,9 +332,10 @@ interface HTMLAnchorElement : HTMLElement { }; HTMLAnchorElement includes HTMLHyperlinkElementUtils; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLDataElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute DOMString value; }; @@ -325,13 +345,15 @@ interface HTMLTimeElement : HTMLElement { [CEReactions] attribute DOMString dateTime; }; -[Exposed=Window, - HTMLConstructor] -interface HTMLSpanElement : HTMLElement {}; +[Exposed=Window] +interface HTMLSpanElement : HTMLElement { + [HTMLConstructor] constructor(); +}; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLBRElement : HTMLElement { + [HTMLConstructor] constructor(); + // also has obsolete members }; @@ -349,20 +371,23 @@ interface mixin HTMLHyperlinkElementUtils { [CEReactions] attribute USVString hash; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLModElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute USVString cite; [CEReactions] attribute DOMString dateTime; }; -[Exposed=Window, - HTMLConstructor] -interface HTMLPictureElement : HTMLElement {}; +[Exposed=Window] +interface HTMLPictureElement : HTMLElement { + [HTMLConstructor] constructor(); +}; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLSourceElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute USVString src; [CEReactions] attribute DOMString type; [CEReactions] attribute USVString srcset; @@ -395,9 +420,10 @@ interface HTMLImageElement : HTMLElement { // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLIFrameElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute USVString src; [CEReactions] attribute DOMString srcdoc; [CEReactions] attribute DOMString name; @@ -415,9 +441,10 @@ interface HTMLIFrameElement : HTMLElement { // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLEmbedElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute USVString src; [CEReactions] attribute DOMString type; [CEReactions] attribute DOMString width; @@ -427,9 +454,10 @@ interface HTMLEmbedElement : HTMLElement { // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLObjectElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute USVString data; [CEReactions] attribute DOMString type; [CEReactions] attribute DOMString name; @@ -451,9 +479,10 @@ interface HTMLObjectElement : HTMLElement { // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLParamElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute DOMString name; [CEReactions] attribute DOMString value; @@ -476,9 +505,10 @@ interface HTMLVideoElement : HTMLMediaElement { NamedConstructor=Audio(optional DOMString src)] interface HTMLAudioElement : HTMLMediaElement {}; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLTrackElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute DOMString kind; [CEReactions] attribute USVString src; [CEReactions] attribute DOMString srclang; @@ -679,16 +709,18 @@ dictionary TrackEventInit : EventInit { (VideoTrack or AudioTrack or TextTrack)? track = null; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLMapElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute DOMString name; [SameObject] readonly attribute HTMLCollection areas; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLAreaElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute DOMString alt; [CEReactions] attribute DOMString coords; [CEReactions] attribute DOMString shape; @@ -703,9 +735,10 @@ interface HTMLAreaElement : HTMLElement { }; HTMLAreaElement includes HTMLHyperlinkElementUtils; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLTableElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute HTMLTableCaptionElement? caption; HTMLTableCaptionElement createCaption(); [CEReactions] void deleteCaption(); @@ -728,23 +761,26 @@ interface HTMLTableElement : HTMLElement { // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLTableCaptionElement : HTMLElement { + [HTMLConstructor] constructor(); + // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLTableColElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute unsigned long span; // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLTableSectionElement : HTMLElement { + [HTMLConstructor] constructor(); + [SameObject] readonly attribute HTMLCollection rows; HTMLTableRowElement insertRow(optional long index = -1); [CEReactions] void deleteRow(long index); @@ -752,9 +788,10 @@ interface HTMLTableSectionElement : HTMLElement { // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLTableRowElement : HTMLElement { + [HTMLConstructor] constructor(); + readonly attribute long rowIndex; readonly attribute long sectionRowIndex; [SameObject] readonly attribute HTMLCollection cells; @@ -764,9 +801,10 @@ interface HTMLTableRowElement : HTMLElement { // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLTableCellElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute unsigned long colSpan; [CEReactions] attribute unsigned long rowSpan; [CEReactions] attribute DOMString headers; @@ -807,17 +845,19 @@ interface HTMLFormElement : HTMLElement { boolean reportValidity(); }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLLabelElement : HTMLElement { + [HTMLConstructor] constructor(); + readonly attribute HTMLFormElement? form; [CEReactions] attribute DOMString htmlFor; readonly attribute HTMLElement? control; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLInputElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute DOMString accept; [CEReactions] attribute DOMString alt; [CEReactions] attribute DOMString autocomplete; @@ -878,9 +918,10 @@ interface HTMLInputElement : HTMLElement { // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLButtonElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute boolean disabled; readonly attribute HTMLFormElement? form; [CEReactions] attribute USVString formAction; @@ -902,9 +943,10 @@ interface HTMLButtonElement : HTMLElement { readonly attribute NodeList labels; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLSelectElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute DOMString autocomplete; [CEReactions] attribute boolean disabled; readonly attribute HTMLFormElement? form; @@ -938,15 +980,17 @@ interface HTMLSelectElement : HTMLElement { readonly attribute NodeList labels; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLDataListElement : HTMLElement { + [HTMLConstructor] constructor(); + [SameObject] readonly attribute HTMLCollection options; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLOptGroupElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute boolean disabled; [CEReactions] attribute DOMString label; }; @@ -966,9 +1010,10 @@ interface HTMLOptionElement : HTMLElement { readonly attribute long index; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLTextAreaElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute DOMString autocomplete; [CEReactions] attribute unsigned long cols; [CEReactions] attribute DOMString dirName; @@ -1006,9 +1051,10 @@ interface HTMLTextAreaElement : HTMLElement { void setSelectionRange(unsigned long start, unsigned long end, optional DOMString direction); }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLOutputElement : HTMLElement { + [HTMLConstructor] constructor(); + [SameObject, PutForwards=value] readonly attribute DOMTokenList htmlFor; readonly attribute HTMLFormElement? form; [CEReactions] attribute DOMString name; @@ -1027,18 +1073,20 @@ interface HTMLOutputElement : HTMLElement { readonly attribute NodeList labels; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLProgressElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute double value; [CEReactions] attribute double max; readonly attribute double position; readonly attribute NodeList labels; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLMeterElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute double value; [CEReactions] attribute double min; [CEReactions] attribute double max; @@ -1048,9 +1096,10 @@ interface HTMLMeterElement : HTMLElement { readonly attribute NodeList labels; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLFieldSetElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute boolean disabled; readonly attribute HTMLFormElement? form; [CEReactions] attribute DOMString name; @@ -1067,9 +1116,10 @@ interface HTMLFieldSetElement : HTMLElement { void setCustomValidity(DOMString error); }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLLegendElement : HTMLElement { + [HTMLConstructor] constructor(); + readonly attribute HTMLFormElement? form; // also has obsolete members @@ -1107,15 +1157,17 @@ dictionary FormDataEventInit : EventInit { required FormData formData; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLDetailsElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute boolean open; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLDialogElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute boolean open; attribute DOMString returnValue; [CEReactions] void show(); @@ -1123,9 +1175,10 @@ interface HTMLDialogElement : HTMLElement { [CEReactions] void close(optional DOMString returnValue); }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLScriptElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute USVString src; [CEReactions] attribute DOMString type; [CEReactions] attribute boolean noModule; @@ -1139,15 +1192,17 @@ interface HTMLScriptElement : HTMLElement { // also has obsolete members }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLTemplateElement : HTMLElement { + [HTMLConstructor] constructor(); + readonly attribute DocumentFragment content; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLSlotElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute DOMString name; sequence assignedNodes(optional AssignedNodesOptions options = {}); sequence assignedElements(optional AssignedNodesOptions options = {}); @@ -1395,19 +1450,21 @@ interface TextMetrics { readonly attribute double ideographicBaseline; }; -[Constructor(unsigned long sw, unsigned long sh), - Constructor(Uint8ClampedArray data, unsigned long sw, optional unsigned long sh), - Exposed=(Window,Worker), +[Exposed=(Window,Worker), Serializable] interface ImageData { + constructor(unsigned long sw, unsigned long sh); + constructor(Uint8ClampedArray data, unsigned long sw, optional unsigned long sh); + readonly attribute unsigned long width; readonly attribute unsigned long height; readonly attribute Uint8ClampedArray data; }; -[Constructor(optional (Path2D or DOMString) path), - Exposed=(Window,Worker)] +[Exposed=(Window,Worker)] interface Path2D { + constructor(optional (Path2D or DOMString) path); + void addPath(Path2D path, optional DOMMatrix2DInit transform = {}); }; Path2D includes CanvasPath; @@ -1431,8 +1488,10 @@ dictionary ImageEncodeOptions { enum OffscreenRenderingContextId { "2d", "bitmaprenderer", "webgl", "webgl2" }; -[Constructor([EnforceRange] unsigned long long width, [EnforceRange] unsigned long long height), Exposed=(Window,Worker), Transferable] +[Exposed=(Window,Worker), Transferable] interface OffscreenCanvas : EventTarget { + constructor([EnforceRange] unsigned long long width, [EnforceRange] unsigned long long height); + attribute [EnforceRange] unsigned long long width; attribute [EnforceRange] unsigned long long height; @@ -1737,9 +1796,10 @@ interface mixin NavigatorOnLine { readonly attribute boolean onLine; }; -[Constructor(DOMString type, optional ErrorEventInit eventInitDict = {}), - Exposed=(Window,Worker)] +[Exposed=(Window,Worker)] interface ErrorEvent : Event { + constructor(DOMString type, optional ErrorEventInit eventInitDict = {}); + readonly attribute DOMString message; readonly attribute USVString filename; readonly attribute unsigned long lineno; @@ -1755,8 +1815,10 @@ dictionary ErrorEventInit : EventInit { any error = null; }; -[Constructor(DOMString type, PromiseRejectionEventInit eventInitDict), Exposed=(Window,Worker)] +[Exposed=(Window,Worker)] interface PromiseRejectionEvent : Event { + constructor(DOMString type, PromiseRejectionEventInit eventInitDict); + readonly attribute Promise promise; readonly attribute any reason; }; @@ -1834,6 +1896,7 @@ interface mixin GlobalEventHandlers { attribute EventHandler onseeked; attribute EventHandler onseeking; attribute EventHandler onselect; + attribute EventHandler onslotchange; attribute EventHandler onstalled; attribute EventHandler onsubmit; attribute EventHandler onsuspend; @@ -2012,9 +2075,10 @@ interface mixin AnimationFrameProvider { Window includes AnimationFrameProvider; DedicatedWorkerGlobalScope includes AnimationFrameProvider; -[Constructor(DOMString type, optional MessageEventInit eventInitDict = {}), - Exposed=(Window,Worker,AudioWorklet)] +[Exposed=(Window,Worker,AudioWorklet)] interface MessageEvent : Event { + constructor(DOMString type, optional MessageEventInit eventInitDict = {}); + readonly attribute any data; readonly attribute USVString origin; readonly attribute DOMString lastEventId; @@ -2034,8 +2098,10 @@ dictionary MessageEventInit : EventInit { typedef (WindowProxy or MessagePort or ServiceWorker) MessageEventSource; -[Constructor(USVString url, optional EventSourceInit eventSourceInitDict = {}), Exposed=(Window,Worker)] +[Exposed=(Window,Worker)] interface EventSource : EventTarget { + constructor(USVString url, optional EventSourceInit eventSourceInitDict = {}); + readonly attribute USVString url; readonly attribute boolean withCredentials; @@ -2057,8 +2123,10 @@ dictionary EventSourceInit { }; enum BinaryType { "blob", "arraybuffer" }; -[Constructor(USVString url, optional (DOMString or sequence) protocols = []), Exposed=(Window,Worker)] +[Exposed=(Window,Worker)] interface WebSocket : EventTarget { + constructor(USVString url, optional (DOMString or sequence) protocols = []); + readonly attribute USVString url; // ready state @@ -2086,9 +2154,10 @@ interface WebSocket : EventTarget { void send(ArrayBufferView data); }; -[Constructor(DOMString type, optional CloseEventInit eventInitDict = {}), - Exposed=(Window,Worker)] +[Exposed=(Window,Worker)] interface CloseEvent : Event { + constructor(DOMString type, optional CloseEventInit eventInitDict = {}); + readonly attribute boolean wasClean; readonly attribute unsigned short code; readonly attribute USVString reason; @@ -2122,8 +2191,10 @@ dictionary PostMessageOptions { sequence transfer = []; }; -[Constructor(DOMString name), Exposed=(Window,Worker)] +[Exposed=(Window,Worker)] interface BroadcastChannel : EventTarget { + constructor(DOMString name); + readonly attribute DOMString name; void postMessage(any message); void close(); @@ -2172,9 +2243,10 @@ interface mixin AbstractWorker { attribute EventHandler onerror; }; -[Constructor(USVString scriptURL, optional WorkerOptions options = {}), - Exposed=(Window,Worker)] +[Exposed=(Window,Worker)] interface Worker : EventTarget { + constructor(USVString scriptURL, optional WorkerOptions options = {}); + void terminate(); void postMessage(any message, sequence transfer); @@ -2193,9 +2265,10 @@ enum WorkerType { "classic", "module" }; Worker includes AbstractWorker; -[Constructor(USVString scriptURL, optional (DOMString or WorkerOptions) options = {}), - Exposed=(Window,Worker)] +[Exposed=(Window,Worker)] interface SharedWorker : EventTarget { + constructor(USVString scriptURL, optional (DOMString or WorkerOptions) options = {}); + readonly attribute MessagePort port; }; SharedWorker includes AbstractWorker; @@ -2264,9 +2337,10 @@ dictionary StorageEventInit : EventInit { Storage? storageArea = null; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLMarqueeElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute DOMString behavior; [CEReactions] attribute DOMString bgColor; [CEReactions] attribute DOMString direction; @@ -2287,17 +2361,19 @@ interface HTMLMarqueeElement : HTMLElement { void stop(); }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLFrameSetElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute DOMString cols; [CEReactions] attribute DOMString rows; }; HTMLFrameSetElement includes WindowEventHandlers; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLFrameElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute DOMString name; [CEReactions] attribute DOMString scrolling; [CEReactions] attribute USVString src; @@ -2348,9 +2424,10 @@ partial interface HTMLTableColElement { [CEReactions] attribute DOMString width; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLDirectoryElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute boolean compact; }; @@ -2367,9 +2444,10 @@ partial interface HTMLEmbedElement { [CEReactions] attribute DOMString name; }; -[Exposed=Window, - HTMLConstructor] +[Exposed=Window] interface HTMLFontElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions] attribute [TreatNullAs=EmptyString] DOMString color; [CEReactions] attribute DOMString face; [CEReactions] attribute DOMString size; diff --git a/tests/wpt/web-platform-tests/interfaces/scroll-animations.idl b/tests/wpt/web-platform-tests/interfaces/scroll-animations.idl index f2560d9ffc8..8fd67a7af7b 100644 --- a/tests/wpt/web-platform-tests/interfaces/scroll-animations.idl +++ b/tests/wpt/web-platform-tests/interfaces/scroll-animations.idl @@ -1,7 +1,7 @@ // GENERATED CONTENT - DO NOT EDIT // Content was automatically extracted by Reffy into reffy-reports // (https://github.com/tidoust/reffy-reports) -// Source: Scroll-linked Animations (https://wicg.github.io/scroll-animations/) +// Source: Scroll-linked Animations (https://drafts.csswg.org/scroll-animations-1/) enum ScrollDirection { "block", diff --git a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl index b08bc7d4069..c3e53350901 100644 --- a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl +++ b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl @@ -13,8 +13,6 @@ dictionary NDEFMessageInit { sequence records; }; -typedef any NDEFRecordData; - [Exposed=Window] interface NDEFRecord { constructor(NDEFRecordInit recordInit); @@ -34,7 +32,7 @@ dictionary NDEFRecordInit { USVString mediaType; USVString id; - NDEFRecordData data; + any data; }; typedef DOMString NDEFRecordType; diff --git a/tests/wpt/web-platform-tests/interfaces/webxr.idl b/tests/wpt/web-platform-tests/interfaces/webxr.idl index b03aa556bb8..012b67cf246 100644 --- a/tests/wpt/web-platform-tests/interfaces/webxr.idl +++ b/tests/wpt/web-platform-tests/interfaces/webxr.idl @@ -9,7 +9,7 @@ partial interface Navigator { [SecureContext, Exposed=Window] interface XR : EventTarget { // Methods - Promise supportsSession(XRSessionMode mode); + Promise isSessionSupported(XRSessionMode mode); [NewObject] Promise requestSession(XRSessionMode mode, optional XRSessionInit options = {}); // Events @@ -122,9 +122,9 @@ enum XREye { readonly attribute long height; }; -[SecureContext, Exposed=Window, - Constructor(optional DOMPointInit position = {}, optional DOMPointInit orientation = {})] +[SecureContext, Exposed=Window] interface XRRigidTransform { + constructor(optional DOMPointInit position = {}, optional DOMPointInit orientation = {}); [SameObject] readonly attribute DOMPointReadOnly position; [SameObject] readonly attribute DOMPointReadOnly orientation; readonly attribute Float32Array matrix; @@ -180,10 +180,11 @@ dictionary XRWebGLLayerInit { double framebufferScaleFactor = 1.0; }; -[SecureContext, Exposed=Window, Constructor(XRSession session, - XRWebGLRenderingContext context, - optional XRWebGLLayerInit layerInit = {})] +[SecureContext, Exposed=Window] interface XRWebGLLayer { + constructor(XRSession session, + XRWebGLRenderingContext context, + optional XRWebGLLayerInit layerInit = {}); // Attributes readonly attribute boolean antialias; readonly attribute boolean ignoreDepthValues; @@ -207,8 +208,9 @@ partial interface mixin WebGLRenderingContextBase { Promise makeXRCompatible(); }; -[SecureContext, Exposed=Window, Constructor(DOMString type, XRSessionEventInit eventInitDict)] +[SecureContext, Exposed=Window] interface XRSessionEvent : Event { + constructor(DOMString type, XRSessionEventInit eventInitDict); [SameObject] readonly attribute XRSession session; }; @@ -216,8 +218,9 @@ dictionary XRSessionEventInit : EventInit { required XRSession session; }; -[SecureContext, Exposed=Window, Constructor(DOMString type, XRInputSourceEventInit eventInitDict)] +[SecureContext, Exposed=Window] interface XRInputSourceEvent : Event { + constructor(DOMString type, XRInputSourceEventInit eventInitDict); [SameObject] readonly attribute XRFrame frame; [SameObject] readonly attribute XRInputSource inputSource; }; @@ -227,8 +230,9 @@ dictionary XRInputSourceEventInit : EventInit { required XRInputSource inputSource; }; -[SecureContext, Exposed=Window, Constructor(DOMString type, XRInputSourcesChangeEventInit eventInitDict)] +[SecureContext, Exposed=Window] interface XRInputSourcesChangeEvent : Event { + constructor(DOMString type, XRInputSourcesChangeEventInit eventInitDict); [SameObject] readonly attribute XRSession session; [SameObject] readonly attribute FrozenArray added; [SameObject] readonly attribute FrozenArray removed; @@ -241,8 +245,9 @@ dictionary XRInputSourcesChangeEventInit : EventInit { }; -[SecureContext, Exposed=Window, Constructor(DOMString type, XRReferenceSpaceEventInit eventInitDict)] +[SecureContext, Exposed=Window] interface XRReferenceSpaceEvent : Event { + constructor(DOMString type, XRReferenceSpaceEventInit eventInitDict); [SameObject] readonly attribute XRReferenceSpace referenceSpace; [SameObject] readonly attribute XRRigidTransform? transform; }; diff --git a/tests/wpt/web-platform-tests/interfaces/xhr.idl b/tests/wpt/web-platform-tests/interfaces/xhr.idl index 27660bfd573..de478734ca9 100644 --- a/tests/wpt/web-platform-tests/interfaces/xhr.idl +++ b/tests/wpt/web-platform-tests/interfaces/xhr.idl @@ -28,9 +28,10 @@ enum XMLHttpRequestResponseType { "text" }; -[Constructor, - Exposed=(Window,DedicatedWorker,SharedWorker)] +[Exposed=(Window,DedicatedWorker,SharedWorker)] interface XMLHttpRequest : XMLHttpRequestEventTarget { + constructor(); + // event handler attribute EventHandler onreadystatechange; @@ -64,11 +65,13 @@ interface XMLHttpRequest : XMLHttpRequestEventTarget { readonly attribute USVString responseText; [Exposed=Window] readonly attribute Document? responseXML; }; + typedef (File or USVString) FormDataEntryValue; -[Constructor(optional HTMLFormElement form), - Exposed=(Window,Worker)] +[Exposed=(Window,Worker)] interface FormData { + constructor(optional HTMLFormElement form); + void append(USVString name, USVString value); void append(USVString name, Blob blobValue, optional USVString filename); void delete(USVString name); @@ -79,9 +82,11 @@ interface FormData { void set(USVString name, Blob blobValue, optional USVString filename); iterable; }; -[Constructor(DOMString type, optional ProgressEventInit eventInitDict), - Exposed=(Window,DedicatedWorker,SharedWorker)] + +[Exposed=(Window,DedicatedWorker,SharedWorker)] interface ProgressEvent : Event { + constructor(DOMString type, optional ProgressEventInit eventInitDict = {}); + readonly attribute boolean lengthComputable; readonly attribute unsigned long long loaded; readonly attribute unsigned long long total; diff --git a/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-error-member-manual.https.html b/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-error-member-manual.https.html index b3a539ef8f4..9d25e9e1524 100644 --- a/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-error-member-manual.https.html +++ b/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-error-member-manual.https.html @@ -46,5 +46,5 @@ function retryShowsErrorMember(button) { If you find a buggy test, please file a bug - and tag one of the owners. + and tag one of the owners. diff --git a/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-payer-member-manual.https.html b/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-payer-member-manual.https.html index 8dbc760fd07..ad5ad72fbb6 100644 --- a/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-payer-member-manual.https.html +++ b/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-payer-member-manual.https.html @@ -61,5 +61,5 @@ function retryShowsPayerMember(button, error) { If you find a buggy test, please file a bug - and tag one of the owners. + and tag one of the owners. diff --git a/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-shippingAddress-member-manual.https.html b/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-shippingAddress-member-manual.https.html index c3e2ba71322..837ab79cbef 100644 --- a/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-shippingAddress-member-manual.https.html +++ b/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-shippingAddress-member-manual.https.html @@ -94,5 +94,5 @@ function retryShowsShippingAddressMember(button, error) { If you find a buggy test, please file a bug - and tag one of the owners. + and tag one of the owners. diff --git a/tests/wpt/web-platform-tests/payment-request/payment-response/onpayerdetailchange-attribute-manual.https.html b/tests/wpt/web-platform-tests/payment-request/payment-response/onpayerdetailchange-attribute-manual.https.html index f3f3f76357c..5731952c0eb 100644 --- a/tests/wpt/web-platform-tests/payment-request/payment-response/onpayerdetailchange-attribute-manual.https.html +++ b/tests/wpt/web-platform-tests/payment-request/payment-response/onpayerdetailchange-attribute-manual.https.html @@ -69,5 +69,5 @@ function runTest(button, options, expected){ If you find a buggy test, please file a bug - and tag one of the owners. + and tag one of the owners. diff --git a/tests/wpt/web-platform-tests/payment-request/payment-response/payerdetailschange-updateWith-immediate-manual.https.html b/tests/wpt/web-platform-tests/payment-request/payment-response/payerdetailschange-updateWith-immediate-manual.https.html index 912ceaa6086..5747a2ac0cb 100644 --- a/tests/wpt/web-platform-tests/payment-request/payment-response/payerdetailschange-updateWith-immediate-manual.https.html +++ b/tests/wpt/web-platform-tests/payment-request/payment-response/payerdetailschange-updateWith-immediate-manual.https.html @@ -64,5 +64,5 @@ function testImmediateUpdate({ textContent: testName }) { If you find a buggy test, please file a bug - and tag one of the owners. + and tag one of the owners. diff --git a/tests/wpt/web-platform-tests/payment-request/payment-response/payerdetailschange-updateWith-manual.https.html b/tests/wpt/web-platform-tests/payment-request/payment-response/payerdetailschange-updateWith-manual.https.html index 30e27088e7d..2e6a31a19f5 100644 --- a/tests/wpt/web-platform-tests/payment-request/payment-response/payerdetailschange-updateWith-manual.https.html +++ b/tests/wpt/web-platform-tests/payment-request/payment-response/payerdetailschange-updateWith-manual.https.html @@ -52,5 +52,5 @@ function runTest(button) { If you find a buggy test, please file a bug - and tag one of the owners. + and tag one of the owners. diff --git a/tests/wpt/web-platform-tests/tools/ci/manifest_build.py b/tests/wpt/web-platform-tests/tools/ci/manifest_build.py index de17089214e..a563c3b8831 100644 --- a/tests/wpt/web-platform-tests/tools/ci/manifest_build.py +++ b/tests/wpt/web-platform-tests/tools/ci/manifest_build.py @@ -184,10 +184,8 @@ def main(): pr = get_pr(owner, repo, head_rev) if pr is None: - # This should only really happen during testing - tag_name = "merge_commit_%s" % head_rev - else: - tag_name = "merge_pr_%s" % pr + return Status.FAIL + tag_name = "merge_pr_%s" % pr manifest_path = os.path.expanduser(os.path.join("~", "meta", "MANIFEST.json")) diff --git a/tests/wpt/web-platform-tests/tools/manifest/download.py b/tests/wpt/web-platform-tests/tools/manifest/download.py index 8f3e9d5fd65..3736d54f15d 100644 --- a/tests/wpt/web-platform-tests/tools/manifest/download.py +++ b/tests/wpt/web-platform-tests/tools/manifest/download.py @@ -66,7 +66,7 @@ def score_name(name): # type: (str) -> Optional[int] """Score how much we like each filename, lower wins, None rejects""" - # Accept both ways of naming the manfest asset, even though + # Accept both ways of naming the manifest asset, even though # there's no longer a reason to include the commit sha. if name.startswith("MANIFEST-") or name.startswith("MANIFEST."): if zstandard and name.endswith("json.zst"): diff --git a/tests/wpt/web-platform-tests/tools/manifest/update.py b/tests/wpt/web-platform-tests/tools/manifest/update.py index 166a7c9cadd..bfbaaf89712 100755 --- a/tests/wpt/web-platform-tests/tools/manifest/update.py +++ b/tests/wpt/web-platform-tests/tools/manifest/update.py @@ -77,7 +77,7 @@ def create_parser(): help="Never attempt to download the manifest.") parser.add_argument( "--cache-root", action="store", default=os.path.join(wpt_root, ".wptcache"), - help="Path in which to store any caches (default /.wptcache/") + help="Path in which to store any caches (default /.wptcache/)") return parser diff --git a/tests/wpt/web-platform-tests/tools/wpt/browser.py b/tests/wpt/web-platform-tests/tools/wpt/browser.py index ca86c55d45f..c04162fe2a1 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/browser.py +++ b/tests/wpt/web-platform-tests/tools/wpt/browser.py @@ -1104,6 +1104,42 @@ class WebKit(Browser): return None +class WebKitGTKMiniBrowser(WebKit): + + def find_binary(self, venv_path=None, channel=None): + libexecpaths = ["/usr/libexec/webkit2gtk-4.0"] # Fedora path + triplet = "x86_64-linux-gnu" + # Try to use GCC to detect this machine triplet + gcc = find_executable("gcc") + if gcc: + try: + triplet = call(gcc, "-dumpmachine").strip() + except subprocess.CalledProcessError: + pass + # Add Debian/Ubuntu path + libexecpaths.append("/usr/lib/%s/webkit2gtk-4.0" % triplet) + return find_executable("MiniBrowser", os.pathsep.join(libexecpaths)) + + def find_webdriver(self, channel=None): + return find_executable("WebKitWebDriver") + + def version(self, binary=None, webdriver_binary=None): + if binary is None: + return None + try: # WebKitGTK MiniBrowser before 2.26.0 doesn't support --version + output = call(binary, "--version").strip() + except subprocess.CalledProcessError: + return None + # Example output: "WebKitGTK 2.26.1" + if output: + m = re.match(r"WebKitGTK (.+)", output) + if not m: + self.logger.warning("Failed to extract version from: %s" % output) + return None + return m.group(1) + return None + + class Epiphany(Browser): """Epiphany-specific interface.""" diff --git a/tests/wpt/web-platform-tests/tools/wpt/run.py b/tests/wpt/web-platform-tests/tools/wpt/run.py index bea36c7c24a..077d4a7eb87 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/run.py +++ b/tests/wpt/web-platform-tests/tools/wpt/run.py @@ -583,6 +583,29 @@ class WebKit(BrowserSetup): pass +class WebKitGTKMiniBrowser(BrowserSetup): + name = "webkitgtk_minibrowser" + browser_cls = browser.WebKitGTKMiniBrowser + + def install(self, channel=None): + raise NotImplementedError + + def setup_kwargs(self, kwargs): + if kwargs["binary"] is None: + binary = self.browser.find_binary() + + if binary is None: + raise WptrunError("Unable to find MiniBrowser binary") + kwargs["binary"] = binary + + if kwargs["webdriver_binary"] is None: + webdriver_binary = self.browser.find_webdriver() + + if webdriver_binary is None: + raise WptrunError("Unable to find WebKitWebDriver in PATH") + kwargs["webdriver_binary"] = webdriver_binary + + class Epiphany(BrowserSetup): name = "epiphany" browser_cls = browser.Epiphany @@ -623,11 +646,12 @@ product_setup = { "sauce": Sauce, "opera": Opera, "webkit": WebKit, + "webkitgtk_minibrowser": WebKitGTKMiniBrowser, "epiphany": Epiphany, } -def setup_logging(kwargs, default_config=None): +def setup_logging(kwargs, default_config=None, formatter_defaults=None): import mozlog from wptrunner import wptrunner @@ -640,7 +664,7 @@ def setup_logging(kwargs, default_config=None): else: default_formatter = "mach" default_config = {default_formatter: sys.stdout} - wptrunner.setup_logging(kwargs, default_config) + wptrunner.setup_logging(kwargs, default_config, formatter_defaults=formatter_defaults) logger = wptrunner.logger return logger diff --git a/tests/wpt/web-platform-tests/tools/wpt/tests/test_browser.py b/tests/wpt/web-platform-tests/tools/wpt/tests/test_browser.py index a2e518a9d07..f691c380b7a 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/tests/test_browser.py +++ b/tests/wpt/web-platform-tests/tools/wpt/tests/test_browser.py @@ -1,6 +1,8 @@ import mock import subprocess import logging +import sys +import pytest from tools.wpt import browser @@ -35,3 +37,63 @@ def test_safari_version_errors(mocked_check_output): mocked_check_output.return_value = 'dummy' mocked_check_output.side_effect = subprocess.CalledProcessError(1, 'cmd') assert safari.version(webdriver_binary="safaridriver") is None + + +@mock.patch('subprocess.check_output') +def test_webkitgtk_minibrowser_version(mocked_check_output): + webkitgtk_minibrowser = browser.WebKitGTKMiniBrowser(logger) + + mocked_check_output.return_value = 'WebKitGTK 2.26.1\n' + assert webkitgtk_minibrowser.version(binary='MiniBrowser') == '2.26.1' + + +@mock.patch('subprocess.check_output') +def test_webkitgtk_minibrowser_version_errors(mocked_check_output): + webkitgtk_minibrowser = browser.WebKitGTKMiniBrowser(logger) + + # No binary + assert webkitgtk_minibrowser.version() is None + + # `MiniBrowser --version` return gibberish + mocked_check_output.return_value = 'gibberish' + assert webkitgtk_minibrowser.version(binary='MiniBrowser') is None + + # `MiniBrowser --version` fails (as it does for MiniBrowser <= 2.26.0) + mocked_check_output.return_value = 'dummy' + mocked_check_output.side_effect = subprocess.CalledProcessError(1, 'cmd') + assert webkitgtk_minibrowser.version(binary='MiniBrowser') is None + + +# The test below doesn't work on Windows because distutils find_binary() +# on Windows only works if the binary name ends with a ".exe" suffix. +# But, WebKitGTK itself doesn't support Windows, so lets skip the test. +@pytest.mark.skipif(sys.platform.startswith('win'), reason='test not needed on Windows') +@mock.patch('os.path.isfile') +def test_webkitgtk_minibrowser_find_binary(mocked_os_path_isfile): + webkitgtk_minibrowser = browser.WebKitGTKMiniBrowser(logger) + + # No MiniBrowser found + mocked_os_path_isfile.side_effect = lambda path: path == '/etc/passwd' + assert webkitgtk_minibrowser.find_binary() is None + + # Found on the default Fedora path + fedora_minibrowser_path = '/usr/libexec/webkit2gtk-4.0/MiniBrowser' + mocked_os_path_isfile.side_effect = lambda path: path == fedora_minibrowser_path + assert webkitgtk_minibrowser.find_binary() == fedora_minibrowser_path + + # Found on the default Debian path for AMD64 (gcc not available) + debian_minibrowser_path_amd64 = '/usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/MiniBrowser' + mocked_os_path_isfile.side_effect = lambda path: path == debian_minibrowser_path_amd64 + assert webkitgtk_minibrowser.find_binary() == debian_minibrowser_path_amd64 + + # Found on the default Debian path for AMD64 (gcc available but gives an error) + debian_minibrowser_path_amd64 = '/usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/MiniBrowser' + mocked_os_path_isfile.side_effect = lambda path: path in [debian_minibrowser_path_amd64, '/usr/bin/gcc'] + with mock.patch('subprocess.check_output', return_value = 'error', side_effect = subprocess.CalledProcessError(1, 'cmd')): + assert webkitgtk_minibrowser.find_binary() == debian_minibrowser_path_amd64 + + # Found on the default Debian path for ARM64 (gcc available) + debian_minibrowser_path_arm64 = '/usr/lib/aarch64-linux-gnu/webkit2gtk-4.0/MiniBrowser' + mocked_os_path_isfile.side_effect = lambda path: path in [debian_minibrowser_path_arm64, '/usr/bin/gcc'] + with mock.patch('subprocess.check_output', return_value = 'aarch64-linux-gnu'): + assert webkitgtk_minibrowser.find_binary() == debian_minibrowser_path_arm64 diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt index 3584c93a199..9eeb836230c 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt +++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt @@ -3,6 +3,6 @@ mozinfo==1.1.0 mozlog==4.2.0 mozdebug==0.1.1 pillow==6.1.0 -urllib3[secure]==1.25.5 +urllib3[secure]==1.25.6 requests==2.22.0 six==1.12.0 diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py index 75ec775658c..957d2a689ac 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py @@ -38,4 +38,5 @@ product_list = ["android_webview", "servodriver", "opera", "webkit", + "webkitgtk_minibrowser", "epiphany"] diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/webkitgtk_minibrowser.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/webkitgtk_minibrowser.py new file mode 100644 index 00000000000..65f78125ad7 --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/webkitgtk_minibrowser.py @@ -0,0 +1,72 @@ +from .base import get_timeout_multiplier # noqa: F401 +from .webkit import WebKitBrowser +from ..executors import executor_kwargs as base_executor_kwargs +from ..executors.executorwebdriver import (WebDriverTestharnessExecutor, # noqa: F401 + WebDriverRefTestExecutor) # noqa: F401 +from ..executors.executorwebkit import WebKitDriverWdspecExecutor # noqa: F401 + +__wptrunner__ = {"product": "webkitgtk_minibrowser", + "check_args": "check_args", + "browser": "WebKitGTKMiniBrowser", + "browser_kwargs": "browser_kwargs", + "executor": {"testharness": "WebDriverTestharnessExecutor", + "reftest": "WebDriverRefTestExecutor", + "wdspec": "WebKitDriverWdspecExecutor"}, + "executor_kwargs": "executor_kwargs", + "env_extras": "env_extras", + "env_options": "env_options", + "run_info_extras": "run_info_extras", + "timeout_multiplier": "get_timeout_multiplier"} + + +def check_args(**kwargs): + pass + + +def browser_kwargs(test_type, run_info_data, config, **kwargs): + return {"binary": kwargs["binary"], + "webdriver_binary": kwargs["webdriver_binary"], + "webdriver_args": kwargs.get("webdriver_args")} + + +def capabilities(server_config, **kwargs): + args = kwargs.get("binary_args", []) + if "--automation" not in args: + args.append("--automation") + + return { + "browserName": "MiniBrowser", + "webkitgtk:browserOptions": { + "binary": kwargs["binary"], + "args": args, + "certificates": [ + {"host": server_config["browser_host"], + "certificateFile": kwargs["host_cert_path"]}]}} + + +def executor_kwargs(test_type, server_config, cache_manager, run_info_data, + **kwargs): + executor_kwargs = base_executor_kwargs(test_type, server_config, + cache_manager, run_info_data, **kwargs) + executor_kwargs["close_after_done"] = True + executor_kwargs["capabilities"] = capabilities(server_config, **kwargs) + return executor_kwargs + + +def env_extras(**kwargs): + return [] + + +def env_options(): + return {} + + +def run_info_extras(**kwargs): + return {"webkit_port": "gtk"} + + +class WebKitGTKMiniBrowser(WebKitBrowser): + def __init__(self, logger, binary=None, webdriver_binary=None, + webdriver_args=None): + WebKitBrowser.__init__(self, logger, binary, webdriver_binary, + webdriver_args) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptlogging.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptlogging.py index 6751f8907f4..69cee744879 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptlogging.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptlogging.py @@ -4,13 +4,14 @@ from mozlog import commandline, stdadapter, set_default_logger from mozlog.structuredlog import StructuredLogger, log_levels -def setup(args, defaults): +def setup(args, defaults, formatter_defaults=None): logger = args.pop('log', None) if logger: set_default_logger(logger) StructuredLogger._logger_states["web-platform-tests"] = logger._state else: - logger = commandline.setup_logging("web-platform-tests", args, defaults) + logger = commandline.setup_logging("web-platform-tests", args, defaults, + formatter_defaults=formatter_defaults) setup_stdlib_logger() for name in args.keys(): diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html index 16e6d2a7d8d..11ef305064d 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html @@ -54,6 +54,24 @@ try { fn(); assert_unreached(); } catch (err) { /* ignore */ } } + // Test the "sample" field of the event. + // TODO(vogelheim): The current set of tests allows for more variance in the + // sample reports than the current spec draft does. Once the spec has + // been finalized, we should clamp this down to check byte-for-byte + // against the values mandated by the spec. + + function expect_sample(s) { return e => { + assert_true(e.sample.includes(s), + `expected "${e.sample}" to include "${s}".`); + return e; + } } + + function expect_blocked_uri(s) { return e => { + assert_true(e.blockedURI === s, + `expected "${e.blockedUri}" to be "${s}".`); + return e; + } } + // A sample policy we use to test TrustedTypes.createPolicy behaviour. const id = x => x; const a_policy = { @@ -80,6 +98,8 @@ let p = Promise.resolve() .then(promise_violation("trusted-types one")) .then(promise_violation("trusted-types two")) + .then(expect_sample("three")) + .then(expect_blocked_uri("trusted-types-policy")) .then(promise_flush()); expect_throws(_ => TrustedTypes.createPolicy("three", a_policy)); flush(); @@ -131,18 +151,6 @@ return p; }, "Trusted Type violation report: assign trusted HTML to html; no report"); - // Test the "sample" field of the event. - // TODO(vogelheim): The current set of tests allows for more variance in the - // sample reports than the current spec draft does. Once the spec has - // been finalized, we should clamp this down to check byte-for-byte - // against the values mandated by the spec. - - function expect_sample(s) { return e => { - assert_true(e.sample.includes(s), - `expected "${e.sample}" to include "${s}".`); - return e; - } } - promise_test(t => { let p = Promise.resolve() .then(promise_violation("trusted-types two")) diff --git a/tests/wpt/web-platform-tests/uievents/click/auxclick_event.html b/tests/wpt/web-platform-tests/uievents/click/auxclick_event.html index 9f4ffed96e6..8bb2e137f5b 100644 --- a/tests/wpt/web-platform-tests/uievents/click/auxclick_event.html +++ b/tests/wpt/web-platform-tests/uievents/click/auxclick_event.html @@ -23,6 +23,7 @@
    diff --git a/tests/wpt/web-platform-tests/worklets/audio-worklet-referrer.https.html b/tests/wpt/web-platform-tests/worklets/audio-worklet-referrer.https.html index f258cd5a452..61cb63d75ca 100644 --- a/tests/wpt/web-platform-tests/worklets/audio-worklet-referrer.https.html +++ b/tests/wpt/web-platform-tests/worklets/audio-worklet-referrer.https.html @@ -1,6 +1,7 @@ + diff --git a/tests/wpt/web-platform-tests/worklets/layout-worklet-referrer.https.html b/tests/wpt/web-platform-tests/worklets/layout-worklet-referrer.https.html index cb383a935a2..dc7b84b350c 100644 --- a/tests/wpt/web-platform-tests/worklets/layout-worklet-referrer.https.html +++ b/tests/wpt/web-platform-tests/worklets/layout-worklet-referrer.https.html @@ -1,6 +1,7 @@ + diff --git a/tests/wpt/web-platform-tests/worklets/paint-worklet-referrer.https.html b/tests/wpt/web-platform-tests/worklets/paint-worklet-referrer.https.html index a4b5a6f498c..8f3d82a1ddc 100644 --- a/tests/wpt/web-platform-tests/worklets/paint-worklet-referrer.https.html +++ b/tests/wpt/web-platform-tests/worklets/paint-worklet-referrer.https.html @@ -1,6 +1,7 @@ + diff --git a/tests/wpt/web-platform-tests/worklets/resources/import-same-origin-referrer-checker-worklet-script-from-remote-origin.sub.js b/tests/wpt/web-platform-tests/worklets/resources/import-same-origin-referrer-checker-worklet-script-from-remote-origin.sub.js new file mode 100644 index 00000000000..33af2258ff3 --- /dev/null +++ b/tests/wpt/web-platform-tests/worklets/resources/import-same-origin-referrer-checker-worklet-script-from-remote-origin.sub.js @@ -0,0 +1,2 @@ +// Forward GET parameters to the server. +import '{{GET[requestor_origin]}}/worklets/resources/referrer-checker.py?referrer_policy={{GET[referrer_policy]}}&expected_referrer={{GET[expected_referrer]}}'; diff --git a/tests/wpt/web-platform-tests/worklets/resources/import-same-origin-referrer-checker-worklet-script-from-remote-origin.sub.js.headers b/tests/wpt/web-platform-tests/worklets/resources/import-same-origin-referrer-checker-worklet-script-from-remote-origin.sub.js.headers new file mode 100644 index 00000000000..cb762eff806 --- /dev/null +++ b/tests/wpt/web-platform-tests/worklets/resources/import-same-origin-referrer-checker-worklet-script-from-remote-origin.sub.js.headers @@ -0,0 +1 @@ +Access-Control-Allow-Origin: * diff --git a/tests/wpt/web-platform-tests/worklets/resources/referrer-tests.js b/tests/wpt/web-platform-tests/worklets/resources/referrer-tests.js index 01b8e2ab57a..b3c4a048f5a 100644 --- a/tests/wpt/web-platform-tests/worklets/resources/referrer-tests.js +++ b/tests/wpt/web-platform-tests/worklets/resources/referrer-tests.js @@ -88,6 +88,7 @@ function runReferrerTests(workletType) { // Tests for descendant script fetch ----------------------------------------- + // Referrer policy: no-referrer. promise_test(() => { return runReferrerTest({ workletType: workletType, fetchType: 'descendant', @@ -106,6 +107,15 @@ function runReferrerTests(workletType) { }, 'Importing a remote-origin script from a same-origin worklet script ' + 'that has "no-referrer" referrer policy should not send referrer.'); + promise_test(() => { + return runReferrerTest({ workletType: workletType, + fetchType: 'descendant', + referrerPolicy: 'no-referrer', + scriptOrigins: { topLevel: 'remote', + descendant: 'same' } }); + }, 'Importing a same-origin script from a remote-origin worklet script ' + + 'that has "no-referrer" referrer policy should not send referrer.'); + promise_test(() => { return runReferrerTest({ workletType: workletType, fetchType: 'descendant', @@ -115,6 +125,7 @@ function runReferrerTests(workletType) { }, 'Importing a remote-origin script from a remote-origin worklet script ' + 'that has "no-referrer" referrer policy should not send referrer.'); + // Referrer policy: origin. promise_test(() => { return runReferrerTest({ workletType: workletType, fetchType: 'descendant', @@ -133,6 +144,15 @@ function runReferrerTests(workletType) { }, 'Importing a remote-origin script from a same-origin worklet script ' + 'that has "origin" referrer policy should send referrer.'); + promise_test(() => { + return runReferrerTest({ workletType: workletType, + fetchType: 'descendant', + referrerPolicy: 'origin', + scriptOrigins: { topLevel: 'remote', + descendant: 'same' } }); + }, 'Importing a same-origin script from a remote-origin worklet script ' + + 'that has "origin" referrer policy should send referrer.'); + promise_test(() => { return runReferrerTest({ workletType: workletType, fetchType: 'descendant', @@ -142,6 +162,7 @@ function runReferrerTests(workletType) { }, 'Importing a remote-origin script from a remote-origin worklet script ' + 'that has "origin" referrer policy should send referrer.'); + // Referrer policy: same-origin. promise_test(() => { return runReferrerTest({ workletType: workletType, fetchType: 'descendant', @@ -160,6 +181,15 @@ function runReferrerTests(workletType) { }, 'Importing a remote-origin script from a same-origin worklet script ' + 'that has "same-origin" referrer policy should not send referrer.'); + promise_test(() => { + return runReferrerTest({ workletType: workletType, + fetchType: 'descendant', + referrerPolicy: 'same-origin', + scriptOrigins: { topLevel: 'remote', + descendant: 'same' } }); + }, 'Importing a same-origin script from a remote-origin worklet script ' + + 'that has "same-origin" referrer policy should send referrer.'); + promise_test(() => { return runReferrerTest({ workletType: workletType, fetchType: 'descendant', @@ -168,4 +198,6 @@ function runReferrerTests(workletType) { descendant: 'remote' } }); }, 'Importing a remote-origin script from a remote-origin worklet script ' + 'that has "same-origin" referrer policy should not send referrer.'); + + // TODO(domfarolino): Add tests for more referrer policies. } diff --git a/tests/wpt/web-platform-tests/worklets/resources/referrer-window.html b/tests/wpt/web-platform-tests/worklets/resources/referrer-window.html index 4817f0452a2..934e3dc41b1 100644 --- a/tests/wpt/web-platform-tests/worklets/resources/referrer-window.html +++ b/tests/wpt/web-platform-tests/worklets/resources/referrer-window.html @@ -31,6 +31,14 @@ function createScriptURLForDecendant(scriptOrigins) { 'import-remote-origin-referrer-checker-worklet-script.sub.js', location.href); } + if (scriptOrigins.topLevel === 'remote' && + scriptOrigins.descendant === 'same') { + url = new URL( + get_host_info().HTTPS_REMOTE_ORIGIN + + '/worklets/resources/' + + 'import-same-origin-referrer-checker-worklet-script-from-remote-origin.sub.js'); + return url; + } if (scriptOrigins.topLevel === 'remote' && scriptOrigins.descendant === 'remote') { return new URL( @@ -88,6 +96,7 @@ window.onmessage = e => { } const params = new URLSearchParams; + params.append('requestor_origin', document.location.origin); params.append('referrer_policy', referrerPolicy); params.append('expected_referrer', expectedReferrer); diff --git a/tests/wpt/webgl/meta/conformance/glsl/bugs/complex-glsl-does-not-crash.html.ini b/tests/wpt/webgl/meta/conformance/glsl/bugs/complex-glsl-does-not-crash.html.ini deleted file mode 100644 index 67737132496..00000000000 --- a/tests/wpt/webgl/meta/conformance/glsl/bugs/complex-glsl-does-not-crash.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[complex-glsl-does-not-crash.html] - expected: TIMEOUT - [Overall test] - expected: NOTRUN - diff --git a/tests/wpt/webgl/meta/conformance2/rendering/canvas-resizing-with-pbo-bound.html.ini b/tests/wpt/webgl/meta/conformance2/rendering/canvas-resizing-with-pbo-bound.html.ini index 0e7c48f1481..436b6e96fe7 100644 --- a/tests/wpt/webgl/meta/conformance2/rendering/canvas-resizing-with-pbo-bound.html.ini +++ b/tests/wpt/webgl/meta/conformance2/rendering/canvas-resizing-with-pbo-bound.html.ini @@ -1,4 +1,5 @@ [canvas-resizing-with-pbo-bound.html] + expected: TIMEOUT [WebGL test #0: Unable to fetch WebGL rendering context for Canvas] expected: FAIL