From 8d32ec89eb7194063b98ed08199aa3be997d46e1 Mon Sep 17 00:00:00 2001 From: Servo WPT Sync <32481905+servo-wpt-sync@users.noreply.github.com> Date: Tue, 25 Jul 2023 07:49:20 -0400 Subject: [PATCH] Update web-platform-tests to revision b'b6cddc4617fedeed0db493b3ba9283148797447f' (#30021) --- tests/wpt/meta-legacy-layout/MANIFEST.json | 496 +++++++++++++++--- .../inline-negative-margin-001.html.ini | 5 +- ...reak-transformation-unremovable-4.html.ini | 2 - .../parsing/text-autospace-computed.html.ini | 15 + .../parsing/text-autospace-valid.html.ini | 30 ++ ...ernals-setFormValue-nullish-value.html.ini | 2 + .../redirect/redirect-keepalive.any.js.ini | 1 + .../css-images.sub.tentative.html.ini | 6 + ...worker-fetch.tentative.https.window.js.ini | 27 + ...url-return-value-handling-dynamic.html.ini | 6 + ...ation-unload-same-origin-fragment.html.ini | 3 - .../form-requestsubmit.html.ini | 3 +- .../form-submit-button-click.html.ini | 3 +- .../traverse_the_history_1.html.ini | 3 - .../cross-origin-objects.html.ini | 1 - ...creating_browsing_context_test_01.html.ini | 3 - .../canvas.2d.disconnected.html.ini | 2 +- .../nontraditional-about-srcdoc.html.ini | 6 + .../autofocus-dialog.html.ini | 3 +- ...nother-top-level-browsing-context.html.ini | 4 - .../media_fragment_seek.html.ini | 3 + .../iframe_sandbox_popups_escaping-1.html.ini | 3 +- .../iframe_sandbox_popups_escaping-3.html.ini | 3 +- ...rame_sandbox_popups_nonescaping-1.html.ini | 3 +- .../text-plain.window.js.ini | 6 +- .../html/semantics/forms/historical.html.ini | 3 - ...ob-entry-different-function-realm.html.ini | 3 +- .../promise-job-entry.html.ini | 5 +- .../promise-rejection-events.html.ini | 3 +- .../content-type-parsing.html.ini | 4 +- ...ries-for-network-errors.sub.https.html.ini | 3 + .../cross-partition.https.tentative.html.ini | 2 +- .../webmessaging/with-ports/017.html.ini | 4 - .../webmessaging/without-ports/017.html.ini | 4 - tests/wpt/meta/MANIFEST.json | 496 +++++++++++++++--- ...scroll-behavior-smooth-navigation.html.ini | 3 + tests/wpt/tests/.well-known/web-identity | 4 + .../tests/IndexedDB/nested-cloning-large.html | 3 + .../IndexedDB/resources/support-promises.js | 9 +- .../support/fedcm/accounts.py | 4 + .../support/fedcm/client_metadata.py | 4 + .../support/fedcm/manifest.py | 4 + .../support/fedcm/single_account.py | 4 + .../support/fedcm/token.py | 4 + .../support/fedcm/token_with_account_id.py | 4 + .../support/fedcm/two_accounts.py | 4 + .../border-color-currentcolor-ref.html | 23 + .../css-color/border-color-currentcolor.html | 26 + .../css-color/parsing/color-invalid-rgb.html | 1 + ...jectboundingbox-content-clip-transform.svg | 2 +- .../mask-objectboundingbox-content-clip.svg | 2 +- ...-userspaceonuse-content-clip-transform.svg | 2 +- .../mask-userspaceonuse-content-clip.svg | 2 +- .../register-property-syntax-parsing.html | 5 + .../scrollbar-color-scheme-dynamic-1-ref.html | 34 ++ .../scrollbar-color-scheme-dynamic-1.html | 46 ++ .../scrollbar-color-scheme-dynamic-2-ref.html | 23 + .../scrollbar-color-scheme-dynamic-2.html | 36 ++ .../scrollbar-color-scheme-dynamic-3-ref.html | 35 ++ .../scrollbar-color-scheme-dynamic-3.html | 46 ++ .../scrollbar-color-scheme-dynamic-4-ref.html | 24 + .../scrollbar-color-scheme-dynamic-4.html | 36 ++ .../contain-intrinsic-size/auto-015.html | 94 ++++ .../contain-intrinsic-size/auto-016.html | 94 ++++ .../contain-intrinsic-size/auto-017.html | 94 ++++ .../contain-intrinsic-size/auto-018.html | 94 ++++ .../contain-intrinsic-size-computed.html | 5 +- .../parsing/text-autospace-computed.html | 23 + .../parsing/text-autospace-invalid.html | 26 + .../parsing/text-autospace-valid.html | 28 + .../css-transforms/skewX/svg-skewxy-001.html | 2 +- ...tInternals-setFormValue-nullish-value.html | 45 ++ ...tomatic-beacon-two-events-clear.https.html | 58 ++ ...matic-beacon-two-events-persist.https.html | 54 ++ .../tests/focus/focus-centers-element.html | 83 +++ .../nontraditional-about-srcdoc.html | 106 ++++ .../resources/echo-referrer-text.py | 4 + .../number-constraint-validation.html | 42 ++ .../popovers/popover-attribute-basic.html | 1 + ...ative.html => non-external-no-import.html} | 0 tests/wpt/tests/images/computer.jpg | Bin 0 -> 2018 bytes .../progressively-loaded-image.html | 42 ++ tests/wpt/tests/lint.ignore | 3 + .../tentative/loaf-script-block.html | 23 + .../tentative/loaf-source-location.html | 5 + .../radicals/empty-msqrt-ref.html | 10 + .../radicals/empty-msqrt.html | 15 + .../size-containment-001.tentative.html | 77 +++ .../requireInteraction-manual.https.html | 51 ++ .../payment-request-show-method.https.html | 11 +- .../show-consume-activation.https.html | 12 +- .../pointerevent_pointercancel_touch.html | 14 +- .../pointerevents/pointerevent_support.js | 6 + .../entries-for-network-errors.sub.https.html | 16 + .../resources/entry-invariants.js | 6 +- .../view-timelines/svg-graphics-element.html | 19 +- .../resource-timing.sub.https.html | 4 +- .../service-worker/resources/missing.asis | 4 + .../resources/resource-timing-iframe.sub.html | 2 +- .../piping/crashtests/cross-piping.html | 12 + ...vg-use-symbol-animateMotion-print-ref.html | 12 + .../svg-use-symbol-animateMotion-print.html | 25 + ...use-symbol-animateTransform-print-ref.html | 12 + ...svg-use-symbol-animateTransform-print.html | 24 + .../svg-use-symbol-opacity-print-ref.html | 12 + .../layout/svg-use-symbol-opacity-print.html | 24 + .../layout/svg-use-symbol-path-print-ref.html | 12 + .../svg/layout/svg-use-symbol-path-print.html | 24 + .../wpt/tests/tools/ci/requirements_build.txt | 2 +- tests/wpt/tests/tools/ci/requirements_tc.txt | 4 +- tests/wpt/tests/tools/docker/requirements.txt | 2 +- tests/wpt/tests/tools/manifest/jsonlib.py | 1 + tests/wpt/tests/tools/manifest/sourcefile.py | 15 +- .../tools/manifest/tests/test_sourcefile.py | 34 ++ tests/wpt/tests/tools/requirements_mypy.txt | 4 +- tests/wpt/tests/tools/requirements_tests.txt | 4 +- .../bidi/modules/browsing_context.py | 3 +- .../tests/tools/wptrunner/requirements.txt | 2 +- .../animation-types/property-list.js | 2 +- .../per-frame-qp-encoding.https.any.js | 5 + .../capture_screenshot/capture_screenshot.py | 14 +- .../capture_screenshot/invalid.py | 5 +- .../dom_content_loaded/dom_content_loaded.py | 82 ++- .../tests/bidi/browsing_context/load/load.py | 68 ++- .../browsing_context/navigate/__init__.py | 3 + .../bidi/browsing_context/navigate/hash.py | 28 + .../browsing_context/navigate/navigate.py | 7 +- .../webdriver/tests/bidi/network/__init__.py | 37 +- .../before_request_sent.py | 95 +++- .../bidi/network/combined/network_events.py | 47 ++ .../response_completed/response_completed.py | 32 +- .../response_started/response_started.py | 7 +- .../webdriver/tests/bidi/script/__init__.py | 11 +- .../script/call_function/remote_values.py | 26 +- .../webrtc-encoded-transform/routines.js | 61 +++ .../script-change-transform.https.html | 1 - .../script-metadata-transform-worker.js | 23 +- .../script-metadata-transform.https.html | 281 ++++++++-- ...form-generateKeyFrame-simulcast.https.html | 136 +++++ ...ript-transform-generateKeyFrame.https.html | 229 ++++++++ .../script-transform-generateKeyFrame.js | 70 +++ ...t-transform-sendKeyFrameRequest.https.html | 110 ++++ .../script-transform-sendKeyFrameRequest.js | 63 +++ .../script-transform-worker.js | 18 +- .../script-transform.https.html | 139 +---- .../simulcast/setParameters-active.https.html | 8 +- .../webtransport/streams-close.https.any.js | 4 +- 147 files changed, 4072 insertions(+), 497 deletions(-) delete mode 100644 tests/wpt/meta-legacy-layout/css/css-text/line-breaking/segment-break-transformation-unremovable-4.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-text/parsing/text-autospace-computed.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-text/parsing/text-autospace-valid.html.ini create mode 100644 tests/wpt/meta-legacy-layout/custom-elements/form-associated/ElementInternals-setFormValue-nullish-value.html.ini create mode 100644 tests/wpt/meta-legacy-layout/fetch/private-network-access/worker-fetch.tentative.https.window.js.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/infrastructure/urls/terminology-0/nontraditional-about-srcdoc.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/interaction/focus/the-autofocus-attribute/skip-another-top-level-browsing-context.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/media_fragment_seek.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/historical.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/webmessaging/with-ports/017.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/webmessaging/without-ports/017.html.ini rename tests/wpt/{meta-legacy-layout => meta}/css/cssom-view/scroll-behavior-smooth-navigation.html.ini (60%) create mode 100644 tests/wpt/tests/css/css-color/border-color-currentcolor-ref.html create mode 100644 tests/wpt/tests/css/css-color/border-color-currentcolor.html create mode 100644 tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-1-ref.html create mode 100644 tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-1.html create mode 100644 tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-2-ref.html create mode 100644 tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-2.html create mode 100644 tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-3-ref.html create mode 100644 tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-3.html create mode 100644 tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-4-ref.html create mode 100644 tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-4.html create mode 100644 tests/wpt/tests/css/css-sizing/contain-intrinsic-size/auto-015.html create mode 100644 tests/wpt/tests/css/css-sizing/contain-intrinsic-size/auto-016.html create mode 100644 tests/wpt/tests/css/css-sizing/contain-intrinsic-size/auto-017.html create mode 100644 tests/wpt/tests/css/css-sizing/contain-intrinsic-size/auto-018.html create mode 100644 tests/wpt/tests/css/css-text/parsing/text-autospace-computed.html create mode 100644 tests/wpt/tests/css/css-text/parsing/text-autospace-invalid.html create mode 100644 tests/wpt/tests/css/css-text/parsing/text-autospace-valid.html create mode 100644 tests/wpt/tests/custom-elements/form-associated/ElementInternals-setFormValue-nullish-value.html create mode 100644 tests/wpt/tests/fenced-frame/automatic-beacon-two-events-clear.https.html create mode 100644 tests/wpt/tests/fenced-frame/automatic-beacon-two-events-persist.https.html create mode 100644 tests/wpt/tests/focus/focus-centers-element.html create mode 100644 tests/wpt/tests/html/infrastructure/urls/terminology-0/nontraditional-about-srcdoc.html create mode 100644 tests/wpt/tests/html/infrastructure/urls/terminology-0/resources/echo-referrer-text.py create mode 100644 tests/wpt/tests/html/semantics/forms/the-input-element/number-constraint-validation.html rename tests/wpt/tests/html/semantics/scripting-1/the-script-element/execution-timing/{non-external-no-import.tentative.html => non-external-no-import.html} (100%) create mode 100644 tests/wpt/tests/images/computer.jpg create mode 100644 tests/wpt/tests/largest-contentful-paint/progressively-loaded-image.html create mode 100644 tests/wpt/tests/mathml/presentation-markup/radicals/empty-msqrt-ref.html create mode 100644 tests/wpt/tests/mathml/presentation-markup/radicals/empty-msqrt.html create mode 100644 tests/wpt/tests/mathml/relations/css-styling/size-containment-001.tentative.html create mode 100644 tests/wpt/tests/notifications/requireInteraction-manual.https.html create mode 100644 tests/wpt/tests/service-workers/service-worker/resources/missing.asis create mode 100644 tests/wpt/tests/streams/piping/crashtests/cross-piping.html create mode 100644 tests/wpt/tests/svg/layout/svg-use-symbol-animateMotion-print-ref.html create mode 100644 tests/wpt/tests/svg/layout/svg-use-symbol-animateMotion-print.html create mode 100644 tests/wpt/tests/svg/layout/svg-use-symbol-animateTransform-print-ref.html create mode 100644 tests/wpt/tests/svg/layout/svg-use-symbol-animateTransform-print.html create mode 100644 tests/wpt/tests/svg/layout/svg-use-symbol-opacity-print-ref.html create mode 100644 tests/wpt/tests/svg/layout/svg-use-symbol-opacity-print.html create mode 100644 tests/wpt/tests/svg/layout/svg-use-symbol-path-print-ref.html create mode 100644 tests/wpt/tests/svg/layout/svg-use-symbol-path-print.html create mode 100644 tests/wpt/tests/webrtc-encoded-transform/script-transform-generateKeyFrame-simulcast.https.html create mode 100644 tests/wpt/tests/webrtc-encoded-transform/script-transform-generateKeyFrame.https.html create mode 100644 tests/wpt/tests/webrtc-encoded-transform/script-transform-generateKeyFrame.js create mode 100644 tests/wpt/tests/webrtc-encoded-transform/script-transform-sendKeyFrameRequest.https.html create mode 100644 tests/wpt/tests/webrtc-encoded-transform/script-transform-sendKeyFrameRequest.js diff --git a/tests/wpt/meta-legacy-layout/MANIFEST.json b/tests/wpt/meta-legacy-layout/MANIFEST.json index f4db97d8fae..811b5a0e26f 100644 --- a/tests/wpt/meta-legacy-layout/MANIFEST.json +++ b/tests/wpt/meta-legacy-layout/MANIFEST.json @@ -6736,6 +6736,17 @@ ] }, "streams": { + "piping": { + "crashtests": { + "cross-piping.html": [ + "712d5ecebef8ffd1377c15cc6debd175874b0ea4", + [ + null, + {} + ] + ] + } + }, "readable-streams": { "crashtests": { "strategy-worker-terminate.html": [ @@ -22077,6 +22088,13 @@ {} ] ], + "requireInteraction-manual.https.html": [ + "23e9e4bbb322ceab495d2374575b6b813dbe1925", + [ + null, + {} + ] + ], "shownotification-resolve-manual.https.html": [ "a73b11d100afe9c3c8b80199b8a43147878a124a", [ @@ -30761,6 +30779,58 @@ }, "svg": { "layout": { + "svg-use-symbol-animateMotion-print.html": [ + "aa658117b66be49aa3a9830f2d6d710327383025", + [ + null, + [ + [ + "/svg/layout/svg-use-symbol-animateMotion-print-ref.html", + "==" + ] + ], + {} + ] + ], + "svg-use-symbol-animateTransform-print.html": [ + "f979d8317cead2da988d35c20c476a4176ba5f90", + [ + null, + [ + [ + "/svg/layout/svg-use-symbol-animateTransform-print-ref.html", + "==" + ] + ], + {} + ] + ], + "svg-use-symbol-opacity-print.html": [ + "339939b0c3de7114a95d0a0721e962733fb851f1", + [ + null, + [ + [ + "/svg/layout/svg-use-symbol-opacity-print-ref.html", + "==" + ] + ], + {} + ] + ], + "svg-use-symbol-path-print.html": [ + "c671a8413af2401727e7adfd79ad1157ad49f7a3", + [ + null, + [ + [ + "/svg/layout/svg-use-symbol-path-print-ref.html", + "==" + ] + ], + {} + ] + ], "svg-use-symbol-width-print.html": [ "ae56d68eee25648dafa194fedac07835048cecac", [ @@ -150091,6 +150161,19 @@ {} ] ], + "border-color-currentcolor.html": [ + "525a89e312dfaa76b165b7583c980933e7e73163", + [ + null, + [ + [ + "/css/css-color/border-color-currentcolor-ref.html", + "==" + ] + ], + {} + ] + ], "border-left-color.xht": [ "3214f2d8143cda12ecdcf8df00016e678cf2de52", [ @@ -205991,7 +206074,7 @@ ] ], "mask-objectboundingbox-content-clip-transform.svg": [ - "e3ca1fbdba7da3de6c5465f9af9a9e0666debfe3", + "397f56d19023f850b15dfe41797ad74dd24a17cc", [ null, [ @@ -206011,7 +206094,7 @@ ], [ 0, - 200 + 268 ] ] ] @@ -206020,7 +206103,7 @@ ] ], "mask-objectboundingbox-content-clip.svg": [ - "47cf9006974d7edc11eb142485b53db5d486b94e", + "c87fedec4f88eb0df0e3ef72d1095c8626970328", [ null, [ @@ -206040,7 +206123,7 @@ ], [ 0, - 200 + 376 ] ] ] @@ -206049,7 +206132,7 @@ ] ], "mask-userspaceonuse-content-clip-transform.svg": [ - "03310225e209da75aafb57f081a610d6c7f18e01", + "624084a07bcd0a177c94bc7e1c1114df1771a808", [ null, [ @@ -206069,7 +206152,7 @@ ], [ 0, - 200 + 268 ] ] ] @@ -206078,7 +206161,7 @@ ] ], "mask-userspaceonuse-content-clip.svg": [ - "09eb2dfcd01be0775ba6f352b9cff7ce8cd2640f", + "f1bfbdda58320b1007d937ad74c6c85d2c721174", [ null, [ @@ -206098,7 +206181,7 @@ ], [ 0, - 200 + 376 ] ] ] @@ -224035,6 +224118,58 @@ {} ] ], + "scrollbar-color-scheme-dynamic-1.html": [ + "71fd97f27419316f5d923dce5673a3f0e0d87633", + [ + null, + [ + [ + "/css/css-scrollbars/scrollbar-color-scheme-dynamic-1-ref.html", + "==" + ] + ], + {} + ] + ], + "scrollbar-color-scheme-dynamic-2.html": [ + "111219c7d167243b6de1491ae7c6882af7d481c1", + [ + null, + [ + [ + "/css/css-scrollbars/scrollbar-color-scheme-dynamic-2-ref.html", + "==" + ] + ], + {} + ] + ], + "scrollbar-color-scheme-dynamic-3.html": [ + "47105f0c6d92dc28dd3ed52743bd220973d86691", + [ + null, + [ + [ + "/css/css-scrollbars/scrollbar-color-scheme-dynamic-3-ref.html", + "==" + ] + ], + {} + ] + ], + "scrollbar-color-scheme-dynamic-4.html": [ + "9655a0ebb2429585bb482a2872d310b23ea55c46", + [ + null, + [ + [ + "/css/css-scrollbars/scrollbar-color-scheme-dynamic-4-ref.html", + "==" + ] + ], + {} + ] + ], "scrollbar-width-paint-001.html": [ "3621a65b39ed7d9e3b0afea4e1770427b31534de", [ @@ -259390,7 +259525,7 @@ ] ], "svg-skewxy-001.html": [ - "23467a9936ef96029cbaf93529d763e12becdaca", + "0eee25c5dfe36d919a1a116de15ae2780f7428c4", [ null, [ @@ -322600,6 +322735,19 @@ {} ] ], + "empty-msqrt.html": [ + "f9fb65ba4b13b732572544599decc96e39f838da", + [ + null, + [ + [ + "/mathml/presentation-markup/radicals/empty-msqrt-ref.html", + "==" + ] + ], + {} + ] + ], "radical-rendering-from-in-flow.html": [ "7a5de3811b1e45b85f8805ae4dc01225649ae7a9", [ @@ -332174,7 +332322,7 @@ ] }, "web-identity": [ - "2095182bd040631d1ecaaa70d456d67dee3aee15", + "6f1260dbc373c19505e5d6c9a7328d63ef4eef2f", [] ] }, @@ -332357,7 +332505,7 @@ [] ], "support-promises.js": [ - "9128bfe151ab9cda59ff6e3d4487024b0b7cd0cb", + "1a5b8270842cd80234b3f7028d8683620904ec71", [] ], "support.js": [ @@ -357070,11 +357218,11 @@ ], "fedcm": { "accounts.py": [ - "11c1c32b61af839917e54cc86c8af294dd86c3cf", + "1ec7f7dc1242449d7bc38a52fa2ac906a9d9a27d", [] ], "client_metadata.py": [ - "bfc8027412df0a941468df4a7368f754de0ab13e", + "61d8aaf2367fc6dfaf1da062ee7b6837d0477818", [] ], "client_metadata.py.headers": [ @@ -357098,7 +357246,7 @@ [] ], "manifest.py": [ - "6105db007b0948a150d2ba7098ba97e30d333a15", + "8a8fff74bc955c965e8874e9a84a4d8378c3e579", [] ], "manifest_redirect_accounts.json": [ @@ -357126,19 +357274,19 @@ [] ], "single_account.py": [ - "b388ef55a4b11760f388b4b3d468cf7cc52a3c25", + "5f05dc4be50d8c98b9b8d48600f316200ef954a5", [] ], "token.py": [ - "cd73394bc4f83efd3f78705b6ba2a51e53625bf7", + "54150325524728ab3c86bea5731d2a0f8b708ddf", [] ], "token_with_account_id.py": [ - "8bdfec8f6d9a9dabbe34a78d73afd404afdf9bbb", + "4b8ae9a5651105d53b7e36ac242055c6edc52848", [] ], "two_accounts.py": [ - "97ee92f676042ad393c872f29e4a4f7c3c283039", + "c355d21f1f2062516edd383a6ba953d4dc408eb5", [] ], "userinfo-iframe.html": [ @@ -378616,6 +378764,10 @@ "ddfa9100cbef6094375df8b40eeb9673e690d4f7", [] ], + "border-color-currentcolor-ref.html": [ + "6efc0c414128f838293a465dbfb10bc1ef854e1f", + [] + ], "border-color-ref.xht": [ "28f67840548fbd1a3c2c97dfccbf97575f7e9728", [] @@ -399124,6 +399276,22 @@ "890179a21c68bc7051c1db252fb7550468bb952e", [] ], + "scrollbar-color-scheme-dynamic-1-ref.html": [ + "ec54bc08a721f2b6d4eff3a6422fdc816a4cbeae", + [] + ], + "scrollbar-color-scheme-dynamic-2-ref.html": [ + "906fb11cd56898c60deb841236346ea18e0dec3a", + [] + ], + "scrollbar-color-scheme-dynamic-3-ref.html": [ + "e9e842caea71c9481ac721db5821f9b849afed2b", + [] + ], + "scrollbar-color-scheme-dynamic-4-ref.html": [ + "045619823547041d72b8b6349ac67945c7540bb6", + [] + ], "scrollbar-width-paint-001-ref.html": [ "42295b1fb9d7d7ef8622c729265e344117c65cc2", [] @@ -430806,6 +430974,14 @@ ] } } + }, + "terminology-0": { + "resources": { + "echo-referrer-text.py": [ + "8a48d3346a6ad71e9fee2b103abfd97148e3bb43", + [] + ] + } } } }, @@ -437499,6 +437675,10 @@ "024de84a5bbac05f0d878c994bb45d12fa41646a", [] ], + "computer.jpg": [ + "d58c896b2411b44d5089c72defb0d222291f1f3b", + [] + ], "fail.gif": [ "c4addcf0090ce049726cdf1d3cf96283be78db49", [] @@ -439961,7 +440141,7 @@ ] }, "lint.ignore": [ - "457c93c2149bad23ff39cf176e145419e3c6dabb", + "255a50e0d1ce5cafa5905341d097a6535c0135fd", [] ], "loading": { @@ -440625,6 +440805,10 @@ "632d6739db9fdea3b68c850db0aadbc64e5a19c1", [] ], + "empty-msqrt-ref.html": [ + "8ff5cbe9edd632cfd5fd6bb1f71f2df4209908df", + [] + ], "radical-rendering-from-in-flow-ref.html": [ "e1b8c3d161079da854a3e8ef4a560bf7e18cc2c4", [] @@ -443622,7 +443806,7 @@ [] ], "pointerevent_support.js": [ - "56accf8561084c07170453ce8f91112d0ff5a5d9", + "19f0c2e6175e6dce3edfd8290447bcc988839833", [] ], "pointerlock": { @@ -446111,7 +446295,7 @@ [] ], "entry-invariants.js": [ - "bbc913b722903085963a133dab0a8a96f77b2506", + "78d43d1b01e45164320cee53eb2e410822f4ab3f", [] ], "eventsource.py": [ @@ -449323,6 +449507,10 @@ "ebee4ff8e8da785cf4b4a339c6514b5fe9b98f9b", [] ], + "missing.asis": [ + "4846fe01d61a64c6bd73bf5c23fbd4a1b970de3d", + [] + ], "module-worker.js": [ "385fe7101503cb4c7ca77e95e023459b29267741", [] @@ -449708,7 +449896,7 @@ [] ], "resource-timing-iframe.sub.html": [ - "384c29b536bf1db829532b9485d41020f85bed95", + "ec4c726331d66ca298726e45fc3573e86e227e22", [] ], "resource-timing-worker.js": [ @@ -451890,6 +452078,22 @@ "acfc7be517b3cc6783a372de4c67cc0d7a8b976e", [] ], + "svg-use-symbol-animateMotion-print-ref.html": [ + "07e162c8a5182d7550640801d05c3ccc36718adc", + [] + ], + "svg-use-symbol-animateTransform-print-ref.html": [ + "07e162c8a5182d7550640801d05c3ccc36718adc", + [] + ], + "svg-use-symbol-opacity-print-ref.html": [ + "d6b2f6bd9bb301ae7dbb41be8bdf5b244e31676d", + [] + ], + "svg-use-symbol-path-print-ref.html": [ + "07e162c8a5182d7550640801d05c3ccc36718adc", + [] + ], "svg-use-symbol-width-print-ref.html": [ "6c94e34c04546eb4488d7927c93c46838ab1c817", [] @@ -452869,7 +453073,7 @@ [] ], "requirements_build.txt": [ - "a976e5d639866a58f46f2eb5ff3a619289b277ef", + "2b7e1808552315d973a999293d1294f8ec4fd33d", [] ], "requirements_macos_color_profile.txt": [ @@ -452877,7 +453081,7 @@ [] ], "requirements_tc.txt": [ - "bd979ed97c282c46c484000deb3c1fceea701ab3", + "9c3a0d639afa52f310915bb2deb570027a5cd59b", [] ], "run_tc.py": [ @@ -453009,7 +453213,7 @@ [] ], "requirements.txt": [ - "88b70f37a0dd43764086632d468d351350b28973", + "332fdbdeb1b12ee21595aeb21f1dade3f459115b", [] ], "retry.py": [ @@ -453309,7 +453513,7 @@ [] ], "jsonlib.py": [ - "9c39d5b32ee19ecb540f92222fdc8be9d0676226", + "0f70cf1e171d8500d424ab3e153a2596493fcc1e", [] ], "log.py": [ @@ -453325,7 +453529,7 @@ [] ], "sourcefile.py": [ - "cf0bbf334b7f24597304dbb80dfb1d81ec609f31", + "832968e63234096700625bd4d93a3db17123c1c4", [] ], "spec.py": [ @@ -453354,7 +453558,7 @@ [] ], "test_sourcefile.py": [ - "d3411084f3ce681a456e8882a5c42cd5c57c84b2", + "4b98e718d0328c56912ab0edbea791ac51d7610a", [] ], "test_utils.py": [ @@ -453392,7 +453596,7 @@ [] ], "requirements_mypy.txt": [ - "26175e68b41781652731ecb074e2ac29188034cd", + "c31e7f5bce315c95e9f865447aa6760e8d27adf3", [] ], "requirements_pytest.txt": [ @@ -453400,7 +453604,7 @@ [] ], "requirements_tests.txt": [ - "1376520bdb49ca566db18b88b13a676f55bfa6f4", + "96e00c745dccdfe16d7a081a741517e3731587b9", [] ], "runner": { @@ -461338,7 +461542,7 @@ [] ], "browsing_context.py": [ - "1de7cc0931c7a365ffe134666899d5628beabecd", + "b256bd1ae6736aee98bccc601adbfc3a5d12ba28", [] ], "input.py": [ @@ -461619,7 +461823,7 @@ ] }, "requirements.txt": [ - "64a475dd4006333475f5fe75bf39d2f6eb3f3458", + "8e47b2f229a2280bfff37d4b5c7b67dc433c6a8e", [] ], "requirements_chromium.txt": [ @@ -463882,7 +464086,7 @@ "animation-model": { "animation-types": { "property-list.js": [ - "315687a4e1b26742239810466132326a3303842d", + "c4ef7937ba3d71906db089855b81e1a4f9239625", [] ], "property-types.js": [ @@ -465198,7 +465402,7 @@ }, "navigate": { "__init__.py": [ - "9b7d28f6dacd441177e2810370709fdfc303f6f0", + "c2bf7558f4fe75413f81057c8ab96f31d3fc537f", [] ] }, @@ -465293,7 +465497,7 @@ }, "network": { "__init__.py": [ - "92e88d4e2361e5fa45541966e460b0ad26e16886", + "19a4a69b4c50c8cc613d118ca83edf790612b344", [] ], "before_request_sent": { @@ -465357,7 +465561,7 @@ }, "script": { "__init__.py": [ - "caa1fe514aaf826b468ca570df3c62a58160f395", + "901b412458b06acbbb462ce9e1586f28f036068f", [] ], "add_preload_script": { @@ -466586,7 +466790,7 @@ ] }, "routines.js": [ - "4db7f39621cc891288fe7fb5b107eb9dbf21fc2a", + "0d3e2b9b286b5878204371891a6ec5b7ff5a867c", [] ], "script-audio-transform-worker.js": [ @@ -466598,11 +466802,19 @@ [] ], "script-metadata-transform-worker.js": [ - "03ba1f4ee6e0976a68d607de9824d2fd23daacd0", + "40f7e547d79ca067848b6e51f504cef50a3dcf79", + [] + ], + "script-transform-generateKeyFrame.js": [ + "5e68ee1fb9be8133501ee3f5338f4335bd4901de", + [] + ], + "script-transform-sendKeyFrameRequest.js": [ + "361d7ce0235794b8a39201b5869a38f6720c80ca", [] ], "script-transform-worker.js": [ - "5ea99cd2bf732cf0582a2aef1199a149738269ec", + "88efb9c6a38b50f8c381e957c77043f28e30f5f9", [] ], "script-write-twice-transform-worker.js": [ @@ -475453,7 +475665,7 @@ ] ], "nested-cloning-large.html": [ - "8b3cbc57266527548c5797ab36327a2d5e05d54a", + "0cd8cb48ceec704ef70ea70dae8da76d8928ef12", [ null, { @@ -510476,7 +510688,7 @@ ] ], "color-invalid-rgb.html": [ - "81facf91a36f84af9fdd818e4ebb26dd0b0ddd60", + "90dd082f2ae9a2024e411669bbbe68a82868fa2f", [ null, {} @@ -523465,7 +523677,7 @@ ] ], "register-property-syntax-parsing.html": [ - "5bda1c4c5b23ecc95ac98ef939a9bbba62cf196d", + "664ccabd33c3a1ac62b5dbad83b8ed8640053bc8", [ null, {} @@ -526754,6 +526966,34 @@ {} ] ], + "auto-015.html": [ + "05252dfddacee2d29451043c45f73d65667275a7", + [ + null, + {} + ] + ], + "auto-016.html": [ + "5846101614c20b67f7d863600f0ba40a3f6943e5", + [ + null, + {} + ] + ], + "auto-017.html": [ + "669f9505d706e293cd7dcafb0b65e1ecfadeeafd", + [ + null, + {} + ] + ], + "auto-018.html": [ + "b5121c67f766906b6e808798cdde142892bba637", + [ + null, + {} + ] + ], "contain-intrinsic-size-009.html": [ "0aa62eaaeff5d6cc2fd499b1bf6907e11cbe0e37", [ @@ -526812,7 +527052,7 @@ ], "parsing": { "contain-intrinsic-size-computed.html": [ - "1de987c0a10257b509d64c629e17f253752b7af7", + "305fe621cd595c6b3cf91432520ea3d44a1f017a", [ null, {} @@ -529993,6 +530233,27 @@ {} ] ], + "text-autospace-computed.html": [ + "9656f70956e01304629368fd488d83310428b5ef", + [ + null, + {} + ] + ], + "text-autospace-invalid.html": [ + "7be73ba76eec5c6196017b7fa02c949a359aadaf", + [ + null, + {} + ] + ], + "text-autospace-valid.html": [ + "c40c0e0a4ce7c2cf2a339db926ba5d368fac4919", + [ + null, + {} + ] + ], "text-group-align-invalid.html": [ "0c42067bf623a7657998149dbd34de37de5e2876", [ @@ -542103,6 +542364,13 @@ {} ] ], + "ElementInternals-setFormValue-nullish-value.html": [ + "28c12c4600b328937d5ab50b652433887cde832e", + [ + null, + {} + ] + ], "ElementInternals-setFormValue.html": [ "8a13973f085af707ae15b8369032fd1fcf1c39e9", [ @@ -565522,6 +565790,24 @@ } ] ], + "automatic-beacon-two-events-clear.https.html": [ + "ae246aaac0ad4b269cf0e86d761d4a34abd14acc", + [ + null, + { + "testdriver": true + } + ] + ], + "automatic-beacon-two-events-persist.https.html": [ + "f944d7141d7ee22596c1a98d6895d913cf3c0729", + [ + null, + { + "testdriver": true + } + ] + ], "background-fetch.https.html": [ "7036f2bb5f3bb5e42b5af1b5f970141c0884b5ef", [ @@ -579576,6 +579862,13 @@ {} ] ], + "focus-centers-element.html": [ + "49b9d52b8511bf92797ae36923d09f76170e3112", + [ + null, + {} + ] + ], "focus-event-after-focusing-iframes.html": [ "f2aa2233e560eb6e73b20fe753386ef74ac282e7", [ @@ -616757,6 +617050,13 @@ null, {} ] + ], + "nontraditional-about-srcdoc.html": [ + "bdb33842a7da62011419650f5093396d509805f7", + [ + null, + {} + ] ] } } @@ -625918,6 +626218,15 @@ {} ] ], + "number-constraint-validation.html": [ + "959726bb50d9ddf75fc56123746e1d8e21e7df71", + [ + null, + { + "testdriver": true + } + ] + ], "number-disabled.html": [ "11cb82fdda60d69f8b1dd7709ea99210238123f8", [ @@ -627763,7 +628072,7 @@ ] ], "popover-attribute-basic.html": [ - "32d3deb3848c22ee48403e40c17038f1cc8e2f59", + "13108949cb3c5e97f79245578e4af0871dfbf738", [ null, { @@ -629437,7 +629746,7 @@ {} ] ], - "non-external-no-import.tentative.html": [ + "non-external-no-import.html": [ "50836e0d7beed9f643fba2e2f4db6306cf8a7204", [ null, @@ -641319,6 +641628,13 @@ {} ] ], + "progressively-loaded-image.html": [ + "25475e3ab9574b38e7b63cb238060fc762e8c971", + [ + null, + {} + ] + ], "redirects-tao-star.html": [ "5607ed792e8640da86ee554a486a1b749861fdb3", [ @@ -642903,7 +643219,7 @@ ] ], "loaf-script-block.html": [ - "866eea09e0907622ad62c53c8b5f020566ba559f", + "5cd82c2c1320ac8baf4cb95f76777a543fa2d685", [ null, { @@ -642921,7 +643237,7 @@ ] ], "loaf-source-location.html": [ - "ffda00020717cf87684ba0a8331100778592f619", + "1065564206fc151e9690aca9bf512f7d48016099", [ null, { @@ -644203,6 +644519,13 @@ {} ] ], + "size-containment-001.tentative.html": [ + "dddd1f32b2361e5f4c5b19a6cb07e1abe859e908", + [ + null, + {} + ] + ], "width-height-001.html": [ "2deedc3f0b84d4f822387f080bd13ef265f011cf", [ @@ -653143,7 +653466,7 @@ ] ], "payment-request-show-method.https.html": [ - "a03121692b1a812f16b99d2c434debb77524a4dc", + "d3385b5468b8fc6cfd954df4e77c5959f8ceb32f", [ null, { @@ -653170,7 +653493,7 @@ ] ], "show-consume-activation.https.html": [ - "044fca5d40801fcad93fc5137a12fdfc8db4147c", + "6f629489e4af4c433274dd38737a4097b564c280", [ null, { @@ -656255,7 +656578,7 @@ ] ], "pointerevent_pointercancel_touch.html": [ - "9d0314655df54e5bb921b68f85dd744e812b9311", + "687b6a3f32c3de068b795cb29688f057f7d0a8e1", [ null, { @@ -671128,7 +671451,7 @@ ] ], "entries-for-network-errors.sub.https.html": [ - "95849d282621ffc121ae36a3f3543307a4e135db", + "ebc2247babcd4ab94d1fdd826d17d8c968189d79", [ null, {} @@ -674889,7 +675212,7 @@ ] }, "svg-graphics-element.html": [ - "5f54646b6c3d64454ce3354f794aefb97f5202de", + "9b100a0b6420a35e33e130e48f0bfc6abd1c416c", [ null, {} @@ -679861,7 +680184,7 @@ ] ], "resource-timing.sub.https.html": [ - "9808ae5ae1bed06f5303240b772e4ead0d317137", + "e8328f3597ba25e34f02b9dd6cca1ed491cc9bbb", [ null, {} @@ -708874,7 +709197,7 @@ ] ], "per-frame-qp-encoding.https.any.js": [ - "3207fa8356c83ef9566348f9246d0f6570068615", + "81cc6c27d4ff4045fdae6399b549eac2f02f6436", [ "webcodecs/per-frame-qp-encoding.https.any.html?av1", { @@ -715746,7 +716069,7 @@ ] ], "setParameters-active.https.html": [ - "dbe162c610ece70a60a2abab59ad778edbec932f", + "54191059a0628a50eb96f1b631b5ce4e1fabaf23", [ null, { @@ -715936,7 +716259,7 @@ ] ], "script-change-transform.https.html": [ - "9ec82a9484f1096e2e439966b511c6a6d339fc3e", + "1bb0398dc5a869496acf8f7900b3d92187d468f9", [ null, { @@ -715954,16 +716277,47 @@ ] ], "script-metadata-transform.https.html": [ - "c565caba7d4aed1a25c5bb2a4d8aab5c651d398d", + "11c88b469363e3faeff5723e07628f9ba2f1c6b1", [ null, { - "testdriver": true + "testdriver": true, + "timeout": "long" + } + ] + ], + "script-transform-generateKeyFrame-simulcast.https.html": [ + "4174aaf24a130c0d15508a958fecb82c6ce4582b", + [ + null, + { + "testdriver": true, + "timeout": "long" + } + ] + ], + "script-transform-generateKeyFrame.https.html": [ + "348902ea36c463d47e6922eb6166b3b696518db1", + [ + null, + { + "testdriver": true, + "timeout": "long" + } + ] + ], + "script-transform-sendKeyFrameRequest.https.html": [ + "51b797eb68346e928bba18bff94c39f1c9d7a4e4", + [ + null, + { + "testdriver": true, + "timeout": "long" } ] ], "script-transform.https.html": [ - "e02982f4703786265a325d6da77aab484d41a73c", + "491e917e8610c33a75ecea814d87f3d1060ddcd1", [ null, { @@ -729533,7 +729887,7 @@ ] ], "streams-close.https.any.js": [ - "4871ee8e7be0fbba33838b717554dc7eeb23337b", + "30b645a6a9c34a1823886bc8eb9fa5b5c5b95963", [ "webtransport/streams-close.https.any.html", { @@ -760525,7 +760879,7 @@ }, "capture_screenshot": { "capture_screenshot.py": [ - "0ee4c8ed274ce31295d2cbf8f4229e7135ea2b28", + "40497ce6ac7908239ea641b8c75a0a85c34613d7", [ null, {} @@ -760539,7 +760893,7 @@ ] ], "invalid.py": [ - "bb6d054b916df8ab7725f5898876331973d0aadc", + "885baf229d36bb4c600874825c8f389c0dd51d56", [ null, {} @@ -760612,7 +760966,7 @@ }, "dom_content_loaded": { "dom_content_loaded.py": [ - "9723ee4a4edfef0dd5bb51414d32d8cac2b39e82", + "c8e27ab31d1680ab95137895a9d3197683ddcf27", [ null, {} @@ -760667,7 +761021,7 @@ }, "load": { "load.py": [ - "b4b174818cf20f52cb4f1c864ef6a34682f4e03c", + "d15c23e8fdd4afba7e1a7bb09a20f0f5c01da3b5", [ null, {} @@ -760704,7 +761058,7 @@ ] ], "hash.py": [ - "d31c3f9a6ebcdf17e1916ccbc7ca5328861604e7", + "7dc520c4e33b37f12433b6403163f903254a29f7", [ null, {} @@ -760725,7 +761079,7 @@ ] ], "navigate.py": [ - "142457028123c611f2eaf0b7ad45a02aba093f50", + "dedeeb982887dbe1a1a45e12a630f99feb587aa7", [ null, {} @@ -761035,7 +761389,7 @@ "network": { "before_request_sent": { "before_request_sent.py": [ - "d1a9269729f195356e1b24ec090c05a567e4d187", + "04e70bf0a7d8abc625c80649926d2d6ed2839348", [ null, {} @@ -761044,7 +761398,7 @@ }, "combined": { "network_events.py": [ - "f4af23bfd2f58679a8a044df87fe48a5f5e7e5bc", + "9eb79dd42319cabada0840587cdbbf105c7506e9", [ null, {} @@ -761053,7 +761407,7 @@ }, "response_completed": { "response_completed.py": [ - "1043f52cb72a82dcfc9edcd8c1e9998082dd178c", + "fcd5c47d8e56583a2c05430059eb3b087d250e05", [ null, {} @@ -761069,7 +761423,7 @@ }, "response_started": { "response_started.py": [ - "2d6c1c835439298bdefd446758730f822cfa0cac", + "d3a84fd6f9711738a453d205d17f316271b9686c", [ null, {} @@ -761201,7 +761555,7 @@ ] ], "remote_values.py": [ - "88c8c793bec7bd77b7337ec16e5bb966453a5158", + "eda31bb4bee538e748d694abd39eb73fbeaae710", [ null, {} diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/linebox/inline-negative-margin-001.html.ini b/tests/wpt/meta-legacy-layout/css/CSS2/linebox/inline-negative-margin-001.html.ini index a057f038339..5e3a96e5999 100644 --- a/tests/wpt/meta-legacy-layout/css/CSS2/linebox/inline-negative-margin-001.html.ini +++ b/tests/wpt/meta-legacy-layout/css/CSS2/linebox/inline-negative-margin-001.html.ini @@ -8,8 +8,5 @@ [[data-expected-height\] 3] expected: FAIL - [[data-expected-height\] 1] - expected: FAIL - - [[data-expected-height\] 2] + [[data-expected-height\] 4] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/segment-break-transformation-unremovable-4.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/segment-break-transformation-unremovable-4.html.ini deleted file mode 100644 index f0661e4609d..00000000000 --- a/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/segment-break-transformation-unremovable-4.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[segment-break-transformation-unremovable-4.html] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-autospace-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-autospace-computed.html.ini new file mode 100644 index 00000000000..9b0fc900654 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-autospace-computed.html.ini @@ -0,0 +1,15 @@ +[text-autospace-computed.html] + [Property text-autospace value 'normal'] + expected: FAIL + + [Property text-autospace value 'no-autospace'] + expected: FAIL + + [Property text-autospace value 'auto'] + expected: FAIL + + [Property text-autospace value 'ideograph-alpha'] + expected: FAIL + + [Property text-autospace value 'ideograph-numeric'] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-autospace-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-autospace-valid.html.ini new file mode 100644 index 00000000000..77015f212ee --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-autospace-valid.html.ini @@ -0,0 +1,30 @@ +[text-autospace-valid.html] + [e.style['text-autospace'\] = "normal" should set the property value] + expected: FAIL + + [e.style['text-autospace'\] = "no-autospace" should set the property value] + expected: FAIL + + [e.style['text-autospace'\] = "auto" should set the property value] + expected: FAIL + + [e.style['text-autospace'\] = "ideograph-alpha" should set the property value] + expected: FAIL + + [e.style['text-autospace'\] = "ideograph-numeric" should set the property value] + expected: FAIL + + [e.style['text-autospace'\] = "ideograph-alpha ideograph-numeric" should set the property value] + expected: FAIL + + [e.style['text-autospace'\] = "punctuation" should set the property value] + expected: FAIL + + [e.style['text-autospace'\] = "punctuation normal" should set the property value] + expected: FAIL + + [e.style['text-autospace'\] = "punctuation ideograph-alpha" should set the property value] + expected: FAIL + + [e.style['text-autospace'\] = "punctuation ideograph-alpha ideograph-numeric" should set the property value] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/custom-elements/form-associated/ElementInternals-setFormValue-nullish-value.html.ini b/tests/wpt/meta-legacy-layout/custom-elements/form-associated/ElementInternals-setFormValue-nullish-value.html.ini new file mode 100644 index 00000000000..afa9a015603 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/custom-elements/form-associated/ElementInternals-setFormValue-nullish-value.html.ini @@ -0,0 +1,2 @@ +[ElementInternals-setFormValue-nullish-value.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/fetch/api/redirect/redirect-keepalive.any.js.ini b/tests/wpt/meta-legacy-layout/fetch/api/redirect/redirect-keepalive.any.js.ini index 73c79c76452..f61eb5b8e17 100644 --- a/tests/wpt/meta-legacy-layout/fetch/api/redirect/redirect-keepalive.any.js.ini +++ b/tests/wpt/meta-legacy-layout/fetch/api/redirect/redirect-keepalive.any.js.ini @@ -1,4 +1,5 @@ [redirect-keepalive.any.html] + expected: TIMEOUT [[keepalive\][new window\][unload\] same-origin redirect] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini b/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini index f9de5391ad6..571eddcad27 100644 --- a/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini +++ b/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini @@ -146,3 +146,9 @@ [list-style-image sec-fetch-site - HTTPS downgrade-upgrade] expected: FAIL + + [background-image sec-fetch-user - Not sent to non-trustworthy same-origin destination] + expected: TIMEOUT + + [border-image sec-fetch-user - Not sent to non-trustworthy same-origin destination] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/fetch/private-network-access/worker-fetch.tentative.https.window.js.ini b/tests/wpt/meta-legacy-layout/fetch/private-network-access/worker-fetch.tentative.https.window.js.ini new file mode 100644 index 00000000000..eabd42e67c5 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/fetch/private-network-access/worker-fetch.tentative.https.window.js.ini @@ -0,0 +1,27 @@ +[worker-fetch.tentative.https.window.html] + [private to local: failed preflight.] + expected: FAIL + + [private to local: success.] + expected: FAIL + + [public to local: failed preflight.] + expected: FAIL + + [public to local: success.] + expected: FAIL + + [public to private: failed preflight.] + expected: FAIL + + [public to private: success.] + expected: FAIL + + [treat-as-public to local: failed preflight.] + expected: FAIL + + [treat-as-public to private: failed preflight.] + expected: FAIL + + [treat-as-public to private: success.] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini index 4b89cb499f8..8ae58f9f1e2 100644 --- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini +++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini @@ -13,3 +13,9 @@ [0080 00FF 0100 set in href="" targeting a frame and clicked] expected: FAIL + + [D83D DE0D set in href="" targeting a frame and clicked] + expected: FAIL + + [DE0D 0041 set in href="" targeting a frame and clicked] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html.ini deleted file mode 100644 index 49cc2e16746..00000000000 --- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[navigation-unload-same-origin-fragment.html] - [Tests that a fragment navigation in the unload handler will not block the initial navigation] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/form-requestsubmit.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/form-requestsubmit.html.ini index 9c79e11e5d1..012403eab43 100644 --- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/form-requestsubmit.html.ini +++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/form-requestsubmit.html.ini @@ -1,4 +1,3 @@ [form-requestsubmit.html] - expected: TIMEOUT [Replace before load, triggered by formElement.requestSubmit()] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/form-submit-button-click.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/form-submit-button-click.html.ini index 6c777ea167c..e84cccbbd1f 100644 --- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/form-submit-button-click.html.ini +++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/form-submit-button-click.html.ini @@ -1,4 +1,3 @@ [form-submit-button-click.html] - expected: TIMEOUT [Replace before load, triggered by submitButton.click()] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini deleted file mode 100644 index ba0aed26689..00000000000 --- a/tests/wpt/meta-legacy-layout/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[traverse_the_history_1.html] - [Multiple history traversals from the same task] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini index 24c9e5d3926..90eb9ed743b 100644 --- a/tests/wpt/meta-legacy-layout/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini +++ b/tests/wpt/meta-legacy-layout/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini @@ -1,5 +1,4 @@ [cross-origin-objects.html] - expected: TIMEOUT [Basic sanity-checking (cross-origin)] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini deleted file mode 100644 index 4b4820d1729..00000000000 --- a/tests/wpt/meta-legacy-layout/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[creating_browsing_context_test_01.html] - [first argument: absolute url] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini index 2a54f2f8814..5cdcce07c65 100644 --- a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini @@ -1,2 +1,2 @@ [canvas.2d.disconnected.html] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/infrastructure/urls/terminology-0/nontraditional-about-srcdoc.html.ini b/tests/wpt/meta-legacy-layout/html/infrastructure/urls/terminology-0/nontraditional-about-srcdoc.html.ini new file mode 100644 index 00000000000..0b9a51b6924 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/infrastructure/urls/terminology-0/nontraditional-about-srcdoc.html.ini @@ -0,0 +1,6 @@ +[nontraditional-about-srcdoc.html] + [about:srcdoc navigated via a `javascript:` URL is treated like a normal about:srcdoc document] + expected: FAIL + + [about:srcdoc with URL changed by history.replaceState() is treated like a normal about:srcdoc document] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html.ini b/tests/wpt/meta-legacy-layout/html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html.ini index 830aeb8ae48..fdc27d37788 100644 --- a/tests/wpt/meta-legacy-layout/html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html.ini +++ b/tests/wpt/meta-legacy-layout/html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html.ini @@ -1,7 +1,6 @@ [autofocus-dialog.html] - expected: TIMEOUT [ can contain autofocus, without stopping page autofocus content from working] expected: FAIL [-contained autofocus element gets focused when the dialog is shown] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/interaction/focus/the-autofocus-attribute/skip-another-top-level-browsing-context.html.ini b/tests/wpt/meta-legacy-layout/html/interaction/focus/the-autofocus-attribute/skip-another-top-level-browsing-context.html.ini deleted file mode 100644 index 1404529e360..00000000000 --- a/tests/wpt/meta-legacy-layout/html/interaction/focus/the-autofocus-attribute/skip-another-top-level-browsing-context.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[skip-another-top-level-browsing-context.html] - expected: TIMEOUT - [Autofocus elements queued in another top-level browsing context's documents should be skipped.] - expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/media_fragment_seek.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/media_fragment_seek.html.ini new file mode 100644 index 00000000000..09c049e4b58 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/media_fragment_seek.html.ini @@ -0,0 +1,3 @@ +[media_fragment_seek.html] + [Video should seek to time specified in media fragment syntax] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini index 25d9964f057..2d3fbf0f308 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini @@ -1,4 +1,5 @@ [iframe_sandbox_popups_escaping-1.html] type: testharness + expected: TIMEOUT [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini index eacbe5794ea..fe55ddae3f1 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini @@ -1,5 +1,4 @@ [iframe_sandbox_popups_escaping-3.html] type: testharness - expected: TIMEOUT [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini index 6f7461b9472..f9138fb999a 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini @@ -1,4 +1,5 @@ [iframe_sandbox_popups_nonescaping-1.html] type: testharness + expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/text-plain.window.js.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/text-plain.window.js.ini index b0956237833..7c3591f1bc1 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/text-plain.window.js.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/text-plain.window.js.ini @@ -164,9 +164,6 @@ [text/plain: backslash in name (formdata event)] expected: FAIL - [text/plain: Basic test (formdata event)] - expected: FAIL - [text/plain: 0x00 in name (formdata event)] expected: FAIL @@ -181,3 +178,6 @@ [text/plain: Basic File test (formdata event)] expected: FAIL + + [text/plain: 0x00 in name (normal form)] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/historical.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/historical.html.ini deleted file mode 100644 index 5d8289307cc..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/forms/historical.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[historical.html] - [ should not be supported] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini index dbe1def99e3..6dcac6f75ac 100644 --- a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini +++ b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini @@ -1,4 +1,5 @@ [promise-job-entry-different-function-realm.html] + expected: TIMEOUT [Fulfillment handler on fulfilled promise] expected: FAIL @@ -12,4 +13,4 @@ expected: FAIL [Fulfillment handler on pending-then-fulfilled promise] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini index 31bfd644df0..8bcf3a07de4 100644 --- a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini +++ b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini @@ -1,9 +1,10 @@ [promise-job-entry.html] + expected: TIMEOUT [Fulfillment handler on fulfilled promise] expected: FAIL [Rejection handler on pending-then-rejected promise] - expected: FAIL + expected: TIMEOUT [Sanity check: this all works as expected with no promises involved] expected: FAIL @@ -15,4 +16,4 @@ expected: FAIL [Fulfillment handler on pending-then-fulfilled promise] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini index 4a48dd15a9d..1d71471b73c 100644 --- a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini +++ b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini @@ -1,6 +1,7 @@ [promise-rejection-events.html] + expected: TIMEOUT [delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire] - expected: FAIL + expected: TIMEOUT [unhandledrejection: from createImageBitmap which is UA triggered] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/resource-timing/content-type-parsing.html.ini b/tests/wpt/meta-legacy-layout/resource-timing/content-type-parsing.html.ini index 71ca4ed5411..49b17a921b5 100644 --- a/tests/wpt/meta-legacy-layout/resource-timing/content-type-parsing.html.ini +++ b/tests/wpt/meta-legacy-layout/resource-timing/content-type-parsing.html.ini @@ -94,10 +94,10 @@ expected: FAIL [mime-type 16 : text/html;charset=\x0bgbk] - expected: FAIL + expected: TIMEOUT [mime-type 17 : text/html;charset=\x0cgbk] - expected: TIMEOUT + expected: NOTRUN [mime-type 18 : text/html;\x0bcharset=gbk] expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/resource-timing/entries-for-network-errors.sub.https.html.ini b/tests/wpt/meta-legacy-layout/resource-timing/entries-for-network-errors.sub.https.html.ini index 2ff85ee646a..e9f68db1ff1 100644 --- a/tests/wpt/meta-legacy-layout/resource-timing/entries-for-network-errors.sub.https.html.ini +++ b/tests/wpt/meta-legacy-layout/resource-timing/entries-for-network-errors.sub.https.html.ini @@ -17,3 +17,6 @@ [A ResourceTiming entry should be created for network error of type too many redirects] expected: NOTRUN + + [A ResourceTiming entry should be created for network error of type network error for ORB-blocked response] + expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini b/tests/wpt/meta-legacy-layout/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini index 39d039a0132..04c2032c723 100644 --- a/tests/wpt/meta-legacy-layout/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini +++ b/tests/wpt/meta-legacy-layout/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini @@ -1,5 +1,5 @@ [cross-partition.https.tentative.html] - expected: CRASH + expected: TIMEOUT [BroadcastChannel messages aren't received from a cross-partition iframe] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/webmessaging/with-ports/017.html.ini b/tests/wpt/meta-legacy-layout/webmessaging/with-ports/017.html.ini deleted file mode 100644 index c7946fc91b4..00000000000 --- a/tests/wpt/meta-legacy-layout/webmessaging/with-ports/017.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[017.html] - expected: TIMEOUT - [origin of the script that invoked the method, about:blank] - expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/webmessaging/without-ports/017.html.ini b/tests/wpt/meta-legacy-layout/webmessaging/without-ports/017.html.ini deleted file mode 100644 index c7946fc91b4..00000000000 --- a/tests/wpt/meta-legacy-layout/webmessaging/without-ports/017.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[017.html] - expected: TIMEOUT - [origin of the script that invoked the method, about:blank] - expected: TIMEOUT diff --git a/tests/wpt/meta/MANIFEST.json b/tests/wpt/meta/MANIFEST.json index a9ec86244a9..affca8b52e0 100644 --- a/tests/wpt/meta/MANIFEST.json +++ b/tests/wpt/meta/MANIFEST.json @@ -6736,6 +6736,17 @@ ] }, "streams": { + "piping": { + "crashtests": { + "cross-piping.html": [ + "712d5ecebef8ffd1377c15cc6debd175874b0ea4", + [ + null, + {} + ] + ] + } + }, "readable-streams": { "crashtests": { "strategy-worker-terminate.html": [ @@ -22077,6 +22088,13 @@ {} ] ], + "requireInteraction-manual.https.html": [ + "23e9e4bbb322ceab495d2374575b6b813dbe1925", + [ + null, + {} + ] + ], "shownotification-resolve-manual.https.html": [ "a73b11d100afe9c3c8b80199b8a43147878a124a", [ @@ -30761,6 +30779,58 @@ }, "svg": { "layout": { + "svg-use-symbol-animateMotion-print.html": [ + "aa658117b66be49aa3a9830f2d6d710327383025", + [ + null, + [ + [ + "/svg/layout/svg-use-symbol-animateMotion-print-ref.html", + "==" + ] + ], + {} + ] + ], + "svg-use-symbol-animateTransform-print.html": [ + "f979d8317cead2da988d35c20c476a4176ba5f90", + [ + null, + [ + [ + "/svg/layout/svg-use-symbol-animateTransform-print-ref.html", + "==" + ] + ], + {} + ] + ], + "svg-use-symbol-opacity-print.html": [ + "339939b0c3de7114a95d0a0721e962733fb851f1", + [ + null, + [ + [ + "/svg/layout/svg-use-symbol-opacity-print-ref.html", + "==" + ] + ], + {} + ] + ], + "svg-use-symbol-path-print.html": [ + "c671a8413af2401727e7adfd79ad1157ad49f7a3", + [ + null, + [ + [ + "/svg/layout/svg-use-symbol-path-print-ref.html", + "==" + ] + ], + {} + ] + ], "svg-use-symbol-width-print.html": [ "ae56d68eee25648dafa194fedac07835048cecac", [ @@ -150091,6 +150161,19 @@ {} ] ], + "border-color-currentcolor.html": [ + "525a89e312dfaa76b165b7583c980933e7e73163", + [ + null, + [ + [ + "/css/css-color/border-color-currentcolor-ref.html", + "==" + ] + ], + {} + ] + ], "border-left-color.xht": [ "3214f2d8143cda12ecdcf8df00016e678cf2de52", [ @@ -205991,7 +206074,7 @@ ] ], "mask-objectboundingbox-content-clip-transform.svg": [ - "e3ca1fbdba7da3de6c5465f9af9a9e0666debfe3", + "397f56d19023f850b15dfe41797ad74dd24a17cc", [ null, [ @@ -206011,7 +206094,7 @@ ], [ 0, - 200 + 268 ] ] ] @@ -206020,7 +206103,7 @@ ] ], "mask-objectboundingbox-content-clip.svg": [ - "47cf9006974d7edc11eb142485b53db5d486b94e", + "c87fedec4f88eb0df0e3ef72d1095c8626970328", [ null, [ @@ -206040,7 +206123,7 @@ ], [ 0, - 200 + 376 ] ] ] @@ -206049,7 +206132,7 @@ ] ], "mask-userspaceonuse-content-clip-transform.svg": [ - "03310225e209da75aafb57f081a610d6c7f18e01", + "624084a07bcd0a177c94bc7e1c1114df1771a808", [ null, [ @@ -206069,7 +206152,7 @@ ], [ 0, - 200 + 268 ] ] ] @@ -206078,7 +206161,7 @@ ] ], "mask-userspaceonuse-content-clip.svg": [ - "09eb2dfcd01be0775ba6f352b9cff7ce8cd2640f", + "f1bfbdda58320b1007d937ad74c6c85d2c721174", [ null, [ @@ -206098,7 +206181,7 @@ ], [ 0, - 200 + 376 ] ] ] @@ -224035,6 +224118,58 @@ {} ] ], + "scrollbar-color-scheme-dynamic-1.html": [ + "71fd97f27419316f5d923dce5673a3f0e0d87633", + [ + null, + [ + [ + "/css/css-scrollbars/scrollbar-color-scheme-dynamic-1-ref.html", + "==" + ] + ], + {} + ] + ], + "scrollbar-color-scheme-dynamic-2.html": [ + "111219c7d167243b6de1491ae7c6882af7d481c1", + [ + null, + [ + [ + "/css/css-scrollbars/scrollbar-color-scheme-dynamic-2-ref.html", + "==" + ] + ], + {} + ] + ], + "scrollbar-color-scheme-dynamic-3.html": [ + "47105f0c6d92dc28dd3ed52743bd220973d86691", + [ + null, + [ + [ + "/css/css-scrollbars/scrollbar-color-scheme-dynamic-3-ref.html", + "==" + ] + ], + {} + ] + ], + "scrollbar-color-scheme-dynamic-4.html": [ + "9655a0ebb2429585bb482a2872d310b23ea55c46", + [ + null, + [ + [ + "/css/css-scrollbars/scrollbar-color-scheme-dynamic-4-ref.html", + "==" + ] + ], + {} + ] + ], "scrollbar-width-paint-001.html": [ "3621a65b39ed7d9e3b0afea4e1770427b31534de", [ @@ -259390,7 +259525,7 @@ ] ], "svg-skewxy-001.html": [ - "23467a9936ef96029cbaf93529d763e12becdaca", + "0eee25c5dfe36d919a1a116de15ae2780f7428c4", [ null, [ @@ -322600,6 +322735,19 @@ {} ] ], + "empty-msqrt.html": [ + "f9fb65ba4b13b732572544599decc96e39f838da", + [ + null, + [ + [ + "/mathml/presentation-markup/radicals/empty-msqrt-ref.html", + "==" + ] + ], + {} + ] + ], "radical-rendering-from-in-flow.html": [ "7a5de3811b1e45b85f8805ae4dc01225649ae7a9", [ @@ -332174,7 +332322,7 @@ ] }, "web-identity": [ - "2095182bd040631d1ecaaa70d456d67dee3aee15", + "6f1260dbc373c19505e5d6c9a7328d63ef4eef2f", [] ] }, @@ -332357,7 +332505,7 @@ [] ], "support-promises.js": [ - "9128bfe151ab9cda59ff6e3d4487024b0b7cd0cb", + "1a5b8270842cd80234b3f7028d8683620904ec71", [] ], "support.js": [ @@ -357070,11 +357218,11 @@ ], "fedcm": { "accounts.py": [ - "11c1c32b61af839917e54cc86c8af294dd86c3cf", + "1ec7f7dc1242449d7bc38a52fa2ac906a9d9a27d", [] ], "client_metadata.py": [ - "bfc8027412df0a941468df4a7368f754de0ab13e", + "61d8aaf2367fc6dfaf1da062ee7b6837d0477818", [] ], "client_metadata.py.headers": [ @@ -357098,7 +357246,7 @@ [] ], "manifest.py": [ - "6105db007b0948a150d2ba7098ba97e30d333a15", + "8a8fff74bc955c965e8874e9a84a4d8378c3e579", [] ], "manifest_redirect_accounts.json": [ @@ -357126,19 +357274,19 @@ [] ], "single_account.py": [ - "b388ef55a4b11760f388b4b3d468cf7cc52a3c25", + "5f05dc4be50d8c98b9b8d48600f316200ef954a5", [] ], "token.py": [ - "cd73394bc4f83efd3f78705b6ba2a51e53625bf7", + "54150325524728ab3c86bea5731d2a0f8b708ddf", [] ], "token_with_account_id.py": [ - "8bdfec8f6d9a9dabbe34a78d73afd404afdf9bbb", + "4b8ae9a5651105d53b7e36ac242055c6edc52848", [] ], "two_accounts.py": [ - "97ee92f676042ad393c872f29e4a4f7c3c283039", + "c355d21f1f2062516edd383a6ba953d4dc408eb5", [] ], "userinfo-iframe.html": [ @@ -378616,6 +378764,10 @@ "ddfa9100cbef6094375df8b40eeb9673e690d4f7", [] ], + "border-color-currentcolor-ref.html": [ + "6efc0c414128f838293a465dbfb10bc1ef854e1f", + [] + ], "border-color-ref.xht": [ "28f67840548fbd1a3c2c97dfccbf97575f7e9728", [] @@ -399124,6 +399276,22 @@ "890179a21c68bc7051c1db252fb7550468bb952e", [] ], + "scrollbar-color-scheme-dynamic-1-ref.html": [ + "ec54bc08a721f2b6d4eff3a6422fdc816a4cbeae", + [] + ], + "scrollbar-color-scheme-dynamic-2-ref.html": [ + "906fb11cd56898c60deb841236346ea18e0dec3a", + [] + ], + "scrollbar-color-scheme-dynamic-3-ref.html": [ + "e9e842caea71c9481ac721db5821f9b849afed2b", + [] + ], + "scrollbar-color-scheme-dynamic-4-ref.html": [ + "045619823547041d72b8b6349ac67945c7540bb6", + [] + ], "scrollbar-width-paint-001-ref.html": [ "42295b1fb9d7d7ef8622c729265e344117c65cc2", [] @@ -430806,6 +430974,14 @@ ] } } + }, + "terminology-0": { + "resources": { + "echo-referrer-text.py": [ + "8a48d3346a6ad71e9fee2b103abfd97148e3bb43", + [] + ] + } } } }, @@ -437499,6 +437675,10 @@ "024de84a5bbac05f0d878c994bb45d12fa41646a", [] ], + "computer.jpg": [ + "d58c896b2411b44d5089c72defb0d222291f1f3b", + [] + ], "fail.gif": [ "c4addcf0090ce049726cdf1d3cf96283be78db49", [] @@ -439961,7 +440141,7 @@ ] }, "lint.ignore": [ - "457c93c2149bad23ff39cf176e145419e3c6dabb", + "255a50e0d1ce5cafa5905341d097a6535c0135fd", [] ], "loading": { @@ -440625,6 +440805,10 @@ "632d6739db9fdea3b68c850db0aadbc64e5a19c1", [] ], + "empty-msqrt-ref.html": [ + "8ff5cbe9edd632cfd5fd6bb1f71f2df4209908df", + [] + ], "radical-rendering-from-in-flow-ref.html": [ "e1b8c3d161079da854a3e8ef4a560bf7e18cc2c4", [] @@ -443622,7 +443806,7 @@ [] ], "pointerevent_support.js": [ - "56accf8561084c07170453ce8f91112d0ff5a5d9", + "19f0c2e6175e6dce3edfd8290447bcc988839833", [] ], "pointerlock": { @@ -446111,7 +446295,7 @@ [] ], "entry-invariants.js": [ - "bbc913b722903085963a133dab0a8a96f77b2506", + "78d43d1b01e45164320cee53eb2e410822f4ab3f", [] ], "eventsource.py": [ @@ -449323,6 +449507,10 @@ "ebee4ff8e8da785cf4b4a339c6514b5fe9b98f9b", [] ], + "missing.asis": [ + "4846fe01d61a64c6bd73bf5c23fbd4a1b970de3d", + [] + ], "module-worker.js": [ "385fe7101503cb4c7ca77e95e023459b29267741", [] @@ -449708,7 +449896,7 @@ [] ], "resource-timing-iframe.sub.html": [ - "384c29b536bf1db829532b9485d41020f85bed95", + "ec4c726331d66ca298726e45fc3573e86e227e22", [] ], "resource-timing-worker.js": [ @@ -451890,6 +452078,22 @@ "acfc7be517b3cc6783a372de4c67cc0d7a8b976e", [] ], + "svg-use-symbol-animateMotion-print-ref.html": [ + "07e162c8a5182d7550640801d05c3ccc36718adc", + [] + ], + "svg-use-symbol-animateTransform-print-ref.html": [ + "07e162c8a5182d7550640801d05c3ccc36718adc", + [] + ], + "svg-use-symbol-opacity-print-ref.html": [ + "d6b2f6bd9bb301ae7dbb41be8bdf5b244e31676d", + [] + ], + "svg-use-symbol-path-print-ref.html": [ + "07e162c8a5182d7550640801d05c3ccc36718adc", + [] + ], "svg-use-symbol-width-print-ref.html": [ "6c94e34c04546eb4488d7927c93c46838ab1c817", [] @@ -452873,7 +453077,7 @@ [] ], "requirements_build.txt": [ - "a976e5d639866a58f46f2eb5ff3a619289b277ef", + "2b7e1808552315d973a999293d1294f8ec4fd33d", [] ], "requirements_macos_color_profile.txt": [ @@ -452881,7 +453085,7 @@ [] ], "requirements_tc.txt": [ - "bd979ed97c282c46c484000deb3c1fceea701ab3", + "9c3a0d639afa52f310915bb2deb570027a5cd59b", [] ], "run_tc.py": [ @@ -453013,7 +453217,7 @@ [] ], "requirements.txt": [ - "88b70f37a0dd43764086632d468d351350b28973", + "332fdbdeb1b12ee21595aeb21f1dade3f459115b", [] ], "retry.py": [ @@ -453313,7 +453517,7 @@ [] ], "jsonlib.py": [ - "9c39d5b32ee19ecb540f92222fdc8be9d0676226", + "0f70cf1e171d8500d424ab3e153a2596493fcc1e", [] ], "log.py": [ @@ -453329,7 +453533,7 @@ [] ], "sourcefile.py": [ - "cf0bbf334b7f24597304dbb80dfb1d81ec609f31", + "832968e63234096700625bd4d93a3db17123c1c4", [] ], "spec.py": [ @@ -453358,7 +453562,7 @@ [] ], "test_sourcefile.py": [ - "d3411084f3ce681a456e8882a5c42cd5c57c84b2", + "4b98e718d0328c56912ab0edbea791ac51d7610a", [] ], "test_utils.py": [ @@ -453396,7 +453600,7 @@ [] ], "requirements_mypy.txt": [ - "26175e68b41781652731ecb074e2ac29188034cd", + "c31e7f5bce315c95e9f865447aa6760e8d27adf3", [] ], "requirements_pytest.txt": [ @@ -453404,7 +453608,7 @@ [] ], "requirements_tests.txt": [ - "1376520bdb49ca566db18b88b13a676f55bfa6f4", + "96e00c745dccdfe16d7a081a741517e3731587b9", [] ], "runner": { @@ -461342,7 +461546,7 @@ [] ], "browsing_context.py": [ - "1de7cc0931c7a365ffe134666899d5628beabecd", + "b256bd1ae6736aee98bccc601adbfc3a5d12ba28", [] ], "input.py": [ @@ -461623,7 +461827,7 @@ ] }, "requirements.txt": [ - "64a475dd4006333475f5fe75bf39d2f6eb3f3458", + "8e47b2f229a2280bfff37d4b5c7b67dc433c6a8e", [] ], "requirements_chromium.txt": [ @@ -463886,7 +464090,7 @@ "animation-model": { "animation-types": { "property-list.js": [ - "315687a4e1b26742239810466132326a3303842d", + "c4ef7937ba3d71906db089855b81e1a4f9239625", [] ], "property-types.js": [ @@ -465202,7 +465406,7 @@ }, "navigate": { "__init__.py": [ - "9b7d28f6dacd441177e2810370709fdfc303f6f0", + "c2bf7558f4fe75413f81057c8ab96f31d3fc537f", [] ] }, @@ -465297,7 +465501,7 @@ }, "network": { "__init__.py": [ - "92e88d4e2361e5fa45541966e460b0ad26e16886", + "19a4a69b4c50c8cc613d118ca83edf790612b344", [] ], "before_request_sent": { @@ -465361,7 +465565,7 @@ }, "script": { "__init__.py": [ - "caa1fe514aaf826b468ca570df3c62a58160f395", + "901b412458b06acbbb462ce9e1586f28f036068f", [] ], "add_preload_script": { @@ -466590,7 +466794,7 @@ ] }, "routines.js": [ - "4db7f39621cc891288fe7fb5b107eb9dbf21fc2a", + "0d3e2b9b286b5878204371891a6ec5b7ff5a867c", [] ], "script-audio-transform-worker.js": [ @@ -466602,11 +466806,19 @@ [] ], "script-metadata-transform-worker.js": [ - "03ba1f4ee6e0976a68d607de9824d2fd23daacd0", + "40f7e547d79ca067848b6e51f504cef50a3dcf79", + [] + ], + "script-transform-generateKeyFrame.js": [ + "5e68ee1fb9be8133501ee3f5338f4335bd4901de", + [] + ], + "script-transform-sendKeyFrameRequest.js": [ + "361d7ce0235794b8a39201b5869a38f6720c80ca", [] ], "script-transform-worker.js": [ - "5ea99cd2bf732cf0582a2aef1199a149738269ec", + "88efb9c6a38b50f8c381e957c77043f28e30f5f9", [] ], "script-write-twice-transform-worker.js": [ @@ -475457,7 +475669,7 @@ ] ], "nested-cloning-large.html": [ - "8b3cbc57266527548c5797ab36327a2d5e05d54a", + "0cd8cb48ceec704ef70ea70dae8da76d8928ef12", [ null, { @@ -510480,7 +510692,7 @@ ] ], "color-invalid-rgb.html": [ - "81facf91a36f84af9fdd818e4ebb26dd0b0ddd60", + "90dd082f2ae9a2024e411669bbbe68a82868fa2f", [ null, {} @@ -523469,7 +523681,7 @@ ] ], "register-property-syntax-parsing.html": [ - "5bda1c4c5b23ecc95ac98ef939a9bbba62cf196d", + "664ccabd33c3a1ac62b5dbad83b8ed8640053bc8", [ null, {} @@ -526758,6 +526970,34 @@ {} ] ], + "auto-015.html": [ + "05252dfddacee2d29451043c45f73d65667275a7", + [ + null, + {} + ] + ], + "auto-016.html": [ + "5846101614c20b67f7d863600f0ba40a3f6943e5", + [ + null, + {} + ] + ], + "auto-017.html": [ + "669f9505d706e293cd7dcafb0b65e1ecfadeeafd", + [ + null, + {} + ] + ], + "auto-018.html": [ + "b5121c67f766906b6e808798cdde142892bba637", + [ + null, + {} + ] + ], "contain-intrinsic-size-009.html": [ "0aa62eaaeff5d6cc2fd499b1bf6907e11cbe0e37", [ @@ -526816,7 +527056,7 @@ ], "parsing": { "contain-intrinsic-size-computed.html": [ - "1de987c0a10257b509d64c629e17f253752b7af7", + "305fe621cd595c6b3cf91432520ea3d44a1f017a", [ null, {} @@ -529997,6 +530237,27 @@ {} ] ], + "text-autospace-computed.html": [ + "9656f70956e01304629368fd488d83310428b5ef", + [ + null, + {} + ] + ], + "text-autospace-invalid.html": [ + "7be73ba76eec5c6196017b7fa02c949a359aadaf", + [ + null, + {} + ] + ], + "text-autospace-valid.html": [ + "c40c0e0a4ce7c2cf2a339db926ba5d368fac4919", + [ + null, + {} + ] + ], "text-group-align-invalid.html": [ "0c42067bf623a7657998149dbd34de37de5e2876", [ @@ -542107,6 +542368,13 @@ {} ] ], + "ElementInternals-setFormValue-nullish-value.html": [ + "28c12c4600b328937d5ab50b652433887cde832e", + [ + null, + {} + ] + ], "ElementInternals-setFormValue.html": [ "8a13973f085af707ae15b8369032fd1fcf1c39e9", [ @@ -565526,6 +565794,24 @@ } ] ], + "automatic-beacon-two-events-clear.https.html": [ + "ae246aaac0ad4b269cf0e86d761d4a34abd14acc", + [ + null, + { + "testdriver": true + } + ] + ], + "automatic-beacon-two-events-persist.https.html": [ + "f944d7141d7ee22596c1a98d6895d913cf3c0729", + [ + null, + { + "testdriver": true + } + ] + ], "background-fetch.https.html": [ "7036f2bb5f3bb5e42b5af1b5f970141c0884b5ef", [ @@ -579580,6 +579866,13 @@ {} ] ], + "focus-centers-element.html": [ + "49b9d52b8511bf92797ae36923d09f76170e3112", + [ + null, + {} + ] + ], "focus-event-after-focusing-iframes.html": [ "f2aa2233e560eb6e73b20fe753386ef74ac282e7", [ @@ -616761,6 +617054,13 @@ null, {} ] + ], + "nontraditional-about-srcdoc.html": [ + "bdb33842a7da62011419650f5093396d509805f7", + [ + null, + {} + ] ] } } @@ -625922,6 +626222,15 @@ {} ] ], + "number-constraint-validation.html": [ + "959726bb50d9ddf75fc56123746e1d8e21e7df71", + [ + null, + { + "testdriver": true + } + ] + ], "number-disabled.html": [ "11cb82fdda60d69f8b1dd7709ea99210238123f8", [ @@ -627767,7 +628076,7 @@ ] ], "popover-attribute-basic.html": [ - "32d3deb3848c22ee48403e40c17038f1cc8e2f59", + "13108949cb3c5e97f79245578e4af0871dfbf738", [ null, { @@ -629441,7 +629750,7 @@ {} ] ], - "non-external-no-import.tentative.html": [ + "non-external-no-import.html": [ "50836e0d7beed9f643fba2e2f4db6306cf8a7204", [ null, @@ -641323,6 +641632,13 @@ {} ] ], + "progressively-loaded-image.html": [ + "25475e3ab9574b38e7b63cb238060fc762e8c971", + [ + null, + {} + ] + ], "redirects-tao-star.html": [ "5607ed792e8640da86ee554a486a1b749861fdb3", [ @@ -642907,7 +643223,7 @@ ] ], "loaf-script-block.html": [ - "866eea09e0907622ad62c53c8b5f020566ba559f", + "5cd82c2c1320ac8baf4cb95f76777a543fa2d685", [ null, { @@ -642925,7 +643241,7 @@ ] ], "loaf-source-location.html": [ - "ffda00020717cf87684ba0a8331100778592f619", + "1065564206fc151e9690aca9bf512f7d48016099", [ null, { @@ -644207,6 +644523,13 @@ {} ] ], + "size-containment-001.tentative.html": [ + "dddd1f32b2361e5f4c5b19a6cb07e1abe859e908", + [ + null, + {} + ] + ], "width-height-001.html": [ "2deedc3f0b84d4f822387f080bd13ef265f011cf", [ @@ -653147,7 +653470,7 @@ ] ], "payment-request-show-method.https.html": [ - "a03121692b1a812f16b99d2c434debb77524a4dc", + "d3385b5468b8fc6cfd954df4e77c5959f8ceb32f", [ null, { @@ -653174,7 +653497,7 @@ ] ], "show-consume-activation.https.html": [ - "044fca5d40801fcad93fc5137a12fdfc8db4147c", + "6f629489e4af4c433274dd38737a4097b564c280", [ null, { @@ -656259,7 +656582,7 @@ ] ], "pointerevent_pointercancel_touch.html": [ - "9d0314655df54e5bb921b68f85dd744e812b9311", + "687b6a3f32c3de068b795cb29688f057f7d0a8e1", [ null, { @@ -671132,7 +671455,7 @@ ] ], "entries-for-network-errors.sub.https.html": [ - "95849d282621ffc121ae36a3f3543307a4e135db", + "ebc2247babcd4ab94d1fdd826d17d8c968189d79", [ null, {} @@ -674893,7 +675216,7 @@ ] }, "svg-graphics-element.html": [ - "5f54646b6c3d64454ce3354f794aefb97f5202de", + "9b100a0b6420a35e33e130e48f0bfc6abd1c416c", [ null, {} @@ -679865,7 +680188,7 @@ ] ], "resource-timing.sub.https.html": [ - "9808ae5ae1bed06f5303240b772e4ead0d317137", + "e8328f3597ba25e34f02b9dd6cca1ed491cc9bbb", [ null, {} @@ -708878,7 +709201,7 @@ ] ], "per-frame-qp-encoding.https.any.js": [ - "3207fa8356c83ef9566348f9246d0f6570068615", + "81cc6c27d4ff4045fdae6399b549eac2f02f6436", [ "webcodecs/per-frame-qp-encoding.https.any.html?av1", { @@ -715750,7 +716073,7 @@ ] ], "setParameters-active.https.html": [ - "dbe162c610ece70a60a2abab59ad778edbec932f", + "54191059a0628a50eb96f1b631b5ce4e1fabaf23", [ null, { @@ -715940,7 +716263,7 @@ ] ], "script-change-transform.https.html": [ - "9ec82a9484f1096e2e439966b511c6a6d339fc3e", + "1bb0398dc5a869496acf8f7900b3d92187d468f9", [ null, { @@ -715958,16 +716281,47 @@ ] ], "script-metadata-transform.https.html": [ - "c565caba7d4aed1a25c5bb2a4d8aab5c651d398d", + "11c88b469363e3faeff5723e07628f9ba2f1c6b1", [ null, { - "testdriver": true + "testdriver": true, + "timeout": "long" + } + ] + ], + "script-transform-generateKeyFrame-simulcast.https.html": [ + "4174aaf24a130c0d15508a958fecb82c6ce4582b", + [ + null, + { + "testdriver": true, + "timeout": "long" + } + ] + ], + "script-transform-generateKeyFrame.https.html": [ + "348902ea36c463d47e6922eb6166b3b696518db1", + [ + null, + { + "testdriver": true, + "timeout": "long" + } + ] + ], + "script-transform-sendKeyFrameRequest.https.html": [ + "51b797eb68346e928bba18bff94c39f1c9d7a4e4", + [ + null, + { + "testdriver": true, + "timeout": "long" } ] ], "script-transform.https.html": [ - "e02982f4703786265a325d6da77aab484d41a73c", + "491e917e8610c33a75ecea814d87f3d1060ddcd1", [ null, { @@ -729537,7 +729891,7 @@ ] ], "streams-close.https.any.js": [ - "4871ee8e7be0fbba33838b717554dc7eeb23337b", + "30b645a6a9c34a1823886bc8eb9fa5b5c5b95963", [ "webtransport/streams-close.https.any.html", { @@ -760529,7 +760883,7 @@ }, "capture_screenshot": { "capture_screenshot.py": [ - "0ee4c8ed274ce31295d2cbf8f4229e7135ea2b28", + "40497ce6ac7908239ea641b8c75a0a85c34613d7", [ null, {} @@ -760543,7 +760897,7 @@ ] ], "invalid.py": [ - "bb6d054b916df8ab7725f5898876331973d0aadc", + "885baf229d36bb4c600874825c8f389c0dd51d56", [ null, {} @@ -760616,7 +760970,7 @@ }, "dom_content_loaded": { "dom_content_loaded.py": [ - "9723ee4a4edfef0dd5bb51414d32d8cac2b39e82", + "c8e27ab31d1680ab95137895a9d3197683ddcf27", [ null, {} @@ -760671,7 +761025,7 @@ }, "load": { "load.py": [ - "b4b174818cf20f52cb4f1c864ef6a34682f4e03c", + "d15c23e8fdd4afba7e1a7bb09a20f0f5c01da3b5", [ null, {} @@ -760708,7 +761062,7 @@ ] ], "hash.py": [ - "d31c3f9a6ebcdf17e1916ccbc7ca5328861604e7", + "7dc520c4e33b37f12433b6403163f903254a29f7", [ null, {} @@ -760729,7 +761083,7 @@ ] ], "navigate.py": [ - "142457028123c611f2eaf0b7ad45a02aba093f50", + "dedeeb982887dbe1a1a45e12a630f99feb587aa7", [ null, {} @@ -761039,7 +761393,7 @@ "network": { "before_request_sent": { "before_request_sent.py": [ - "d1a9269729f195356e1b24ec090c05a567e4d187", + "04e70bf0a7d8abc625c80649926d2d6ed2839348", [ null, {} @@ -761048,7 +761402,7 @@ }, "combined": { "network_events.py": [ - "f4af23bfd2f58679a8a044df87fe48a5f5e7e5bc", + "9eb79dd42319cabada0840587cdbbf105c7506e9", [ null, {} @@ -761057,7 +761411,7 @@ }, "response_completed": { "response_completed.py": [ - "1043f52cb72a82dcfc9edcd8c1e9998082dd178c", + "fcd5c47d8e56583a2c05430059eb3b087d250e05", [ null, {} @@ -761073,7 +761427,7 @@ }, "response_started": { "response_started.py": [ - "2d6c1c835439298bdefd446758730f822cfa0cac", + "d3a84fd6f9711738a453d205d17f316271b9686c", [ null, {} @@ -761205,7 +761559,7 @@ ] ], "remote_values.py": [ - "88c8c793bec7bd77b7337ec16e5bb966453a5158", + "eda31bb4bee538e748d694abd39eb73fbeaae710", [ null, {} diff --git a/tests/wpt/meta-legacy-layout/css/cssom-view/scroll-behavior-smooth-navigation.html.ini b/tests/wpt/meta/css/cssom-view/scroll-behavior-smooth-navigation.html.ini similarity index 60% rename from tests/wpt/meta-legacy-layout/css/cssom-view/scroll-behavior-smooth-navigation.html.ini rename to tests/wpt/meta/css/cssom-view/scroll-behavior-smooth-navigation.html.ini index 977ef8f774c..a3e30250229 100644 --- a/tests/wpt/meta-legacy-layout/css/cssom-view/scroll-behavior-smooth-navigation.html.ini +++ b/tests/wpt/meta/css/cssom-view/scroll-behavior-smooth-navigation.html.ini @@ -1,3 +1,6 @@ [scroll-behavior-smooth-navigation.html] [Instant scrolling while doing history navigation.] expected: FAIL + + [Smooth scrolling while doing history navigation.] + expected: FAIL diff --git a/tests/wpt/tests/.well-known/web-identity b/tests/wpt/tests/.well-known/web-identity index 2095182bd04..6f1260dbc37 100644 --- a/tests/wpt/tests/.well-known/web-identity +++ b/tests/wpt/tests/.well-known/web-identity @@ -25,6 +25,10 @@ def main(request, response): return (533, [], "Should not have Referer") if request.headers.get(b"Origin"): return (534, [], "Should not have Origin") + if request.headers.get(b"Sec-Fetch-Mode") != b"no-cors": + return (535, [], "Wrong Sec-Fetch-Mode header") + if request.headers.get(b"Sec-Fetch-Site") != b"cross-site": + return (536, [], "Wrong Sec-Fetch-Site header") response.headers.set(b"Content-Type", b"application/json") diff --git a/tests/wpt/tests/IndexedDB/nested-cloning-large.html b/tests/wpt/tests/IndexedDB/nested-cloning-large.html index 8b3cbc57266..0cd8cb48cee 100644 --- a/tests/wpt/tests/IndexedDB/nested-cloning-large.html +++ b/tests/wpt/tests/IndexedDB/nested-cloning-large.html @@ -12,6 +12,9 @@ cloningTest('large typed array', [ { type: 'buffer', size: wrapThreshold, seed: 1 }, + // This test uses non-random data to test that compression doesn't + // break functionality. + { type: 'buffer', size: wrapThreshold, seed: 0 }, ]) cloningTestWithKeyGenerator('blob with large typed array', [ diff --git a/tests/wpt/tests/IndexedDB/resources/support-promises.js b/tests/wpt/tests/IndexedDB/resources/support-promises.js index 9128bfe151a..1a5b8270842 100644 --- a/tests/wpt/tests/IndexedDB/resources/support-promises.js +++ b/tests/wpt/tests/IndexedDB/resources/support-promises.js @@ -296,12 +296,17 @@ function checkTitleIndexContents(testCase, index, errorMessage) { }); } -// Returns an Uint8Array with pseudorandom data. -// +// Returns an Uint8Array. +// When `seed` is non-zero, the data is pseudo-random, otherwise it is repetitive. // The PRNG should be sufficient to defeat compression schemes, but it is not // cryptographically strong. function largeValue(size, seed) { const buffer = new Uint8Array(size); + // Fill with a lot of the same byte. + if (seed == 0) { + buffer.fill(0x11, 0, size - 1); + return buffer; + } // 32-bit xorshift - the seed can't be zero let state = 1000 + seed; diff --git a/tests/wpt/tests/credential-management/support/fedcm/accounts.py b/tests/wpt/tests/credential-management/support/fedcm/accounts.py index 11c1c32b61a..1ec7f7dc124 100644 --- a/tests/wpt/tests/credential-management/support/fedcm/accounts.py +++ b/tests/wpt/tests/credential-management/support/fedcm/accounts.py @@ -9,6 +9,10 @@ def main(request, response): return (533, [], "Should not have Referer") if request.headers.get(b"Origin"): return (534, [], "Should not have Origin") + if request.headers.get(b"Sec-Fetch-Mode") != b"no-cors": + return (535, [], "Wrong Sec-Fetch-Mode header") + if request.headers.get(b"Sec-Fetch-Site") != b"none": + return (536, [], "Wrong Sec-Fetch-Site header") response.headers.set(b"Content-Type", b"application/json") diff --git a/tests/wpt/tests/credential-management/support/fedcm/client_metadata.py b/tests/wpt/tests/credential-management/support/fedcm/client_metadata.py index bfc8027412d..61d8aaf2367 100644 --- a/tests/wpt/tests/credential-management/support/fedcm/client_metadata.py +++ b/tests/wpt/tests/credential-management/support/fedcm/client_metadata.py @@ -14,6 +14,10 @@ def main(request, response): return (533, [], "Should not have Referer") if not request.headers.get(b"Origin"): return (534, [], "Missing Origin") + if request.headers.get(b"Sec-Fetch-Mode") != b"no-cors": + return (535, [], "Wrong Sec-Fetch-Mode header") + if request.headers.get(b"Sec-Fetch-Site") != b"cross-site": + return (536, [], "Wrong Sec-Fetch-Site header") counter = request.server.stash.take(keys.CLIENT_METADATA_COUNTER_KEY) try: diff --git a/tests/wpt/tests/credential-management/support/fedcm/manifest.py b/tests/wpt/tests/credential-management/support/fedcm/manifest.py index 6105db007b0..8a8fff74bc9 100644 --- a/tests/wpt/tests/credential-management/support/fedcm/manifest.py +++ b/tests/wpt/tests/credential-management/support/fedcm/manifest.py @@ -9,6 +9,10 @@ def main(request, response): return (533, [], "Should not have Referer") if request.headers.get(b"Origin"): return (534, [], "Should not have Origin") + if request.headers.get(b"Sec-Fetch-Mode") != b"no-cors": + return (535, [], "Wrong Sec-Fetch-Mode header") + if request.headers.get(b"Sec-Fetch-Site") != b"cross-site": + return (536, [], "Wrong Sec-Fetch-Site header") response.headers.set(b"Content-Type", b"application/json") diff --git a/tests/wpt/tests/credential-management/support/fedcm/single_account.py b/tests/wpt/tests/credential-management/support/fedcm/single_account.py index b388ef55a4b..5f05dc4be50 100644 --- a/tests/wpt/tests/credential-management/support/fedcm/single_account.py +++ b/tests/wpt/tests/credential-management/support/fedcm/single_account.py @@ -9,6 +9,10 @@ def main(request, response): return (533, [], "Should not have Referer") if request.headers.get(b"Origin"): return (534, [], "Should not have Origin") + if request.headers.get(b"Sec-Fetch-Mode") != b"no-cors": + return (535, [], "Wrong Sec-Fetch-Mode header") + if request.headers.get(b"Sec-Fetch-Site") != b"none": + return (536, [], "Wrong Sec-Fetch-Site header") response.headers.set(b"Content-Type", b"application/json") diff --git a/tests/wpt/tests/credential-management/support/fedcm/token.py b/tests/wpt/tests/credential-management/support/fedcm/token.py index cd73394bc4f..54150325524 100644 --- a/tests/wpt/tests/credential-management/support/fedcm/token.py +++ b/tests/wpt/tests/credential-management/support/fedcm/token.py @@ -13,6 +13,10 @@ def main(request, response): return (534, [], "Should not have Referer") if not request.headers.get(b"Origin"): return (535, [], "Missing Origin") + if request.headers.get(b"Sec-Fetch-Mode") != b"no-cors": + return (539, [], "Wrong Sec-Fetch-Mode header") + if request.headers.get(b"Sec-Fetch-Site") != b"none": + return (540, [], "Wrong Sec-Fetch-Site header") if not request.POST.get(b"client_id"): return (536, [], "Missing 'client_id' POST parameter") diff --git a/tests/wpt/tests/credential-management/support/fedcm/token_with_account_id.py b/tests/wpt/tests/credential-management/support/fedcm/token_with_account_id.py index 8bdfec8f6d9..4b8ae9a5651 100644 --- a/tests/wpt/tests/credential-management/support/fedcm/token_with_account_id.py +++ b/tests/wpt/tests/credential-management/support/fedcm/token_with_account_id.py @@ -13,6 +13,10 @@ def main(request, response): return (534, [], "Should not have Referer") if not request.headers.get(b"Origin"): return (535, [], "Missing Origin") + if request.headers.get(b"Sec-Fetch-Mode") != b"no-cors": + return (539, [], "Wrong Sec-Fetch-Mode header") + if request.headers.get(b"Sec-Fetch-Site") != b"none": + return (540, [], "Wrong Sec-Fetch-Site header") if not request.POST.get(b"client_id"): return (536, [], "Missing 'client_id' POST parameter") diff --git a/tests/wpt/tests/credential-management/support/fedcm/two_accounts.py b/tests/wpt/tests/credential-management/support/fedcm/two_accounts.py index 97ee92f6760..c355d21f1f2 100644 --- a/tests/wpt/tests/credential-management/support/fedcm/two_accounts.py +++ b/tests/wpt/tests/credential-management/support/fedcm/two_accounts.py @@ -9,6 +9,10 @@ def main(request, response): return (533, [], "Should not have Referer") if request.headers.get(b"Origin"): return (534, [], "Should not have Origin") + if request.headers.get(b"Sec-Fetch-Mode") != b"no-cors": + return (535, [], "Wrong Sec-Fetch-Mode header") + if request.headers.get(b"Sec-Fetch-Site") != b"none": + return (536, [], "Wrong Sec-Fetch-Site header") response.headers.set(b"Content-Type", b"application/json") diff --git a/tests/wpt/tests/css/css-color/border-color-currentcolor-ref.html b/tests/wpt/tests/css/css-color/border-color-currentcolor-ref.html new file mode 100644 index 00000000000..6efc0c41412 --- /dev/null +++ b/tests/wpt/tests/css/css-color/border-color-currentcolor-ref.html @@ -0,0 +1,23 @@ + +CSS Test Reference + +

Test passes if all the border colors are green

+
+inset +
+
+outset +
+
+ridge +
+
+groove +
\ No newline at end of file diff --git a/tests/wpt/tests/css/css-color/border-color-currentcolor.html b/tests/wpt/tests/css/css-color/border-color-currentcolor.html new file mode 100644 index 00000000000..525a89e312d --- /dev/null +++ b/tests/wpt/tests/css/css-color/border-color-currentcolor.html @@ -0,0 +1,26 @@ + +`border-color: currentColor` resolves to `color` value + + + + +

Test passes if all the border colors are green

+
+inset +
+
+outset +
+
+ridge +
+
+groove +
\ No newline at end of file diff --git a/tests/wpt/tests/css/css-color/parsing/color-invalid-rgb.html b/tests/wpt/tests/css/css-color/parsing/color-invalid-rgb.html index 81facf91a36..90dd082f2ae 100644 --- a/tests/wpt/tests/css/css-color/parsing/color-invalid-rgb.html +++ b/tests/wpt/tests/css/css-color/parsing/color-invalid-rgb.html @@ -40,6 +40,7 @@ tests = [ ["rgba(0%)", "The rgba function requires 3 or 4 arguments"], ["rgba(0%, 0%)", "The rgba function requires 3 or 4 arguments"], ["rgba(0%, 0%, 0%, 0%, 0%)", "The rgba function requires 3 or 4 arguments"], + ["rgb(257, 0, 5 / 0)", "Cannot mix legacy and non-legacy formats"], ]; for (const test of tests) { diff --git a/tests/wpt/tests/css/css-masking/clip-path-svg-content/mask-objectboundingbox-content-clip-transform.svg b/tests/wpt/tests/css/css-masking/clip-path-svg-content/mask-objectboundingbox-content-clip-transform.svg index e3ca1fbdba7..397f56d1902 100644 --- a/tests/wpt/tests/css/css-masking/clip-path-svg-content/mask-objectboundingbox-content-clip-transform.svg +++ b/tests/wpt/tests/css/css-masking/clip-path-svg-content/mask-objectboundingbox-content-clip-transform.svg @@ -7,7 +7,7 @@ - + svg The mask element with maskContentUnits="objectBoundingBox" gets clipped. The clipping path has a diff --git a/tests/wpt/tests/css/css-masking/clip-path-svg-content/mask-objectboundingbox-content-clip.svg b/tests/wpt/tests/css/css-masking/clip-path-svg-content/mask-objectboundingbox-content-clip.svg index 47cf9006974..c87fedec4f8 100644 --- a/tests/wpt/tests/css/css-masking/clip-path-svg-content/mask-objectboundingbox-content-clip.svg +++ b/tests/wpt/tests/css/css-masking/clip-path-svg-content/mask-objectboundingbox-content-clip.svg @@ -7,7 +7,7 @@ - + svg The mask element with maskContentUnits="objectBoundingBox" gets clipped. The clipping path has a diff --git a/tests/wpt/tests/css/css-masking/clip-path-svg-content/mask-userspaceonuse-content-clip-transform.svg b/tests/wpt/tests/css/css-masking/clip-path-svg-content/mask-userspaceonuse-content-clip-transform.svg index 03310225e20..624084a07bc 100644 --- a/tests/wpt/tests/css/css-masking/clip-path-svg-content/mask-userspaceonuse-content-clip-transform.svg +++ b/tests/wpt/tests/css/css-masking/clip-path-svg-content/mask-userspaceonuse-content-clip-transform.svg @@ -7,7 +7,7 @@ - + svg The mask element with maskContentUnits="userSpaceOnUse" gets clipped. The clipping path has a diff --git a/tests/wpt/tests/css/css-masking/clip-path-svg-content/mask-userspaceonuse-content-clip.svg b/tests/wpt/tests/css/css-masking/clip-path-svg-content/mask-userspaceonuse-content-clip.svg index 09eb2dfcd01..f1bfbdda583 100644 --- a/tests/wpt/tests/css/css-masking/clip-path-svg-content/mask-userspaceonuse-content-clip.svg +++ b/tests/wpt/tests/css/css-masking/clip-path-svg-content/mask-userspaceonuse-content-clip.svg @@ -7,7 +7,7 @@ - + svg The mask element with maskContentUnits="userSpaceOnUse" gets clipped. The clipping path has a diff --git a/tests/wpt/tests/css/css-properties-values-api/register-property-syntax-parsing.html b/tests/wpt/tests/css/css-properties-values-api/register-property-syntax-parsing.html index 5bda1c4c5b2..664ccabd33c 100644 --- a/tests/wpt/tests/css/css-properties-values-api/register-property-syntax-parsing.html +++ b/tests/wpt/tests/css/css-properties-values-api/register-property-syntax-parsing.html @@ -89,6 +89,7 @@ assert_valid("", "linear-gradient(yellow, blue)"); assert_valid("", "url(a)"); assert_valid("+", "yellow blue"); +assert_valid("+", "yellow blue "); assert_valid("+ | ", "yellow blue"); assert_valid(" | +", "yellow blue"); assert_valid("# | ", "yellow, blue"); @@ -108,6 +109,7 @@ assert_valid(" | # ", "scale(2) rotate(90deg assert_valid("# | ", "scale(2) rotate(90deg)"); assert_valid(" | # ", "scale(2), rotate(90deg)"); assert_valid("# | ", "scale(2), rotate(90deg)"); +assert_valid("", "scale(2) rotate(90deg) "); assert_valid("+ | + | + ", "1"); assert_valid("+ | + | + ", "1 1"); assert_valid("+ | + | + ", "1%"); @@ -139,6 +141,7 @@ assert_valid("\\1F914 hmm", "🤔hmm"); assert_valid("\\1F914\\1F914", "🤔🤔"); // Invalid syntax +assert_invalid("#", "yellow blue"); assert_invalid("banana,nya", "banana"); assert_invalid("<\\6c ength>", "10px"); assert_invalid("", "banana"); @@ -156,6 +159,8 @@ assert_invalid("##", "10px"); assert_invalid("+#", "10px"); assert_invalid("#+", "10px"); assert_invalid(" | *", "10px"); +assert_invalid("+", "2px,7px,calc(8px)"); +assert_invalid("#", "2px 7px calc(8px)"); assert_invalid("*|banana", "banana"); assert_invalid("|banana", "banana"); assert_invalid("*+", "banana"); diff --git a/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-1-ref.html b/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-1-ref.html new file mode 100644 index 00000000000..ec54bc08a72 --- /dev/null +++ b/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-1-ref.html @@ -0,0 +1,34 @@ + + + +
+
+
diff --git a/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-1.html b/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-1.html new file mode 100644 index 00000000000..71fd97f2741 --- /dev/null +++ b/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-1.html @@ -0,0 +1,46 @@ + + +Dynamically set color-scheme and ensure scrollbars update + + + + + +
+
+
+ diff --git a/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-2-ref.html b/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-2-ref.html new file mode 100644 index 00000000000..906fb11cd56 --- /dev/null +++ b/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-2-ref.html @@ -0,0 +1,23 @@ + + +
diff --git a/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-2.html b/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-2.html new file mode 100644 index 00000000000..111219c7d16 --- /dev/null +++ b/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-2.html @@ -0,0 +1,36 @@ + + +Dynamically set color-scheme and ensure viewport scrollbars update + + + + + +
+ diff --git a/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-3-ref.html b/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-3-ref.html new file mode 100644 index 00000000000..e9e842caea7 --- /dev/null +++ b/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-3-ref.html @@ -0,0 +1,35 @@ + + + +
+
+
diff --git a/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-3.html b/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-3.html new file mode 100644 index 00000000000..47105f0c6d9 --- /dev/null +++ b/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-3.html @@ -0,0 +1,46 @@ + + +Dynamically set color-scheme and ensure scrollbars update + + + + + +
+
+
+ diff --git a/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-4-ref.html b/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-4-ref.html new file mode 100644 index 00000000000..04561982354 --- /dev/null +++ b/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-4-ref.html @@ -0,0 +1,24 @@ + + +
diff --git a/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-4.html b/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-4.html new file mode 100644 index 00000000000..9655a0ebb24 --- /dev/null +++ b/tests/wpt/tests/css/css-scrollbars/scrollbar-color-scheme-dynamic-4.html @@ -0,0 +1,36 @@ + + +Dynamically set color-scheme and ensure viewport scrollbars update + + + + + +
+ diff --git a/tests/wpt/tests/css/css-sizing/contain-intrinsic-size/auto-015.html b/tests/wpt/tests/css/css-sizing/contain-intrinsic-size/auto-015.html new file mode 100644 index 00000000000..05252dfddac --- /dev/null +++ b/tests/wpt/tests/css/css-sizing/contain-intrinsic-size/auto-015.html @@ -0,0 +1,94 @@ + + +contain-intrinsic-width: auto none in vertical writing mode + + + + + + +
+ +
+
+
+
+
+ + + + diff --git a/tests/wpt/tests/css/css-sizing/contain-intrinsic-size/auto-016.html b/tests/wpt/tests/css/css-sizing/contain-intrinsic-size/auto-016.html new file mode 100644 index 00000000000..5846101614c --- /dev/null +++ b/tests/wpt/tests/css/css-sizing/contain-intrinsic-size/auto-016.html @@ -0,0 +1,94 @@ + + +contain-intrinsic-height: auto none in vertical writing mode + + + + + + +
+ +
+
+
+
+
+ + + + diff --git a/tests/wpt/tests/css/css-sizing/contain-intrinsic-size/auto-017.html b/tests/wpt/tests/css/css-sizing/contain-intrinsic-size/auto-017.html new file mode 100644 index 00000000000..669f9505d70 --- /dev/null +++ b/tests/wpt/tests/css/css-sizing/contain-intrinsic-size/auto-017.html @@ -0,0 +1,94 @@ + + +contain-intrinsic-width: auto length in vertical writing mode + + + + + + +
+ +
+
+
+
+
+ + + + diff --git a/tests/wpt/tests/css/css-sizing/contain-intrinsic-size/auto-018.html b/tests/wpt/tests/css/css-sizing/contain-intrinsic-size/auto-018.html new file mode 100644 index 00000000000..b5121c67f76 --- /dev/null +++ b/tests/wpt/tests/css/css-sizing/contain-intrinsic-size/auto-018.html @@ -0,0 +1,94 @@ + + +contain-intrinsic-height: auto length in vertical writing mode + + + + + + +
+ +
+
+
+
+
+ + + + diff --git a/tests/wpt/tests/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-computed.html b/tests/wpt/tests/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-computed.html index 1de987c0a10..305fe621cd5 100644 --- a/tests/wpt/tests/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-computed.html +++ b/tests/wpt/tests/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-computed.html @@ -14,7 +14,9 @@ -
+
+
+
+ + + + +
+ + + diff --git a/tests/wpt/tests/css/css-text/parsing/text-autospace-invalid.html b/tests/wpt/tests/css/css-text/parsing/text-autospace-invalid.html new file mode 100644 index 00000000000..7be73ba76ee --- /dev/null +++ b/tests/wpt/tests/css/css-text/parsing/text-autospace-invalid.html @@ -0,0 +1,26 @@ + + + + +CSS Text Module Test: parsing text-autospace with invalid values + + + + + + + + + diff --git a/tests/wpt/tests/css/css-text/parsing/text-autospace-valid.html b/tests/wpt/tests/css/css-text/parsing/text-autospace-valid.html new file mode 100644 index 00000000000..c40c0e0a4ce --- /dev/null +++ b/tests/wpt/tests/css/css-text/parsing/text-autospace-valid.html @@ -0,0 +1,28 @@ + + + + +CSS Text Module Test: parsing text-autospace with valid values + + + + + + + + + diff --git a/tests/wpt/tests/css/css-transforms/skewX/svg-skewxy-001.html b/tests/wpt/tests/css/css-transforms/skewX/svg-skewxy-001.html index 23467a9936e..0eee25c5dfe 100644 --- a/tests/wpt/tests/css/css-transforms/skewX/svg-skewxy-001.html +++ b/tests/wpt/tests/css/css-transforms/skewX/svg-skewxy-001.html @@ -21,7 +21,7 @@

The test passes if there is a green square and no red.

- + diff --git a/tests/wpt/tests/custom-elements/form-associated/ElementInternals-setFormValue-nullish-value.html b/tests/wpt/tests/custom-elements/form-associated/ElementInternals-setFormValue-nullish-value.html new file mode 100644 index 00000000000..28c12c4600b --- /dev/null +++ b/tests/wpt/tests/custom-elements/form-associated/ElementInternals-setFormValue-nullish-value.html @@ -0,0 +1,45 @@ + + + + ElementInternals.setFormValue(nullish value) should clear submission value + + + + + + +
+ +
+ +
+ +
+ + + + diff --git a/tests/wpt/tests/fenced-frame/automatic-beacon-two-events-clear.https.html b/tests/wpt/tests/fenced-frame/automatic-beacon-two-events-clear.https.html new file mode 100644 index 00000000000..ae246aaac0a --- /dev/null +++ b/tests/wpt/tests/fenced-frame/automatic-beacon-two-events-clear.https.html @@ -0,0 +1,58 @@ + +Test setReportEventDataForAutomaticBeacons called only once + + + + + + + + + + + + diff --git a/tests/wpt/tests/fenced-frame/automatic-beacon-two-events-persist.https.html b/tests/wpt/tests/fenced-frame/automatic-beacon-two-events-persist.https.html new file mode 100644 index 00000000000..f944d7141d7 --- /dev/null +++ b/tests/wpt/tests/fenced-frame/automatic-beacon-two-events-persist.https.html @@ -0,0 +1,54 @@ + +Test setReportEventDataForAutomaticBeacons called only once + + + + + + + + + + + + diff --git a/tests/wpt/tests/focus/focus-centers-element.html b/tests/wpt/tests/focus/focus-centers-element.html new file mode 100644 index 00000000000..49b9d52b851 --- /dev/null +++ b/tests/wpt/tests/focus/focus-centers-element.html @@ -0,0 +1,83 @@ + + + + +focus() centers element outside displayport + + + + + +
+
+ +
+
+
+
+
+
+
+ + + diff --git a/tests/wpt/tests/html/infrastructure/urls/terminology-0/nontraditional-about-srcdoc.html b/tests/wpt/tests/html/infrastructure/urls/terminology-0/nontraditional-about-srcdoc.html new file mode 100644 index 00000000000..bdb33842a7d --- /dev/null +++ b/tests/wpt/tests/html/infrastructure/urls/terminology-0/nontraditional-about-srcdoc.html @@ -0,0 +1,106 @@ + + +Non-traditional about:srcdoc documents + + + + + + diff --git a/tests/wpt/tests/html/infrastructure/urls/terminology-0/resources/echo-referrer-text.py b/tests/wpt/tests/html/infrastructure/urls/terminology-0/resources/echo-referrer-text.py new file mode 100644 index 00000000000..8a48d3346a6 --- /dev/null +++ b/tests/wpt/tests/html/infrastructure/urls/terminology-0/resources/echo-referrer-text.py @@ -0,0 +1,4 @@ +def main(request, response): + response_headers = [(b"Content-Type", b"text/plain")] + body = b"%s"% request.headers.get(b"referer", b"") + return (200, response_headers, body) diff --git a/tests/wpt/tests/html/semantics/forms/the-input-element/number-constraint-validation.html b/tests/wpt/tests/html/semantics/forms/the-input-element/number-constraint-validation.html new file mode 100644 index 00000000000..959726bb50d --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-input-element/number-constraint-validation.html @@ -0,0 +1,42 @@ + + +Form input type=number constraint validation + + + + + + +
+ + diff --git a/tests/wpt/tests/html/semantics/popovers/popover-attribute-basic.html b/tests/wpt/tests/html/semantics/popovers/popover-attribute-basic.html index 32d3deb3848..13108949cb3 100644 --- a/tests/wpt/tests/html/semantics/popovers/popover-attribute-basic.html +++ b/tests/wpt/tests/html/semantics/popovers/popover-attribute-basic.html @@ -324,6 +324,7 @@ window.onload = () => { // handler should run, set a new type, and that type should end up // as the final result. assert_false(popover.matches(':popover-open')); + assert_true(gotEvent); if (inEventType === undefined || (method ==="idl" && inEventType === null)) { assert_throws_dom("NotSupportedError",() => popover.showPopover(),'We should have removed the popover attribute, so showPopover should throw'); } else { diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/execution-timing/non-external-no-import.tentative.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/execution-timing/non-external-no-import.html similarity index 100% rename from tests/wpt/tests/html/semantics/scripting-1/the-script-element/execution-timing/non-external-no-import.tentative.html rename to tests/wpt/tests/html/semantics/scripting-1/the-script-element/execution-timing/non-external-no-import.html diff --git a/tests/wpt/tests/images/computer.jpg b/tests/wpt/tests/images/computer.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d58c896b2411b44d5089c72defb0d222291f1f3b GIT binary patch literal 2018 zcmc&#i#MCu7XQA4GD-&t+752TD^#KqRMe~0C=n#6@v3ShiZNP`=_-aQdMk6*2A?_Y5DZ|$?!*}uKcI{Tcx*Omw+^ME4B z!N~ytK>z?D0Fr4?N)e#{jWEbY0tpZzfl{CzD1@{WSOO-29te}b5*Pq{1Qq_)02l&v z22&yZvO>E_7y;yhzkpoGPQuBsA{ZG$5u6O?!trn!NV!sFQimXvN%N$yN%LfiWs2p@ zl>Xlrkn{jbvcMW>2M19AObLW5fs#JJ2zsVn0lo?dgG)*OuWOeCB~ySr90XvBa7AdF zROw@f`9olO&$OPDk7S|Je%*D#zaL{;e&a=vOJ49Xq)#ISrj>P=F|&(DV>64g-;5_I z0_Xk5-S1R+gMoF}aP^PTs&c^T6f%D%19z0+T1c@2)GZ_R)`i2+30I9E9)MNew5zv+ z$TUN_SWir@kE3%0iV2+5&5Ww_BdMHq}-}!)G|$ zR>FbKoDvC;XCY?%LllX%zHy0VkS_ro-1@dVKH-Xjqwv93dd(*C<1n`J*Z+)ro)gk` zw$SE4*V7I^qm~h4@AY|ldA64X_$hKePc!@MzgpsIoW-I~&n%7M^Kr-hc6`yl&|@d! zS0Hkui}AzfWlqpjOBBbA&SsNph1?%4EOaEfmN`6t;)FL}p0i=pgqyLo4{r{=6DN02=2`Bv_0EJsAI7bq zpr8x%SYIdK!xj}klb?;S(+c#cs>-xZ&bHeY@P z(T0_v7(+0zJ{UTsk6DR$+U!zXHMO)!6+PAw9e7m6X~1deiAxc>Y8pX~j}4ln-j5J3 zSE5L~1wVYEypJ^1xBYxQ^4es4GrZsVv{X9#Y^c%0StbO;!n7heH~i>D)&@9A8K z@o?;;HtU9m`f5F50?s3<|De~UMf^SFTo@0I*d5i#oYt?LI%S0{5C!~N|W3ZtbCrYR{hT$3bAkK z0Eg2u)@KY8tYY^#<>HYg#Gy^kbe%wMZG!1J77pu$jE;_RI!BCVW~x}|TH2^QnM#bm0<}3(>A%O!?o3Jg($X*xYH8Ko a2vsEjzU%)gT7eh8#K3oBd{vAk&;J7)L`lK` literal 0 HcmV?d00001 diff --git a/tests/wpt/tests/largest-contentful-paint/progressively-loaded-image.html b/tests/wpt/tests/largest-contentful-paint/progressively-loaded-image.html new file mode 100644 index 00000000000..25475e3ab95 --- /dev/null +++ b/tests/wpt/tests/largest-contentful-paint/progressively-loaded-image.html @@ -0,0 +1,42 @@ + + +Largest Contentful Paint: Progressively Loaded Image + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/tests/lint.ignore b/tests/wpt/tests/lint.ignore index 457c93c2149..255a50e0d1c 100644 --- a/tests/wpt/tests/lint.ignore +++ b/tests/wpt/tests/lint.ignore @@ -252,6 +252,9 @@ SET TIMEOUT: webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/me SET TIMEOUT: webauthn/*timeout.https.html SET TIMEOUT: webdriver/* SET TIMEOUT: webmessaging/* +SET TIMEOUT: webrtc-encoded-transform/script-metadata-transform-worker.js +SET TIMEOUT: webrtc-encoded-transform/script-transform-generateKeyFrame.js +SET TIMEOUT: webrtc-encoded-transform/script-transform-sendKeyFrameRequest.js SET TIMEOUT: webstorage/eventTestHarness.js SET TIMEOUT: webvtt/* SET TIMEOUT: workers/* diff --git a/tests/wpt/tests/long-animation-frame/tentative/loaf-script-block.html b/tests/wpt/tests/long-animation-frame/tentative/loaf-script-block.html index 866eea09e09..5cd82c2c132 100644 --- a/tests/wpt/tests/long-animation-frame/tentative/loaf-script-block.html +++ b/tests/wpt/tests/long-animation-frame/tentative/loaf-script-block.html @@ -46,5 +46,28 @@ test_self_script_block(t => { document.body.appendChild(script); }, new URL("resources/busy.js?import", location.href).href, "execute-script"); +const busy_wait_str = ` (function() { + const deadline = performance.now() + 365; + while (performance.now() < deadline) {} + })() +`; + +const data_url = `data:text/javascript;charset=utf-8,${encodeURIComponent(busy_wait_str)}`; + +test_self_script_block(t => { + const script = document.createElement("script"); + script.src = data_url; + document.body.appendChild(script); +}, "data:", "classic-script"); + +const blob_url = URL.createObjectURL(new Blob([busy_wait_str], {type: "text/javascript"})); + +test_self_script_block(t => { + const script = document.createElement("script"); + script.src = blob_url; + document.body.appendChild(script); +}, blob_url, "classic-script"); + + diff --git a/tests/wpt/tests/long-animation-frame/tentative/loaf-source-location.html b/tests/wpt/tests/long-animation-frame/tentative/loaf-source-location.html index ffda0002071..1065564206f 100644 --- a/tests/wpt/tests/long-animation-frame/tentative/loaf-source-location.html +++ b/tests/wpt/tests/long-animation-frame/tentative/loaf-source-location.html @@ -11,6 +11,8 @@
diff --git a/tests/wpt/tests/mathml/presentation-markup/radicals/empty-msqrt-ref.html b/tests/wpt/tests/mathml/presentation-markup/radicals/empty-msqrt-ref.html new file mode 100644 index 00000000000..8ff5cbe9edd --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/radicals/empty-msqrt-ref.html @@ -0,0 +1,10 @@ + + + + + Empty <msqrt> element (reference) + + + + + diff --git a/tests/wpt/tests/mathml/presentation-markup/radicals/empty-msqrt.html b/tests/wpt/tests/mathml/presentation-markup/radicals/empty-msqrt.html new file mode 100644 index 00000000000..f9fb65ba4b1 --- /dev/null +++ b/tests/wpt/tests/mathml/presentation-markup/radicals/empty-msqrt.html @@ -0,0 +1,15 @@ + + + + + Empty <msqrt> element + + + + + + + + + + diff --git a/tests/wpt/tests/mathml/relations/css-styling/size-containment-001.tentative.html b/tests/wpt/tests/mathml/relations/css-styling/size-containment-001.tentative.html new file mode 100644 index 00000000000..dddd1f32b23 --- /dev/null +++ b/tests/wpt/tests/mathml/relations/css-styling/size-containment-001.tentative.html @@ -0,0 +1,77 @@ + + + + +MathML and size containment + + + + + + + + + +
+ + diff --git a/tests/wpt/tests/notifications/requireInteraction-manual.https.html b/tests/wpt/tests/notifications/requireInteraction-manual.https.html new file mode 100644 index 00000000000..23e9e4bbb32 --- /dev/null +++ b/tests/wpt/tests/notifications/requireInteraction-manual.https.html @@ -0,0 +1,51 @@ + + +requireInteraction: true + + +

+ + +

+Steps: +
    +
  1. Make sure you didn't block the notification permission.
  2. +
  3. Allow the notification permission if the prompt opens.
  4. +
  5. Click the first button.
  6. +
  7. See whether the notification disappears from the screen without interaction. It must not.
  8. +
  9. If you are sure it's not disappearing, then click that second button.
  10. +
+Why this is manual? Because +
    +
  1. + One need to wait for more than arbitrary platform-specific time to see + it really does not disappear automatically. +
  2. +
  3. There's simply no API to tell it's disappeared from the screen or not
  4. +
+ diff --git a/tests/wpt/tests/payment-request/payment-request-show-method.https.html b/tests/wpt/tests/payment-request/payment-request-show-method.https.html index a03121692b1..d3385b5468b 100644 --- a/tests/wpt/tests/payment-request/payment-request-show-method.https.html +++ b/tests/wpt/tests/payment-request/payment-request-show-method.https.html @@ -35,12 +35,6 @@ const defaultDetails = Object.freeze({ }, }); -promise_test(async (t) => { - const request = new PaymentRequest(defaultMethods, defaultDetails); - const acceptPromise = request.show(); - await promise_rejects_dom(t, "SecurityError", acceptPromise); -}, `Calling show() without being triggered by user interaction throws`); - promise_test(async (t) => { const request = new PaymentRequest(defaultMethods, defaultDetails); await promise_rejects_dom(t, "SecurityError", request.show()); @@ -63,11 +57,8 @@ promise_test(async (t) => { await test_driver.bless(); const acceptPromise1 = request1.show(); - // User activation consumed, so... - const request2 = new PaymentRequest(defaultMethods, defaultDetails); - await promise_rejects_dom(t, "SecurityError", request2.show()); - // Payment request already showing, so... + const request2 = new PaymentRequest(defaultMethods, defaultDetails); await test_driver.bless(); await promise_rejects_dom(t, "AbortError", request2.show()); diff --git a/tests/wpt/tests/payment-request/show-consume-activation.https.html b/tests/wpt/tests/payment-request/show-consume-activation.https.html index 044fca5d408..6f629489e4a 100644 --- a/tests/wpt/tests/payment-request/show-consume-activation.https.html +++ b/tests/wpt/tests/payment-request/show-consume-activation.https.html @@ -37,22 +37,16 @@ promise_test(async t => { const pr = new PaymentRequest(defaultMethods, defaultDetails); - // Not activated by user gesture, so not allowed! - await promise_rejects_dom(t, "SecurityError", pr.show()); - await test_driver.bless("Calls show() method"); - - // Activated by user gesture, so all good. const showPromise = pr.show(); - // The activation has been consumed, so calling show() again would require - // a new gesture. - await promise_rejects_dom(t, "InvalidStateError", pr.show()); + // The activation has been consumed. + assert_false(navigator.userActivation.isActive); // Abort the payment request pr.abort() await promise_rejects_dom(t, "AbortError", showPromise); - }, "Calling share consumes user activation"); + }, "Calling show consumes user activation, if present"); diff --git a/tests/wpt/tests/pointerevents/pointerevent_pointercancel_touch.html b/tests/wpt/tests/pointerevents/pointerevent_pointercancel_touch.html index 9d0314655df..687b6a3f32c 100644 --- a/tests/wpt/tests/pointerevents/pointerevent_pointercancel_touch.html +++ b/tests/wpt/tests/pointerevents/pointerevent_pointercancel_touch.html @@ -45,9 +45,17 @@ pointercancel_event = event; test_pointerEvent.step(function () { assert_not_equals(pointerdown_event, null, "pointerdown was received: "); - assert_equals(event.pointerId, pointerdown_event.pointerId, "pointerId should be the same for pointerdown and pointercancel"); - assert_equals(event.pointerType, pointerdown_event.pointerType, "pointerType should be the same for pointerdown and pointercancel"); - assert_equals(event.isPrimary, pointerdown_event.isPrimary, "isPrimary should be the same for pointerdown and pointercancel"); + const properties = [ + "pointerId", "width", "height", + "pressure", "tangentialPressure", "tiltX", "tiltY", + "twist", "altitudeAngle", "azimuthAngle", + "pointerType", "isPrimary" + ]; + for (let property in properties) { + assert_equals(event[property], + pointerdown_event[property], + property + " should be the same for pointerdown and pointercancel"); + } }); test_pointerEvent.step(function () { check_PointerEvent(event); diff --git a/tests/wpt/tests/pointerevents/pointerevent_support.js b/tests/wpt/tests/pointerevents/pointerevent_support.js index 56accf85610..19f0c2e6175 100644 --- a/tests/wpt/tests/pointerevents/pointerevent_support.js +++ b/tests/wpt/tests/pointerevents/pointerevent_support.js @@ -93,6 +93,12 @@ function check_PointerEvent(event, testNamePrefix) { let expected = (event.type != 'pointerenter' && event.type != 'pointerleave'); assert_equals(event.bubbles, expected); }, pointerTestName + ".bubbles value is valid"); + test(function () { + let cancelable_events = [ + 'pointerdown', 'pointermove', 'pointerup', 'pointerover', 'pointerout' + ]; + assert_equals(event.cancelable, cancelable_events.includes(event.type)); + }, pointerTestName + ".cancelable value is valid"); // Check the pressure value. // https://w3c.github.io/pointerevents/#dom-pointerevent-pressure diff --git a/tests/wpt/tests/resource-timing/entries-for-network-errors.sub.https.html b/tests/wpt/tests/resource-timing/entries-for-network-errors.sub.https.html index 95849d28262..ebc2247babc 100644 --- a/tests/wpt/tests/resource-timing/entries-for-network-errors.sub.https.html +++ b/tests/wpt/tests/resource-timing/entries-for-network-errors.sub.https.html @@ -30,6 +30,22 @@ network_error_entry_test('/common/dummy.xml', {cache: 'only-if-cached', mode: 's network_error_entry_test( `/element-timing/resources/multiple-redirects.py?redirect_count=22&final_resource=${validXmlUrl}`, null, "too many redirects"); + +// ORB (https://github.com/whatwg/fetch/pull/1442) will return network errors +// for certain cross-origin fetches. This tests that the same rules apply to +// these fetches. Since ORB (at least as presently implemented) doesn't return +// network errors for fetches, we have to load this case using an element. +// +// This emulates a case previously tested in service-workers/service-worker/resource-timing.sub.https.html +const orb_loader = (url, _) => new Promise(resolve => { + const img = document.createElement("img"); + img.src = url; + img.onerror = resolve; + document.body.appendChild(img); +} ); +network_error_entry_test( + '//{{hosts[alt][]}}:{{ports[https][0]}}/service-workers/service-worker/resources/missing.jpg', + null, "network error for ORB-blocked response", orb_loader); diff --git a/tests/wpt/tests/resource-timing/resources/entry-invariants.js b/tests/wpt/tests/resource-timing/resources/entry-invariants.js index bbc913b7229..78d43d1b01e 100644 --- a/tests/wpt/tests/resource-timing/resources/entry-invariants.js +++ b/tests/wpt/tests/resource-timing/resources/entry-invariants.js @@ -488,11 +488,13 @@ const attribute_test_with_validator = (loader, path, validator, run_test, test_l attribute_test_internal(loader, path, validator, run_test, test_label); }; -const network_error_entry_test = (originalURL, args, label) => { +const network_error_entry_test = (originalURL, args, label, loader) => { const url = new URL(originalURL, location.href); const search = new URLSearchParams(url.search.substr(1)); const timeBefore = performance.now(); - loader = () => new Promise(resolve => fetch(url, args).catch(resolve)); + + // Load using `fetch()`, unless we're given a specific loader for this test. + loader ??= () => new Promise(resolve => fetch(url, args).catch(resolve)); attribute_test( loader, url, diff --git a/tests/wpt/tests/scroll-animations/view-timelines/svg-graphics-element.html b/tests/wpt/tests/scroll-animations/view-timelines/svg-graphics-element.html index 5f54646b6c3..9b100a0b642 100644 --- a/tests/wpt/tests/scroll-animations/view-timelines/svg-graphics-element.html +++ b/tests/wpt/tests/scroll-animations/view-timelines/svg-graphics-element.html @@ -7,20 +7,24 @@ +
@@ -31,10 +35,11 @@ const target = document.getElementById('line'); const anim = target.getAnimations()[0]; await anim.ready; - assert_equals(getComputedStyle(target).stroke, 'rgb(0, 0, 255)'); - scroller.scrollTop = 2000; + assert_equals(getComputedStyle(target).stroke, 'rgb(0, 0, 254)'); + scroller.scrollTop = + 0.5*(scroller.scrollHeight - scroller.clientHeight); await waitForNextFrame(); - assert_equals(getComputedStyle(target).stroke, 'rgb(0, 128, 0)'); + assert_equals(getComputedStyle(target).stroke, 'rgb(0, 64, 127)'); }, 'View timeline attached to SVG graphics element'); diff --git a/tests/wpt/tests/service-workers/service-worker/resource-timing.sub.https.html b/tests/wpt/tests/service-workers/service-worker/resource-timing.sub.https.html index 9808ae5ae1b..e8328f3597b 100644 --- a/tests/wpt/tests/service-workers/service-worker/resource-timing.sub.https.html +++ b/tests/wpt/tests/service-workers/service-worker/resource-timing.sub.https.html @@ -114,9 +114,9 @@ promise_test(async (t) => { }); verify({ performance: performance, - resource: 'resources/missing.jpg', + resource: 'resources/missing.asis', // ORB-compatible 404 response. mode: 'cross-origin', - description: 'Network fallback cross-origin load failure', + description: 'Network fallback cross-origin load failure (404 response)', }); // Tests for respondWith(fetch()). verify({ diff --git a/tests/wpt/tests/service-workers/service-worker/resources/missing.asis b/tests/wpt/tests/service-workers/service-worker/resources/missing.asis new file mode 100644 index 00000000000..4846fe01d61 --- /dev/null +++ b/tests/wpt/tests/service-workers/service-worker/resources/missing.asis @@ -0,0 +1,4 @@ +HTTP/1.1 404 Not Found +Content-Type: text/javascript + +alert("hello"); diff --git a/tests/wpt/tests/service-workers/service-worker/resources/resource-timing-iframe.sub.html b/tests/wpt/tests/service-workers/service-worker/resources/resource-timing-iframe.sub.html index 384c29b536b..ec4c726331d 100644 --- a/tests/wpt/tests/service-workers/service-worker/resources/resource-timing-iframe.sub.html +++ b/tests/wpt/tests/service-workers/service-worker/resources/resource-timing-iframe.sub.html @@ -5,6 +5,6 @@ - + diff --git a/tests/wpt/tests/streams/piping/crashtests/cross-piping.html b/tests/wpt/tests/streams/piping/crashtests/cross-piping.html new file mode 100644 index 00000000000..712d5ecebef --- /dev/null +++ b/tests/wpt/tests/streams/piping/crashtests/cross-piping.html @@ -0,0 +1,12 @@ + + diff --git a/tests/wpt/tests/svg/layout/svg-use-symbol-animateMotion-print-ref.html b/tests/wpt/tests/svg/layout/svg-use-symbol-animateMotion-print-ref.html new file mode 100644 index 00000000000..07e162c8a51 --- /dev/null +++ b/tests/wpt/tests/svg/layout/svg-use-symbol-animateMotion-print-ref.html @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/tests/wpt/tests/svg/layout/svg-use-symbol-animateMotion-print.html b/tests/wpt/tests/svg/layout/svg-use-symbol-animateMotion-print.html new file mode 100644 index 00000000000..aa658117b66 --- /dev/null +++ b/tests/wpt/tests/svg/layout/svg-use-symbol-animateMotion-print.html @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/svg/layout/svg-use-symbol-animateTransform-print-ref.html b/tests/wpt/tests/svg/layout/svg-use-symbol-animateTransform-print-ref.html new file mode 100644 index 00000000000..07e162c8a51 --- /dev/null +++ b/tests/wpt/tests/svg/layout/svg-use-symbol-animateTransform-print-ref.html @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/tests/wpt/tests/svg/layout/svg-use-symbol-animateTransform-print.html b/tests/wpt/tests/svg/layout/svg-use-symbol-animateTransform-print.html new file mode 100644 index 00000000000..f979d8317ce --- /dev/null +++ b/tests/wpt/tests/svg/layout/svg-use-symbol-animateTransform-print.html @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/svg/layout/svg-use-symbol-opacity-print-ref.html b/tests/wpt/tests/svg/layout/svg-use-symbol-opacity-print-ref.html new file mode 100644 index 00000000000..d6b2f6bd9bb --- /dev/null +++ b/tests/wpt/tests/svg/layout/svg-use-symbol-opacity-print-ref.html @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/tests/wpt/tests/svg/layout/svg-use-symbol-opacity-print.html b/tests/wpt/tests/svg/layout/svg-use-symbol-opacity-print.html new file mode 100644 index 00000000000..339939b0c3d --- /dev/null +++ b/tests/wpt/tests/svg/layout/svg-use-symbol-opacity-print.html @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/svg/layout/svg-use-symbol-path-print-ref.html b/tests/wpt/tests/svg/layout/svg-use-symbol-path-print-ref.html new file mode 100644 index 00000000000..07e162c8a51 --- /dev/null +++ b/tests/wpt/tests/svg/layout/svg-use-symbol-path-print-ref.html @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/tests/wpt/tests/svg/layout/svg-use-symbol-path-print.html b/tests/wpt/tests/svg/layout/svg-use-symbol-path-print.html new file mode 100644 index 00000000000..c671a8413af --- /dev/null +++ b/tests/wpt/tests/svg/layout/svg-use-symbol-path-print.html @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/tools/ci/requirements_build.txt b/tests/wpt/tests/tools/ci/requirements_build.txt index a976e5d6398..2b7e1808552 100644 --- a/tests/wpt/tests/tools/ci/requirements_build.txt +++ b/tests/wpt/tests/tools/ci/requirements_build.txt @@ -2,4 +2,4 @@ cairocffi==1.5.1 fonttools==4.39.4 genshi==0.7.7 jinja2==3.1.2 -pyyaml==6.0 +pyyaml==6.0.1 diff --git a/tests/wpt/tests/tools/ci/requirements_tc.txt b/tests/wpt/tests/tools/ci/requirements_tc.txt index bd979ed97c2..9c3a0d639af 100644 --- a/tests/wpt/tests/tools/ci/requirements_tc.txt +++ b/tests/wpt/tests/tools/ci/requirements_tc.txt @@ -1,4 +1,4 @@ pygithub==1.58.2 -pyyaml==6.0 +pyyaml==6.0.1 requests==2.31.0 -taskcluster==54.3.1 +taskcluster==54.4.0 diff --git a/tests/wpt/tests/tools/docker/requirements.txt b/tests/wpt/tests/tools/docker/requirements.txt index 88b70f37a0d..332fdbdeb1b 100644 --- a/tests/wpt/tests/tools/docker/requirements.txt +++ b/tests/wpt/tests/tools/docker/requirements.txt @@ -1,2 +1,2 @@ -pyyaml==6.0 +pyyaml==6.0.1 requests==2.31.0 diff --git a/tests/wpt/tests/tools/manifest/jsonlib.py b/tests/wpt/tests/tools/manifest/jsonlib.py index 9c39d5b32ee..0f70cf1e171 100644 --- a/tests/wpt/tests/tools/manifest/jsonlib.py +++ b/tests/wpt/tests/tools/manifest/jsonlib.py @@ -87,6 +87,7 @@ _ujson_dump_dist_kwargs: Dict[str, Any] = { 'sort_keys': True, 'indent': 1, 'reject_bytes': True, + 'escape_forward_slashes': False, } diff --git a/tests/wpt/tests/tools/manifest/sourcefile.py b/tests/wpt/tests/tools/manifest/sourcefile.py index cf0bbf334b7..832968e6323 100644 --- a/tests/wpt/tests/tools/manifest/sourcefile.py +++ b/tests/wpt/tests/tools/manifest/sourcefile.py @@ -1017,18 +1017,23 @@ class SourceFile: )) elif self.content_is_ref_node: - rv = RefTest.item_type, [ - RefTest( + rv = RefTest.item_type, [] + for variant in self.test_variants: + url = self.rel_url + variant + rv[1].append(RefTest( self.tests_root, self.rel_path, self.url_base, - self.rel_url, - references=self.references, + url, + references=[ + (ref[0] + variant, ref[1]) + for ref in self.references + ], timeout=self.timeout, viewport_size=self.viewport_size, dpi=self.dpi, fuzzy=self.fuzzy - )] + )) elif self.content_is_css_visual and not self.name_is_reference: rv = VisualTest.item_type, [ diff --git a/tests/wpt/tests/tools/manifest/tests/test_sourcefile.py b/tests/wpt/tests/tools/manifest/tests/test_sourcefile.py index d3411084f3c..4b98e718d03 100644 --- a/tests/wpt/tests/tools/manifest/tests/test_sourcefile.py +++ b/tests/wpt/tests/tools/manifest/tests/test_sourcefile.py @@ -526,6 +526,40 @@ def test_testharness_variant_invalid(variant): s.test_variants +def test_reftest_variant(): + content = (b"" + + b"" + + b"") + + s = create("html/test.html", contents=content) + assert not s.name_is_non_test + assert not s.name_is_manual + assert not s.name_is_visual + assert not s.name_is_worker + assert not s.name_is_reference + + item_type, items = s.manifest_items() + assert item_type == "reftest" + + actual_tests = [ + {"url": item.url, "refs": item.references} + for item in items + ] + + expected_tests = [ + { + "url": "/html/test.html?first", + "refs": [("/html/ref.html?first", "==")], + }, + { + "url": "/html/test.html?second", + "refs": [("/html/ref.html?second", "==")], + }, + ] + + assert actual_tests == expected_tests + + @pytest.mark.parametrize("ext", ["htm", "html"]) def test_relative_testharness(ext): content = b"" diff --git a/tests/wpt/tests/tools/requirements_mypy.txt b/tests/wpt/tests/tools/requirements_mypy.txt index 26175e68b41..c31e7f5bce3 100644 --- a/tests/wpt/tests/tools/requirements_mypy.txt +++ b/tests/wpt/tests/tools/requirements_mypy.txt @@ -8,7 +8,7 @@ types-python-dateutil==2.8.19.13 types-PyYAML==6.0.12.10 types-requests==2.31.0.1 types-setuptools==68.0.0.2 -types-six==1.16.21.8 +types-six==1.16.21.9 types-ujson==5.7.0.5 -types-urllib3==1.26.25.13 +types-urllib3==1.26.25.14 typing_extensions==4.6.3 diff --git a/tests/wpt/tests/tools/requirements_tests.txt b/tests/wpt/tests/tools/requirements_tests.txt index 1376520bdb4..96e00c745dc 100644 --- a/tests/wpt/tests/tools/requirements_tests.txt +++ b/tests/wpt/tests/tools/requirements_tests.txt @@ -1,5 +1,5 @@ httpx[http2]==0.24.1 json-e==4.5.2 jsonschema==4.17.3 -pyyaml==6.0 -taskcluster==54.3.1 +pyyaml==6.0.1 +taskcluster==54.4.0 diff --git a/tests/wpt/tests/tools/webdriver/webdriver/bidi/modules/browsing_context.py b/tests/wpt/tests/tools/webdriver/webdriver/bidi/modules/browsing_context.py index 1de7cc0931c..b256bd1ae67 100644 --- a/tests/wpt/tests/tools/webdriver/webdriver/bidi/modules/browsing_context.py +++ b/tests/wpt/tests/tools/webdriver/webdriver/bidi/modules/browsing_context.py @@ -6,8 +6,7 @@ from ._module import BidiModule, command class BrowsingContext(BidiModule): @command - def activate(self, - context: str) -> Mapping[str, Any]: + def activate(self, context: str) -> Mapping[str, Any]: return {"context": context} @command diff --git a/tests/wpt/tests/tools/wptrunner/requirements.txt b/tests/wpt/tests/tools/wptrunner/requirements.txt index 64a475dd400..8e47b2f229a 100644 --- a/tests/wpt/tests/tools/wptrunner/requirements.txt +++ b/tests/wpt/tests/tools/wptrunner/requirements.txt @@ -7,4 +7,4 @@ packaging==23.1 pillow==9.5.0 requests==2.31.0 six==1.16.0 -urllib3==2.0.3 +urllib3==2.0.4 diff --git a/tests/wpt/tests/web-animations/animation-model/animation-types/property-list.js b/tests/wpt/tests/web-animations/animation-model/animation-types/property-list.js index 315687a4e1b..c4ef7937ba3 100644 --- a/tests/wpt/tests/web-animations/animation-model/animation-types/property-list.js +++ b/tests/wpt/tests/web-animations/animation-model/animation-types/property-list.js @@ -1282,7 +1282,7 @@ const gCSSProperties2 = { 'text-autospace': { // https://drafts.csswg.org/css-text-4/#text-spacing-property types: [ - { type: 'discrete', options: [ [ 'auto', 'no-autospace' ] ] } + { type: 'discrete', options: [ [ 'normal', 'no-autospace' ] ] } ] }, 'text-decoration-color': { diff --git a/tests/wpt/tests/webcodecs/per-frame-qp-encoding.https.any.js b/tests/wpt/tests/webcodecs/per-frame-qp-encoding.https.any.js index 3207fa8356c..81cc6c27d4f 100644 --- a/tests/wpt/tests/webcodecs/per-frame-qp-encoding.https.any.js +++ b/tests/wpt/tests/webcodecs/per-frame-qp-encoding.https.any.js @@ -28,6 +28,8 @@ function get_qp_range() { return {min: 1, max: 63}; case '?vp9_p2': return {min: 1, max: 63}; + case '?h264': + return {min: 1, max: 51}; } return null; } @@ -43,6 +45,9 @@ function set_qp(options, value) { case '?vp9_p2': options.vp9 = {quantizer: value}; return; + case '?h264': + options.avc = {quantizer: value}; + return; } } diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/capture_screenshot.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/capture_screenshot.py index 0ee4c8ed274..40497ce6ac7 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/capture_screenshot.py +++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/capture_screenshot.py @@ -8,12 +8,18 @@ from ... import get_device_pixel_ratio, get_viewport_dimensions @pytest.mark.asyncio -async def test_capture(bidi_session, top_context, inline, compare_png_bidi): +@pytest.mark.parametrize("activate", [True, False], + ids=["with activate", "without activate"]) +async def test_capture(bidi_session, top_context, inline, compare_png_bidi, + activate): expected_size = await get_physical_viewport_dimensions(bidi_session, top_context) await bidi_session.browsing_context.navigate( context=top_context["context"], url="about:blank", wait="complete" ) + if activate: + await bidi_session.browsing_context.activate( + context=top_context["context"]) reference_data = await bidi_session.browsing_context.capture_screenshot( context=top_context["context"]) assert png_dimensions(reference_data) == expected_size @@ -21,6 +27,9 @@ async def test_capture(bidi_session, top_context, inline, compare_png_bidi): await bidi_session.browsing_context.navigate( context=top_context["context"], url=inline("
foo
"), wait="complete" ) + if activate: + await bidi_session.browsing_context.activate( + context=top_context["context"]) data = await bidi_session.browsing_context.capture_screenshot( context=top_context["context"]) @@ -32,6 +41,9 @@ async def test_capture(bidi_session, top_context, inline, compare_png_bidi): await bidi_session.browsing_context.navigate( context=top_context["context"], url=inline("
foo
"), wait="complete" ) + if activate: + await bidi_session.browsing_context.activate( + context=top_context["context"]) new_data = await bidi_session.browsing_context.capture_screenshot( context=top_context["context"]) diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/invalid.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/invalid.py index bb6d054b916..885baf229d3 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/invalid.py +++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/invalid.py @@ -11,9 +11,10 @@ async def test_params_context_invalid_type(bidi_session, value): @pytest.mark.asyncio -async def test_invalid_frame(bidi_session, top_context, inline): +@pytest.mark.parametrize("value", ["", "somestring"]) +async def test_invalid_frame(bidi_session, value): with pytest.raises(error.NoSuchFrameException): - await bidi_session.browsing_context.capture_screenshot(context="_invalid_") + await bidi_session.browsing_context.capture_screenshot(context=value) @pytest.mark.asyncio diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/dom_content_loaded/dom_content_loaded.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/dom_content_loaded/dom_content_loaded.py index 9723ee4a4ed..c8e27ab31d1 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/dom_content_loaded/dom_content_loaded.py +++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/dom_content_loaded/dom_content_loaded.py @@ -37,41 +37,62 @@ async def test_unsubscribe(bidi_session, inline, top_context): remove_listener() -async def test_subscribe(bidi_session, subscribe_events, inline, new_tab, wait_for_event): +async def test_subscribe( + bidi_session, subscribe_events, inline, new_tab, wait_for_event +): await subscribe_events(events=[DOM_CONTENT_LOADED_EVENT]) on_entry = wait_for_event(DOM_CONTENT_LOADED_EVENT) url = inline("
foo
") - await bidi_session.browsing_context.navigate(context=new_tab["context"], url=url) + result = await bidi_session.browsing_context.navigate( + context=new_tab["context"], url=url + ) event = await on_entry - assert_navigation_info(event, {"context": new_tab["context"], "url": url}) + assert_navigation_info( + event, + { + "context": new_tab["context"], + "url": url, + "navigation": result["navigation"], + }, + ) -async def test_timestamp(bidi_session, current_time, subscribe_events, inline, new_tab, wait_for_event): +async def test_timestamp( + bidi_session, current_time, subscribe_events, inline, new_tab, wait_for_event +): await subscribe_events(events=[DOM_CONTENT_LOADED_EVENT]) time_start = await current_time() on_entry = wait_for_event(DOM_CONTENT_LOADED_EVENT) url = inline("
foo
") - await bidi_session.browsing_context.navigate(context=new_tab["context"], url=url) + result = await bidi_session.browsing_context.navigate( + context=new_tab["context"], url=url + ) event = await on_entry time_end = await current_time() assert_navigation_info( event, - {"context": new_tab["context"], "timestamp": int_interval(time_start, time_end)} + { + "context": new_tab["context"], + "navigation": result["navigation"], + "timestamp": int_interval(time_start, time_end), + }, ) -async def test_iframe(bidi_session, subscribe_events, new_tab, test_page, test_page_same_origin_frame): +async def test_iframe( + bidi_session, subscribe_events, new_tab, test_page, test_page_same_origin_frame +): events = [] async def on_event(method, data): # Filter out events for about:blank to avoid browser differences - if data["url"] != 'about:blank': + if data["url"] != "about:blank": events.append(data) remove_listener = bidi_session.add_event_listener( @@ -79,7 +100,7 @@ async def test_iframe(bidi_session, subscribe_events, new_tab, test_page, test_p ) await subscribe_events(events=[DOM_CONTENT_LOADED_EVENT]) - await bidi_session.browsing_context.navigate( + result = await bidi_session.browsing_context.navigate( context=new_tab["context"], url=test_page_same_origin_frame ) @@ -104,9 +125,17 @@ async def test_iframe(bidi_session, subscribe_events, new_tab, test_page, test_p assert_navigation_info( root_event, - {"context": root_info["context"], "url": test_page_same_origin_frame} + { + "context": root_info["context"], + "url": test_page_same_origin_frame, + "navigation": result["navigation"], + }, ) - assert_navigation_info(child_event, {"context": child_info["context"], "url": test_page}) + assert_navigation_info( + child_event, {"context": child_info["context"], "url": test_page} + ) + assert child_event["navigation"] is not None + assert child_event["navigation"] != root_event["navigation"] remove_listener() @@ -119,10 +148,15 @@ async def test_new_context(bidi_session, subscribe_events, wait_for_event, type_ new_context = await bidi_session.browsing_context.create(type_hint=type_hint) event = await on_entry - assert_navigation_info(event, {"context": new_context["context"], "url": "about:blank"}) + assert_navigation_info( + event, {"context": new_context["context"], "url": "about:blank"} + ) + assert event["navigation"] is not None -async def test_document_write(bidi_session, subscribe_events, top_context, wait_for_event): +async def test_document_write( + bidi_session, subscribe_events, inline, top_context, wait_for_event +): await subscribe_events(events=[DOM_CONTENT_LOADED_EVENT]) on_entry = wait_for_event(DOM_CONTENT_LOADED_EVENT) @@ -130,19 +164,31 @@ async def test_document_write(bidi_session, subscribe_events, top_context, wait_ await bidi_session.script.evaluate( expression="""document.open(); document.write("

Replaced

"); document.close();""", target=ContextTarget(top_context["context"]), - await_promise=False + await_promise=False, ) event = await on_entry - assert_navigation_info(event, {"context": top_context["context"]}) + + assert_navigation_info( + event, + {"context": top_context["context"]}, + ) + assert event["navigation"] is not None -async def test_page_with_base_tag(bidi_session, subscribe_events, inline, new_tab, wait_for_event): +async def test_page_with_base_tag( + bidi_session, subscribe_events, inline, new_tab, wait_for_event +): await subscribe_events(events=[DOM_CONTENT_LOADED_EVENT]) on_entry = wait_for_event(DOM_CONTENT_LOADED_EVENT) url = inline("""""") - await bidi_session.browsing_context.navigate(context=new_tab["context"], url=url) + result = await bidi_session.browsing_context.navigate( + context=new_tab["context"], url=url + ) event = await on_entry - assert_navigation_info(event, {"context": new_tab["context"], "url": url}) + assert_navigation_info( + event, + {"context": new_tab["context"], "navigation": result["navigation"], "url": url}, + ) diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/load/load.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/load/load.py index b4b174818cf..d15c23e8fdd 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/load/load.py +++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/load/load.py @@ -35,7 +35,9 @@ async def test_not_unsubscribed(bidi_session, inline, top_context): remove_listener() -async def test_subscribe(bidi_session, subscribe_events, inline, new_tab, wait_for_event): +async def test_subscribe( + bidi_session, subscribe_events, inline, new_tab, wait_for_event +): await subscribe_events(events=[CONTEXT_LOAD_EVENT]) on_entry = wait_for_event(CONTEXT_LOAD_EVENT) @@ -46,25 +48,35 @@ async def test_subscribe(bidi_session, subscribe_events, inline, new_tab, wait_f assert_navigation_info(event, {"context": new_tab["context"], "url": url}) -async def test_timestamp(bidi_session, current_time, subscribe_events, inline, new_tab, wait_for_event): +async def test_timestamp( + bidi_session, current_time, subscribe_events, inline, new_tab, wait_for_event +): await subscribe_events(events=[CONTEXT_LOAD_EVENT]) time_start = await current_time() on_entry = wait_for_event(CONTEXT_LOAD_EVENT) url = inline("
foo
") - await bidi_session.browsing_context.navigate(context=new_tab["context"], url=url) + result = await bidi_session.browsing_context.navigate( + context=new_tab["context"], url=url + ) event = await on_entry time_end = await current_time() assert_navigation_info( event, - {"context": new_tab["context"], "timestamp": int_interval(time_start, time_end)} + { + "context": new_tab["context"], + "navigation": result["navigation"], + "timestamp": int_interval(time_start, time_end), + }, ) -async def test_iframe(bidi_session, subscribe_events, new_tab, test_page, test_page_same_origin_frame): +async def test_iframe( + bidi_session, subscribe_events, new_tab, test_page, test_page_same_origin_frame +): events = [] async def on_event(method, data): @@ -73,7 +85,7 @@ async def test_iframe(bidi_session, subscribe_events, new_tab, test_page, test_p remove_listener = bidi_session.add_event_listener(CONTEXT_LOAD_EVENT, on_event) await subscribe_events(events=[CONTEXT_LOAD_EVENT]) - await bidi_session.browsing_context.navigate( + result = await bidi_session.browsing_context.navigate( context=new_tab["context"], url=test_page_same_origin_frame ) @@ -91,12 +103,21 @@ async def test_iframe(bidi_session, subscribe_events, new_tab, test_page, test_p child_info = root_info["children"][0] # First load event comes from iframe - assert_navigation_info(events[0], {"context": child_info["context"], "url": test_page}) + assert_navigation_info( + events[0], {"context": child_info["context"], "url": test_page} + ) assert_navigation_info( events[1], - {"context": root_info["context"], "url": test_page_same_origin_frame} + { + "context": root_info["context"], + "navigation": result["navigation"], + "url": test_page_same_origin_frame, + }, ) + assert events[0]["navigation"] is not None + assert events[0]["navigation"] != events[1]["navigation"] + remove_listener() @@ -108,10 +129,15 @@ async def test_new_context(bidi_session, subscribe_events, wait_for_event, type_ new_context = await bidi_session.browsing_context.create(type_hint=type_hint) event = await on_entry - assert_navigation_info(event, {"context": new_context["context"], "url": "about:blank"}) + assert_navigation_info( + event, {"context": new_context["context"], "url": "about:blank"} + ) + assert event["navigation"] is not None -async def test_document_write(bidi_session, subscribe_events, top_context, wait_for_event): +async def test_document_write( + bidi_session, subscribe_events, top_context, wait_for_event +): await subscribe_events(events=[CONTEXT_LOAD_EVENT]) on_entry = wait_for_event(CONTEXT_LOAD_EVENT) @@ -119,19 +145,31 @@ async def test_document_write(bidi_session, subscribe_events, top_context, wait_ await bidi_session.script.evaluate( expression="""document.open(); document.write("

Replaced

"); document.close();""", target=ContextTarget(top_context["context"]), - await_promise=False + await_promise=False, ) event = await on_entry - assert_navigation_info(event, {"context": top_context["context"]}) + + assert_navigation_info( + event, + {"context": top_context["context"]}, + ) + assert event["navigation"] is not None -async def test_page_with_base_tag(bidi_session, subscribe_events, inline, new_tab, wait_for_event): +async def test_page_with_base_tag( + bidi_session, subscribe_events, inline, new_tab, wait_for_event +): await subscribe_events(events=[CONTEXT_LOAD_EVENT]) on_entry = wait_for_event(CONTEXT_LOAD_EVENT) url = inline("""""") - await bidi_session.browsing_context.navigate(context=new_tab["context"], url=url) + result = await bidi_session.browsing_context.navigate( + context=new_tab["context"], url=url + ) event = await on_entry - assert_navigation_info(event, {"context": new_tab["context"], "url": url}) + assert_navigation_info( + event, + {"context": new_tab["context"], "navigation": result["navigation"], "url": url}, + ) diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/__init__.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/__init__.py index 9b7d28f6dac..c2bf7558f4f 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/__init__.py +++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/__init__.py @@ -2,6 +2,8 @@ import pytest from webdriver.bidi.error import UnknownErrorException +from ... import any_string + async def navigate_and_assert(bidi_session, context, url, wait="complete", expected_error=False): if expected_error: @@ -15,6 +17,7 @@ async def navigate_and_assert(bidi_session, context, url, wait="complete", expec context=context['context'], url=url, wait=wait ) assert result["url"] == url + any_string(result["navigation"]) contexts = await bidi_session.browsing_context.get_tree( root=context['context'] diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/hash.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/hash.py index d31c3f9a6eb..7dc520c4e33 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/hash.py +++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/hash.py @@ -1,6 +1,7 @@ import pytest from . import navigate_and_assert +from ... import any_string pytestmark = pytest.mark.asyncio @@ -60,3 +61,30 @@ async def test_navigate_in_iframe(bidi_session, inline, new_tab): url_after = f"{frame_start_url}#foo" await navigate_and_assert(bidi_session, frame, url_after) + + +async def test_navigate_unique_navigation_id(bidi_session, inline, new_tab): + url = inline("
foo
") + + result = await bidi_session.browsing_context.navigate( + context=new_tab["context"], url=url, wait="complete" + ) + any_string(result["navigation"]) + + hash_result = await bidi_session.browsing_context.navigate( + context=new_tab["context"], url=f"{url}#foo", wait="complete" + ) + any_string(hash_result["navigation"]) + assert hash_result["navigation"] != result["navigation"] + + other_hash_result = await bidi_session.browsing_context.navigate( + context=new_tab["context"], url=f"{url}#bar", wait="complete" + ) + any_string(other_hash_result["navigation"]) + assert other_hash_result["navigation"] != hash_result["navigation"] + + same_hash_result = await bidi_session.browsing_context.navigate( + context=new_tab["context"], url=f"{url}#bar", wait="complete" + ) + any_string(same_hash_result["navigation"]) + assert same_hash_result["navigation"] != other_hash_result["navigation"] diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/navigate.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/navigate.py index 14245702812..dedeeb98288 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/navigate.py +++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/navigate.py @@ -3,6 +3,7 @@ import asyncio import pytest from . import navigate_and_assert +from ... import any_string pytestmark = pytest.mark.asyncio @@ -13,7 +14,7 @@ async def test_payload(bidi_session, inline, new_tab): context=new_tab["context"], url=url ) - assert "navigation" in result + any_string(result["navigation"]) assert result["url"] == url @@ -69,6 +70,10 @@ async def test_interactive_simultaneous_navigation(bidi_session, inline, new_tab assert contexts[0]["children"][0]["url"] == frame1_url assert contexts[0]["children"][1]["url"] == frame2_url + any_string(frame1_result["navigation"]) + any_string(frame2_result["navigation"]) + assert frame1_result["navigation"] != frame2_result["navigation"] + async def test_relative_url(bidi_session, new_tab, url): url_before = url( diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/__init__.py b/tests/wpt/tests/webdriver/tests/bidi/network/__init__.py index 92e88d4e236..19a4a69b4c5 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/network/__init__.py +++ b/tests/wpt/tests/webdriver/tests/bidi/network/__init__.py @@ -10,8 +10,13 @@ from .. import ( ) -def assert_cookies(request_cookies, expected_cookies): - assert len(request_cookies) == len(expected_cookies) +def assert_bytes_value(bytes_value): + assert bytes_value["type"] in ["string", "base64"] + any_string(bytes_value["value"]) + + +def assert_cookies(event_cookies, expected_cookies): + assert len(event_cookies) == len(expected_cookies) # Simple helper to find a cookie by key and value only. def match_cookie(cookie, expected): @@ -22,15 +27,15 @@ def assert_cookies(request_cookies, expected_cookies): return True for cookie in expected_cookies: - assert next(c for c in request_cookies if match_cookie(c, cookie)) is not None + assert next(c for c in event_cookies if match_cookie(c, cookie)) is not None -def assert_headers(request_headers, expected_headers): +def assert_headers(event_headers, expected_headers): # The browser sets request headers, only assert that the expected headers # are included in the request's headers. - assert len(request_headers) >= len(expected_headers) + assert len(event_headers) >= len(expected_headers) for header in expected_headers: - assert next(h for h in request_headers if header == h) is not None + assert next(h for h in event_headers if header == h) is not None def assert_timing_info(timing_info): @@ -71,6 +76,9 @@ def assert_request_data(request_data, expected_request): assert_timing_info(request_data["timings"]) + for cookie in request_data["cookies"]: + assert_bytes_value(cookie["value"]) + if "cookies" in expected_request: assert_cookies(request_data["cookies"], expected_request["cookies"]) # While recursive_compare tolerates missing entries in dict, arrays @@ -79,6 +87,9 @@ def assert_request_data(request_data, expected_request): # assert for each and then delete it before using recursive_compare. del expected_request["cookies"] + for header in request_data["headers"]: + assert_bytes_value(header["value"]) + if "headers" in expected_request: assert_headers(request_data["headers"], expected_request["headers"]) # Remove headers before using recursive_compare, see comment for cookies @@ -90,6 +101,7 @@ def assert_request_data(request_data, expected_request): def assert_base_parameters( event, context=None, + navigation=None, redirect_count=None, expected_request=None, ): @@ -107,6 +119,9 @@ def assert_base_parameters( if context is not None: assert event["context"] == context + if navigation is not None: + assert event["navigation"] == navigation + if redirect_count is not None: assert event["redirectCount"] == redirect_count @@ -118,6 +133,7 @@ def assert_base_parameters( def assert_before_request_sent_event( event, context=None, + navigation=None, redirect_count=None, expected_request=None, ): @@ -129,6 +145,7 @@ def assert_before_request_sent_event( assert_base_parameters( event, context=context, + navigation=navigation, redirect_count=redirect_count, expected_request=expected_request, ) @@ -152,6 +169,12 @@ def assert_response_data(response_data, expected_response): response_data, ) + for header in response_data["headers"]: + assert_bytes_value(header["value"]) + + for header in response_data["headers"]: + assert_bytes_value(header["value"]) + if "headers" in expected_response: assert_headers(response_data["headers"], expected_response["headers"]) # Remove headers before using recursive_compare, see comment for cookies @@ -164,6 +187,7 @@ def assert_response_data(response_data, expected_response): def assert_response_event( event, context=None, + navigation=None, redirect_count=None, expected_request=None, expected_response=None, @@ -177,6 +201,7 @@ def assert_response_event( assert_base_parameters( event, context=context, + navigation=navigation, redirect_count=redirect_count, expected_request=expected_request, ) diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/before_request_sent/before_request_sent.py b/tests/wpt/tests/webdriver/tests/bidi/network/before_request_sent/before_request_sent.py index d1a9269729f..04e70bf0a7d 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/network/before_request_sent/before_request_sent.py +++ b/tests/wpt/tests/webdriver/tests/bidi/network/before_request_sent/before_request_sent.py @@ -62,7 +62,7 @@ async def test_subscribe_status(bidi_session, top_context, wait_for_event, url, @pytest.mark.asyncio async def test_load_page_twice( - bidi_session, top_context, wait_for_event, url, fetch, setup_network_test + bidi_session, top_context, wait_for_event, url, setup_network_test ): html_url = url(PAGE_EMPTY_HTML) @@ -86,6 +86,45 @@ async def test_load_page_twice( ) +@pytest.mark.asyncio +async def test_navigation_id( + bidi_session, top_context, wait_for_event, url, fetch, setup_network_test +): + html_url = url(PAGE_EMPTY_HTML) + + network_events = await setup_network_test(events=["network.beforeRequestSent"]) + events = network_events["network.beforeRequestSent"] + + on_before_request_sent = wait_for_event("network.beforeRequestSent") + result = await bidi_session.browsing_context.navigate( + context=top_context["context"], + url=html_url, + wait="complete", + ) + await on_before_request_sent + + assert len(events) == 1 + expected_request = {"method": "GET", "url": html_url} + assert_before_request_sent_event( + events[0], expected_request=expected_request, navigation=result["navigation"] + ) + assert events[0]["navigation"] is not None + + text_url = url(PAGE_EMPTY_TEXT) + on_before_request_sent = wait_for_event("network.beforeRequestSent") + await fetch(text_url, method="GET") + await on_before_request_sent + + assert len(events) == 2 + expected_request = {"method": "GET", "url": text_url} + assert_before_request_sent_event( + events[1], + expected_request=expected_request, + ) + # Check that requests not related to a navigation have no navigation id. + assert events[1]["navigation"] is None + + @pytest.mark.parametrize( "method", [ @@ -135,7 +174,7 @@ async def test_request_headers( assert len(events) == 1 expected_request = { - "headers": ({"name": "foo", "value": "bar"},), + "headers": ({"name": "foo", "value": {"type": "string", "value": "bar"}},), "method": "GET", "url": text_url, } @@ -167,7 +206,7 @@ async def test_request_cookies( assert len(events) == 1 expected_request = { - "cookies": ({"name": "foo", "value": "bar"},), + "cookies": ({"name": "foo", "value": {"type": "string", "value": "bar"}},), "method": "GET", "url": text_url, } @@ -191,8 +230,8 @@ async def test_request_cookies( expected_request = { "cookies": ( - {"name": "foo", "value": "bar"}, - {"name": "fuu", "value": "baz"}, + {"name": "foo", "value": {"type": "string", "value": "bar"}}, + {"name": "fuu", "value": {"type": "string", "value": "baz"}}, ), "method": "GET", "url": text_url, @@ -248,7 +287,7 @@ async def test_redirect_http_equiv( network_events = await setup_network_test(events=["network.beforeRequestSent"]) events = network_events["network.beforeRequestSent"] - await bidi_session.browsing_context.navigate( + result = await bidi_session.browsing_context.navigate( context=top_context["context"], url=http_equiv_url, wait="complete", @@ -265,6 +304,7 @@ async def test_redirect_http_equiv( events[0], expected_request=expected_request, redirect_count=0, + navigation=result["navigation"], ) # http-equiv redirect should not be considered as a redirect: redirect_count # should be 0. @@ -277,3 +317,46 @@ async def test_redirect_http_equiv( # Check that the http-equiv redirect request has a different requestId assert events[0]["request"]["request"] != events[1]["request"]["request"] + + # Check that the http-equiv redirect request also has a navigation id set, + # but different from the original request. + assert events[1]["navigation"] is not None + assert events[1]["navigation"] != events[0]["navigation"] + + +@pytest.mark.asyncio +async def test_redirect_navigation( + bidi_session, top_context, wait_for_event, url, setup_network_test +): + html_url = url(PAGE_EMPTY_HTML) + redirect_url = url( + f"/webdriver/tests/support/http_handlers/redirect.py?location={html_url}" + ) + + network_events = await setup_network_test(events=["network.beforeRequestSent"]) + events = network_events["network.beforeRequestSent"] + + result = await bidi_session.browsing_context.navigate( + context=top_context["context"], + url=redirect_url, + wait="complete", + ) + + assert len(events) == 2 + expected_request = {"method": "GET", "url": redirect_url} + assert_before_request_sent_event( + events[0], + expected_request=expected_request, + navigation=result["navigation"], + redirect_count=0, + ) + expected_request = {"method": "GET", "url": html_url} + assert_before_request_sent_event( + events[1], + expected_request=expected_request, + navigation=result["navigation"], + redirect_count=1, + ) + + # Check that both requests share the same requestId + assert events[0]["request"]["request"] == events[1]["request"]["request"] diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/combined/network_events.py b/tests/wpt/tests/webdriver/tests/bidi/network/combined/network_events.py index f4af23bfd2f..9eb79dd4231 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/network/combined/network_events.py +++ b/tests/wpt/tests/webdriver/tests/bidi/network/combined/network_events.py @@ -11,6 +11,53 @@ PAGE_EMPTY_HTML = "/webdriver/tests/bidi/network/support/empty.html" PAGE_EMPTY_TEXT = "/webdriver/tests/bidi/network/support/empty.txt" +@pytest.mark.asyncio +async def test_same_navigation_id( + bidi_session, top_context, wait_for_event, url, setup_network_test +): + network_events = await setup_network_test( + events=[ + "network.beforeRequestSent", + "network.responseStarted", + "network.responseCompleted", + ], + contexts=[top_context["context"]], + ) + + html_url = url(PAGE_EMPTY_HTML) + on_response_completed = wait_for_event("network.responseCompleted") + result = await bidi_session.browsing_context.navigate( + context=top_context["context"], + url=html_url, + wait="complete", + ) + await on_response_completed + + assert len(network_events["network.beforeRequestSent"]) == 1 + assert len(network_events["network.responseStarted"]) == 1 + assert len(network_events["network.responseCompleted"]) == 1 + expected_request = {"method": "GET", "url": html_url} + expected_response = {"url": html_url} + assert_before_request_sent_event( + network_events["network.beforeRequestSent"][0], + expected_request=expected_request, + context=top_context["context"], + navigation=result["navigation"], + ) + assert_response_event( + network_events["network.responseStarted"][0], + expected_response=expected_response, + context=top_context["context"], + navigation=result["navigation"], + ) + assert_response_event( + network_events["network.responseCompleted"][0], + expected_response=expected_response, + context=top_context["context"], + navigation=result["navigation"], + ) + + @pytest.mark.asyncio async def test_same_request_id(wait_for_event, url, setup_network_test, fetch): network_events = await setup_network_test( diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/response_completed/response_completed.py b/tests/wpt/tests/webdriver/tests/bidi/network/response_completed/response_completed.py index 1043f52cb72..fcd5c47d8e5 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/network/response_completed/response_completed.py +++ b/tests/wpt/tests/webdriver/tests/bidi/network/response_completed/response_completed.py @@ -97,7 +97,7 @@ async def test_load_page_twice( events = network_events[RESPONSE_COMPLETED_EVENT] on_response_completed = wait_for_event(RESPONSE_COMPLETED_EVENT) - await bidi_session.browsing_context.navigate( + result = await bidi_session.browsing_context.navigate( context=top_context["context"], url=html_url, wait="complete", @@ -118,6 +118,7 @@ async def test_load_page_twice( events[0], expected_request=expected_request, expected_response=expected_response, + navigation=result["navigation"], redirect_count=0, ) @@ -159,9 +160,7 @@ async def test_response_status( @pytest.mark.asyncio -async def test_response_headers( - wait_for_event, url, fetch, setup_network_test -): +async def test_response_headers(wait_for_event, url, fetch, setup_network_test): headers_url = url( "/webdriver/tests/support/http_handlers/headers.py?header=foo:bar&header=baz:biz" ) @@ -183,8 +182,8 @@ async def test_response_headers( "status": 200, "statusText": "OK", "headers": ( - {"name": "foo", "value": "bar"}, - {"name": "baz", "value": "biz"}, + {"name": "foo", "value": {"type": "string", "value": "bar"}}, + {"name": "baz", "value": {"type": "string", "value": "biz"}}, ), "protocol": "http/1.1", } @@ -207,7 +206,7 @@ async def test_response_headers( ) @pytest.mark.asyncio async def test_response_mime_type_file( - url, wait_for_event, fetch, setup_network_test, page_url, mime_type + url, wait_for_event, fetch, setup_network_test, page_url, mime_type ): network_events = await setup_network_test(events=[RESPONSE_COMPLETED_EVENT]) events = network_events[RESPONSE_COMPLETED_EVENT] @@ -285,7 +284,7 @@ async def test_redirect_document( protocol=protocol, parameters=parameters, ) - await bidi_session.browsing_context.navigate( + first_navigate = await bidi_session.browsing_context.navigate( context=new_tab["context"], url=initial_url, wait="complete", @@ -296,7 +295,7 @@ async def test_redirect_document( redirect_url = url( f"/webdriver/tests/support/http_handlers/redirect.py?location={quote(initial_url)}" ) - await bidi_session.browsing_context.navigate( + second_navigate = await bidi_session.browsing_context.navigate( context=new_tab["context"], url=redirect_url, wait="complete", @@ -311,15 +310,24 @@ async def test_redirect_document( expected_request = {"method": "GET", "url": initial_url} assert_response_event( - events[0], expected_request=expected_request, redirect_count=0 + events[0], + expected_request=expected_request, + redirect_count=0, + navigation=first_navigate["navigation"], ) expected_request = {"method": "GET", "url": redirect_url} assert_response_event( - events[1], expected_request=expected_request, redirect_count=0 + events[1], + expected_request=expected_request, + redirect_count=0, + navigation=second_navigate["navigation"], ) expected_request = {"method": "GET", "url": initial_url} assert_response_event( - events[2], expected_request=expected_request, redirect_count=1 + events[2], + expected_request=expected_request, + redirect_count=1, + navigation=second_navigate["navigation"], ) # Check that the last 2 requests share the same request id diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/response_started/response_started.py b/tests/wpt/tests/webdriver/tests/bidi/network/response_started/response_started.py index 2d6c1c83543..d3a84fd6f97 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/network/response_started/response_started.py +++ b/tests/wpt/tests/webdriver/tests/bidi/network/response_started/response_started.py @@ -79,7 +79,7 @@ async def test_load_page_twice( events = network_events[RESPONSE_STARTED_EVENT] on_response_started = wait_for_event(RESPONSE_STARTED_EVENT) - await bidi_session.browsing_context.navigate( + result = await bidi_session.browsing_context.navigate( context=top_context["context"], url=html_url, wait="complete", @@ -100,6 +100,7 @@ async def test_load_page_twice( events[0], expected_request=expected_request, expected_response=expected_response, + navigation=result["navigation"], redirect_count=0, ) @@ -163,8 +164,8 @@ async def test_response_headers( "status": 200, "statusText": "OK", "headers": ( - {"name": "foo", "value": "bar"}, - {"name": "baz", "value": "biz"}, + {"name": "foo", "value": {"type": "string", "value": "bar"}}, + {"name": "baz", "value": {"type": "string", "value": "biz"}}, ), "protocol": "http/1.1", } diff --git a/tests/wpt/tests/webdriver/tests/bidi/script/__init__.py b/tests/wpt/tests/webdriver/tests/bidi/script/__init__.py index caa1fe514aa..901b412458b 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/script/__init__.py +++ b/tests/wpt/tests/webdriver/tests/bidi/script/__init__.py @@ -172,7 +172,16 @@ REMOTE_VALUES: list[tuple[str, dict]] = [ ("new WeakMap()", {"type": "weakmap", },), ("new WeakSet()", {"type": "weakset", },), ("new Error('SOME_ERROR_TEXT')", {"type": "error"},), - ("([1, 2][Symbol.iterator]())", { + ("[1, 2][Symbol.iterator]()", { + "type": "iterator", + }), + ("'mystring'[Symbol.iterator]()", { + "type": "iterator", + }), + ("(new Set([1,2]))[Symbol.iterator]()", { + "type": "iterator", + }), + ("(new Map([[1,2]]))[Symbol.iterator]()", { "type": "iterator", }), ("new Proxy({}, {})", { diff --git a/tests/wpt/tests/webdriver/tests/bidi/script/call_function/remote_values.py b/tests/wpt/tests/webdriver/tests/bidi/script/call_function/remote_values.py index 88c8c793bec..eda31bb4bee 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/script/call_function/remote_values.py +++ b/tests/wpt/tests/webdriver/tests/bidi/script/call_function/remote_values.py @@ -8,7 +8,10 @@ pytestmark = pytest.mark.asyncio @pytest.mark.parametrize("await_promise", [True, False]) -@pytest.mark.parametrize("expression, expected", REMOTE_VALUES) +@pytest.mark.parametrize("expression, expected", [ + remote_value + for remote_value in REMOTE_VALUES if remote_value[1]["type"] != "promise" +]) async def test_remote_values(bidi_session, top_context, await_promise, expression, expected): function_declaration = f"()=>{expression}" @@ -21,25 +24,18 @@ async def test_remote_values(bidi_session, top_context, await_promise, target=ContextTarget(top_context["context"]), serialization_options=SerializationOptions(max_object_depth=1), ) - recursive_compare(expected, result) -async def test_remote_value_promise_await(bidi_session, top_context): +@pytest.mark.parametrize("await_promise", [True, False]) +async def test_remote_value_promise(bidi_session, top_context, await_promise): result = await bidi_session.script.call_function( function_declaration="()=>Promise.resolve(42)", - await_promise=True, + await_promise=await_promise, target=ContextTarget(top_context["context"]), ) - assert result == {"type": "number", "value": 42} - - -async def test_remote_value_promise_no_await(bidi_session, top_context): - result = await bidi_session.script.call_function( - function_declaration="()=>Promise.resolve(42)", - await_promise=False, - target=ContextTarget(top_context["context"]), - ) - - assert result == {"type": "promise"} + if await_promise: + assert result == {"type": "number", "value": 42} + else: + assert result == {"type": "promise"} diff --git a/tests/wpt/tests/webrtc-encoded-transform/routines.js b/tests/wpt/tests/webrtc-encoded-transform/routines.js index 4db7f39621c..0d3e2b9b286 100644 --- a/tests/wpt/tests/webrtc-encoded-transform/routines.js +++ b/tests/wpt/tests/webrtc-encoded-transform/routines.js @@ -1,3 +1,64 @@ +async function getNextMessage(portOrWorker) { + return new Promise(resolve => { + const resolveWithData = event => resolve(event.data); + const rejectWithData = event => reject(event.data); + portOrWorker.addEventListener('message', resolveWithData, {once: true}); + portOrWorker.addEventListener('messageerror', rejectWithData, {once: true}); + }); +} + + +async function postMethod(port, method, options) { + port.postMessage(Object.assign({method}, options)); + return await getNextMessage(port); +} + +async function createWorker(script) { + const worker = new Worker(script); + const data = await getNextMessage(worker); + assert_equals(data, "registered"); + return worker; +} + +async function createTransform(worker) { + const channel = new MessageChannel; + const transform = new RTCRtpScriptTransform(worker, {name:'MockRTCRtpTransform', port: channel.port2}, [channel.port2]); + transform.port = channel.port1; + channel.port1.start(); + assert_equals(await getNextMessage(channel.port1), "started"); + return transform; +} + +async function createTransforms(script) { + const worker = await createWorker(script) + return Promise.all([createTransform(worker), createTransform(worker)]); +} + +async function createConnectionWithTransform(test, script, gumOptions) { + const [senderTransform, receiverTransform] = await createTransforms(script); + + const localStream = await navigator.mediaDevices.getUserMedia(gumOptions); + + let senderPc, receiverPc, sender, receiver; + + await createConnections(test, (firstConnection) => { + senderPc = firstConnection; + sender = firstConnection.addTrack(localStream.getTracks()[0], localStream); + sender.transform = senderTransform; + }, (secondConnection) => { + receiverPc = secondConnection; + secondConnection.ontrack = (trackEvent) => { + receiver = trackEvent.receiver; + receiver.transform = receiverTransform; + }; + }); + + assert_true(!!sender, "sender should be set"); + assert_true(!!receiver, "receiver should be set"); + + return {sender, receiver, senderPc, receiverPc}; +} + async function createConnections(test, setupLocalConnection, setupRemoteConnection, doNotCloseAutmoatically) { const localConnection = new RTCPeerConnection(); const remoteConnection = new RTCPeerConnection(); diff --git a/tests/wpt/tests/webrtc-encoded-transform/script-change-transform.https.html b/tests/wpt/tests/webrtc-encoded-transform/script-change-transform.https.html index 9ec82a9484f..1bb0398dc5a 100644 --- a/tests/wpt/tests/webrtc-encoded-transform/script-change-transform.https.html +++ b/tests/wpt/tests/webrtc-encoded-transform/script-change-transform.https.html @@ -37,7 +37,6 @@ promise_test(async (test) => { const stream = await new Promise((resolve, reject) => { createConnections(test, (firstConnection) => { sender = firstConnection.addTrack(localStream.getVideoTracks()[0], localStream); - firstConnection.getTransceivers()[0].setCodecPreferences([{mimeType: "video/VP8", clockRate: 90000}]); sender.transform = senderTransform1; }, (secondConnection) => { secondConnection.ontrack = (trackEvent) => { diff --git a/tests/wpt/tests/webrtc-encoded-transform/script-metadata-transform-worker.js b/tests/wpt/tests/webrtc-encoded-transform/script-metadata-transform-worker.js index 03ba1f4ee6e..40f7e547d79 100644 --- a/tests/wpt/tests/webrtc-encoded-transform/script-metadata-transform-worker.js +++ b/tests/wpt/tests/webrtc-encoded-transform/script-metadata-transform-worker.js @@ -4,6 +4,21 @@ onrtctransform = (event) => { transformer.reader = transformer.readable.getReader(); transformer.writer = transformer.writable.getWriter(); + async function waitForDetachAndPostMetadata(frame) { + while (true) { + if (frame.data.byteLength == 0) { + // frame.data has been detached! Verify metadata is still there. + self.postMessage({ + name: `${transformer.options.name} after write`, + timestamp: frame.timestamp, type: frame.type, + metadata: frame.getMetadata() + }); + return; + } + await new Promise(r => setTimeout(r, 100)); + } + } + let isFirstFrame = true; function process(transformer) { @@ -13,7 +28,13 @@ onrtctransform = (event) => { if (isFirstFrame) { isFirstFrame = false; - self.postMessage({ name: transformer.options.name, timestamp: chunk.value.timestamp, metadata: chunk.value.getMetadata() }); + self.postMessage({ + name: transformer.options.name, + timestamp: chunk.value.timestamp, + type: chunk.value.type, + metadata: chunk.value.getMetadata() + }); + waitForDetachAndPostMetadata(chunk.value); } transformer.writer.write(chunk.value); process(transformer); diff --git a/tests/wpt/tests/webrtc-encoded-transform/script-metadata-transform.https.html b/tests/wpt/tests/webrtc-encoded-transform/script-metadata-transform.https.html index c565caba7d4..11c88b46936 100644 --- a/tests/wpt/tests/webrtc-encoded-transform/script-metadata-transform.https.html +++ b/tests/wpt/tests/webrtc-encoded-transform/script-metadata-transform.https.html @@ -1,16 +1,17 @@ - - - + + + + - - + + diff --git a/tests/wpt/tests/webrtc-encoded-transform/script-transform-generateKeyFrame-simulcast.https.html b/tests/wpt/tests/webrtc-encoded-transform/script-transform-generateKeyFrame-simulcast.https.html new file mode 100644 index 00000000000..4174aaf24a1 --- /dev/null +++ b/tests/wpt/tests/webrtc-encoded-transform/script-transform-generateKeyFrame-simulcast.https.html @@ -0,0 +1,136 @@ + + + + + RTCRtpScriptTransformer.generateKeyFrame simulcast tests + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/webrtc-encoded-transform/script-transform-generateKeyFrame.https.html b/tests/wpt/tests/webrtc-encoded-transform/script-transform-generateKeyFrame.https.html new file mode 100644 index 00000000000..348902ea36c --- /dev/null +++ b/tests/wpt/tests/webrtc-encoded-transform/script-transform-generateKeyFrame.https.html @@ -0,0 +1,229 @@ + + + + + RTCRtpScriptTransformer.generateKeyFrame tests + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/webrtc-encoded-transform/script-transform-generateKeyFrame.js b/tests/wpt/tests/webrtc-encoded-transform/script-transform-generateKeyFrame.js new file mode 100644 index 00000000000..5e68ee1fb9b --- /dev/null +++ b/tests/wpt/tests/webrtc-encoded-transform/script-transform-generateKeyFrame.js @@ -0,0 +1,70 @@ +onrtctransform = event => { + const transformer = event.transformer; + let keyFrameCount = 0; + let gotFrame; + + transformer.options.port.onmessage = event => { + const {method, rid} = event.data; + // Maybe refactor to have transaction ids? + if (method == 'generateKeyFrame') { + generateKeyFrame(rid); + } else if (method == 'waitForFrame') { + waitForFrame(); + } + } + + async function rejectInMs(timeout) { + return new Promise((_, reject) => { + const rejectWithTimeout = () => { + reject(new DOMException(`Timed out after waiting for ${timeout} ms`, + 'TimeoutError')); + }; + setTimeout(rejectWithTimeout, timeout); + }); + } + + async function generateKeyFrame(rid) { + try { + const timestamp = await Promise.race([transformer.generateKeyFrame(rid), rejectInMs(8000)]); + transformer.options.port.postMessage({result: 'success', value: timestamp, count: keyFrameCount}); + } catch (e) { + // TODO: This does not work if we send e.name, why? + transformer.options.port.postMessage({result: 'failure', value: `${e.name}`, message: `${e.message}`}); + } + } + + async function waitForFrame() { + try { + await Promise.race([new Promise(r => gotFrameCallback = r), rejectInMs(8000)]); + transformer.options.port.postMessage('got frame'); + } catch (e) { + // TODO: This does not work if we send e.name, why? + transformer.options.port.postMessage({result: 'failure', value: `${e.name}`, message: `${e.message}`}); + } + } + + transformer.options.port.postMessage('started'); + transformer.reader = transformer.readable.getReader(); + transformer.writer = transformer.writable.getWriter(); + + function process(transformer) + { + transformer.reader.read().then(chunk => { + if (chunk.done) + return; + if (chunk.value instanceof RTCEncodedVideoFrame) { + if (chunk.value.type == 'key') { + keyFrameCount++; + } + } + if (gotFrameCallback) { + gotFrameCallback(); + } + transformer.writer.write(chunk.value); + process(transformer); + }); + } + + process(transformer); +}; +self.postMessage('registered'); diff --git a/tests/wpt/tests/webrtc-encoded-transform/script-transform-sendKeyFrameRequest.https.html b/tests/wpt/tests/webrtc-encoded-transform/script-transform-sendKeyFrameRequest.https.html new file mode 100644 index 00000000000..51b797eb683 --- /dev/null +++ b/tests/wpt/tests/webrtc-encoded-transform/script-transform-sendKeyFrameRequest.https.html @@ -0,0 +1,110 @@ + + + + + RTCRtpScriptTransformer.sendKeyFrameRequest tests + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/webrtc-encoded-transform/script-transform-sendKeyFrameRequest.js b/tests/wpt/tests/webrtc-encoded-transform/script-transform-sendKeyFrameRequest.js new file mode 100644 index 00000000000..361d7ce0235 --- /dev/null +++ b/tests/wpt/tests/webrtc-encoded-transform/script-transform-sendKeyFrameRequest.js @@ -0,0 +1,63 @@ +onrtctransform = event => { + const transformer = event.transformer; + let gotFrame; + + transformer.options.port.onmessage = event => { + const {method} = event.data; + if (method == 'sendKeyFrameRequest') { + sendKeyFrameRequest(); + } else if (method == 'waitForFrame') { + waitForFrame(); + } + } + + async function rejectInMs(timeout) { + return new Promise((_, reject) => { + const rejectWithTimeout = () => { + reject(new DOMException(`Timed out after waiting for ${timeout} ms`, + 'TimeoutError')); + }; + setTimeout(rejectWithTimeout, timeout); + }); + } + + async function sendKeyFrameRequest() { + try { + await Promise.race([transformer.sendKeyFrameRequest(), rejectInMs(8000)]);; + transformer.options.port.postMessage('success'); + } catch (e) { + // TODO: This does not work if we send e.name, why? + transformer.options.port.postMessage(`failure: ${e.name}`); + } + } + + async function waitForFrame() { + try { + await Promise.race([new Promise(r => gotFrameCallback = r), rejectInMs(8000)]); + transformer.options.port.postMessage('got frame'); + } catch (e) { + // TODO: This does not work if we send e.name, why? + transformer.options.port.postMessage({result: 'failure', value: `${e.name}`, message: `${e.message}`}); + } + } + + transformer.options.port.postMessage('started'); + transformer.reader = transformer.readable.getReader(); + transformer.writer = transformer.writable.getWriter(); + + function process(transformer) + { + transformer.reader.read().then(chunk => { + if (chunk.done) + return; + if (gotFrameCallback) { + gotFrameCallback(); + } + transformer.writer.write(chunk.value); + process(transformer); + }); + } + + process(transformer); +}; +self.postMessage('registered'); diff --git a/tests/wpt/tests/webrtc-encoded-transform/script-transform-worker.js b/tests/wpt/tests/webrtc-encoded-transform/script-transform-worker.js index 5ea99cd2bf7..88efb9c6a38 100644 --- a/tests/wpt/tests/webrtc-encoded-transform/script-transform-worker.js +++ b/tests/wpt/tests/webrtc-encoded-transform/script-transform-worker.js @@ -1,8 +1,12 @@ onrtctransform = (event) => { const transformer = event.transformer; - transformer.options.port.onmessage = (event) => transformer.options.port.postMessage(event.data); + transformer.options.port.onmessage = (event) => { + if (event.data == "ping") { + transformer.options.port.postMessage("pong"); + } + }; - self.postMessage("started"); + transformer.options.port.postMessage("started"); transformer.reader = transformer.readable.getReader(); transformer.writer = transformer.writable.getWriter(); @@ -11,10 +15,14 @@ onrtctransform = (event) => { transformer.reader.read().then(chunk => { if (chunk.done) return; - if (chunk.value instanceof RTCEncodedVideoFrame) - self.postMessage("video chunk"); + if (chunk.value instanceof RTCEncodedVideoFrame) { + transformer.options.port.postMessage("video chunk"); + if (chunk.value.type == "key") { + transformer.options.port.postMessage("video keyframe"); + } + } else if (chunk.value instanceof RTCEncodedAudioFrame) - self.postMessage("audio chunk"); + transformer.options.port.postMessage("audio chunk"); transformer.writer.write(chunk.value); process(transformer); }); diff --git a/tests/wpt/tests/webrtc-encoded-transform/script-transform.https.html b/tests/wpt/tests/webrtc-encoded-transform/script-transform.https.html index e02982f4703..491e917e861 100644 --- a/tests/wpt/tests/webrtc-encoded-transform/script-transform.https.html +++ b/tests/wpt/tests/webrtc-encoded-transform/script-transform.https.html @@ -13,140 +13,47 @@ diff --git a/tests/wpt/tests/webrtc/simulcast/setParameters-active.https.html b/tests/wpt/tests/webrtc/simulcast/setParameters-active.https.html index dbe162c610e..54191059a06 100644 --- a/tests/wpt/tests/webrtc/simulcast/setParameters-active.https.html +++ b/tests/wpt/tests/webrtc/simulcast/setParameters-active.https.html @@ -12,14 +12,16 @@