From 8ea5658199312955a4176ea8bcbb890b19c36d58 Mon Sep 17 00:00:00 2001 From: WPT Sync Bot Date: Thu, 20 Sep 2018 21:31:18 -0400 Subject: [PATCH] Update web-platform-tests to revision 50ff4f970fd8592a9f436d4e86e7d572de143260 --- tests/wpt/metadata/MANIFEST.json | 762 ++++++++++++++++-- .../css/css-text-decor/inheritance.html.ini | 49 ++ ...nsitions-animatable-properties-01.html.ini | 3 - .../css/css-values/calc-integer.html.ini | 19 - .../scroll-behavior-default-css.html.ini | 4 + .../scroll-behavior-element.html.ini | 4 + .../scroll-behavior-main-frame-root.html.ini | 4 + ...scroll-behavior-main-frame-window.html.ini | 4 + ...ll-behavior-scrollintoview-nested.html.ini | 4 + .../scroll-behavior-smooth-positions.html.ini | 55 ++ .../scroll-behavior-subframe-root.html.ini | 5 + .../scroll-behavior-subframe-window.html.ini | 5 + .../css/cssom/overflow-serialization.html.ini | 4 + .../css/cssom/shorthand-values.html.ini | 3 + .../basic/header-value-combining.any.js.ini | 23 + .../api/basic/stream-safe-creation.any.js.ini | 11 + .../fetch-in-iframe.html.ini | 1 - .../traverse_the_history_1.html.ini | 4 + .../traverse_the_history_5.html.ini | 4 - .../fieldset-percentage-block-size.html.ini | 28 + .../legend-display-rendering.html.ini | 2 + .../legend-list-item.html.ini | 2 - .../legend-margin-inline.html.ini | 13 + .../hash-name-reference.html.ini | 60 -- .../viewport-change.html.ini | 23 +- ...se-a-sizes-attribute-display-none.html.ini | 52 ++ ...rse-a-sizes-attribute-quirks-mode.html.ini | 52 ++ ...-a-sizes-attribute-standards-mode.html.ini | 52 ++ ...se-a-sizes-attribute-width-1000px.html.ini | 52 ++ .../quirks/unitless-length/quirks.html.ini | 283 ------- .../metadata/url/urlencoded-parser.any.js.ini | 48 +- .../realtimeanalyser-fft-scaling.html.ini | 73 +- .../biquad-allpass.html.ini | 3 + .../biquad-highpass.html.ini | 3 + .../biquad-notch.html.ini | 3 + .../semantics/multiple-workers/005.html.ini | 1 + .../xhr/getallresponseheaders.htm.ini | 3 + .../metadata/xhr/getresponseheader.any.js.ini | 15 + .../dangling-markup.https.window.js | 17 - .../background-fetch/fetch.https.window.js | 34 +- .../background-fetch/service_workers/sw.js | 15 +- .../css/css-align/inheritance.html | 33 + .../css/css-break/inheritance.html | 26 + .../css/css-contain/inheritance.html | 21 + .../css/css-display/inheritance.html | 21 + .../css/css-grid/inheritance.html | 30 + ...ock-size-percentage-quirks-mode.https.html | 38 + .../css/css-lists/inheritance.html | 25 + .../css/css-masking/inheritance.html | 38 + .../css-overflow/overflow-shorthand-001.html | 12 +- .../registered-properties-inheritance.html | 13 + .../css/css-ruby/inheritance.html | 22 + .../css-ruby/parsing/ruby-align-invalid.html | 21 + .../css-ruby/parsing/ruby-align-valid.html | 20 + .../parsing/ruby-position-invalid.html | 22 + .../css-ruby/parsing/ruby-position-valid.html | 19 + .../viewport-scrollbar-body-frame.html | 3 +- .../support/viewport-scrollbar-frame.html | 3 +- .../viewport-scrollbar-ref.html | 3 +- .../css/css-shapes/inheritance.html | 23 + .../computing-column-measure-2.html | 81 ++ .../css/css-text-decor/inheritance.html | 33 + .../css/css-writing-modes/inheritance.html | 25 + .../scroll-behavior-default-css.html | 52 ++ .../cssom-view/scroll-behavior-element.html | 163 ++++ .../scroll-behavior-main-frame-root.html | 169 ++++ .../scroll-behavior-main-frame-window.html | 169 ++++ ...scroll-behavior-scrollintoview-nested.html | 88 ++ .../scroll-behavior-smooth-positions.html | 151 ++++ .../scroll-behavior-subframe-root.html | 170 ++++ .../scroll-behavior-subframe-window.html | 171 ++++ .../css/cssom-view/support/scroll-behavior.js | 87 ++ .../getComputedStyle-insets-absolute.html | 2 +- .../cssom/getComputedStyle-insets-fixed.html | 2 +- .../cssom/getComputedStyle-insets-nobox.html | 2 +- .../getComputedStyle-insets-relative.html | 2 +- .../cssom/getComputedStyle-insets-static.html | 2 +- .../cssom/getComputedStyle-insets-sticky.html | 2 +- .../css/cssom/overflow-serialization.html | 4 +- .../css/cssom/shorthand-values.html | 2 +- .../cssom/support/getComputedStyle-insets.js | 4 +- .../css/motion/offset-path-serialization.html | 42 + .../motion/parsing/offset-parsing-valid.html | 8 +- .../parsing/offset-path-parsing-valid.html | 7 +- .../css/support/inheritance-testcommon.js | 4 +- .../calc-text-indent-intrinsic-1-ref.html | 4 +- .../docs/_running-tests/chrome.md | 39 +- ...entListener-addEventListener.sub.window.js | 9 + .../api/basic/header-value-combining.any.js | 11 + .../api/basic/stream-safe-creation.any.js | 54 ++ ...ument-exit-fullscreen-active-document.html | 3 +- .../fieldset-percentage-block-size.html | 45 ++ .../legend-block-margins-ref.html | 2 +- .../legend-block-margins.html | 4 +- .../legend-display-rendering-ref.html | 34 + .../legend-display-rendering.html | 119 +++ .../legend-list-item.html | 2 +- .../legend-margin-inline.html | 50 ++ .../the-img-element/img.complete.html | 2 +- .../interfaces/payment-handler.idl | 1 - ...apture-MediaTrackSupportedConstraints.html | 1 + ...eamTrack-applyConstraints-getSettings.html | 8 +- ...iaStreamTrack-applyConstraints-reject.html | 2 +- .../MediaStreamTrack-applyConstraints.html | 6 +- .../MediaStreamTrack-getCapabilities.html | 9 + .../MediaStreamTrack-getConstraints-fast.html | 3 +- .../MediaStreamTrack-getSettings.html | 2 + ...iaStream-MediaElement-srcObject.https.html | 12 +- ...rdetailchange-attribute-manual.https.html} | 0 ...intercapture_invalid_pointerid-manual.html | 30 +- ...intercapture_invalid_pointerid-manual.html | 28 +- .../resources/chromium/image_capture.mojom.js | 119 +-- .../resources/chromium/mock-imagecapture.js | 13 +- .../chromium/web_usb_service.mojom.js | 183 +---- .../resources/chromium/webusb-test.js | 4 +- .../resources/test/conftest.py | 12 +- .../functional/worker-dedicated.sub.html | 2 +- .../test/tests/unit/exceptional-cases.html | 14 - .../skip-waiting-installed-worker.js | 2 +- .../worker-interception.https.html | 43 +- .../event-dispatch-order.tentative.html | 30 + .../shadow-dom/resources/shadow-dom.js | 49 +- .../svg/linking/scripted/a-download-click.svg | 4 +- .../svg/path/property/getComputedStyle.svg | 2 +- .../svg/path/property/serialization.svg | 36 + .../reftests/meshgradient-basic-001-ref.png | Bin 0 -> 15882 bytes .../reftests/meshgradient-basic-001.svg | 63 ++ .../reftests/meshgradient-basic-002-ref.png | Bin 0 -> 15882 bytes .../reftests/meshgradient-basic-002.svg | 63 ++ .../reftests/meshgradient-basic-003-ref.png | Bin 0 -> 21887 bytes .../reftests/meshgradient-basic-003.svg | 103 +++ .../reftests/meshgradient-basic-004-ref.png | Bin 0 -> 21887 bytes .../reftests/meshgradient-basic-004.svg | 103 +++ .../reftests/meshgradient-basic-005-ref.png | Bin 0 -> 15284 bytes .../reftests/meshgradient-basic-005.svg | 226 ++++++ .../reftests/meshgradient-bicubic-001-ref.png | Bin 0 -> 38493 bytes .../reftests/meshgradient-bicubic-001.svg | 223 +++++ .../reftests/meshgradient-complex-001-ref.png | Bin 0 -> 31532 bytes .../reftests/meshgradient-complex-001.svg | 89 ++ .../shapes/animatedPoints-non-animated.html | 51 ++ .../web-platform-tests/tools/serve/serve.py | 22 +- tests/wpt/web-platform-tests/tools/wpt/run.py | 6 + .../wptrunner/wptrunner/browsers/firefox.py | 16 +- .../tests/new_session/platform_name.py | 2 +- .../webrtc/RTCConfiguration-iceServers.html | 76 +- .../x-frame-options/multiple.sub.html | 26 +- .../xhr/getallresponseheaders.htm | 10 + .../xhr/getresponseheader.any.js | 19 + .../resources/headers-www-authenticate.asis | 4 + .../misc/texture-upload-size.html.ini | 3 + 150 files changed, 4737 insertions(+), 998 deletions(-) create mode 100644 tests/wpt/metadata/css/css-text-decor/inheritance.html.ini delete mode 100644 tests/wpt/metadata/css/css-values/calc-integer.html.ini create mode 100644 tests/wpt/metadata/css/cssom-view/scroll-behavior-default-css.html.ini create mode 100644 tests/wpt/metadata/css/cssom-view/scroll-behavior-element.html.ini create mode 100644 tests/wpt/metadata/css/cssom-view/scroll-behavior-main-frame-root.html.ini create mode 100644 tests/wpt/metadata/css/cssom-view/scroll-behavior-main-frame-window.html.ini create mode 100644 tests/wpt/metadata/css/cssom-view/scroll-behavior-scrollintoview-nested.html.ini create mode 100644 tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth-positions.html.ini create mode 100644 tests/wpt/metadata/css/cssom-view/scroll-behavior-subframe-root.html.ini create mode 100644 tests/wpt/metadata/css/cssom-view/scroll-behavior-subframe-window.html.ini create mode 100644 tests/wpt/metadata/css/cssom/overflow-serialization.html.ini create mode 100644 tests/wpt/metadata/fetch/api/basic/header-value-combining.any.js.ini create mode 100644 tests/wpt/metadata/fetch/api/basic/stream-safe-creation.any.js.ini create mode 100644 tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini delete mode 100644 tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini create mode 100644 tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-percentage-block-size.html.ini create mode 100644 tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-rendering.html.ini delete mode 100644 tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-list-item.html.ini create mode 100644 tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-margin-inline.html.ini create mode 100644 tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html.ini create mode 100644 tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini create mode 100644 tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html.ini create mode 100644 tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html.ini delete mode 100644 tests/wpt/metadata/quirks/unitless-length/quirks.html.ini create mode 100644 tests/wpt/metadata/xhr/getresponseheader.any.js.ini delete mode 100644 tests/wpt/web-platform-tests/background-fetch/dangling-markup.https.window.js create mode 100644 tests/wpt/web-platform-tests/css/css-align/inheritance.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/inheritance.html create mode 100644 tests/wpt/web-platform-tests/css/css-contain/inheritance.html create mode 100644 tests/wpt/web-platform-tests/css/css-display/inheritance.html create mode 100644 tests/wpt/web-platform-tests/css/css-grid/inheritance.html create mode 100644 tests/wpt/web-platform-tests/css/css-layout-api/constraints-fixed-block-size-percentage-quirks-mode.https.html create mode 100644 tests/wpt/web-platform-tests/css/css-lists/inheritance.html create mode 100644 tests/wpt/web-platform-tests/css/css-masking/inheritance.html create mode 100644 tests/wpt/web-platform-tests/css/css-ruby/inheritance.html create mode 100644 tests/wpt/web-platform-tests/css/css-ruby/parsing/ruby-align-invalid.html create mode 100644 tests/wpt/web-platform-tests/css/css-ruby/parsing/ruby-align-valid.html create mode 100644 tests/wpt/web-platform-tests/css/css-ruby/parsing/ruby-position-invalid.html create mode 100644 tests/wpt/web-platform-tests/css/css-ruby/parsing/ruby-position-valid.html create mode 100644 tests/wpt/web-platform-tests/css/css-shapes/inheritance.html create mode 100644 tests/wpt/web-platform-tests/css/css-tables/width-distribution/computing-column-measure-2.html create mode 100644 tests/wpt/web-platform-tests/css/css-text-decor/inheritance.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/inheritance.html create mode 100644 tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-default-css.html create mode 100644 tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-element.html create mode 100644 tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root.html create mode 100644 tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window.html create mode 100644 tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested.html create mode 100644 tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-smooth-positions.html create mode 100644 tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-subframe-root.html create mode 100644 tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html create mode 100644 tests/wpt/web-platform-tests/css/cssom-view/support/scroll-behavior.js create mode 100644 tests/wpt/web-platform-tests/css/motion/offset-path-serialization.html create mode 100644 tests/wpt/web-platform-tests/dom/events/EventListener-addEventListener.sub.window.js create mode 100644 tests/wpt/web-platform-tests/fetch/api/basic/header-value-combining.any.js create mode 100644 tests/wpt/web-platform-tests/fetch/api/basic/stream-safe-creation.any.js create mode 100644 tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-percentage-block-size.html create mode 100644 tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-rendering-ref.html create mode 100644 tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-rendering.html create mode 100644 tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-margin-inline.html rename tests/wpt/web-platform-tests/payment-request/payment-response/{onpayerdetailchange-attribute.manual.https.html => onpayerdetailchange-attribute-manual.https.html} (100%) create mode 100644 tests/wpt/web-platform-tests/shadow-dom/event-dispatch-order.tentative.html create mode 100644 tests/wpt/web-platform-tests/svg/path/property/serialization.svg create mode 100644 tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-001-ref.png create mode 100644 tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-001.svg create mode 100644 tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-002-ref.png create mode 100644 tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-002.svg create mode 100644 tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-003-ref.png create mode 100644 tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-003.svg create mode 100644 tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-004-ref.png create mode 100644 tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-004.svg create mode 100644 tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-005-ref.png create mode 100644 tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-005.svg create mode 100644 tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-bicubic-001-ref.png create mode 100644 tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-bicubic-001.svg create mode 100644 tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-complex-001-ref.png create mode 100644 tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-complex-001.svg create mode 100644 tests/wpt/web-platform-tests/svg/shapes/animatedPoints-non-animated.html create mode 100644 tests/wpt/web-platform-tests/xhr/getresponseheader.any.js create mode 100644 tests/wpt/web-platform-tests/xhr/resources/headers-www-authenticate.asis diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 1bdfe665e83..c82dae2db5e 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -13477,6 +13477,12 @@ {} ] ], + "payment-request/payment-response/onpayerdetailchange-attribute-manual.https.html": [ + [ + "/payment-request/payment-response/onpayerdetailchange-attribute-manual.https.html", + {} + ] + ], "payment-request/payment-response/payerEmail-attribute-manual.https.html": [ [ "/payment-request/payment-response/payerEmail-attribute-manual.https.html", @@ -123219,6 +123225,18 @@ {} ] ], + "css/css-layout-api/constraints-fixed-block-size-percentage-quirks-mode.https.html": [ + [ + "/css/css-layout-api/constraints-fixed-block-size-percentage-quirks-mode.https.html", + [ + [ + "/css/css-layout-api/green-square-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-layout-api/constraints-fixed-block-size-percentage-vrl.https.html": [ [ "/css/css-layout-api/constraints-fixed-block-size-percentage-vrl.https.html", @@ -185923,6 +185941,18 @@ {} ] ], + "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-rendering.html": [ + [ + "/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-rendering.html", + [ + [ + "/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-rendering-ref.html", + "==" + ] + ], + {} + ] + ], "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-float.html": [ [ "/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-float.html", @@ -185940,7 +185970,7 @@ "/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-list-item.html", [ [ - "/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-list-item-ref.html", + "/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-list-item-ref.html", "==" ] ], @@ -188723,6 +188753,90 @@ {} ] ], + "svg/pservers/reftests/meshgradient-basic-001.svg": [ + [ + "/svg/pservers/reftests/meshgradient-basic-001.svg", + [ + [ + "/svg/pservers/reftests/meshgradient-basic-001-ref.png", + "==" + ] + ], + {} + ] + ], + "svg/pservers/reftests/meshgradient-basic-002.svg": [ + [ + "/svg/pservers/reftests/meshgradient-basic-002.svg", + [ + [ + "/svg/pservers/reftests/meshgradient-basic-002-ref.png", + "==" + ] + ], + {} + ] + ], + "svg/pservers/reftests/meshgradient-basic-003.svg": [ + [ + "/svg/pservers/reftests/meshgradient-basic-003.svg", + [ + [ + "/svg/pservers/reftests/meshgradient-basic-003-ref.png", + "==" + ] + ], + {} + ] + ], + "svg/pservers/reftests/meshgradient-basic-004.svg": [ + [ + "/svg/pservers/reftests/meshgradient-basic-004.svg", + [ + [ + "/svg/pservers/reftests/meshgradient-basic-004-ref.png", + "==" + ] + ], + {} + ] + ], + "svg/pservers/reftests/meshgradient-basic-005.svg": [ + [ + "/svg/pservers/reftests/meshgradient-basic-005.svg", + [ + [ + "/svg/pservers/reftests/meshgradient-basic-005-ref.png", + "==" + ] + ], + {} + ] + ], + "svg/pservers/reftests/meshgradient-bicubic-001.svg": [ + [ + "/svg/pservers/reftests/meshgradient-bicubic-001.svg", + [ + [ + "/svg/pservers/reftests/meshgradient-bicubic-001-ref.png", + "==" + ] + ], + {} + ] + ], + "svg/pservers/reftests/meshgradient-complex-001.svg": [ + [ + "/svg/pservers/reftests/meshgradient-complex-001.svg", + [ + [ + "/svg/pservers/reftests/meshgradient-complex-001-ref.png", + "==" + ] + ], + {} + ] + ], "svg/pservers/reftests/radialgradient-basic-002.svg": [ [ "/svg/pservers/reftests/radialgradient-basic-002.svg", @@ -271457,6 +271571,11 @@ {} ] ], + "css/cssom-view/support/scroll-behavior.js": [ + [ + {} + ] + ], "css/cssom-view/support/square-purple.png": [ [ {} @@ -288682,6 +288801,11 @@ {} ] ], + "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-rendering-ref.html": [ + [ + {} + ] + ], "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-dynamic-update.html": [ [ {} @@ -304377,6 +304501,41 @@ {} ] ], + "svg/pservers/reftests/meshgradient-basic-001-ref.png": [ + [ + {} + ] + ], + "svg/pservers/reftests/meshgradient-basic-002-ref.png": [ + [ + {} + ] + ], + "svg/pservers/reftests/meshgradient-basic-003-ref.png": [ + [ + {} + ] + ], + "svg/pservers/reftests/meshgradient-basic-004-ref.png": [ + [ + {} + ] + ], + "svg/pservers/reftests/meshgradient-basic-005-ref.png": [ + [ + {} + ] + ], + "svg/pservers/reftests/meshgradient-bicubic-001-ref.png": [ + [ + {} + ] + ], + "svg/pservers/reftests/meshgradient-complex-001-ref.png": [ + [ + {} + ] + ], "svg/pservers/reftests/radialgradient-basic-002-ref.svg": [ [ {} @@ -317202,6 +317361,11 @@ {} ] ], + "xhr/resources/headers-www-authenticate.asis": [ + [ + {} + ] + ], "xhr/resources/headers.asis": [ [ {} @@ -325882,12 +326046,6 @@ {} ] ], - "background-fetch/dangling-markup.https.window.js": [ - [ - "/background-fetch/dangling-markup.https.window.html", - {} - ] - ], "background-fetch/fetch.https.window.js": [ [ "/background-fetch/fetch.https.window.html", @@ -331178,6 +331336,12 @@ {} ] ], + "css/css-align/inheritance.html": [ + [ + "/css/css-align/inheritance.html", + {} + ] + ], "css/css-align/self-alignment/parse-align-self-001.html": [ [ "/css/css-align/self-alignment/parse-align-self-001.html", @@ -331984,6 +332148,12 @@ {} ] ], + "css/css-break/inheritance.html": [ + [ + "/css/css-break/inheritance.html", + {} + ] + ], "css/css-cascade/all-prop-initial-xml.html": [ [ "/css/css-cascade/all-prop-initial-xml.html", @@ -332082,6 +332252,12 @@ {} ] ], + "css/css-contain/inheritance.html": [ + [ + "/css/css-contain/inheritance.html", + {} + ] + ], "css/css-counter-styles/idlharness.html": [ [ "/css/css-counter-styles/idlharness.html", @@ -332124,6 +332300,12 @@ {} ] ], + "css/css-display/inheritance.html": [ + [ + "/css/css-display/inheritance.html", + {} + ] + ], "css/css-display/parsing/display-invalid.html": [ [ "/css/css-display/parsing/display-invalid.html", @@ -334430,6 +334612,12 @@ {} ] ], + "css/css-grid/inheritance.html": [ + [ + "/css/css-grid/inheritance.html", + {} + ] + ], "css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-001.html": [ [ "/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-001.html", @@ -334652,6 +334840,12 @@ {} ] ], + "css/css-lists/inheritance.html": [ + [ + "/css/css-lists/inheritance.html", + {} + ] + ], "css/css-logical/animation-001.html": [ [ "/css/css-logical/animation-001.html", @@ -334772,6 +334966,12 @@ {} ] ], + "css/css-masking/inheritance.html": [ + [ + "/css/css-masking/inheritance.html", + {} + ] + ], "css/css-masking/parsing/clip-invalid.html": [ [ "/css/css-masking/parsing/clip-invalid.html", @@ -335132,12 +335332,42 @@ {} ] ], + "css/css-ruby/inheritance.html": [ + [ + "/css/css-ruby/inheritance.html", + {} + ] + ], "css/css-ruby/line-break-around-ruby-001.html": [ [ "/css/css-ruby/line-break-around-ruby-001.html", {} ] ], + "css/css-ruby/parsing/ruby-align-invalid.html": [ + [ + "/css/css-ruby/parsing/ruby-align-invalid.html", + {} + ] + ], + "css/css-ruby/parsing/ruby-align-valid.html": [ + [ + "/css/css-ruby/parsing/ruby-align-valid.html", + {} + ] + ], + "css/css-ruby/parsing/ruby-position-invalid.html": [ + [ + "/css/css-ruby/parsing/ruby-position-invalid.html", + {} + ] + ], + "css/css-ruby/parsing/ruby-position-valid.html": [ + [ + "/css/css-ruby/parsing/ruby-position-valid.html", + {} + ] + ], "css/css-scoping/host-descendant-invalidation.html": [ [ "/css/css-scoping/host-descendant-invalidation.html", @@ -335432,6 +335662,12 @@ {} ] ], + "css/css-shapes/inheritance.html": [ + [ + "/css/css-shapes/inheritance.html", + {} + ] + ], "css/css-shapes/parsing/shape-image-threshold-invalid.html": [ [ "/css/css-shapes/parsing/shape-image-threshold-invalid.html", @@ -336458,6 +336694,12 @@ {} ] ], + "css/css-tables/width-distribution/computing-column-measure-2.html": [ + [ + "/css/css-tables/width-distribution/computing-column-measure-2.html", + {} + ] + ], "css/css-tables/width-distribution/computing-table-width-0.html": [ [ "/css/css-tables/width-distribution/computing-table-width-0.html", @@ -336518,6 +336760,12 @@ {} ] ], + "css/css-text-decor/inheritance.html": [ + [ + "/css/css-text-decor/inheritance.html", + {} + ] + ], "css/css-text-decor/text-decoration-serialization.tentative.html": [ [ "/css/css-text-decor/text-decoration-serialization.tentative.html", @@ -340618,6 +340866,12 @@ {} ] ], + "css/css-writing-modes/inheritance.html": [ + [ + "/css/css-writing-modes/inheritance.html", + {} + ] + ], "css/css-writing-modes/orthogonal-parent-shrink-to-fit-001.html": [ [ "/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001.html", @@ -341284,12 +341538,76 @@ {} ] ], + "css/cssom-view/scroll-behavior-default-css.html": [ + [ + "/css/cssom-view/scroll-behavior-default-css.html", + { + "timeout": "long" + } + ] + ], + "css/cssom-view/scroll-behavior-element.html": [ + [ + "/css/cssom-view/scroll-behavior-element.html", + { + "timeout": "long" + } + ] + ], + "css/cssom-view/scroll-behavior-main-frame-root.html": [ + [ + "/css/cssom-view/scroll-behavior-main-frame-root.html", + { + "timeout": "long" + } + ] + ], + "css/cssom-view/scroll-behavior-main-frame-window.html": [ + [ + "/css/cssom-view/scroll-behavior-main-frame-window.html", + { + "timeout": "long" + } + ] + ], + "css/cssom-view/scroll-behavior-scrollintoview-nested.html": [ + [ + "/css/cssom-view/scroll-behavior-scrollintoview-nested.html", + { + "timeout": "long" + } + ] + ], + "css/cssom-view/scroll-behavior-smooth-positions.html": [ + [ + "/css/cssom-view/scroll-behavior-smooth-positions.html", + { + "timeout": "long" + } + ] + ], "css/cssom-view/scroll-behavior-smooth.html": [ [ "/css/cssom-view/scroll-behavior-smooth.html", {} ] ], + "css/cssom-view/scroll-behavior-subframe-root.html": [ + [ + "/css/cssom-view/scroll-behavior-subframe-root.html", + { + "timeout": "long" + } + ] + ], + "css/cssom-view/scroll-behavior-subframe-window.html": [ + [ + "/css/cssom-view/scroll-behavior-subframe-window.html", + { + "timeout": "long" + } + ] + ], "css/cssom-view/scroll-no-layout-box.html": [ [ "/css/cssom-view/scroll-no-layout-box.html", @@ -342176,6 +342494,12 @@ {} ] ], + "css/motion/offset-path-serialization.html": [ + [ + "/css/motion/offset-path-serialization.html", + {} + ] + ], "css/motion/offset-supports-calc.html": [ [ "/css/motion/offset-supports-calc.html", @@ -343298,6 +343622,12 @@ {} ] ], + "dom/events/EventListener-addEventListener.sub.window.js": [ + [ + "/dom/events/EventListener-addEventListener.sub.window.html", + {} + ] + ], "dom/events/EventListener-handleEvent.html": [ [ "/dom/events/EventListener-handleEvent.html", @@ -354960,6 +355290,24 @@ {} ] ], + "fetch/api/basic/header-value-combining.any.js": [ + [ + "/fetch/api/basic/header-value-combining.any.html", + {} + ], + [ + "/fetch/api/basic/header-value-combining.any.serviceworker.html", + {} + ], + [ + "/fetch/api/basic/header-value-combining.any.sharedworker.html", + {} + ], + [ + "/fetch/api/basic/header-value-combining.any.worker.html", + {} + ] + ], "fetch/api/basic/header-value-null-byte.any.js": [ [ "/fetch/api/basic/header-value-null-byte.any.html", @@ -355160,6 +355508,24 @@ {} ] ], + "fetch/api/basic/stream-safe-creation.any.js": [ + [ + "/fetch/api/basic/stream-safe-creation.any.html", + {} + ], + [ + "/fetch/api/basic/stream-safe-creation.any.serviceworker.html", + {} + ], + [ + "/fetch/api/basic/stream-safe-creation.any.sharedworker.html", + {} + ], + [ + "/fetch/api/basic/stream-safe-creation.any.worker.html", + {} + ] + ], "fetch/api/basic/text-utf8.html": [ [ "/fetch/api/basic/text-utf8.html", @@ -360006,6 +360372,12 @@ {} ] ], + "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-percentage-block-size.html": [ + [ + "/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-percentage-block-size.html", + {} + ] + ], "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-percentage-padding.html": [ [ "/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-percentage-padding.html", @@ -360060,6 +360432,12 @@ {} ] ], + "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-margin-inline.html": [ + [ + "/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-margin-inline.html", + {} + ] + ], "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-sans-fieldset-display.html": [ [ "/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-sans-fieldset-display.html", @@ -384760,12 +385138,6 @@ {} ] ], - "payment-request/payment-response/onpayerdetailchange-attribute.manual.https.html": [ - [ - "/payment-request/payment-response/onpayerdetailchange-attribute.manual.https.html", - {} - ] - ], "payment-request/rejects_if_not_active.https.html": [ [ "/payment-request/rejects_if_not_active.https.html", @@ -396488,6 +396860,12 @@ {} ] ], + "shadow-dom/event-dispatch-order.tentative.html": [ + [ + "/shadow-dom/event-dispatch-order.tentative.html", + {} + ] + ], "shadow-dom/event-inside-shadow-tree.html": [ [ "/shadow-dom/event-inside-shadow-tree.html", @@ -398658,6 +399036,12 @@ {} ] ], + "svg/path/property/serialization.svg": [ + [ + "/svg/path/property/serialization.svg", + {} + ] + ], "svg/scripted/text-attrs-dxdy-have-length.svg": [ [ "/svg/scripted/text-attrs-dxdy-have-length.svg", @@ -398694,6 +399078,12 @@ {} ] ], + "svg/shapes/animatedPoints-non-animated.html": [ + [ + "/svg/shapes/animatedPoints-non-animated.html", + {} + ] + ], "svg/shapes/line-getPointAtLength.svg": [ [ "/svg/shapes/line-getPointAtLength.svg", @@ -408778,6 +409168,16 @@ {} ] ], + "xhr/getresponseheader.any.js": [ + [ + "/xhr/getresponseheader.any.html", + {} + ], + [ + "/xhr/getresponseheader.any.worker.html", + {} + ] + ], "xhr/header-user-agent-async.htm": [ [ "/xhr/header-user-agent-async.htm", @@ -440665,12 +441065,8 @@ "0b5b1cb5e94d3f27bebbb5a462bf1e823dfc57b4", "testharness" ], - "background-fetch/dangling-markup.https.window.js": [ - "764257d7d1a8eecfba6735647637055b21dcb94b", - "testharness" - ], "background-fetch/fetch.https.window.js": [ - "70dacd717a0aac009c708c1157dcfe5149a6a069", + "98ecdfa3933c40b909793100b4b9f9cccb35cb86", "testharness" ], "background-fetch/get-ids.https.window.js": [ @@ -440710,7 +441106,7 @@ "support" ], "background-fetch/service_workers/sw.js": [ - "ab2445d18b09735321fc8c85a2eb2382e44cc5f5", + "43d778c08914da6c8ff75acb819676895adbc180", "support" ], "background-fetch/update-ui.https.window.js": [ @@ -524569,6 +524965,10 @@ "71b971d3a8a18cc7cd9710ac00ffe10e4f4111e4", "testharness" ], + "css/css-align/inheritance.html": [ + "7e2fa130be24214fa8c21f58d0f88a744beb6b79", + "testharness" + ], "css/css-align/reference/ttwf-reftest-alignContent-ref.html": [ "a94c1d5e9e85dfe0aec20145b25e55dc5b1a673d", "support" @@ -528669,6 +529069,10 @@ "4d0fc7eccc45e44480b4305632ceac2068c59919", "testharness" ], + "css/css-break/inheritance.html": [ + "e0be119e4002b1d637ebdfc464d87ef88ab83106", + "testharness" + ], "css/css-break/reference/widows-orphans-001-ref.html": [ "06108ac800c19c68841f2a0e8867fb05e868c1ab", "support" @@ -530269,6 +530673,10 @@ "c4a004ff18cad24b0f709fcb6b707d7a79e5572a", "reftest" ], + "css/css-contain/inheritance.html": [ + "07378a29f39db8bdf100aa04c60cb23f556d962b", + "testharness" + ], "css/css-contain/quote-scoping-001.html": [ "8c38e45b1ace138cbb795c77fdece555967e043d", "reftest" @@ -531585,6 +531993,10 @@ "f8d6e85cee2325f3ae51a950a276430d26c04189", "testharness" ], + "css/css-display/inheritance.html": [ + "bfd072651cb6ec82cca7d9be5b6768afbc39fca0", + "testharness" + ], "css/css-display/parsing/display-invalid.html": [ "70516ad4901f684b9d0ecd49a82671172fbc8f14", "testharness" @@ -545613,6 +546025,10 @@ "2e90b460194568752c09ff94fd834deb08606fe4", "reftest" ], + "css/css-grid/inheritance.html": [ + "eee86f70300d4280531235c813589dc3c399c58c", + "testharness" + ], "css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-001.html": [ "c1ae11feee9b84fd7ea123dc396a7a95e70e4733", "testharness" @@ -546373,6 +546789,10 @@ "94a20387442c36b5041e40194aa7ceda405a3274", "reftest" ], + "css/css-layout-api/constraints-fixed-block-size-percentage-quirks-mode.https.html": [ + "9bd9044991cdde7c113f8fdbd08a2048a77746f9", + "reftest" + ], "css/css-layout-api/constraints-fixed-block-size-percentage-vrl.https.html": [ "8c7a8c5d3ea11ac3a5ac6e4269340baa10e266a5", "reftest" @@ -546753,6 +547173,10 @@ "85c137e675e55a54c4ab3834469ab3d13aa32725", "reftest" ], + "css/css-lists/inheritance.html": [ + "ff1bcdcfb4690df571dc2d5c93df71b55ffad5e6", + "testharness" + ], "css/css-lists/list-style-type-armenian-002.xht": [ "02e06b707f709870b30e810e4b1a4ec330ada296", "visual" @@ -547697,6 +548121,10 @@ "c415eaaa67a2bc9a4b621700049eb0c0b60ec0a3", "testharness" ], + "css/css-masking/inheritance.html": [ + "34f75859ee88833ed39a56bb6c443cd60586e1b5", + "testharness" + ], "css/css-masking/mask-image/mask-image-url-image-hash.html": [ "b1efc90818bec85d5022a9b908a14c2e0c35ff3b", "reftest" @@ -549114,7 +549542,7 @@ "testharness" ], "css/css-overflow/overflow-shorthand-001.html": [ - "d922e902720ae6a38ff9c644ddd63ddfd5e62c37", + "f425636c3bb4297e4e6564d1c2629dc10dde5607", "testharness" ], "css/css-overflow/reference/input-scrollable-region-001-ref.html": [ @@ -550078,7 +550506,7 @@ "testharness" ], "css/css-properties-values-api/registered-properties-inheritance.html": [ - "20275a5c7a1688eac0d88de3c93a5e83b8f5830f", + "057cd8ca7e1290513f77cc9b80856bf4c4faa773", "testharness" ], "css/css-properties-values-api/registered-property-computation.html": [ @@ -552421,10 +552849,30 @@ "b0098caea13c61def740fa706be68efb74b3bd9b", "support" ], + "css/css-ruby/inheritance.html": [ + "9f546c23bb864fc83588d326b7314141401e50dd", + "testharness" + ], "css/css-ruby/line-break-around-ruby-001.html": [ "c631f201e3055d15be10b0b636ec864f77e89e46", "testharness" ], + "css/css-ruby/parsing/ruby-align-invalid.html": [ + "fcb8511d9e1aa6ed4940bf14c5005d393edd66cb", + "testharness" + ], + "css/css-ruby/parsing/ruby-align-valid.html": [ + "23093b2b232a4c7f804e69da8d34ee007c6807e0", + "testharness" + ], + "css/css-ruby/parsing/ruby-position-invalid.html": [ + "907c7deee31153e78f30eedfb645f6905495846f", + "testharness" + ], + "css/css-ruby/parsing/ruby-position-valid.html": [ + "2a21748613787f59ce725cec1e47bf9e0115ada0", + "testharness" + ], "css/css-ruby/ruby-001.xht": [ "80f49f0dbcf3e3a76ba6f740243e19a5f627bfd2", "visual" @@ -552798,11 +553246,11 @@ "testharness" ], "css/css-scrollbars/support/viewport-scrollbar-body-frame.html": [ - "74c02f994e3103daabfaf40a7fb84d3169451d2c", + "8dacffefb62a8d348963a51c67e73887ca9b977b", "support" ], "css/css-scrollbars/support/viewport-scrollbar-frame.html": [ - "95101024b4f27e93eb2c61c52df70845ae5842bf", + "04a4a2fa2d507a0715feaa1e6ba222c85648b77a", "support" ], "css/css-scrollbars/textarea-scrollbar-width-none-ref.html": [ @@ -552822,7 +553270,7 @@ "reftest" ], "css/css-scrollbars/viewport-scrollbar-ref.html": [ - "42463d309b994760c4e91d07fd9e4cb551964617", + "d6df3b49e56d6cfab633dcd5264c79811cfaf0f7", "support" ], "css/css-scrollbars/viewport-scrollbar.html": [ @@ -552885,6 +553333,10 @@ "5e4842d234f6af393a5ee04fa604a63f6db5cae1", "testharness" ], + "css/css-shapes/inheritance.html": [ + "490775dd8ce24721046f89234237d8f7c200623c", + "testharness" + ], "css/css-shapes/parsing/shape-image-threshold-invalid.html": [ "6299e2ecaad8247affa1e54ace4aea276322c114", "testharness" @@ -554961,6 +555413,10 @@ "f032fcd198720ec53f1435a768c6c8146d9433ae", "testharness" ], + "css/css-tables/width-distribution/computing-column-measure-2.html": [ + "b9840187f13306c94d1a4d997359c1b042becb5d", + "testharness" + ], "css/css-tables/width-distribution/computing-table-width-0.html": [ "49bae4b4f7970a580c7a75ea4dfaa2ea1d901c70", "testharness" @@ -555021,6 +555477,10 @@ "51a4fba49fcbf2f7ad13242ceaf39a0f25b59495", "support" ], + "css/css-text-decor/inheritance.html": [ + "17486f1f193d04fadc1ed000121f62cae0b3d530", + "testharness" + ], "css/css-text-decor/line-through-vertical.html": [ "633c5c00392711f1fe1911a07f9cf53c3cd702e9", "reftest" @@ -572733,6 +573193,10 @@ "ffda7d62ba963ed693e14547adce6592a11f5657", "support" ], + "css/css-writing-modes/inheritance.html": [ + "143571c9d9713887b6af761a920b56aa8d8b47a7", + "testharness" + ], "css/css-writing-modes/inline-block-alignment-002-ref.xht": [ "ce478e7499247e6277482b9c16c9dd2b1b76f275", "support" @@ -576949,10 +577413,42 @@ "7bb944c9d59349b3a25ab14981ae34f5ef991bec", "support" ], + "css/cssom-view/scroll-behavior-default-css.html": [ + "8606b1f3ed40b49c693213e02df69d088d93b979", + "testharness" + ], + "css/cssom-view/scroll-behavior-element.html": [ + "9f60ca771121c82237f2be2097d089f582918fe5", + "testharness" + ], + "css/cssom-view/scroll-behavior-main-frame-root.html": [ + "7ef0a4aa0da74a724a851cb1b2f16305712f7b7f", + "testharness" + ], + "css/cssom-view/scroll-behavior-main-frame-window.html": [ + "57b0d913461a3d374afeb204ed164b97e7d82b38", + "testharness" + ], + "css/cssom-view/scroll-behavior-scrollintoview-nested.html": [ + "2a97e0656637d12a2451fecd2985cd3370bb75cf", + "testharness" + ], + "css/cssom-view/scroll-behavior-smooth-positions.html": [ + "19e317d5e4b9e65aca7df6becb35481ad8125bac", + "testharness" + ], "css/cssom-view/scroll-behavior-smooth.html": [ "e1a7a6a1680393541a93552b2e9a9a64945e355e", "testharness" ], + "css/cssom-view/scroll-behavior-subframe-root.html": [ + "32de1b62038e0db017b7416554fbf5e92485d3ea", + "testharness" + ], + "css/cssom-view/scroll-behavior-subframe-window.html": [ + "0a8ed39d1b97d493e9f8ffe0710e711afa491f43", + "testharness" + ], "css/cssom-view/scroll-no-layout-box.html": [ "cc67ce76ed9d432656b37c9c81a20e86d1bafc8d", "testharness" @@ -577121,6 +577617,10 @@ "84141028020b7e8cdf2412acbca3c799ba50a534", "support" ], + "css/cssom-view/support/scroll-behavior.js": [ + "0a0968e025bd8604c0765352d3a2e8b3cc1233aa", + "support" + ], "css/cssom-view/support/square-purple.png": [ "0f522d78728417b0f74b694e2e47cd41c00359d1", "support" @@ -577422,27 +577922,27 @@ "testharness" ], "css/cssom/getComputedStyle-insets-absolute.html": [ - "196f5f26f31f71253aa33b581f7a64ce3604e8da", + "fae0a84a7b4a554b6cc182f48aee98bc7c196ad4", "testharness" ], "css/cssom/getComputedStyle-insets-fixed.html": [ - "e57e774fe6eb27be91fa95d920096ba107512b1b", + "ff80d2fc50464eff7564827fe9922e3274ecd629", "testharness" ], "css/cssom/getComputedStyle-insets-nobox.html": [ - "ca55ace7f4ed42ae25dab7968b347f83a998b958", + "236abf17f9cab8652b350c1168f2c27c1f84a631", "testharness" ], "css/cssom/getComputedStyle-insets-relative.html": [ - "c48f2eb555ee51c464753d980deeac514c84fd29", + "1abfc62c0165a0a47b2e988111723acb55f996ce", "testharness" ], "css/cssom/getComputedStyle-insets-static.html": [ - "854a8e3dba4085ab1fa8fe3c48fde4ef2c27bca6", + "aa7dbee95667a5e3b829b7d3774311da49c01deb", "testharness" ], "css/cssom/getComputedStyle-insets-sticky.html": [ - "10520232d738a6547ee430797c74763649e06224", + "6149acc6d7d0391d7a4d7ece12b9ec9c4b39041d", "testharness" ], "css/cssom/getComputedStyle-pseudo.html": [ @@ -577506,7 +578006,7 @@ "testharness" ], "css/cssom/overflow-serialization.html": [ - "2911c8da3e3ae47af4fd764170fd7439cda56685", + "136b8aba117eb64403700d8c4348db085cede9c8", "testharness" ], "css/cssom/preferred-stylesheet-order.html": [ @@ -577558,7 +578058,7 @@ "testharness" ], "css/cssom/shorthand-values.html": [ - "1e4d93acb26e3f644b103974b910203abf93c56e", + "d8d7f5349a4561cb4d764f366236e88eb3775c8f", "testharness" ], "css/cssom/style-attr-update-across-documents.html": [ @@ -577650,7 +578150,7 @@ "support" ], "css/cssom/support/getComputedStyle-insets.js": [ - "7bd34fe87a2806d3cc79625001c694159743f862", + "beec32e76bc5fcef4640193e321805975c8554b9", "support" ], "css/cssom/support/import-charset.css": [ @@ -578625,6 +579125,10 @@ "6c39e7b8f4cfafe05c07d166eb65570432912b7a", "reftest" ], + "css/motion/offset-path-serialization.html": [ + "1c000919518e4052d1c9546580c9b9cca89883c7", + "testharness" + ], "css/motion/offset-path-string-001.html": [ "79d957d82b8e3c603ed16598f461a805c90681dd", "reftest" @@ -578674,7 +579178,7 @@ "testharness" ], "css/motion/parsing/offset-parsing-valid.html": [ - "b93091b2088987cb402c364e0d3794d847522a16", + "3fe8a5b20d805ae3d330b8c653593b6b0c0e0d9e", "testharness" ], "css/motion/parsing/offset-path-parsing-invalid.html": [ @@ -578682,7 +579186,7 @@ "testharness" ], "css/motion/parsing/offset-path-parsing-valid.html": [ - "bda82928726dc8c3a30207f9871a4883e2db5376", + "0ed360f6e369e5b53ae4ae0b1b535a7ff8e31ca9", "testharness" ], "css/motion/parsing/offset-position-parsing-invalid.html": [ @@ -580682,7 +581186,7 @@ "support" ], "css/support/inheritance-testcommon.js": [ - "50bf4c3ae2ba9490fc30af46849820c81b72b774", + "1a4d2fee89144e4c93d5102d53fdff1cf23553d6", "support" ], "css/support/parsing-testcommon.js": [ @@ -588930,7 +589434,7 @@ "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/values3/calc-text-indent-intrinsic-1-ref.html": [ - "93c8c89978fe0587c290fd46179db3b6c891f71c", + "fa221c015d1f509952c451879a8d819caa5c6528", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/values3/calc-text-indent-intrinsic-1.html": [ @@ -590354,7 +590858,7 @@ "support" ], "docs/_running-tests/chrome.md": [ - "dcbc86f745c6c3133d21aada8c03fef74d56202b", + "51472d154377c1e27543980722b74eebac8b515f", "support" ], "docs/_running-tests/chrome_android.md": [ @@ -590689,6 +591193,10 @@ "22792f5c6c7883c97e71c7adec1c2d873cf608b8", "testharness" ], + "dom/events/EventListener-addEventListener.sub.window.js": [ + "b658140eea871f8790e9494ccbb8e8b845fe800e", + "testharness" + ], "dom/events/EventListener-handleEvent.html": [ "b33b030a641dd0d2a4e1319f366e3db975e9dc3f", "testharness" @@ -595653,6 +596161,10 @@ "5701d6d7866b575dc162b27f70a336967c70911f", "testharness" ], + "fetch/api/basic/header-value-combining.any.js": [ + "fd08072ea52214fdd83741d5b7fbef8c572a3f15", + "testharness" + ], "fetch/api/basic/header-value-null-byte.any.js": [ "9c223740c7807b43a6595ba81ef4f5b3c74c60b4", "testharness" @@ -595733,6 +596245,10 @@ "5b11018eb31648f5503eba1b1e71a616e219b375", "testharness" ], + "fetch/api/basic/stream-safe-creation.any.js": [ + "180d338659021fed3d29e08ccea415cc5852fed2", + "testharness" + ], "fetch/api/basic/text-utf8.html": [ "e5c567b9c4531113c12a3c56d0f5d9c1517589a2", "testharness" @@ -597654,7 +598170,7 @@ "support" ], "fullscreen/api/document-exit-fullscreen-active-document.html": [ - "18b0bb6493bd8275a750091b862c7ee5ee770abf", + "8279fae533774fcf6daced99ffc84413a0a9172d", "testharness" ], "fullscreen/api/document-exit-fullscreen-manual.html": [ @@ -606973,6 +607489,10 @@ "7bd2cedb1b6771398c808d1b7c8f68840bfb9b6f", "reftest" ], + "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-percentage-block-size.html": [ + "1c221555c305bd9039558389b3f22ee00d65f8b9", + "testharness" + ], "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-percentage-padding.html": [ "61ad4ed4c9445a3c035f85db7ab0928cbb11b91a", "testharness" @@ -607022,11 +607542,11 @@ "testharness" ], "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-block-margins-ref.html": [ - "e0528855df0705fb9c13461f30e7d8c2dd7fbc21", + "f2701d26f3213e02eee9d3592bbeae7da7e7b898", "support" ], "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-block-margins.html": [ - "957eca57350eebb6a773dc784b6f701e5327b02d", + "98cd16c7c147316669eb6c456538f43ae90fbf44", "reftest" ], "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-none-rendering-ref.html": [ @@ -607041,6 +607561,14 @@ "689454ac493a05b28658edf549d71c6aa1c7be0e", "testharness" ], + "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-rendering-ref.html": [ + "189b195f6154e7afc354726a13f8e79290f6edfb", + "support" + ], + "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-rendering.html": [ + "ba6610503a6d14cf8d9a7b661cb76f3350317d2c", + "reftest" + ], "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display.html": [ "914547fc6cdde3e464b28eb7cc9737d17305f9af", "testharness" @@ -607070,9 +607598,13 @@ "support" ], "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-list-item.html": [ - "c26b50ce662cbea50a69e8e718b9b2b889568f64", + "e9676435725be4aeb9c0d3649af17bafa41294af", "reftest" ], + "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-margin-inline.html": [ + "8daf78db999c8c437d311c8bb2f7b36f590ae277", + "testharness" + ], "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-position-relative-ref.html": [ "fd6c11a00566759fbf1e749d49ad396cf1a7ee08", "support" @@ -610714,7 +611246,7 @@ "support" ], "html/semantics/embedded-content/the-img-element/img.complete.html": [ - "ee043a8c94fa4f69b0648d5d31e17f5cc591ec5f", + "42113cdd2ff15255292f1ad705355f732a4f137c", "testharness" ], "html/semantics/embedded-content/the-img-element/intrinsicsize/intrinsicsize-with-responsive-images.tentative.html": [ @@ -617598,7 +618130,7 @@ "support" ], "interfaces/payment-handler.idl": [ - "5648ae33457dcdcd2f0eca90d69fbe1a5fac3d5b", + "b5d79decb06530001cd9d63e6fcba43995d27ba1", "support" ], "interfaces/payment-method-basic-card.idl": [ @@ -619322,7 +619854,7 @@ "testharness" ], "mediacapture-image/ImageCapture-MediaTrackSupportedConstraints.html": [ - "59a54f51d600fa5c8ee1c092afa5a07f6ae2ae3f", + "9ec5261b9dc48ea143c60946d72233a9eb5d7261", "testharness" ], "mediacapture-image/ImageCapture-creation.https.html": [ @@ -619346,15 +619878,15 @@ "testharness" ], "mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.html": [ - "1a1b58e5415f9e04ddeb8d1874448c3b98af35e3", + "4900336549f4a92f449233d24abf97f84f055102", "testharness" ], "mediacapture-image/MediaStreamTrack-applyConstraints-reject.html": [ - "8f08d250fd1a569d84ecd4ce36fe5ffa29f583f7", + "21719636ea870f0cfe8e3b8c8a0c838512c1eb87", "testharness" ], "mediacapture-image/MediaStreamTrack-applyConstraints.html": [ - "8dcff926173266c9e5f14c37ff408832a8a07d7e", + "c87f954c682cb6869040ebc67f6245902cec1267", "testharness" ], "mediacapture-image/MediaStreamTrack-getCapabilities-fast.html": [ @@ -619362,11 +619894,11 @@ "testharness" ], "mediacapture-image/MediaStreamTrack-getCapabilities.html": [ - "eceaf5b1a8665211e42094730619d38143782fdc", + "9e34f2389cc4e446767df2aa4991cb43b8c95c7a", "testharness" ], "mediacapture-image/MediaStreamTrack-getConstraints-fast.html": [ - "5a5ce5f2dad58cb47e8b4215bc563e24b34b3119", + "16f869cf119faa7eaa043ff6d65fa31b2998315b", "testharness" ], "mediacapture-image/MediaStreamTrack-getSettings-fast.html": [ @@ -619374,7 +619906,7 @@ "testharness" ], "mediacapture-image/MediaStreamTrack-getSettings.html": [ - "5e9256eeb740663675ea93d692481556efd97628", + "8535f298bfab2ebca9dd3b37a0cc4f8538623203", "testharness" ], "mediacapture-image/detached-HTMLCanvasElement.html": [ @@ -619470,7 +620002,7 @@ "manual" ], "mediacapture-streams/MediaStream-MediaElement-srcObject.https.html": [ - "63442bea25b34cda8814a22dc1e90a7871b4a0b9", + "2ed96ec386c23c019791c8306d7d81cd4b3af920", "testharness" ], "mediacapture-streams/MediaStream-add-audio-track.https.html": [ @@ -629765,14 +630297,14 @@ "0a8ef6c77e87e68a1b7f9aa28588be4de3da98f0", "manual" ], + "payment-request/payment-response/onpayerdetailchange-attribute-manual.https.html": [ + "c8dd92636c6392b2436c8235340355c4529e12c1", + "manual" + ], "payment-request/payment-response/onpayerdetailchange-attribute.https.html": [ "ed9e6e885b842ae18c5f87f9992d0c9a9cb6401a", "testharness" ], - "payment-request/payment-response/onpayerdetailchange-attribute.manual.https.html": [ - "c8dd92636c6392b2436c8235340355c4529e12c1", - "testharness" - ], "payment-request/payment-response/payerEmail-attribute-manual.https.html": [ "28ce4c28a85c5bdb79f08438edd2086fd6b09c08", "manual" @@ -630178,7 +630710,7 @@ "manual" ], "pointerevents/pointerevent_releasepointercapture_invalid_pointerid-manual.html": [ - "fe2ab0061810dd32fbe73ce71dbc18c54e89ad30", + "d0cf3671743a85e6b76015c1baab4864253148be", "manual" ], "pointerevents/pointerevent_releasepointercapture_onpointercancel_touch-manual.html": [ @@ -630210,7 +630742,7 @@ "manual" ], "pointerevents/pointerevent_setpointercapture_invalid_pointerid-manual.html": [ - "4dbe858db16908698bf7811c31f60fae1365d17f", + "e2b143fe4a57c1585d96ec4ee29aa82ed0ae4dba", "manual" ], "pointerevents/pointerevent_setpointercapture_override_pending_capture_element-manual.html": [ @@ -639414,11 +639946,11 @@ "support" ], "resources/chromium/image_capture.mojom.js": [ - "11123feb87d06d53f8e933aa18fad118ae6c8737", + "bf8dd16ca75d4be1095808138d09a9c400159b86", "support" ], "resources/chromium/mock-imagecapture.js": [ - "878f59eb0095b65cabffe95c5538bcb79fa97b0d", + "329cbc3a761dc5720b7a67ed09ef68aec6a8bc3d", "support" ], "resources/chromium/mojo_bindings.js": [ @@ -639470,7 +640002,7 @@ "support" ], "resources/chromium/web_usb_service.mojom.js": [ - "d0b93a168bf06fe6b1dac3dd58c9e7d6f2a66d13", + "bacad8fa39095760aff4f67654ef6cc8ff723153", "support" ], "resources/chromium/web_usb_service.mojom.js.headers": [ @@ -639486,7 +640018,7 @@ "support" ], "resources/chromium/webusb-test.js": [ - "5f9262655f3fca5ac225e2788723cc4cd05ca916", + "18ee824aafaf45087f4b0aa2d6e90811cb39a751", "support" ], "resources/chromium/webusb-test.js.headers": [ @@ -639522,7 +640054,7 @@ "support" ], "resources/test/conftest.py": [ - "8765bf835dfc241d5cbd15e9697de465d4289bfb", + "5fca1d24c419cc5570eed657532c1ae3d3ddaada", "support" ], "resources/test/harness.html": [ @@ -639702,7 +640234,7 @@ "support" ], "resources/test/tests/functional/worker-dedicated.sub.html": [ - "586326d876119da03413a6473b042885abee7741", + "5573b1d5273fa4e19605c9c9cb638993008b3808", "support" ], "resources/test/tests/functional/worker-error.js": [ @@ -639778,7 +640310,7 @@ "support" ], "resources/test/tests/unit/exceptional-cases.html": [ - "df9e1239a2ec48dd8b489fb7001a5295e334f963", + "1a5335f6c1f7f255388631a10ba561efe07c0afc", "support" ], "resources/test/tests/unit/test-return-restrictions.html": [ @@ -643746,7 +644278,7 @@ "support" ], "service-workers/service-worker/resources/skip-waiting-installed-worker.js": [ - "b48d502b1360663b62063b7b0da0c96cf638992b", + "6f7008bddcdfa044dbedd2e8f2aceb89ec980a71", "support" ], "service-workers/service-worker/resources/skip-waiting-worker.js": [ @@ -644026,7 +644558,7 @@ "testharness" ], "service-workers/service-worker/worker-interception.https.html": [ - "4f14746d917f9e8f41dfca85e1669dde50d568c4", + "bf976a29c48a3810ef4ff20b5c7e8b70dec2b219", "testharness" ], "service-workers/specgen.json": [ @@ -644321,6 +644853,10 @@ "2d6a5e36585b623a89b1e5f4e059d881027a0b94", "testharness" ], + "shadow-dom/event-dispatch-order.tentative.html": [ + "1e88740f53a2dc25d9650e4f54c3011e2b0e9355", + "testharness" + ], "shadow-dom/event-inside-shadow-tree.html": [ "a7405a59560c790c5708a7eaa4e65b6669adc0dd", "testharness" @@ -644390,7 +644926,7 @@ "support" ], "shadow-dom/resources/shadow-dom.js": [ - "3e55684dac1c4fbe1064c6d5d8b8d7ee86224921", + "192ad45413035ae629ba8158a5ceaca171af11fa", "support" ], "shadow-dom/scroll-to-the-fragment-in-shadow-tree.html": [ @@ -648578,7 +649114,7 @@ "support" ], "svg/linking/scripted/a-download-click.svg": [ - "406d0e6ba56681ea3026c74614fe79a83f3aa61e", + "b728603d547582b15ff6b0d32bc39e8021fa2bae", "testharness" ], "svg/linking/scripted/a.rel-getter-01.svg": [ @@ -648786,7 +649322,7 @@ "testharness" ], "svg/path/property/getComputedStyle.svg": [ - "5830191931fb4f7dd0d4e929333248b8d3019e79", + "392c570e3525062886f7d4bda0ab7e006e3e370c", "testharness" ], "svg/path/property/priority-ref.svg": [ @@ -648801,6 +649337,66 @@ "b7f8cd308d7cbcf1aaa4ab686179e456f61c7d6f", "support" ], + "svg/path/property/serialization.svg": [ + "297f8ede687a28a12ced98a4b89051dd9ddf5090", + "testharness" + ], + "svg/pservers/reftests/meshgradient-basic-001-ref.png": [ + "691bff6244cd0abe046536efc0a100329b62d407", + "support" + ], + "svg/pservers/reftests/meshgradient-basic-001.svg": [ + "24290d40d6c37583d86aae4a098293c6cb8a6653", + "reftest" + ], + "svg/pservers/reftests/meshgradient-basic-002-ref.png": [ + "691bff6244cd0abe046536efc0a100329b62d407", + "support" + ], + "svg/pservers/reftests/meshgradient-basic-002.svg": [ + "2391135200207810cc770c961e72f77adb9b22c0", + "reftest" + ], + "svg/pservers/reftests/meshgradient-basic-003-ref.png": [ + "39c36a150fb1c9f98fcbd118a14589885527034b", + "support" + ], + "svg/pservers/reftests/meshgradient-basic-003.svg": [ + "84db2ea1260da1712381a334f9a99646a6418841", + "reftest" + ], + "svg/pservers/reftests/meshgradient-basic-004-ref.png": [ + "39c36a150fb1c9f98fcbd118a14589885527034b", + "support" + ], + "svg/pservers/reftests/meshgradient-basic-004.svg": [ + "c7e750199373bc3229d155fbd2d17f25b457aadf", + "reftest" + ], + "svg/pservers/reftests/meshgradient-basic-005-ref.png": [ + "3cd5164b776717ed1c9d487430682ee4ecd00a84", + "support" + ], + "svg/pservers/reftests/meshgradient-basic-005.svg": [ + "59a6c2500a17588f0c926d625f028a400bda71d8", + "reftest" + ], + "svg/pservers/reftests/meshgradient-bicubic-001-ref.png": [ + "551345d732c4f93e9f220d303f4823b5007d7605", + "support" + ], + "svg/pservers/reftests/meshgradient-bicubic-001.svg": [ + "8c3c219f1829694c002cd4c4026ed00202f51b3f", + "reftest" + ], + "svg/pservers/reftests/meshgradient-complex-001-ref.png": [ + "4ce893b827cabc5e4627060f3e5334c1b829bd30", + "support" + ], + "svg/pservers/reftests/meshgradient-complex-001.svg": [ + "625fae59ea53c96080ce3105e247bda46e7ed4c8", + "reftest" + ], "svg/pservers/reftests/radialgradient-basic-002-ref.svg": [ "26f4f508f35855ffd35baffb1aff129fe1ebf1be", "support" @@ -648873,6 +649469,10 @@ "11086aa198ff053c9d86c4bdaf4650fd2aa5596a", "testharness" ], + "svg/shapes/animatedPoints-non-animated.html": [ + "5c1758908605d71baf9fe87c9b54ccfab5c5e5cd", + "testharness" + ], "svg/shapes/ellipse-01-ref.svg": [ "c4ab1bd03913d56166a0a54a91d3a3c03703eceb", "support" @@ -650238,7 +650838,7 @@ "support" ], "tools/serve/serve.py": [ - "104701caf85ba2250d4c844650025517f0d473b6", + "c4afc691d34d7046ee81b7673bf7d2043b63ed5a", "support" ], "tools/serve/test_functional.py": [ @@ -654226,7 +654826,7 @@ "support" ], "tools/wpt/run.py": [ - "21dc7c8e9777f2c5ff1734b5b9ba5970b2ce978b", + "7e8827b10698d30fb47f1625ccbb5f7a344daafe", "support" ], "tools/wpt/testfiles.py": [ @@ -654514,7 +655114,7 @@ "support" ], "tools/wptrunner/wptrunner/browsers/firefox.py": [ - "04f2ce84a41619a23e29d5436430b11fa2b6d7c5", + "9f7ebfa2ca544616e2feaeb53c8af73220d7271a", "support" ], "tools/wptrunner/wptrunner/browsers/ie.py": [ @@ -659846,7 +660446,7 @@ "wdspec" ], "webdriver/tests/new_session/platform_name.py": [ - "0504f04259d8e289e1581669ba9066a14bb4d529", + "54fe4743bed44e75d6771ede5d4b7bf2f267bb95", "wdspec" ], "webdriver/tests/new_session/response.py": [ @@ -660586,7 +661186,7 @@ "testharness" ], "webrtc/RTCConfiguration-iceServers.html": [ - "6069c25af4accf7334f25f1bd30b687c2022aa6c", + "3f5c367d3ad98186461864b6b0bdecee3a07319e", "testharness" ], "webrtc/RTCConfiguration-iceTransportPolicy.html": [ @@ -666878,7 +667478,7 @@ "testharness" ], "x-frame-options/multiple.sub.html": [ - "f7a28e40ee22be3493c3926e15c40d2e814ad2e4", + "717e9fd25c51ee80f3adf029740d475790b3875e", "testharness" ], "x-frame-options/redirect.sub.html": [ @@ -667294,7 +667894,7 @@ "testharness" ], "xhr/getallresponseheaders.htm": [ - "7b54e9e16f84b00b25e6ce04bfb86b2160e4d11a", + "e5747331a8ce078d9ab6be7e040f9623c8aeb162", "testharness" ], "xhr/getresponseheader-case-insensitive.htm": [ @@ -667325,6 +667925,10 @@ "e3bc2720f12d9e5a6128bc84fbec4ea290a81d1d", "testharness" ], + "xhr/getresponseheader.any.js": [ + "4ff791aeb1635719b948ce7edcf5d1592b87c351", + "testharness" + ], "xhr/header-user-agent-async.htm": [ "8c1d0b663f4bcc35e24619e1f16dca7ec1bccf6a", "testharness" @@ -667757,6 +668361,10 @@ "fe37b1b38e9f8698581affe8d74f176688c11d15", "support" ], + "xhr/resources/headers-www-authenticate.asis": [ + "6f9905ee7a06627efcb244180367b13b65c0d0c4", + "support" + ], "xhr/resources/headers.asis": [ "d25fe52efeb5427b126c3b375b4bb00090836382", "support" diff --git a/tests/wpt/metadata/css/css-text-decor/inheritance.html.ini b/tests/wpt/metadata/css/css-text-decor/inheritance.html.ini new file mode 100644 index 00000000000..63a096a4e92 --- /dev/null +++ b/tests/wpt/metadata/css/css-text-decor/inheritance.html.ini @@ -0,0 +1,49 @@ +[inheritance.html] + [Property text-emphasis-style inherits] + expected: FAIL + + [Property text-emphasis-style has initial value none] + expected: FAIL + + [Property text-decoration-style has initial value solid] + expected: FAIL + + [Property text-underline-position has initial value auto] + expected: FAIL + + [Property text-decoration-line has initial value none] + expected: FAIL + + [Property text-emphasis-color has initial value rgba(2, 3, 4, 0.5)] + expected: FAIL + + [Property text-shadow has initial value none] + expected: FAIL + + [Property text-decoration-color has initial value rgba(2, 3, 4, 0.5)] + expected: FAIL + + [Property text-decoration-line does not inherit] + expected: FAIL + + [Property text-underline-position inherits] + expected: FAIL + + [Property text-emphasis-position inherits] + expected: FAIL + + [Property text-decoration-color does not inherit] + expected: FAIL + + [Property text-emphasis-position has initial value over right] + expected: FAIL + + [Property text-decoration-style does not inherit] + expected: FAIL + + [Property text-shadow inherits] + expected: FAIL + + [Property text-emphasis-color inherits] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini index decfd130b16..b07393a05bc 100644 --- a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini +++ b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini @@ -71,6 +71,3 @@ [bottom intermediate] expected: FAIL - [outline-width end] - expected: FAIL - diff --git a/tests/wpt/metadata/css/css-values/calc-integer.html.ini b/tests/wpt/metadata/css/css-values/calc-integer.html.ini deleted file mode 100644 index 4909ec02758..00000000000 --- a/tests/wpt/metadata/css/css-values/calc-integer.html.ini +++ /dev/null @@ -1,19 +0,0 @@ -[calc-integer.html] - [Accepts numbers, and rounds] - expected: FAIL - - [Rounds down if fractional part is < 0.5] - expected: FAIL - - [Basic division works] - expected: FAIL - - [Operation between and works] - expected: FAIL - - [Only rounds at the end of the conversion] - expected: FAIL - - [Rounds up if fractional part is >= 0.5] - expected: FAIL - diff --git a/tests/wpt/metadata/css/cssom-view/scroll-behavior-default-css.html.ini b/tests/wpt/metadata/css/cssom-view/scroll-behavior-default-css.html.ini new file mode 100644 index 00000000000..25fa33a4445 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/scroll-behavior-default-css.html.ini @@ -0,0 +1,4 @@ +[scroll-behavior-default-css.html] + [Testing default value of scroll-behavior] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/scroll-behavior-element.html.ini b/tests/wpt/metadata/css/cssom-view/scroll-behavior-element.html.ini new file mode 100644 index 00000000000..12d8a3aacc0 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/scroll-behavior-element.html.ini @@ -0,0 +1,4 @@ +[scroll-behavior-element.html] + [Testing scrollOptions' behavior for Element.scroll* and scroll-behavior on an element] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/scroll-behavior-main-frame-root.html.ini b/tests/wpt/metadata/css/cssom-view/scroll-behavior-main-frame-root.html.ini new file mode 100644 index 00000000000..3b5eabacdb3 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/scroll-behavior-main-frame-root.html.ini @@ -0,0 +1,4 @@ +[scroll-behavior-main-frame-root.html] + [Page loaded] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/scroll-behavior-main-frame-window.html.ini b/tests/wpt/metadata/css/cssom-view/scroll-behavior-main-frame-window.html.ini new file mode 100644 index 00000000000..eff693d13c7 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/scroll-behavior-main-frame-window.html.ini @@ -0,0 +1,4 @@ +[scroll-behavior-main-frame-window.html] + [Page loaded] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/scroll-behavior-scrollintoview-nested.html.ini b/tests/wpt/metadata/css/cssom-view/scroll-behavior-scrollintoview-nested.html.ini new file mode 100644 index 00000000000..0150811ae72 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/scroll-behavior-scrollintoview-nested.html.ini @@ -0,0 +1,4 @@ +[scroll-behavior-scrollintoview-nested.html] + [scrollIntoView with nested elements with different scroll-behavior] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth-positions.html.ini b/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth-positions.html.ini new file mode 100644 index 00000000000..ccf962d86a1 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth-positions.html.ini @@ -0,0 +1,55 @@ +[scroll-behavior-smooth-positions.html] + [Scroll positions when performing smooth scrolling from (1000, 0) to (500, 250) using scrollIntoView() ] + expected: FAIL + + [Scroll positions when performing smooth scrolling from (1000, 500) to (500, 250) using scrollTo() ] + expected: FAIL + + [Scroll positions when performing smooth scrolling from (0, 0) to (500, 250) using scrollIntoView() ] + expected: FAIL + + [Scroll positions when performing smooth scrolling from (1000, 500) to (500, 250) using scrollIntoView() ] + expected: FAIL + + [Scroll positions when performing smooth scrolling from (0, 500) to (500, 250) using scrollTo() ] + expected: FAIL + + [Scroll positions when performing smooth scrolling from (0, 500) to (500, 250) using scrollIntoView() ] + expected: FAIL + + [Scroll positions when performing smooth scrolling from (0, 500) to (500, 250) using scrollBy() ] + expected: FAIL + + [Scroll positions when performing smooth scrolling from (1000, 0) to (500, 250) using scrollBy() ] + expected: FAIL + + [Scroll positions when aborting a smooth scrolling with an instant scrolling] + expected: FAIL + + [Scroll positions when performing smooth scrolling from (1000, 500) to (500, 250) using scrollBy() ] + expected: FAIL + + [Scroll positions when performing smooth scrolling from (1000, 0) to (500, 250) using scroll() ] + expected: FAIL + + [Scroll positions when performing smooth scrolling from (1000, 0) to (500, 250) using scrollTo() ] + expected: FAIL + + [Scroll positions when performing smooth scrolling from (0, 500) to (500, 250) using scroll() ] + expected: FAIL + + [Scroll positions when aborting a smooth scrolling with another smooth scrolling] + expected: FAIL + + [Scroll positions when performing smooth scrolling from (1000, 500) to (500, 250) using scroll() ] + expected: FAIL + + [Scroll positions when performing smooth scrolling from (0, 0) to (500, 250) using scroll() ] + expected: FAIL + + [Scroll positions when performing smooth scrolling from (0, 0) to (500, 250) using scrollTo() ] + expected: FAIL + + [Scroll positions when performing smooth scrolling from (0, 0) to (500, 250) using scrollBy() ] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/scroll-behavior-subframe-root.html.ini b/tests/wpt/metadata/css/cssom-view/scroll-behavior-subframe-root.html.ini new file mode 100644 index 00000000000..3cc6a9cebd6 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/scroll-behavior-subframe-root.html.ini @@ -0,0 +1,5 @@ +[scroll-behavior-subframe-root.html] + expected: ERROR + [iframe loaded] + expected: NOTRUN + diff --git a/tests/wpt/metadata/css/cssom-view/scroll-behavior-subframe-window.html.ini b/tests/wpt/metadata/css/cssom-view/scroll-behavior-subframe-window.html.ini new file mode 100644 index 00000000000..9041673d25e --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/scroll-behavior-subframe-window.html.ini @@ -0,0 +1,5 @@ +[scroll-behavior-subframe-window.html] + expected: ERROR + [iframe loaded] + expected: NOTRUN + diff --git a/tests/wpt/metadata/css/cssom/overflow-serialization.html.ini b/tests/wpt/metadata/css/cssom/overflow-serialization.html.ini new file mode 100644 index 00000000000..3a51b8caa02 --- /dev/null +++ b/tests/wpt/metadata/css/cssom/overflow-serialization.html.ini @@ -0,0 +1,4 @@ +[overflow-serialization.html] + [CSSOM - Overflow shorthand serialization] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom/shorthand-values.html.ini b/tests/wpt/metadata/css/cssom/shorthand-values.html.ini index e0b5a48bdb5..427f39aa3e7 100644 --- a/tests/wpt/metadata/css/cssom/shorthand-values.html.ini +++ b/tests/wpt/metadata/css/cssom/shorthand-values.html.ini @@ -29,3 +29,6 @@ [The serialization of list-style-type: circle; list-style-position: inside; list-style-image: initial; should be canonical.] expected: FAIL + [The serialization of overflow-x: scroll; overflow-y: hidden; should be canonical.] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/api/basic/header-value-combining.any.js.ini b/tests/wpt/metadata/fetch/api/basic/header-value-combining.any.js.ini new file mode 100644 index 00000000000..1c41d1fd534 --- /dev/null +++ b/tests/wpt/metadata/fetch/api/basic/header-value-combining.any.js.ini @@ -0,0 +1,23 @@ +[header-value-combining.any.html] + [response.headers.get('foo-test')] + expected: FAIL + + [response.headers.get('www-authenticate')] + expected: FAIL + + +[header-value-combining.any.worker.html] + [response.headers.get('foo-test')] + expected: FAIL + + [response.headers.get('www-authenticate')] + expected: FAIL + + +[header-value-combining.any.serviceworker.html] + expected: TIMEOUT + +[header-value-combining.any.sharedworker.html] + [header-value-combining] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/api/basic/stream-safe-creation.any.js.ini b/tests/wpt/metadata/fetch/api/basic/stream-safe-creation.any.js.ini new file mode 100644 index 00000000000..1aab3419c1c --- /dev/null +++ b/tests/wpt/metadata/fetch/api/basic/stream-safe-creation.any.js.ini @@ -0,0 +1,11 @@ +[stream-safe-creation.any.serviceworker.html] + expected: TIMEOUT + +[stream-safe-creation.any.sharedworker.html] + [stream-safe-creation] + expected: FAIL + + +[stream-safe-creation.any.worker.html] + +[stream-safe-creation.any.html] diff --git a/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini b/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini index 0d630fb814a..3951cd266d5 100644 --- a/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini +++ b/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini @@ -1,5 +1,4 @@ [fetch-in-iframe.html] - expected: CRASH [Untitled] expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini new file mode 100644 index 00000000000..87b07c3e670 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_1.html] + [Multiple history traversals from the same task] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini deleted file mode 100644 index dc2e45516de..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_5.html] - [Multiple history traversals, last would be aborted] - expected: FAIL - diff --git a/tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-percentage-block-size.html.ini b/tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-percentage-block-size.html.ini new file mode 100644 index 00000000000..b638538060a --- /dev/null +++ b/tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-percentage-block-size.html.ini @@ -0,0 +1,28 @@ +[fieldset-percentage-block-size.html] + [div (writing-mode: vertical-lr)] + expected: FAIL + + [rendered legend (writing-mode: horizontal-tb)] + expected: FAIL + + [second legend (writing-mode: vertical-rl)] + expected: FAIL + + [rendered legend (writing-mode: vertical-lr)] + expected: FAIL + + [second legend (writing-mode: horizontal-tb)] + expected: FAIL + + [rendered legend (writing-mode: vertical-rl)] + expected: FAIL + + [div (writing-mode: horizontal-tb)] + expected: FAIL + + [div (writing-mode: vertical-rl)] + expected: FAIL + + [second legend (writing-mode: vertical-lr)] + expected: FAIL + diff --git a/tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-rendering.html.ini b/tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-rendering.html.ini new file mode 100644 index 00000000000..3e2d53e6be7 --- /dev/null +++ b/tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-rendering.html.ini @@ -0,0 +1,2 @@ +[legend-display-rendering.html] + expected: FAIL diff --git a/tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-list-item.html.ini b/tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-list-item.html.ini deleted file mode 100644 index 84b3539d05c..00000000000 --- a/tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-list-item.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[legend-list-item.html] - expected: FAIL diff --git a/tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-margin-inline.html.ini b/tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-margin-inline.html.ini new file mode 100644 index 00000000000..3d6e3e61f3e --- /dev/null +++ b/tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-margin-inline.html.ini @@ -0,0 +1,13 @@ +[legend-margin-inline.html] + [right] + expected: FAIL + + [center] + expected: FAIL + + [10px] + expected: FAIL + + [left] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini index 0c03afd7dd8..1de3f8d68b2 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini @@ -172,63 +172,3 @@ [XHTML img usemap="http://example.org/#garbage-before-hash-id"] expected: FAIL - [XHTML img usemap="#percent-escape-id-%41"] - expected: FAIL - - [XHTML img usemap="#different-CASE-id"] - expected: FAIL - - [XHTML img usemap="hash-last#"] - expected: FAIL - - [XHTML img usemap="no-hash-id"] - expected: FAIL - - [XHTML img usemap="#no-such-map"] - expected: FAIL - - [XHTML img usemap="#percent-escape-name-%41"] - expected: FAIL - - [XHTML img usemap="#"] - expected: FAIL - - [XHTML img usemap="#different-CASE-name"] - expected: FAIL - - [XHTML img usemap=""] - expected: FAIL - - [XHTML img usemap="no-hash-name"] - expected: FAIL - - [HTML (quirks) IMG usemap="#"] - expected: FAIL - - [HTML (quirks) IMG usemap="no-hash-id"] - expected: FAIL - - [HTML (quirks) IMG usemap="no-hash-name"] - expected: FAIL - - [HTML (quirks) IMG usemap="#no-such-map"] - expected: FAIL - - [HTML (quirks) IMG usemap="hash-last#"] - expected: FAIL - - [HTML (quirks) IMG usemap="#different-CASE-name"] - expected: FAIL - - [HTML (quirks) IMG usemap="#different-CASE-id"] - expected: FAIL - - [HTML (quirks) IMG usemap=""] - expected: FAIL - - [HTML (quirks) IMG usemap="#percent-escape-name-%41"] - expected: FAIL - - [HTML (quirks) IMG usemap="#percent-escape-id-%41"] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini index 5c16d6ab23a..0f1a214d0ee 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini @@ -1,14 +1,33 @@ [viewport-change.html] type: testharness + expected: TIMEOUT [picture: source (max-width:500px) broken image, img valid image, resize to wide] expected: TIMEOUT [picture: source (max-width:500px) valid image, img valid image, resize to wide] - expected: TIMEOUT + expected: FAIL [picture: source (max-width:500px) valid image, img broken image, resize to narrow] expected: TIMEOUT [picture: source (max-width:500px) valid image, img valid image, resize to narrow] - expected: TIMEOUT + expected: FAIL + + [picture: source (max-width:500px) broken image, img valid image, resize to narrow] + expected: FAIL + + [img (srcset 1 cand) valid image, resize to wide] + expected: FAIL + + [picture: same URL in source (max-width:500px) and img, resize to wide] + expected: FAIL + + [img (srcset 1 cand) valid image, resize to narrow] + expected: FAIL + + [picture: source (max-width:500px) valid image, img broken image, resize to wide] + expected: FAIL + + [picture: same URL in source (max-width:500px) and img, resize to narrow] + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html.ini new file mode 100644 index 00000000000..92e07546781 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html.ini @@ -0,0 +1,52 @@ +[parse-a-sizes-attribute-display-none.html] + [ ref sizes="1px" (display:none)] + expected: FAIL + + [ ref sizes="1px" (display:none)] + expected: FAIL + + [ ref sizes="1px" (display:none)] + expected: FAIL + + [ ref sizes="1px" (display:none)] + expected: FAIL + + [ ref sizes="1px" (display:none)] + expected: FAIL + + [ ref sizes="1px" (display:none)] + expected: FAIL + + [ ref sizes="1px" (display:none)] + expected: FAIL + + [ ref sizes="1px" (display:none)] + expected: FAIL + + [ ref sizes="1px" (display:none)] + expected: FAIL + + [ ref sizes="1px" (display:none)] + expected: FAIL + + [ ref sizes="1px" (display:none)] + expected: FAIL + + [ ref sizes="1px" (display:none)] + expected: FAIL + + [ ref sizes="1px" (display:none)] + expected: FAIL + + [ ref sizes="1px" (display:none)] + expected: FAIL + + [ ref sizes="1px" (display:none)] + expected: FAIL + + [ ref sizes="1px" (display:none)] + expected: FAIL + + [ ref sizes="1px" (display:none)] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini new file mode 100644 index 00000000000..a0e0184eb46 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini @@ -0,0 +1,52 @@ +[parse-a-sizes-attribute-quirks-mode.html] + [ ref sizes="1px" (quirks mode)] + expected: FAIL + + [ ref sizes="1px" (quirks mode)] + expected: FAIL + + [ ref sizes="1px" (quirks mode)] + expected: FAIL + + [ ref sizes="1px" (quirks mode)] + expected: FAIL + + [ ref sizes="1px" (quirks mode)] + expected: FAIL + + [ ref sizes="1px" (quirks mode)] + expected: FAIL + + [ ref sizes="1px" (quirks mode)] + expected: FAIL + + [ ref sizes="1px" (quirks mode)] + expected: FAIL + + [ ref sizes="1px" (quirks mode)] + expected: FAIL + + [ ref sizes="1px" (quirks mode)] + expected: FAIL + + [ ref sizes="1px" (quirks mode)] + expected: FAIL + + [ ref sizes="1px" (quirks mode)] + expected: FAIL + + [ ref sizes="1px" (quirks mode)] + expected: FAIL + + [ ref sizes="1px" (quirks mode)] + expected: FAIL + + [ ref sizes="1px" (quirks mode)] + expected: FAIL + + [ ref sizes="1px" (quirks mode)] + expected: FAIL + + [ ref sizes="1px" (quirks mode)] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html.ini new file mode 100644 index 00000000000..caa0aa5f39e --- /dev/null +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html.ini @@ -0,0 +1,52 @@ +[parse-a-sizes-attribute-standards-mode.html] + [ ref sizes="1px" (standards mode)] + expected: FAIL + + [ ref sizes="1px" (standards mode)] + expected: FAIL + + [ ref sizes="1px" (standards mode)] + expected: FAIL + + [ ref sizes="1px" (standards mode)] + expected: FAIL + + [ ref sizes="1px" (standards mode)] + expected: FAIL + + [ ref sizes="1px" (standards mode)] + expected: FAIL + + [ ref sizes="1px" (standards mode)] + expected: FAIL + + [ ref sizes="1px" (standards mode)] + expected: FAIL + + [ ref sizes="1px" (standards mode)] + expected: FAIL + + [ ref sizes="1px" (standards mode)] + expected: FAIL + + [ ref sizes="1px" (standards mode)] + expected: FAIL + + [ ref sizes="1px" (standards mode)] + expected: FAIL + + [ ref sizes="1px" (standards mode)] + expected: FAIL + + [ ref sizes="1px" (standards mode)] + expected: FAIL + + [ ref sizes="1px" (standards mode)] + expected: FAIL + + [ ref sizes="1px" (standards mode)] + expected: FAIL + + [ ref sizes="1px" (standards mode)] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html.ini new file mode 100644 index 00000000000..c3522eadce0 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html.ini @@ -0,0 +1,52 @@ +[parse-a-sizes-attribute-width-1000px.html] + [ ref sizes="1px" (width:1000px)] + expected: FAIL + + [ ref sizes="1px" (width:1000px)] + expected: FAIL + + [ ref sizes="1px" (width:1000px)] + expected: FAIL + + [ ref sizes="1px" (width:1000px)] + expected: FAIL + + [ ref sizes="1px" (width:1000px)] + expected: FAIL + + [ ref sizes="1px" (width:1000px)] + expected: FAIL + + [ ref sizes="1px" (width:1000px)] + expected: FAIL + + [ ref sizes="1px" (width:1000px)] + expected: FAIL + + [ ref sizes="1px" (width:1000px)] + expected: FAIL + + [ ref sizes="1px" (width:1000px)] + expected: FAIL + + [ ref sizes="1px" (width:1000px)] + expected: FAIL + + [ ref sizes="1px" (width:1000px)] + expected: FAIL + + [ ref sizes="1px" (width:1000px)] + expected: FAIL + + [ ref sizes="1px" (width:1000px)] + expected: FAIL + + [ ref sizes="1px" (width:1000px)] + expected: FAIL + + [ ref sizes="1px" (width:1000px)] + expected: FAIL + + [ ref sizes="1px" (width:1000px)] + expected: FAIL + diff --git a/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini b/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini deleted file mode 100644 index 2ed601c6ff4..00000000000 --- a/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini +++ /dev/null @@ -1,283 +0,0 @@ -[quirks.html] - [top: -\\31 .5] - expected: FAIL - - [bottom: -1A] - expected: FAIL - - [bottom: -1a] - expected: FAIL - - [top: @1] - expected: FAIL - - [top: "1a"] - expected: FAIL - - [top: @a] - expected: FAIL - - [bottom: "1"] - expected: FAIL - - [bottom: -/**/1] - expected: FAIL - - [top: +/**/1] - expected: FAIL - - [bottom: @1a] - expected: FAIL - - [top: 1\\31 ] - expected: FAIL - - [top: url('1')] - expected: FAIL - - [bottom: -\\31 ] - expected: FAIL - - [top: calc(1)] - expected: FAIL - - [top: \\31 ] - expected: FAIL - - [bottom: +1\\31 ] - expected: FAIL - - [bottom: 1\\31 .5] - expected: FAIL - - [bottom: #0001] - expected: FAIL - - [top: calc(2 * 2px)] - expected: FAIL - - [bottom: 1a] - expected: FAIL - - [bottom: A] - expected: FAIL - - [bottom: #01] - expected: FAIL - - [top: +\\31 .5] - expected: FAIL - - [bottom: #1] - expected: FAIL - - [top: -/**/1] - expected: FAIL - - [bottom: +\\31 .5] - expected: FAIL - - [bottom: \\31 ] - expected: FAIL - - [bottom: calc(1)] - expected: FAIL - - [top: #001] - expected: FAIL - - [top: +\\31 ] - expected: FAIL - - [bottom: +\\31 ] - expected: FAIL - - [top: +1.5] - expected: FAIL - - [top: +1\\31 ] - expected: FAIL - - [bottom: @a] - expected: FAIL - - [bottom: @1] - expected: FAIL - - [top: #1] - expected: FAIL - - [top: 1a] - expected: FAIL - - [bottom: +1a] - expected: FAIL - - [bottom: +1A] - expected: FAIL - - [bottom: "a"] - expected: FAIL - - [top: #00001] - expected: FAIL - - [bottom: -1\\31 .5] - expected: FAIL - - [top: "1"] - expected: FAIL - - [bottom: 1.5] - expected: FAIL - - [bottom: -\\31 .5] - expected: FAIL - - [bottom: url('1')] - expected: FAIL - - [bottom: -1.5] - expected: FAIL - - [top: \\31 .5] - expected: FAIL - - [bottom: "1a"] - expected: FAIL - - [bottom: calc(2 * 2px)] - expected: FAIL - - [bottom: +1\\31 .5] - expected: FAIL - - [bottom: 1\\31 ] - expected: FAIL - - [bottom: +/**/1] - expected: FAIL - - [bottom: #00001] - expected: FAIL - - [top: url(1)] - expected: FAIL - - [bottom: #001] - expected: FAIL - - [top: +1\\31 .5] - expected: FAIL - - [top: -1a] - expected: FAIL - - [top: -1A] - expected: FAIL - - [bottom: url(1)] - expected: FAIL - - [top: a] - expected: FAIL - - [top: A] - expected: FAIL - - [top: #000001] - expected: FAIL - - [top: 1] - expected: FAIL - - [top: 1\\31 .5] - expected: FAIL - - [bottom: a] - expected: FAIL - - [bottom: 1] - expected: FAIL - - [bottom: +1] - expected: FAIL - - [bottom: #000001] - expected: FAIL - - [bottom: +a] - expected: FAIL - - [bottom: +A] - expected: FAIL - - [top: 1.5] - expected: FAIL - - [top: +A] - expected: FAIL - - [top: +a] - expected: FAIL - - [top: +1] - expected: FAIL - - [top: -1.5] - expected: FAIL - - [top: -1\\31 .5] - expected: FAIL - - [top: +1a] - expected: FAIL - - [top: +1A] - expected: FAIL - - [top: @1a] - expected: FAIL - - [bottom: \\31 .5] - expected: FAIL - - [top: "a"] - expected: FAIL - - [top: #01] - expected: FAIL - - [bottom: +1.5] - expected: FAIL - - [bottom: -A] - expected: FAIL - - [bottom: -a] - expected: FAIL - - [bottom: -1\\31 ] - expected: FAIL - - [top: #0001] - expected: FAIL - - [bottom: -1] - expected: FAIL - - [top: -\\31 ] - expected: FAIL - - [top: -A] - expected: FAIL - - [top: -a] - expected: FAIL - - [top: -1] - expected: FAIL - - [top: -1\\31 ] - expected: FAIL - diff --git a/tests/wpt/metadata/url/urlencoded-parser.any.js.ini b/tests/wpt/metadata/url/urlencoded-parser.any.js.ini index d8250b97409..2e55f728d0a 100644 --- a/tests/wpt/metadata/url/urlencoded-parser.any.js.ini +++ b/tests/wpt/metadata/url/urlencoded-parser.any.js.ini @@ -1,36 +1,30 @@ [urlencoded-parser.any.html] + [request.formData() with input: &&&a=b&&&&c=d&] + expected: FAIL + + [request.formData() with input: _charset_=windows-1252&test=%C2x] + expected: FAIL + + [response.formData() with input: a=b&c=d&] + expected: FAIL + + [response.formData() with input: a=b&c=d] + expected: FAIL + + +[urlencoded-parser.any.worker.html] [request.formData() with input: a&b&c] expected: FAIL + [request.formData() with input: _charset_=windows-1252&test=%C2x] + expected: FAIL + + [request.formData() with input: a=b&c=d] + expected: FAIL + [response.formData() with input: a&b&c] expected: FAIL - [request.formData() with input: &&&a=b&&&&c=d&] - expected: FAIL - - [request.formData() with input: a=b&c=d] - expected: FAIL - - [request.formData() with input: a=b&c=d&] - expected: FAIL - - [request.formData() with input: _charset_=windows-1252&test=%C2x] - expected: FAIL - - [response.formData() with input: _charset_=windows-1252&test=%C2x] - expected: FAIL - - -[urlencoded-parser.any.worker.html] - [response.formData() with input: a=b&c=d] - expected: FAIL - - [request.formData() with input: a&b&c] - expected: FAIL - - [request.formData() with input: _charset_=windows-1252&test=%C2x] - expected: FAIL - - [request.formData() with input: a=b&c=d] + [response.formData() with input: a=b&c=d&] expected: FAIL diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini index dfc61af48f0..66bd350083b 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini @@ -1,2 +1,73 @@ [realtimeanalyser-fft-scaling.html] - expected: TIMEOUT + [X 2048-point FFT peak position is not equal to 64. Got 0.] + expected: FAIL + + [X 128-point FFT peak position is not equal to 4. Got 0.] + expected: FAIL + + [X 32768-point FFT peak value in dBFS is not greater than or equal to -13.56. Got -1000.] + expected: FAIL + + [X 64-point FFT peak value in dBFS is not greater than or equal to -13.56. Got -1000.] + expected: FAIL + + [X 4096-point FFT peak value in dBFS is not greater than or equal to -13.56. Got -1000.] + expected: FAIL + + [< [FFT scaling tests\] 22 out of 22 assertions were failed.] + expected: FAIL + + [X 128-point FFT peak value in dBFS is not greater than or equal to -13.56. Got -1000.] + expected: FAIL + + [X 8192-point FFT peak position is not equal to 256. Got 0.] + expected: FAIL + + [X 32-point FFT peak value in dBFS is not greater than or equal to -14.43. Got -1000.] + expected: FAIL + + [X 16384-point FFT peak value in dBFS is not greater than or equal to -13.56. Got -1000.] + expected: FAIL + + [X 256-point FFT peak value in dBFS is not greater than or equal to -13.56. Got -1000.] + expected: FAIL + + [X 8192-point FFT peak value in dBFS is not greater than or equal to -13.56. Got -1000.] + expected: FAIL + + [X 1024-point FFT peak position is not equal to 32. Got 0.] + expected: FAIL + + [X 64-point FFT peak position is not equal to 2. Got 0.] + expected: FAIL + + [X 512-point FFT peak value in dBFS is not greater than or equal to -13.56. Got -1000.] + expected: FAIL + + [X 32-point FFT peak position is not equal to 1. Got 0.] + expected: FAIL + + [X 16384-point FFT peak position is not equal to 512. Got 0.] + expected: FAIL + + [X 1024-point FFT peak value in dBFS is not greater than or equal to -13.56. Got -1000.] + expected: FAIL + + [X 2048-point FFT peak value in dBFS is not greater than or equal to -13.56. Got -1000.] + expected: FAIL + + [X 32768-point FFT peak position is not equal to 1024. Got 0.] + expected: FAIL + + [X 4096-point FFT peak position is not equal to 128. Got 0.] + expected: FAIL + + [X 512-point FFT peak position is not equal to 16. Got 0.] + expected: FAIL + + [X 256-point FFT peak position is not equal to 8. Got 0.] + expected: FAIL + + [# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.] + expected: FAIL + diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-allpass.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-allpass.html.ini index 6ef6c3f2d0b..54b05fe122a 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-allpass.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-allpass.html.ini @@ -8,3 +8,6 @@ [# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.] expected: FAIL + [X Max error in Allpass filter response is not less than or equal to 3.9337e-8. Got 1.] + expected: FAIL + diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highpass.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highpass.html.ini index 6270a74e10f..f068070c962 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highpass.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highpass.html.ini @@ -8,3 +8,6 @@ [# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.] expected: FAIL + [X Max error in Highpass filter response is not less than or equal to 1.5487e-8. Got 0.6490383096498159.] + expected: FAIL + diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-notch.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-notch.html.ini index de2ff5cb0c8..55002bf93c2 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-notch.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-notch.html.ini @@ -8,3 +8,6 @@ [# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.] expected: FAIL + [X Max error in Notch filter response is not less than or equal to 1.9669e-8. Got 1.] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini index 9d72f08e38e..f806a845a2a 100644 --- a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini +++ b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini @@ -1,5 +1,6 @@ [005.html] type: testharness + expected: ERROR [dedicated worker in shared worker in dedicated worker] expected: FAIL diff --git a/tests/wpt/metadata/xhr/getallresponseheaders.htm.ini b/tests/wpt/metadata/xhr/getallresponseheaders.htm.ini index 76c0afc7312..eb26aa270a5 100644 --- a/tests/wpt/metadata/xhr/getallresponseheaders.htm.ini +++ b/tests/wpt/metadata/xhr/getallresponseheaders.htm.ini @@ -9,3 +9,6 @@ [XMLHttpRequest: getAllResponseHeaders() 2] expected: FAIL + [XMLHttpRequest: getAllResponseHeaders() 3] + expected: FAIL + diff --git a/tests/wpt/metadata/xhr/getresponseheader.any.js.ini b/tests/wpt/metadata/xhr/getresponseheader.any.js.ini new file mode 100644 index 00000000000..ca5668f44a6 --- /dev/null +++ b/tests/wpt/metadata/xhr/getresponseheader.any.js.ini @@ -0,0 +1,15 @@ +[getresponseheader.any.worker.html] + [getResponseHeader('foo-test')] + expected: FAIL + + [getResponseHeader('www-authenticate')] + expected: FAIL + + +[getresponseheader.any.html] + [getResponseHeader('foo-test')] + expected: FAIL + + [getResponseHeader('www-authenticate')] + expected: FAIL + diff --git a/tests/wpt/web-platform-tests/background-fetch/dangling-markup.https.window.js b/tests/wpt/web-platform-tests/background-fetch/dangling-markup.https.window.js deleted file mode 100644 index 764257d7d1a..00000000000 --- a/tests/wpt/web-platform-tests/background-fetch/dangling-markup.https.window.js +++ /dev/null @@ -1,17 +0,0 @@ -// META: script=/service-workers/service-worker/resources/test-helpers.sub.js -// META: script=resources/utils.js -'use strict'; - -// "If request's url's potentially-dangling-markup flag is set, and request's -// url's scheme is an HTTP(S) scheme, then set response to a network error." -// https://github.com/whatwg/fetch/pull/519 -// https://github.com/whatwg/fetch/issues/546 - -// This is not a comprehensive test of dangling markup detection - it is just -// intended to check that detection is enabled. - -backgroundFetchTest((t, bgFetch) => { - return promise_rejects( - t, new TypeError(), - bgFetch.fetch(uniqueId(), 'https://example.com/?\n<')); -}, 'fetch to URL containing \\n and < should reject'); diff --git a/tests/wpt/web-platform-tests/background-fetch/fetch.https.window.js b/tests/wpt/web-platform-tests/background-fetch/fetch.https.window.js index 70dacd717a0..98ecdfa3933 100644 --- a/tests/wpt/web-platform-tests/background-fetch/fetch.https.window.js +++ b/tests/wpt/web-platform-tests/background-fetch/fetch.https.window.js @@ -139,14 +139,12 @@ backgroundFetchTest(async (test, backgroundFetch) => { assert_equals(results.length, 1); assert_equals(eventRegistration.id, registration.id); - assert_equals(eventRegistration.state, 'success'); assert_equals(eventRegistration.failureReason, ''); - for (const result of results) { - assert_true(result.url.includes('resources/feature-name.txt')); - assert_equals(result.status, 200); - assert_equals(result.text, 'Background Fetch'); - } + assert_true(results[0].url.includes('resources/feature-name.txt')); + assert_equals(results[0].status, 200); + assert_equals(results[0].text, 'Background Fetch'); + }, 'Fetches can have requests with a body'); @@ -170,4 +168,26 @@ backgroundFetchTest(async (test, backgroundFetch) => { } assert_false(registration.recordsAvailable); -}, 'recordsAvailable is false after onbackgroundfetchsuccess finishes execution.'); \ No newline at end of file +}, 'recordsAvailable is false after onbackgroundfetchsuccess finishes execution.'); + +backgroundFetchTest(async (test, backgroundFetch) => { + const registrationId = uniqueId(); + const registration = + await backgroundFetch.fetch(registrationId, 'resources/missing-cat.txt'); + + assert_equals(registration.id, registrationId); + assert_equals(registration.result, ''); + assert_equals(registration.failureReason, ''); + + const {type, eventRegistration, results} = await getMessageFromServiceWorker(); + assert_equals(type, 'backgroundfetchfail'); + assert_equals(results.length, 1); + assert_true(results[0].url.includes('resources/missing-cat.txt')); + assert_equals(results[0].status, 404); + assert_equals(results[0].text, ''); + + assert_equals(eventRegistration.id, registration.id); + assert_equals(eventRegistration.result, 'failure'); + assert_equals(eventRegistration.failureReason, 'bad-status'); + +}, 'Using Background Fetch to fetch a non-existent resource should fail.'); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/background-fetch/service_workers/sw.js b/tests/wpt/web-platform-tests/background-fetch/service_workers/sw.js index ab2445d18b0..43d778c0891 100644 --- a/tests/wpt/web-platform-tests/background-fetch/service_workers/sw.js +++ b/tests/wpt/web-platform-tests/background-fetch/service_workers/sw.js @@ -13,12 +13,19 @@ async function getFetchResult(record) { }; } -self.addEventListener('backgroundfetchsuccess', event => { +function handleBackgroundFetchUpdateEvent(event) { event.waitUntil( event.registration.matchAll() - .then(records => Promise.all(records.map(record => getFetchResult(record)))) + .then(records => + Promise.all(records.map(record => getFetchResult(record)))) .then(results => { const registrationCopy = cloneRegistration(event.registration); - sendMessageToDocument({ type: event.type, eventRegistration: registrationCopy, results }) + sendMessageToDocument( + { type: event.type, eventRegistration: registrationCopy, results }) })); -}); +} + +self.addEventListener('backgroundfetchsuccess', handleBackgroundFetchUpdateEvent); +self.addEventListener('backgroundfetchfail', handleBackgroundFetchUpdateEvent); + + diff --git a/tests/wpt/web-platform-tests/css/css-align/inheritance.html b/tests/wpt/web-platform-tests/css/css-align/inheritance.html new file mode 100644 index 00000000000..7e2fa130be2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-align/inheritance.html @@ -0,0 +1,33 @@ + + + + +Inheritance of CSS Box Alignment properties + + + + + + + + +
+
+
+ + + + diff --git a/tests/wpt/web-platform-tests/css/css-break/inheritance.html b/tests/wpt/web-platform-tests/css/css-break/inheritance.html new file mode 100644 index 00000000000..e0be119e400 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/inheritance.html @@ -0,0 +1,26 @@ + + + + +Inheritance of CSS Fragmentation properties + + + + + + + + +
+
+
+ + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/inheritance.html b/tests/wpt/web-platform-tests/css/css-contain/inheritance.html new file mode 100644 index 00000000000..07378a29f39 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/inheritance.html @@ -0,0 +1,21 @@ + + + + +Inheritance of CSS contain property + + + + + + + + +
+
+
+ + + diff --git a/tests/wpt/web-platform-tests/css/css-display/inheritance.html b/tests/wpt/web-platform-tests/css/css-display/inheritance.html new file mode 100644 index 00000000000..bfd072651cb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-display/inheritance.html @@ -0,0 +1,21 @@ + + + + +Inheritance of CSS display property + + + + + + + + +
+
+
+ + + diff --git a/tests/wpt/web-platform-tests/css/css-grid/inheritance.html b/tests/wpt/web-platform-tests/css/css-grid/inheritance.html new file mode 100644 index 00000000000..eee86f70300 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/inheritance.html @@ -0,0 +1,30 @@ + + + + +Inheritance of CSS Grid Layout properties + + + + + + + + +
+
+
+ + + diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/constraints-fixed-block-size-percentage-quirks-mode.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/constraints-fixed-block-size-percentage-quirks-mode.https.html new file mode 100644 index 00000000000..9bd9044991c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/constraints-fixed-block-size-percentage-quirks-mode.https.html @@ -0,0 +1,38 @@ + + + + + + + + +
+
+
+
+
+ + diff --git a/tests/wpt/web-platform-tests/css/css-lists/inheritance.html b/tests/wpt/web-platform-tests/css/css-lists/inheritance.html new file mode 100644 index 00000000000..ff1bcdcfb46 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-lists/inheritance.html @@ -0,0 +1,25 @@ + + + + +Inheritance of CSS Lists properties + + + + + + + + +
+
+
+ + + diff --git a/tests/wpt/web-platform-tests/css/css-masking/inheritance.html b/tests/wpt/web-platform-tests/css/css-masking/inheritance.html new file mode 100644 index 00000000000..34f75859ee8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/inheritance.html @@ -0,0 +1,38 @@ + + + + +Inheritance of CSS Masking properties + + + + + + + + +
+
+
+ + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-shorthand-001.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-shorthand-001.html index d922e902720..f425636c3bb 100644 --- a/tests/wpt/web-platform-tests/css/css-overflow/overflow-shorthand-001.html +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-shorthand-001.html @@ -8,15 +8,15 @@
diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/registered-properties-inheritance.html b/tests/wpt/web-platform-tests/css/css-properties-values-api/registered-properties-inheritance.html index 20275a5c7a1..057cd8ca7e1 100644 --- a/tests/wpt/web-platform-tests/css/css-properties-values-api/registered-properties-inheritance.html +++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/registered-properties-inheritance.html @@ -44,4 +44,17 @@ test(function() { assert_equals(innerComputedStyle.getPropertyValue('--non-inherited-length-2'), '90px'); assert_equals(innerComputedStyle.getPropertyValue('--non-inherited-length-3'), '6px'); }, "Registered properties are correctly inherited (or not) depending on the inherits flag."); + +test(function(){ + CSS.registerProperty({name: '--initial-length-1', syntax: '', initialValue: '0px', inherits: false}); + outer.style = '--initial-length-1: notalength'; + inner.style = '--initial-length-1: inherit'; + assert_equals(getComputedStyle(inner).getPropertyValue('--initial-length-1'), '0px'); +}, "Explicitly inheriting from a parent with an invalid value results in initial value."); + +test(function(){ + CSS.registerProperty({name: '--initial-length-2', syntax: '', initialValue: '0px', inherits: false}); + inner.style = '--initial-length-2: inherit'; + assert_equals(getComputedStyle(inner).getPropertyValue('--initial-length-2'), '0px'); +}, "Explicitly inheriting from a parent with no value results in initial value."); diff --git a/tests/wpt/web-platform-tests/css/css-ruby/inheritance.html b/tests/wpt/web-platform-tests/css/css-ruby/inheritance.html new file mode 100644 index 00000000000..9f546c23bb8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ruby/inheritance.html @@ -0,0 +1,22 @@ + + + + +Inheritance of CSS Ruby Layout properties + + + + + + + + +
+
+
+ + + diff --git a/tests/wpt/web-platform-tests/css/css-ruby/parsing/ruby-align-invalid.html b/tests/wpt/web-platform-tests/css/css-ruby/parsing/ruby-align-invalid.html new file mode 100644 index 00000000000..fcb8511d9e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ruby/parsing/ruby-align-invalid.html @@ -0,0 +1,21 @@ + + + + +CSS Ruby Layout: parsing ruby-align with invalid values + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-ruby/parsing/ruby-align-valid.html b/tests/wpt/web-platform-tests/css/css-ruby/parsing/ruby-align-valid.html new file mode 100644 index 00000000000..23093b2b232 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ruby/parsing/ruby-align-valid.html @@ -0,0 +1,20 @@ + + + + +CSS Ruby Layout: parsing ruby-align with valid values + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-ruby/parsing/ruby-position-invalid.html b/tests/wpt/web-platform-tests/css/css-ruby/parsing/ruby-position-invalid.html new file mode 100644 index 00000000000..907c7deee31 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ruby/parsing/ruby-position-invalid.html @@ -0,0 +1,22 @@ + + + + +CSS Ruby Layout: parsing ruby-position with invalid values + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-ruby/parsing/ruby-position-valid.html b/tests/wpt/web-platform-tests/css/css-ruby/parsing/ruby-position-valid.html new file mode 100644 index 00000000000..2a217486137 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ruby/parsing/ruby-position-valid.html @@ -0,0 +1,19 @@ + + + + +CSS Ruby Layout: parsing ruby-position with valid values + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-scrollbars/support/viewport-scrollbar-body-frame.html b/tests/wpt/web-platform-tests/css/css-scrollbars/support/viewport-scrollbar-body-frame.html index 74c02f994e3..8dacffefb62 100644 --- a/tests/wpt/web-platform-tests/css/css-scrollbars/support/viewport-scrollbar-body-frame.html +++ b/tests/wpt/web-platform-tests/css/css-scrollbars/support/viewport-scrollbar-body-frame.html @@ -2,8 +2,7 @@ +
+

Width Distribution

+

"Computing column measures"

+

This is testing that the table's auto columns are correctly recalculated after removing and adding a col element. + Spec Text

+ +
+ + + + + + + + + + + + +
100200300
+ + + + + + + + + + + + +
100200300
+ + + + + + + + + + + + +
100200300
+ +
+ diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/inheritance.html b/tests/wpt/web-platform-tests/css/css-text-decor/inheritance.html new file mode 100644 index 00000000000..17486f1f193 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/inheritance.html @@ -0,0 +1,33 @@ + + + + +Inheritance of CSS Text Decoration properties + + + + + + + + +
+
+
+ + + + diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/inheritance.html b/tests/wpt/web-platform-tests/css/css-writing-modes/inheritance.html new file mode 100644 index 00000000000..143571c9d97 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/inheritance.html @@ -0,0 +1,25 @@ + + + + +Inheritance of CSS Writing Modes properties + + + + + + + + +
+
+
+ + + diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-default-css.html b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-default-css.html new file mode 100644 index 00000000000..8606b1f3ed4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-default-css.html @@ -0,0 +1,52 @@ + +Testing default value of scroll-behavior + + + + + + + + +
+
+
+
+ +
+
+ diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-element.html b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-element.html new file mode 100644 index 00000000000..9f60ca77112 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-element.html @@ -0,0 +1,163 @@ + +Testing scrollOptions' behavior for Element.scroll* and scroll-behavior on an element + + + + + + + + +
+
+
+
+ +
+
+ diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root.html b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root.html new file mode 100644 index 00000000000..7ef0a4aa0da --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root.html @@ -0,0 +1,169 @@ + +Testing scrollOptions' behavior for Element.scroll* and scroll-behavior on the root of the main frame + + + + + + + + +
+
+
+
+
+ diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window.html b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window.html new file mode 100644 index 00000000000..57b0d913461 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window.html @@ -0,0 +1,169 @@ + +Testing scrollOptions' behavior for Element.scroll* on the window of the main frame + + + + + + + + +
+
+
+
+
+ diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested.html b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested.html new file mode 100644 index 00000000000..2a97e065663 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested.html @@ -0,0 +1,88 @@ + +Testing scrollOptions' behavior with scrollIntoView for nested scrolling nodes + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-smooth-positions.html b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-smooth-positions.html new file mode 100644 index 00000000000..19e317d5e4b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-smooth-positions.html @@ -0,0 +1,151 @@ + +Testing scroll positions when scrolling an element with smooth behavior + + + + + + + + +
+
+
+
+ +
+
+ diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-subframe-root.html b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-subframe-root.html new file mode 100644 index 00000000000..32de1b62038 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-subframe-root.html @@ -0,0 +1,170 @@ + +Testing scrollOptions' behavior for Element.scroll* and scroll-behavior on the root of a subframe + + + + + + + +
+
+ + diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html new file mode 100644 index 00000000000..0a8ed39d1b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html @@ -0,0 +1,171 @@ + +Testing scrollOptions' behavior for Element.scroll* and scroll-behavior on the root of a subframe + + + + + + + +
+
+ + diff --git a/tests/wpt/web-platform-tests/css/cssom-view/support/scroll-behavior.js b/tests/wpt/web-platform-tests/css/cssom-view/support/scroll-behavior.js new file mode 100644 index 00000000000..0a0968e025b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/support/scroll-behavior.js @@ -0,0 +1,87 @@ +function observeScrolling(elements, callback) { + if (!Array.isArray(elements)) + elements = [elements]; + var lastChangedFrame = 0; + var lastLeft = new Map(); + var lastTop = new Map(); + elements.forEach((element) => { + lastLeft.set(element, element.scrollLeft); + lastTop.set(element, element.scrollTop); + }); + function tick(frames) { + // We requestAnimationFrame either for 500 frames or until 20 frames with + // no change have been observed. + if (frames >= 500 || frames - lastChangedFrame > 20) { + callback(true); + } else { + var scrollHappened = elements.some((element) => { + return element.scrollLeft != lastLeft.get(element) || element.scrollTop != lastTop.get(element); + }); + if (scrollHappened) { + lastChangedFrame = frames; + elements.forEach((element) => { + lastLeft.set(element, element.scrollLeft); + lastTop.set(element, element.scrollTop); + }); + callback(false); + } + requestAnimationFrame(tick.bind(null, frames + 1)); + } + } + tick(0); +} + +function waitForScrollEnd(elements) { + return new Promise((resolve) => { + observeScrolling(elements, (done) => { + if (done) + resolve(); + }); + }); +} + +function resetScroll(scrollingElement) { + // Try various methods to ensure the element position is reset immediately. + scrollingElement.scrollLeft = 0; + scrollingElement.scrollTop = 0; + scrollingElement.scroll({left: 0, top: 0, behavior: "instant"}); +} + +function resetScrollForWindow(scrollingWindow) { + // Try various methods to ensure the element position is reset immediately. + scrollingWindow.document.scrollingElement.scrollLeft = 0; + scrollingWindow.document.scrollingElement.scrollTop = 0; + scrollingWindow.scroll({left: 0, top: 0, behavior: "instant"}); +} + +function setScrollBehavior(styledElement, className) { + styledElement.classList.remove("autoBehavior", "smoothBehavior"); + styledElement.classList.add(className); +} + +function scrollNode(scrollingElement, scrollFunction, behavior, elementToRevealLeft, elementToRevealTop) { + var args = {}; + if (behavior) + args.behavior = behavior; + switch (scrollFunction) { + case "scrollIntoView": + args.inline = "start"; + args.block = "start"; + elementToReveal.scrollIntoView(args); + break; + default: + args.left = elementToRevealLeft; + args.top = elementToRevealTop; + scrollingElement[scrollFunction](args); + break; + } +} + +function scrollWindow(scrollingWindow, scrollFunction, behavior, elementToRevealLeft, elementToRevealTop) { + var args = {}; + if (behavior) + args.behavior = behavior; + args.left = elementToRevealLeft; + args.top = elementToRevealTop; + scrollingWindow[scrollFunction](args); +} diff --git a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-insets-absolute.html b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-insets-absolute.html index 196f5f26f31..fae0a84a7b4 100644 --- a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-insets-absolute.html +++ b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-insets-absolute.html @@ -3,7 +3,7 @@ CSSOM: resolved values of the inset properties for absolute positioning - + diff --git a/tests/wpt/web-platform-tests/css/cssom/shorthand-values.html b/tests/wpt/web-platform-tests/css/cssom/shorthand-values.html index 1e4d93acb26..d8d7f5349a4 100644 --- a/tests/wpt/web-platform-tests/css/cssom/shorthand-values.html +++ b/tests/wpt/web-platform-tests/css/cssom/shorthand-values.html @@ -32,7 +32,7 @@ 'border: 1px; border-top-color: red;': 'border-width: 1px; border-top-color: red;', 'border: solid; border-style: dotted': 'border: dotted;', 'border-width: 1px;': 'border-width: 1px;', - 'overflow-x: scroll; overflow-y: hidden;': 'overflow: hidden scroll;', + 'overflow-x: scroll; overflow-y: hidden;': 'overflow: scroll hidden;', 'overflow-x: scroll; overflow-y: scroll;': 'overflow: scroll;', 'outline-width: 2px; outline-style: dotted; outline-color: blue;': 'outline: blue dotted 2px;', 'margin-top: 1px; margin-right: 2px; margin-bottom: 3px; margin-left: 4px;': 'margin: 1px 2px 3px 4px;', diff --git a/tests/wpt/web-platform-tests/css/cssom/support/getComputedStyle-insets.js b/tests/wpt/web-platform-tests/css/cssom/support/getComputedStyle-insets.js index 7bd34fe87a2..beec32e76bc 100644 --- a/tests/wpt/web-platform-tests/css/cssom/support/getComputedStyle-insets.js +++ b/tests/wpt/web-platform-tests/css/cssom/support/getComputedStyle-insets.js @@ -89,9 +89,9 @@ function runTestsWithWM(data, testWM, cbWM) { function checkStyle(declarations, expected, msg) { test(function() { - testEl.style.cssText = style + "; " + serialize({...declarations, ...testWM.style}); + testEl.style.cssText = style + "; " + serialize(Object.assign({}, declarations, testWM.style)); if (containingBlockElement) { - containingBlockElement.style.cssText = serialize({...cbWM.style}); + containingBlockElement.style.cssText = serialize(Object.assign({}, cbWM.style)); } const cs = getComputedStyle(testEl); for (let [prop, value] of Object.entries(expected)) { diff --git a/tests/wpt/web-platform-tests/css/motion/offset-path-serialization.html b/tests/wpt/web-platform-tests/css/motion/offset-path-serialization.html new file mode 100644 index 00000000000..1c000919518 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/motion/offset-path-serialization.html @@ -0,0 +1,42 @@ + + + + +Motion Path Module Level 1: path serialization + + + + + + + +
+ + + diff --git a/tests/wpt/web-platform-tests/css/motion/parsing/offset-parsing-valid.html b/tests/wpt/web-platform-tests/css/motion/parsing/offset-parsing-valid.html index b93091b2088..3fe8a5b20d8 100644 --- a/tests/wpt/web-platform-tests/css/motion/parsing/offset-parsing-valid.html +++ b/tests/wpt/web-platform-tests/css/motion/parsing/offset-parsing-valid.html @@ -30,11 +30,11 @@ test_valid_value("offset", "path('M 0 0 H 1') 50px", "path(\"M 0 0 H 1\") 50px") test_valid_value("offset", "path(\"M 0 0 H 1\") auto"); test_valid_value("offset", "path('M 0 0 H 1') reverse 30deg 50px", "path(\"M 0 0 H 1\") 50px reverse 30deg"); test_valid_value("offset", "path(\"M 0 0 H 1\")"); -test_valid_value("offset", "path('m 0 0 h 100') -7rad 8px / auto", "path(\"m 0 0 h 100\") 8px -7rad / auto"); -test_valid_value("offset", "path('m 0 0 h 100') -7rad 8px / left top", "path(\"m 0 0 h 100\") 8px -7rad / left top"); +test_valid_value("offset", "path('m 20 0 h 100') -7rad 8px / auto", "path(\"m 20 0 h 100\") 8px -7rad / auto"); +test_valid_value("offset", "path('m 0 30 v 100') -7rad 8px / left top", "path(\"m 0 30 v 100\") 8px -7rad / left top"); test_valid_value("offset", "path('m 0 0 h 100') -7rad 8px", "path(\"m 0 0 h 100\") 8px -7rad"); -test_valid_value("offset", "path(\"m 0 0 h 100\") 100px 0deg"); -test_valid_value("offset", "path('m 1 2 v 3 Z')", "path(\"m 1 2 v 3 Z\")"); +test_valid_value("offset", "path(\"M 0 0 H 100\") 100px 0deg"); +test_valid_value("offset", "path( 'm 1 2 v 3.00 z')", "path(\"m 1 2 v 3 Z\")"); test_valid_value("offset", "ray(farthest-corner 90deg) 1%", "ray(90deg farthest-corner) 1%"); test_valid_value("offset", "ray(sides 0deg) 50% 90deg auto", "ray(0deg sides) 50% auto 90deg"); test_valid_value("offset", "right bottom / left top"); diff --git a/tests/wpt/web-platform-tests/css/motion/parsing/offset-path-parsing-valid.html b/tests/wpt/web-platform-tests/css/motion/parsing/offset-path-parsing-valid.html index bda82928726..0ed360f6e36 100644 --- a/tests/wpt/web-platform-tests/css/motion/parsing/offset-path-parsing-valid.html +++ b/tests/wpt/web-platform-tests/css/motion/parsing/offset-path-parsing-valid.html @@ -21,8 +21,13 @@ test_valid_value("offset-path", "ray(270deg farthest-corner contain)"); test_valid_value("offset-path", "ray(-720deg sides)"); test_valid_value("offset-path", "ray(calc(180deg - 45deg) farthest-side)", "ray(calc(135deg) farthest-side)"); -test_valid_value("offset-path", 'path("m 0 0 h -100")'); +test_valid_value("offset-path", 'path("m 20 0 h -100")'); test_valid_value("offset-path", 'path("M 0 0 L 100 100 M 100 200 L 200 200 Z L 300 300 Z")'); +test_valid_value("offset-path", 'path("m 10 20 q 30 60 40 50 q 100 70 90 80")'); +test_valid_value("offset-path", 'path("M 0 0 L 100 100 m 0 100 l 100 0 Z l 160 20 Z")'); +test_valid_value("offset-path", 'path("m 10 20 l 20 30 Z l 50 60 Z m 70 80 l 90 60 Z t 70 120")'); +test_valid_value("offset-path", 'path("m 10 170 h 90 v 30 m 0 0 s 1 2 3 4 z c 9 8 7 6 5 4")', 'path("m 10 170 h 90 v 30 m 0 0 s 1 2 3 4 Z c 9 8 7 6 5 4")'); +test_valid_value("offset-path", 'path("m 10 20 a 10 20 30 1 0 40 50 a 110 120 30 1 1 140 50")'); test_valid_value("offset-path", 'url("http://www.example.com/index.html#polyline1")'); diff --git a/tests/wpt/web-platform-tests/css/support/inheritance-testcommon.js b/tests/wpt/web-platform-tests/css/support/inheritance-testcommon.js index 50bf4c3ae2b..1a4d2fee891 100644 --- a/tests/wpt/web-platform-tests/css/support/inheritance-testcommon.js +++ b/tests/wpt/web-platform-tests/css/support/inheritance-testcommon.js @@ -24,10 +24,10 @@ function assert_inherited(property, initial, other) { assert_equals(getComputedStyle(container)[property], other); assert_equals(getComputedStyle(target)[property], other); target.style[property] = 'initial'; - assert_not_equals(getComputedStyle(container)[property], other); + assert_equals(getComputedStyle(container)[property], other); assert_not_equals(getComputedStyle(target)[property], other); target.style[property] = 'inherit'; - assert_equals(getComputedStyle(container)[property], other); + assert_equals(getComputedStyle(target)[property], other); container.style[property] = ''; target.style[property] = ''; }, 'Property ' + property + ' inherits'); diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/values3/calc-text-indent-intrinsic-1-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/values3/calc-text-indent-intrinsic-1-ref.html index 93c8c89978f..fa221c015d1 100644 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/values3/calc-text-indent-intrinsic-1-ref.html +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/values3/calc-text-indent-intrinsic-1-ref.html @@ -12,9 +12,9 @@ body > div { margin: 0 0 1px 0; background: blue; color: white; height: 5px } -
+
-
+
diff --git a/tests/wpt/web-platform-tests/docs/_running-tests/chrome.md b/tests/wpt/web-platform-tests/docs/_running-tests/chrome.md index dcbc86f745c..51472d15437 100644 --- a/tests/wpt/web-platform-tests/docs/_running-tests/chrome.md +++ b/tests/wpt/web-platform-tests/docs/_running-tests/chrome.md @@ -2,40 +2,27 @@ layout: page title: Chrome --- -When running Chrome, there are some additional useful command line arguments. +When running Chrome, there are some useful command line arguments. -As with most products, you can use a different binary with `--binary`, e.g., to -run Chrome Dev on Linux: +You can inform `wpt` of the release channel of Chrome using `--channel`. +However, `wpt` currently does not support installing Chrome or finding the +Chrome binary of a specific channel, so you would also need to specify the path +to the Chrome binary with `--binary`. For example, to run Chrome Dev on Linux: ``` -./wpt run --binary `which google-chrome-unstable` chrome +./wpt run --channel dev --binary `which google-chrome-unstable` chrome ``` -Extra arguments to Chrome can be passed with `--binary-args`. +Note: when the channel is "dev", `wpt` will *automatically* enable all +[experimental web platform features][1] +(chrome://flags/#enable-experimental-web-platform-features) by passing +`--enable-experimental-web-platform-features` to Chrome. -To enable all [experimental web platform features](https://www.chromium.org/blink/runtime-enabled-features) (chrome://flags/#enable-experimental-web-platform-features): - -``` -./wpt run --binary-arg=--enable-experimental-web-platform-features chrome fullscreen/ -``` - -To enable a specific [runtime enabled feature](http://dev.chromium.org/blink/runtime-enabled-features): +If you want to enable a specific [runtime enabled feature][1], use +`--binary-arg` to specify the flag(s) that you want to pass to Chrome: ``` ./wpt run --binary-arg=--enable-blink-features=AsyncClipboard chrome clipboard-apis/ ``` -To bypass device selection and use mock media for tests using `getUserMedia`: - -``` -./wpt run --binary-arg=--use-fake-ui-for-media-stream --binary-arg=--use-fake-device-for-media-stream chrome mediacapture-streams/ -``` - -Note: there's an [open issue for doing this using WebDriver](https://github.com/web-platform-tests/wpt/issues/7424). - -Some of the above are most useful in combination, e.g., to run all tests in -Chrome Dev with experimental web platform features enabled: - -``` -./wpt run --binary `which google-chrome-unstable` --binary-arg=--enable-experimental-web-platform-features chrome -``` +[1]: https://www.chromium.org/blink/runtime-enabled-features diff --git a/tests/wpt/web-platform-tests/dom/events/EventListener-addEventListener.sub.window.js b/tests/wpt/web-platform-tests/dom/events/EventListener-addEventListener.sub.window.js new file mode 100644 index 00000000000..b658140eea8 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/EventListener-addEventListener.sub.window.js @@ -0,0 +1,9 @@ +async_test(function(t) { + let crossOriginFrame = document.createElement('iframe'); + crossOriginFrame.src = 'https://{{hosts[alt][]}}/common/blank.html'; + document.body.appendChild(crossOriginFrame); + crossOriginFrame.addEventListener('load', t.step_func_done(function() { + let crossOriginWindow = crossOriginFrame.contentWindow; + window.addEventListener('click', crossOriginWindow); + })); +}, "EventListener.addEventListener doesn't throw when a cross origin object is passed in."); diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/header-value-combining.any.js b/tests/wpt/web-platform-tests/fetch/api/basic/header-value-combining.any.js new file mode 100644 index 00000000000..fd08072ea52 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/basic/header-value-combining.any.js @@ -0,0 +1,11 @@ +// META: global=window,worker + +promise_test(async t => { + const response = await fetch("../../../xhr/resources/headers-basic.asis"); + assert_equals(response.headers.get("foo-test"), "1, 2, 3"); +}, "response.headers.get('foo-test')"); + +promise_test(async t => { + const response = await fetch("../../../xhr/resources/headers-www-authenticate.asis"); + assert_equals(response.headers.get("www-authenticate"), "1, 2, 3, 4"); +}, "response.headers.get('www-authenticate')"); diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/stream-safe-creation.any.js b/tests/wpt/web-platform-tests/fetch/api/basic/stream-safe-creation.any.js new file mode 100644 index 00000000000..180d3386590 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/basic/stream-safe-creation.any.js @@ -0,0 +1,54 @@ +// META: global=worker + +// These tests verify that stream creation is not affected by changes to +// Object.prototype. + +const creationCases = { + fetch: async () => fetch(location.href), + request: () => new Request(location.href, {method: 'POST', body: 'hi'}), + response: () => new Response('bye'), + consumeEmptyResponse: () => new Response().text(), + consumeNonEmptyResponse: () => new Response(new Uint8Array([64])).text(), + consumeEmptyRequest: () => new Request(location.href).text(), + consumeNonEmptyRequest: () => new Request(location.href, + {method: 'POST', body: 'yes'}).arrayBuffer(), +}; + +for (creationCase of Object.keys(creationCases)) { + for (accessorName of ['start', 'type', 'size', 'highWaterMark']) { + promise_test(async t => { + Object.defineProperty(Object.prototype, accessorName, { + get() { throw Error(`Object.prototype.${accessorName} was accessed`); }, + configurable: true + }); + t.add_cleanup(() => { + delete Object.prototype[accessorName]; + return Promise.resolve(); + }); + await creationCases[creationCase](); + }, `throwing Object.prototype.${accessorName} accessor should not affect ` + + `stream creation by '${creationCase}'`); + + promise_test(async t => { + // -1 is a convenient value which is invalid, and should cause the + // constructor to throw, for all four fields. + Object.prototype[accessorName] = -1; + t.add_cleanup(() => { + delete Object.prototype[accessorName]; + return Promise.resolve(); + }); + await creationCases[creationCase](); + }, `Object.prototype.${accessorName} accessor returning invalid value ` + + `should not affect stream creation by '${creationCase}'`); + } + + promise_test(async t => { + Object.prototype.start = controller => controller.error(new Error('start')); + t.add_cleanup(() => { + delete Object.prototype.start; + return Promise.resolve(); + }); + await creationCases[creationCase](); + }, `Object.prototype.start function which errors the stream should not ` + + `affect stream creation by '${creationCase}'`); +} diff --git a/tests/wpt/web-platform-tests/fullscreen/api/document-exit-fullscreen-active-document.html b/tests/wpt/web-platform-tests/fullscreen/api/document-exit-fullscreen-active-document.html index 18b0bb6493b..8279fae5337 100644 --- a/tests/wpt/web-platform-tests/fullscreen/api/document-exit-fullscreen-active-document.html +++ b/tests/wpt/web-platform-tests/fullscreen/api/document-exit-fullscreen-active-document.html @@ -9,11 +9,12 @@ var t = async_test(); onload = t.step_func(() => { var iframe = document.querySelector("iframe"); + var promiseBeforeNav = iframe.contentWindow.Promise; var documentBeforeNav = iframe.contentDocument; iframe.onload = t.step_func(() => { var p = documentBeforeNav.exitFullscreen(); - assert_true(p instanceof Promise, 'exitFullscreen() returns promise'); + assert_true(p instanceof promiseBeforeNav, 'exitFullscreen() returns promise'); // The promise should already be rejected, so its reject callback should be // invoked before a second promise's callback. p.catch(t.step_func_done()); diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-percentage-block-size.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-percentage-block-size.html new file mode 100644 index 00000000000..1c221555c30 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-percentage-block-size.html @@ -0,0 +1,45 @@ + +fieldset percentage block size + + + +
+
+ rendered legend + second legend +
div
+
+
+ +
+
+ rendered legend + second legend +
div
+
+
+ +
+
+ rendered legend + second legend +
div
+
+
+ + diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-block-margins-ref.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-block-margins-ref.html index e0528855df0..f2701d26f32 100644 --- a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-block-margins-ref.html +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-block-margins-ref.html @@ -4,7 +4,7 @@ body { margin: 0; } .fieldset { margin: 2em 1em 1em 1em; border: 1em solid green; } .legend { position: absolute; margin-top: -1em; margin-left: 1em; background: white; height: 1em; } -.inner { margin: 2em 1em 1em 1em; height: 1em; } +.inner { margin: 3em 1em 1em 1em; height: 1em; }

There should be no red.

diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-block-margins.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-block-margins.html index 957eca57350..98cd16c7c14 100644 --- a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-block-margins.html +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-block-margins.html @@ -4,9 +4,9 @@

There should be no red.

diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-rendering-ref.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-rendering-ref.html new file mode 100644 index 00000000000..189b195f615 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-rendering-ref.html @@ -0,0 +1,34 @@ + +Reference for rendered legend and CSS display rendering + +
tabletable
+
table-row-group
+
table-header-group
+
table-footer-group
+
table-row
+
table-cell
+
table-column-group
+
table-column
+
table-caption
+
flow
+
flow-root
+
run-in
+
inline
+
inline-block
+
inline-tableinline-table
+
rubyruby
+
ruby-base
+
ruby-text
+
ruby-base-container
+
ruby-text-container
+
gridgrid
+
inline-gridinline-grid
+
flexflex
+
inline-flexinline-flex
diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-rendering.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-rendering.html new file mode 100644 index 00000000000..ba6610503a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-rendering.html @@ -0,0 +1,119 @@ + +rendered legend and CSS display rendering + + +
+ tabletable +
+ +
+ table-row-group +
+ +
+ table-header-group +
+ +
+ table-footer-group +
+ +
+ table-row +
+ +
+ table-cell +
+ +
+ table-column-group +
+ +
+ table-column +
+ +
+ table-caption +
+ +
+ flow +
+ +
+ flow-root +
+ +
+ run-in +
+ +
+ inline +
+ +
+ inline-block +
+ +
+ inline-tableinline-table +
+ +
+ rubyruby +
+ +
+ ruby-base +
+ +
+ ruby-text +
+ +
+ ruby-base-container +
+ +
+ ruby-text-container +
+ +
+ gridgrid +
+ +
+ inline-gridinline-grid +
+ +
+ flexflex +
+ +
+ inline-flexinline-flex +
+ diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-list-item.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-list-item.html index c26b50ce662..e9676435725 100644 --- a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-list-item.html +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-list-item.html @@ -1,6 +1,6 @@ legend and dipslay: list-item - + +
+ left +
+
+ center +
+
+ right +
+
+ 10px +
+ + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img.complete.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img.complete.html index ee043a8c94f..42113cdd2ff 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img.complete.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img.complete.html @@ -28,7 +28,7 @@ test(function() { assert_true(document.getElementById("imgTestTag2").complete); - }, "img src empty and srset omitted"); + }, "img src and srcset empty"); // test if set to true after img is completely available var t = async_test("async src complete test"); diff --git a/tests/wpt/web-platform-tests/interfaces/payment-handler.idl b/tests/wpt/web-platform-tests/interfaces/payment-handler.idl index 5648ae33457..b5d79decb06 100644 --- a/tests/wpt/web-platform-tests/interfaces/payment-handler.idl +++ b/tests/wpt/web-platform-tests/interfaces/payment-handler.idl @@ -10,7 +10,6 @@ partial interface ServiceWorkerRegistration { [SecureContext, Exposed=(Window,Worker)] interface PaymentManager { [SameObject] readonly attribute PaymentInstruments instruments; - [Exposed=Window] static Promise requestPermission(); attribute DOMString userHint; }; diff --git a/tests/wpt/web-platform-tests/mediacapture-image/ImageCapture-MediaTrackSupportedConstraints.html b/tests/wpt/web-platform-tests/mediacapture-image/ImageCapture-MediaTrackSupportedConstraints.html index 59a54f51d60..9ec5261b9dc 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/ImageCapture-MediaTrackSupportedConstraints.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/ImageCapture-MediaTrackSupportedConstraints.html @@ -12,6 +12,7 @@ test(function() { assert_true(supported_constraints.focusMode); assert_true(supported_constraints.pointsOfInterest); assert_true(supported_constraints.exposureCompensation); + assert_true(supported_constraints.exposureTime); assert_true(supported_constraints.colorTemperature); assert_true(supported_constraints.iso); assert_true(supported_constraints.brightness); diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.html index 1a1b58e5415..4900336549f 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.html @@ -17,13 +17,15 @@ image_capture_test(async t => { context.fillRect(0, 0, 10, 10); const constraints = { advanced : [{ whiteBalanceMode : 'single-shot', - exposureMode : 'continuous', + exposureMode : 'manual', focusMode : 'single-shot', pointsOfInterest : [{x : 0.1, y : 0.2}, {x : 0.3, y : 0.4}], exposureCompensation : 133.77, + // in nano-seconds. + exposureTime : 10000, colorTemperature : 6000, iso : 120.0, @@ -70,6 +72,8 @@ image_capture_test(async t => { assert_equals(constraints.advanced[0].exposureCompensation, settings.exposureCompensation, 'exposureCompensation'); + assert_equals(constraints.advanced[0].exposureTime, + settings.exposureTime, 'exposureTime'); assert_equals(constraints.advanced[0].colorTemperature, settings.colorTemperature, 'colorTemperature'); assert_equals(constraints.advanced[0].iso, settings.iso, 'iso'); @@ -91,4 +95,4 @@ image_capture_test(async t => { }, 'exercises an applyConstraints() - getSettings() cycle'); - + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-reject.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-reject.html index 8f08d250fd1..21719636ea8 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-reject.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-reject.html @@ -43,7 +43,7 @@ var makePromiseTest = function(getConstraint) { const constraintGenerators = [ capabilities => ({ whiteBalanceMode: 'manual' }), - capabilities => ({ exposureMode: 'manual' }), + capabilities => ({ exposureMode: 'none' }), capabilities => ({ focusMode: 'continuous' }), capabilities => ({ exposureCompensation: capabilities.exposureCompensation.max + 1 diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints.html index 8dcff926173..c87f954c682 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints.html @@ -19,13 +19,14 @@ image_capture_test(async (t, imageCaptureTest) => { context.fillRect(0, 0, 10, 10); const constraints = { advanced : [{ whiteBalanceMode : 'single-shot', - exposureMode : 'continuous', + exposureMode : 'manual', focusMode : 'single-shot', pointsOfInterest : [{x : 0.1, y : 0.2}, {x : 0.3, y : 0.4}], exposureCompensation : 133.77, + exposureTime : 10000, colorTemperature : 6000, iso : 120.0, @@ -90,6 +91,9 @@ image_capture_test(async (t, imageCaptureTest) => { assert_equals(constraintsDict.exposureCompensation, theMock.options().exposureCompensation, 'exposureCompensation'); + assert_equals(constraintsDict.exposureTime, + theMock.options().exposureTime, + 'exposureTime'); assert_equals(constraintsDict.colorTemperature, theMock.options().colorTemperature, 'colorTemperature'); assert_equals(constraintsDict.iso, theMock.options().iso, 'iso'); diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getCapabilities.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getCapabilities.html index eceaf5b1a86..9e34f2389cc 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getCapabilities.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getCapabilities.html @@ -78,6 +78,15 @@ image_capture_test(async (t, imageCaptureTest) => { assert_equals(capabilities.exposureCompensation.step, mockCapabilities.exposureCompensation.step); + assert_true(capabilities.exposureTime instanceof + MediaSettingsRange); + assert_equals(capabilities.exposureTime.max, + mockCapabilities.exposureTime.max); + assert_equals(capabilities.exposureTime.min, + mockCapabilities.exposureTime.min); + assert_equals(capabilities.exposureTime.step, + mockCapabilities.exposureTime.step); + assert_true(capabilities.colorTemperature instanceof MediaSettingsRange); assert_equals(capabilities.colorTemperature.max, diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getConstraints-fast.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getConstraints-fast.html index 5a5ce5f2dad..16f869cf119 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getConstraints-fast.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getConstraints-fast.html @@ -7,10 +7,11 @@ diff --git a/tests/wpt/web-platform-tests/payment-request/payment-response/onpayerdetailchange-attribute.manual.https.html b/tests/wpt/web-platform-tests/payment-request/payment-response/onpayerdetailchange-attribute-manual.https.html similarity index 100% rename from tests/wpt/web-platform-tests/payment-request/payment-response/onpayerdetailchange-attribute.manual.https.html rename to tests/wpt/web-platform-tests/payment-request/payment-response/onpayerdetailchange-attribute-manual.https.html diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_releasepointercapture_invalid_pointerid-manual.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_releasepointercapture_invalid_pointerid-manual.html index fe2ab006181..d0cf3671743 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_releasepointercapture_invalid_pointerid-manual.html +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_releasepointercapture_invalid_pointerid-manual.html @@ -1,12 +1,12 @@ - Pointer Event: releasePointerCapture DOMException - InvalidPointerId - + Pointer Event: releasePointerCapture DOMException - NotFoundError + - + @@ -15,13 +15,13 @@ @@ -14,7 +14,7 @@ -

Pointer Event: DOMException InvalidPointerId

+

Pointer Event: DOMException NotFoundError

Test Description: - When the setPointerCapture method is invoked, if the provided pointerId value does not match any of the active pointers, a DOMException with the name InvalidPointerId must be thrown. + When the setPointerCapture method is invoked, if the provided pointerId value does not match any of the active pointers, a DOMException with the name NotFoundError must be thrown.


@@ -62,4 +54,4 @@
- \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/resources/chromium/image_capture.mojom.js b/tests/wpt/web-platform-tests/resources/chromium/image_capture.mojom.js index 11123feb87d..bf8dd16ca75 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/image_capture.mojom.js +++ b/tests/wpt/web-platform-tests/resources/chromium/image_capture.mojom.js @@ -167,6 +167,7 @@ this.torch = false; this.pointsOfInterest = null; this.exposureCompensation = null; + this.exposureTime = null; this.colorTemperature = null; this.iso = null; this.brightness = null; @@ -194,7 +195,7 @@ return err; var kVersionSizes = [ - {version: 0, numBytes: 160} + {version: 0, numBytes: 168} ]; err = messageValidator.validateStructVersion(offset, kVersionSizes); if (err !== validator.validationError.NONE) @@ -249,83 +250,89 @@ return err; - // validate PhotoState.colorTemperature + // validate PhotoState.exposureTime err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 56, Range, false); if (err !== validator.validationError.NONE) return err; - // validate PhotoState.iso + // validate PhotoState.colorTemperature err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 64, Range, false); if (err !== validator.validationError.NONE) return err; - // validate PhotoState.brightness + // validate PhotoState.iso err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 72, Range, false); if (err !== validator.validationError.NONE) return err; - // validate PhotoState.contrast + // validate PhotoState.brightness err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 80, Range, false); if (err !== validator.validationError.NONE) return err; - // validate PhotoState.saturation + // validate PhotoState.contrast err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 88, Range, false); if (err !== validator.validationError.NONE) return err; - // validate PhotoState.sharpness + // validate PhotoState.saturation err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 96, Range, false); if (err !== validator.validationError.NONE) return err; - // validate PhotoState.focusDistance + // validate PhotoState.sharpness err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 104, Range, false); if (err !== validator.validationError.NONE) return err; - // validate PhotoState.zoom + // validate PhotoState.focusDistance err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 112, Range, false); if (err !== validator.validationError.NONE) return err; + // validate PhotoState.zoom + err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 120, Range, false); + if (err !== validator.validationError.NONE) + return err; + + // validate PhotoState.redEyeReduction - err = messageValidator.validateEnum(offset + codec.kStructHeaderSize + 120, RedEyeReduction); + err = messageValidator.validateEnum(offset + codec.kStructHeaderSize + 128, RedEyeReduction); if (err !== validator.validationError.NONE) return err; // validate PhotoState.height - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 128, Range, false); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.width err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 136, Range, false); if (err !== validator.validationError.NONE) return err; + // validate PhotoState.width + err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 144, Range, false); + if (err !== validator.validationError.NONE) + return err; + + // validate PhotoState.fillLightMode - err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 144, 4, new codec.Enum(FillLightMode), false, [0], 0); + err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 152, 4, new codec.Enum(FillLightMode), false, [0], 0); if (err !== validator.validationError.NONE) return err; return validator.validationError.NONE; }; - PhotoState.encodedSize = codec.kStructHeaderSize + 152; + PhotoState.encodedSize = codec.kStructHeaderSize + 160; PhotoState.decode = function(decoder) { var packed; @@ -346,6 +353,7 @@ decoder.skip(1); val.pointsOfInterest = decoder.decodeArrayPointer(new codec.PointerTo(Point2D)); val.exposureCompensation = decoder.decodeStructPointer(Range); + val.exposureTime = decoder.decodeStructPointer(Range); val.colorTemperature = decoder.decodeStructPointer(Range); val.iso = decoder.decodeStructPointer(Range); val.brightness = decoder.decodeStructPointer(Range); @@ -384,6 +392,7 @@ encoder.skip(1); encoder.encodeArrayPointer(new codec.PointerTo(Point2D), val.pointsOfInterest); encoder.encodeStructPointer(Range, val.exposureCompensation); + encoder.encodeStructPointer(Range, val.exposureTime); encoder.encodeStructPointer(Range, val.colorTemperature); encoder.encodeStructPointer(Range, val.iso); encoder.encodeStructPointer(Range, val.brightness); @@ -466,6 +475,7 @@ this.hasExposureMode = false; this.hasFocusMode = false; this.hasExposureCompensation = false; + this.hasExposureTime = false; this.hasColorTemperature = false; this.hasIso = false; this.hasBrightness = false; @@ -486,6 +496,7 @@ this.focusMode = 0; this.pointsOfInterest = null; this.exposureCompensation = 0; + this.exposureTime = 0; this.colorTemperature = 0; this.iso = 0; this.brightness = 0; @@ -512,7 +523,7 @@ return err; var kVersionSizes = [ - {version: 0, numBytes: 128} + {version: 0, numBytes: 136} ]; err = messageValidator.validateStructVersion(offset, kVersionSizes); if (err !== validator.validationError.NONE) @@ -564,11 +575,13 @@ + + // validate PhotoSettings.fillLightMode - err = messageValidator.validateEnum(offset + codec.kStructHeaderSize + 96, FillLightMode); + err = messageValidator.validateEnum(offset + codec.kStructHeaderSize + 104, FillLightMode); if (err !== validator.validationError.NONE) return err; @@ -581,7 +594,7 @@ return validator.validationError.NONE; }; - PhotoSettings.encodedSize = codec.kStructHeaderSize + 120; + PhotoSettings.encodedSize = codec.kStructHeaderSize + 128; PhotoSettings.decode = function(decoder) { var packed; @@ -593,29 +606,31 @@ val.hasExposureMode = (packed >> 1) & 1 ? true : false; val.hasFocusMode = (packed >> 2) & 1 ? true : false; val.hasExposureCompensation = (packed >> 3) & 1 ? true : false; - val.hasColorTemperature = (packed >> 4) & 1 ? true : false; - val.hasIso = (packed >> 5) & 1 ? true : false; - val.hasBrightness = (packed >> 6) & 1 ? true : false; - val.hasContrast = (packed >> 7) & 1 ? true : false; + val.hasExposureTime = (packed >> 4) & 1 ? true : false; + val.hasColorTemperature = (packed >> 5) & 1 ? true : false; + val.hasIso = (packed >> 6) & 1 ? true : false; + val.hasBrightness = (packed >> 7) & 1 ? true : false; packed = decoder.readUint8(); - val.hasSaturation = (packed >> 0) & 1 ? true : false; - val.hasSharpness = (packed >> 1) & 1 ? true : false; - val.hasFocusDistance = (packed >> 2) & 1 ? true : false; - val.hasZoom = (packed >> 3) & 1 ? true : false; - val.hasTorch = (packed >> 4) & 1 ? true : false; - val.torch = (packed >> 5) & 1 ? true : false; - val.hasFillLightMode = (packed >> 6) & 1 ? true : false; - val.hasWidth = (packed >> 7) & 1 ? true : false; + val.hasContrast = (packed >> 0) & 1 ? true : false; + val.hasSaturation = (packed >> 1) & 1 ? true : false; + val.hasSharpness = (packed >> 2) & 1 ? true : false; + val.hasFocusDistance = (packed >> 3) & 1 ? true : false; + val.hasZoom = (packed >> 4) & 1 ? true : false; + val.hasTorch = (packed >> 5) & 1 ? true : false; + val.torch = (packed >> 6) & 1 ? true : false; + val.hasFillLightMode = (packed >> 7) & 1 ? true : false; packed = decoder.readUint8(); - val.hasHeight = (packed >> 0) & 1 ? true : false; - val.hasRedEyeReduction = (packed >> 1) & 1 ? true : false; - val.redEyeReduction = (packed >> 2) & 1 ? true : false; + val.hasWidth = (packed >> 0) & 1 ? true : false; + val.hasHeight = (packed >> 1) & 1 ? true : false; + val.hasRedEyeReduction = (packed >> 2) & 1 ? true : false; + val.redEyeReduction = (packed >> 3) & 1 ? true : false; decoder.skip(1); val.whiteBalanceMode = decoder.decodeStruct(codec.Int32); val.exposureMode = decoder.decodeStruct(codec.Int32); val.focusMode = decoder.decodeStruct(codec.Int32); val.pointsOfInterest = decoder.decodeArrayPointer(new codec.PointerTo(Point2D)); val.exposureCompensation = decoder.decodeStruct(codec.Double); + val.exposureTime = decoder.decodeStruct(codec.Double); val.colorTemperature = decoder.decodeStruct(codec.Double); val.iso = decoder.decodeStruct(codec.Double); val.brightness = decoder.decodeStruct(codec.Double); @@ -643,25 +658,26 @@ packed |= (val.hasExposureMode & 1) << 1 packed |= (val.hasFocusMode & 1) << 2 packed |= (val.hasExposureCompensation & 1) << 3 - packed |= (val.hasColorTemperature & 1) << 4 - packed |= (val.hasIso & 1) << 5 - packed |= (val.hasBrightness & 1) << 6 - packed |= (val.hasContrast & 1) << 7 + packed |= (val.hasExposureTime & 1) << 4 + packed |= (val.hasColorTemperature & 1) << 5 + packed |= (val.hasIso & 1) << 6 + packed |= (val.hasBrightness & 1) << 7 encoder.writeUint8(packed); packed = 0; - packed |= (val.hasSaturation & 1) << 0 - packed |= (val.hasSharpness & 1) << 1 - packed |= (val.hasFocusDistance & 1) << 2 - packed |= (val.hasZoom & 1) << 3 - packed |= (val.hasTorch & 1) << 4 - packed |= (val.torch & 1) << 5 - packed |= (val.hasFillLightMode & 1) << 6 - packed |= (val.hasWidth & 1) << 7 + packed |= (val.hasContrast & 1) << 0 + packed |= (val.hasSaturation & 1) << 1 + packed |= (val.hasSharpness & 1) << 2 + packed |= (val.hasFocusDistance & 1) << 3 + packed |= (val.hasZoom & 1) << 4 + packed |= (val.hasTorch & 1) << 5 + packed |= (val.torch & 1) << 6 + packed |= (val.hasFillLightMode & 1) << 7 encoder.writeUint8(packed); packed = 0; - packed |= (val.hasHeight & 1) << 0 - packed |= (val.hasRedEyeReduction & 1) << 1 - packed |= (val.redEyeReduction & 1) << 2 + packed |= (val.hasWidth & 1) << 0 + packed |= (val.hasHeight & 1) << 1 + packed |= (val.hasRedEyeReduction & 1) << 2 + packed |= (val.redEyeReduction & 1) << 3 encoder.writeUint8(packed); encoder.skip(1); encoder.encodeStruct(codec.Int32, val.whiteBalanceMode); @@ -669,6 +685,7 @@ encoder.encodeStruct(codec.Int32, val.focusMode); encoder.encodeArrayPointer(new codec.PointerTo(Point2D), val.pointsOfInterest); encoder.encodeStruct(codec.Double, val.exposureCompensation); + encoder.encodeStruct(codec.Double, val.exposureTime); encoder.encodeStruct(codec.Double, val.colorTemperature); encoder.encodeStruct(codec.Double, val.iso); encoder.encodeStruct(codec.Double, val.brightness); diff --git a/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js b/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js index 878f59eb009..329cbc3a761 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js +++ b/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js @@ -19,10 +19,11 @@ var ImageCaptureTest = (() => { ], currentWhiteBalanceMode: media.mojom.MeteringMode.CONTINUOUS, supportedExposureModes: [ + media.mojom.MeteringMode.MANUAL, media.mojom.MeteringMode.SINGLE_SHOT, media.mojom.MeteringMode.CONTINUOUS ], - currentExposureMode: media.mojom.MeteringMode.SINGLE_SHOT, + currentExposureMode: media.mojom.MeteringMode.MANUAL, supportedFocusModes: [ media.mojom.MeteringMode.MANUAL, media.mojom.MeteringMode.SINGLE_SHOT @@ -39,6 +40,12 @@ var ImageCaptureTest = (() => { current: 33.0, step: 33.0 }, + exposureTime: { + min: 100.0, + max: 100000.0, + current: 1000.0, + step: 100.0 + }, colorTemperature: { min: 2500.0, max: 6500.0, @@ -152,6 +159,10 @@ var ImageCaptureTest = (() => { this.state_.state.exposureCompensation.current = settings.exposureCompensation; } + if (settings.hasExposureTime) { + this.state_.state.exposureTime.current = + settings.exposureTime; + } if (settings.hasWhiteBalanceMode) { this.state_.state.currentWhiteBalanceMode = settings.whiteBalanceMode; diff --git a/tests/wpt/web-platform-tests/resources/chromium/web_usb_service.mojom.js b/tests/wpt/web-platform-tests/resources/chromium/web_usb_service.mojom.js index d0b93a168bf..bacad8fa390 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/web_usb_service.mojom.js +++ b/tests/wpt/web-platform-tests/resources/chromium/web_usb_service.mojom.js @@ -46,25 +46,6 @@ this[field] = fields[field]; } }; - WebUsbService_GetDevices_Params.generate = function(generator_) { - var generated = new WebUsbService_GetDevices_Params; - return generated; - }; - - WebUsbService_GetDevices_Params.prototype.mutate = function(mutator_) { - return this; - }; - WebUsbService_GetDevices_Params.prototype.getHandleDeps = function() { - var handles = []; - return handles; - }; - - WebUsbService_GetDevices_Params.prototype.setHandles = function() { - this.setHandlesInternal_(arguments, 0); - }; - WebUsbService_GetDevices_Params.prototype.setHandlesInternal_ = function(handles, idx) { - return idx; - }; WebUsbService_GetDevices_Params.validate = function(messageValidator, offset) { var err; @@ -112,33 +93,6 @@ this[field] = fields[field]; } }; - WebUsbService_GetDevices_ResponseParams.generate = function(generator_) { - var generated = new WebUsbService_GetDevices_ResponseParams; - generated.results = generator_.generateArray(function() { - return generator_.generateStruct(device.mojom.UsbDeviceInfo, false); - }); - return generated; - }; - - WebUsbService_GetDevices_ResponseParams.prototype.mutate = function(mutator_) { - if (mutator_.chooseMutateField()) { - this.results = mutator_.mutateArray(this.results, function(val) { - return mutator_.mutateStruct(val, device.mojom.UsbDeviceInfo, false); - }); - } - return this; - }; - WebUsbService_GetDevices_ResponseParams.prototype.getHandleDeps = function() { - var handles = []; - return handles; - }; - - WebUsbService_GetDevices_ResponseParams.prototype.setHandles = function() { - this.setHandlesInternal_(arguments, 0); - }; - WebUsbService_GetDevices_ResponseParams.prototype.setHandlesInternal_ = function(handles, idx) { - return idx; - }; WebUsbService_GetDevices_ResponseParams.validate = function(messageValidator, offset) { var err; @@ -195,37 +149,6 @@ this[field] = fields[field]; } }; - WebUsbService_GetDevice_Params.generate = function(generator_) { - var generated = new WebUsbService_GetDevice_Params; - generated.guid = generator_.generateString(false); - generated.deviceRequestd = generator_.generateInterfaceRequest("device.mojom.UsbDevice", false); - return generated; - }; - - WebUsbService_GetDevice_Params.prototype.mutate = function(mutator_) { - if (mutator_.chooseMutateField()) { - this.guid = mutator_.mutateString(this.guid, false); - } - if (mutator_.chooseMutateField()) { - this.deviceRequestd = mutator_.mutateInterfaceRequest(this.deviceRequestd, "device.mojom.UsbDevice", false); - } - return this; - }; - WebUsbService_GetDevice_Params.prototype.getHandleDeps = function() { - var handles = []; - if (this.deviceRequestd !== null) { - Array.prototype.push.apply(handles, ["device.mojom.UsbDeviceRequest"]); - } - return handles; - }; - - WebUsbService_GetDevice_Params.prototype.setHandles = function() { - this.setHandlesInternal_(arguments, 0); - }; - WebUsbService_GetDevice_Params.prototype.setHandlesInternal_ = function(handles, idx) { - this.deviceRequestd = handles[idx++];; - return idx; - }; WebUsbService_GetDevice_Params.validate = function(messageValidator, offset) { var err; @@ -297,33 +220,6 @@ this[field] = fields[field]; } }; - WebUsbService_GetPermission_Params.generate = function(generator_) { - var generated = new WebUsbService_GetPermission_Params; - generated.deviceFilters = generator_.generateArray(function() { - return generator_.generateStruct(device.mojom.UsbDeviceFilter, false); - }); - return generated; - }; - - WebUsbService_GetPermission_Params.prototype.mutate = function(mutator_) { - if (mutator_.chooseMutateField()) { - this.deviceFilters = mutator_.mutateArray(this.deviceFilters, function(val) { - return mutator_.mutateStruct(val, device.mojom.UsbDeviceFilter, false); - }); - } - return this; - }; - WebUsbService_GetPermission_Params.prototype.getHandleDeps = function() { - var handles = []; - return handles; - }; - - WebUsbService_GetPermission_Params.prototype.setHandles = function() { - this.setHandlesInternal_(arguments, 0); - }; - WebUsbService_GetPermission_Params.prototype.setHandlesInternal_ = function(handles, idx) { - return idx; - }; WebUsbService_GetPermission_Params.validate = function(messageValidator, offset) { var err; @@ -379,29 +275,6 @@ this[field] = fields[field]; } }; - WebUsbService_GetPermission_ResponseParams.generate = function(generator_) { - var generated = new WebUsbService_GetPermission_ResponseParams; - generated.result = generator_.generateStruct(device.mojom.UsbDeviceInfo, true); - return generated; - }; - - WebUsbService_GetPermission_ResponseParams.prototype.mutate = function(mutator_) { - if (mutator_.chooseMutateField()) { - this.result = mutator_.mutateStruct(this.result, device.mojom.UsbDeviceInfo, true); - } - return this; - }; - WebUsbService_GetPermission_ResponseParams.prototype.getHandleDeps = function() { - var handles = []; - return handles; - }; - - WebUsbService_GetPermission_ResponseParams.prototype.setHandles = function() { - this.setHandlesInternal_(arguments, 0); - }; - WebUsbService_GetPermission_ResponseParams.prototype.setHandlesInternal_ = function(handles, idx) { - return idx; - }; WebUsbService_GetPermission_ResponseParams.validate = function(messageValidator, offset) { var err; @@ -449,7 +322,7 @@ WebUsbService_SetClient_Params.prototype.initDefaults_ = function() { - this.client = new device_manager$.UsbDeviceManagerClientPtr(); + this.client = new associatedBindings.AssociatedInterfacePtrInfo(); }; WebUsbService_SetClient_Params.prototype.initFields_ = function(fields) { for(var field in fields) { @@ -457,33 +330,6 @@ this[field] = fields[field]; } }; - WebUsbService_SetClient_Params.generate = function(generator_) { - var generated = new WebUsbService_SetClient_Params; - generated.client = generator_.generateInterface("device.mojom.UsbDeviceManagerClient", false); - return generated; - }; - - WebUsbService_SetClient_Params.prototype.mutate = function(mutator_) { - if (mutator_.chooseMutateField()) { - this.client = mutator_.mutateInterface(this.client, "device.mojom.UsbDeviceManagerClient", false); - } - return this; - }; - WebUsbService_SetClient_Params.prototype.getHandleDeps = function() { - var handles = []; - if (this.client !== null) { - Array.prototype.push.apply(handles, ["device.mojom.UsbDeviceManagerClientPtr"]); - } - return handles; - }; - - WebUsbService_SetClient_Params.prototype.setHandles = function() { - this.setHandlesInternal_(arguments, 0); - }; - WebUsbService_SetClient_Params.prototype.setHandlesInternal_ = function(handles, idx) { - this.client = handles[idx++];; - return idx; - }; WebUsbService_SetClient_Params.validate = function(messageValidator, offset) { var err; @@ -500,7 +346,7 @@ // validate WebUsbService_SetClient_Params.client - err = messageValidator.validateInterface(offset + codec.kStructHeaderSize + 0, false); + err = messageValidator.validateAssociatedInterface(offset + codec.kStructHeaderSize + 0, false); if (err !== validator.validationError.NONE) return err; @@ -514,7 +360,7 @@ var val = new WebUsbService_SetClient_Params(); var numberOfBytes = decoder.readUint32(); var version = decoder.readUint32(); - val.client = decoder.decodeStruct(new codec.Interface(device_manager$.UsbDeviceManagerClientPtr)); + val.client = decoder.decodeStruct(codec.AssociatedInterfacePtrInfo); return val; }; @@ -522,7 +368,7 @@ var packed; encoder.writeUint32(WebUsbService_SetClient_Params.encodedSize); encoder.writeUint32(0); - encoder.encodeStruct(new codec.Interface(device_manager$.UsbDeviceManagerClientPtr), val.client); + encoder.encodeStruct(codec.AssociatedInterfacePtrInfo, val.client); }; var kWebUsbService_GetDevices_Name = 0; var kWebUsbService_GetDevice_Name = 1; @@ -620,10 +466,10 @@ WebUsbServiceProxy.prototype.setClient = function(client) { var params_ = new WebUsbService_SetClient_Params(); params_.client = client; - var builder = new codec.MessageV0Builder( + var builder = new codec.MessageV2Builder( kWebUsbService_SetClient_Name, codec.align(WebUsbService_SetClient_Params.encodedSize)); - builder.encodeStruct(WebUsbService_SetClient_Params, params_); + builder.setPayload(WebUsbService_SetClient_Params, params_); var message = builder.finish(); this.receiver_.accept(message); }; @@ -753,25 +599,10 @@ stubClass: WebUsbServiceStub, validateRequest: validateWebUsbServiceRequest, validateResponse: validateWebUsbServiceResponse, - mojomId: 'third_party/blink/public/mojom/usb/web_usb_service.mojom', - fuzzMethods: { - getDevices: { - params: WebUsbService_GetDevices_Params, - }, - getDevice: { - params: WebUsbService_GetDevice_Params, - }, - getPermission: { - params: WebUsbService_GetPermission_Params, - }, - setClient: { - params: WebUsbService_SetClient_Params, - }, - }, }; WebUsbServiceStub.prototype.validator = validateWebUsbServiceRequest; WebUsbServiceProxy.prototype.validator = validateWebUsbServiceResponse; exports.WebUsbService = WebUsbService; exports.WebUsbServicePtr = WebUsbServicePtr; exports.WebUsbServiceAssociatedPtr = WebUsbServiceAssociatedPtr; -})(); \ No newline at end of file +})(); diff --git a/tests/wpt/web-platform-tests/resources/chromium/webusb-test.js b/tests/wpt/web-platform-tests/resources/chromium/webusb-test.js index 5f9262655f3..18ee824aafa 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/webusb-test.js +++ b/tests/wpt/web-platform-tests/resources/chromium/webusb-test.js @@ -397,8 +397,8 @@ class FakeWebUsbService { }); } - setClient(client) { - this.client_ = client; + setClient(clientInfo) { + this.client_ = new device.mojom.UsbDeviceManagerClientAssociatedPtr(clientInfo); } } diff --git a/tests/wpt/web-platform-tests/resources/test/conftest.py b/tests/wpt/web-platform-tests/resources/test/conftest.py index 8765bf835df..5fca1d24c41 100644 --- a/tests/wpt/web-platform-tests/resources/test/conftest.py +++ b/tests/wpt/web-platform-tests/resources/test/conftest.py @@ -29,6 +29,8 @@ def pytest_collect_file(path, parent): def pytest_configure(config): config.driver = webdriver.Firefox(firefox_binary=config.getoption("--binary")) + config.add_cleanup(config.driver.quit) + config.server = WPTServer(WPT_ROOT) config.server.start() # Although the name of the `_create_unverified_context` method suggests @@ -42,7 +44,6 @@ def pytest_configure(config): # https://docs.python.org/2/library/httplib.html#httplib.HTTPSConnection config.ssl_context = ssl._create_unverified_context() config.add_cleanup(config.server.stop) - config.add_cleanup(config.driver.quit) def resolve_uri(context, uri): if uri.startswith('/'): @@ -107,7 +108,14 @@ class HTMLItem(pytest.Item, pytest.Collector): elif self.type == 'unit' and self.expected: raise ValueError('Unit tests must not specify expected report data') - super(HTMLItem, self).__init__(name, parent) + # Ensure that distinct items have distinct fspath attributes. + # This is necessary because pytest has an internal cache keyed on it, + # and only the first test with any given fspath will be run. + # + # This cannot use super(HTMLItem, self).__init__(..) because only the + # Collector constructor takes the fspath argument. + pytest.Item.__init__(self, name, parent) + pytest.Collector.__init__(self, name, parent, fspath=filename) def reportinfo(self): diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated.sub.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated.sub.html index 586326d8761..5573b1d5273 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated.sub.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated.sub.html @@ -33,7 +33,7 @@ test(function(t) { { "summarized_status": { "status_string": "ERROR", - "message": "Error in remote https://{{domains[]}}:{{ports[https][0]}}/resources/test/tests/functional/worker-error.js: Error: This failure is expected." + "message": "Error: This failure is expected." }, "summarized_tests": [ { diff --git a/tests/wpt/web-platform-tests/resources/test/tests/unit/exceptional-cases.html b/tests/wpt/web-platform-tests/resources/test/tests/unit/exceptional-cases.html index df9e1239a2e..1a5335f6c1f 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/unit/exceptional-cases.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/unit/exceptional-cases.html @@ -165,20 +165,6 @@ promise_test(() => { }); }, 'uncaught exception between tests'); -promise_test(() => { - return makeTest( - () => { async_test((t) => setTimeout(t.done.bind(t), 0), 'before'); }, - () => { async_test('pending'); }, - () => { throw new Error('this error is expected'); }, - () => { async_test((t) => setTimeout(t.done.bind(t), 0), 'after'); } - ).then(({harness, tests}) => { - assert_equals(harness, 'ERROR'); - assert_equals(tests.before, 'PASS'); - assert_equals(tests.pending, 'NOTRUN'); - assert_equals(tests.after, 'PASS'); - }); -}, 'uncaught exception between async_tests'); - promise_test(() => { return makeTest( () => { promise_test(() => Promise.resolve(), 'before'); }, diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/skip-waiting-installed-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/skip-waiting-installed-worker.js index b48d502b136..6f7008bddcd 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/skip-waiting-installed-worker.js +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/skip-waiting-installed-worker.js @@ -21,7 +21,7 @@ self.addEventListener('message', function(event) { if (self.registration.active.state !== 'activating') { port.postMessage( - 'FAITL: Promise should be resolved before ServiceWorker#state is set to activated'); + 'FAIL: Promise should be resolved before ServiceWorker#state is set to activated'); return; } diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/worker-interception.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/worker-interception.https.html index 4f14746d917..bf976a29c48 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/worker-interception.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/worker-interception.https.html @@ -69,25 +69,11 @@ promise_test(function(t) { return wait_for_state(t, r.installing, 'activated'); }) .then(function() { - return new Promise(function(resolve, reject) { - var w = new Worker(worker_url); - w.onmessage = function(e) { - resolve(e.data); - } - - w.onerror = function(e) { - reject(e.message); - } - }); + var w = new Worker(worker_url); + var watcher = new EventWatcher(t, w, ['message', 'error']); + return watcher.wait_for('error'); }) - .then(function(data) { - assert_unreached('intercepted cors response to a same-origin mode ' + - 'worker load should fail'); - service_worker_unregister_and_done(t, scope); - }) - .catch(function(e) { - assert_true(true, 'intercepted cors response to a same-origin mode ' + - 'worker load should fail'); + .then(function() { service_worker_unregister_and_done(t, scope); }); }, 'Verify worker script intercepted by cors response fails'); @@ -102,24 +88,11 @@ promise_test(function(t) { return wait_for_state(t, r.installing, 'activated'); }) .then(function() { - return new Promise(function(resolve, reject) { - var w = new Worker(worker_url); - w.onmessage = function(e) { - resolve(e.data); - } - - w.onerror = function(e) { - reject(e); - return true; - } - }); + var w = new Worker(worker_url); + var watcher = new EventWatcher(t, w, ['message', 'error']); + return watcher.wait_for('error'); }) - .then(function(data) { - assert_unreached('intercepted no-cors worker load should fail'); - service_worker_unregister_and_done(t, scope); - }) - .catch(function(e) { - assert_true(true, 'intercepted no-cors worker load should fail'); + .then(function() { service_worker_unregister_and_done(t, scope); }); }, 'Verify worker script intercepted by no-cors cross-origin response fails'); diff --git a/tests/wpt/web-platform-tests/shadow-dom/event-dispatch-order.tentative.html b/tests/wpt/web-platform-tests/shadow-dom/event-dispatch-order.tentative.html new file mode 100644 index 00000000000..1e88740f53a --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/event-dispatch-order.tentative.html @@ -0,0 +1,30 @@ + +Shadow DOM: event dispatch order for capture and non-capture listerns at a shadow host + + + + + + +
+ +
+ diff --git a/tests/wpt/web-platform-tests/shadow-dom/resources/shadow-dom.js b/tests/wpt/web-platform-tests/shadow-dom/resources/shadow-dom.js index 3e55684dac1..192ad454130 100644 --- a/tests/wpt/web-platform-tests/shadow-dom/resources/shadow-dom.js +++ b/tests/wpt/web-platform-tests/shadow-dom/resources/shadow-dom.js @@ -53,7 +53,9 @@ function createTestTree(node) { return ids; } -function dispatchEventWithLog(nodes, target, event) { +// TODO: Refactor this so that only interested results are recorded. +// Callers of this function would not be interested in every results. +function dispatchEventWithLog(nodes, target, event, options) { function labelFor(e) { return e.id || e.tagName; @@ -70,15 +72,40 @@ function dispatchEventWithLog(nodes, target, event) { if (!id) continue; attachedNodes.push(node); - node.addEventListener(event.type, (e) => { + if (options && options.capture) { + // Record [currentTarget, target, relatedTarget, composedPath(), 'capture' | 'non-capture'] + // TODO: Support registering listeners in different orders. + // e.g. Register a non-capture listener at first, then register a capture listener. + node.addEventListener(event.type, (e) => { + log.push([id, + labelFor(e.target), + e.relatedTarget ? labelFor(e.relatedTarget) : null, + e.composedPath().map((n) => { + return labelFor(n); + }), + 'capture']); + }, true); + node.addEventListener(event.type, (e) => { + log.push([id, + labelFor(e.target), + e.relatedTarget ? labelFor(e.relatedTarget) : null, + e.composedPath().map((n) => { + return labelFor(n); + }), + 'non-capture']); + }); + } else { // Record [currentTarget, target, relatedTarget, composedPath()] - log.push([id, - labelFor(e.target), - e.relatedTarget ? labelFor(e.relatedTarget) : null, - e.composedPath().map((n) => { - return labelFor(n); - })]); - }); + node.addEventListener(event.type, (e) => { + log.push([id, + labelFor(e.target), + e.relatedTarget ? labelFor(e.relatedTarget) : null, + e.composedPath().map((n) => { + return labelFor(n); + })] + ); + }); + } } } target.dispatchEvent(event); @@ -122,9 +149,13 @@ function dispatchUAEventWithLog(nodes, target, eventType, callback) { function assert_event_path_equals(actual, expected) { assert_equals(actual.length, expected.length); for (let i = 0; i < actual.length; ++i) { + assert_equals(actual[i].length, expected[i].length); assert_equals(actual[i][0], expected[i][0], 'currentTarget at ' + i + ' should be same'); assert_equals(actual[i][1], expected[i][1], 'target at ' + i + ' should be same'); assert_equals(actual[i][2], expected[i][2], 'relatedTarget at ' + i + ' should be same'); assert_array_equals(actual[i][3], expected[i][3], 'composedPath at ' + i + ' should be same'); + if (actual[i][4]) { + assert_equals(actual[i][4], expected[i][4], 'listener type should be same at ' + i); + } } } diff --git a/tests/wpt/web-platform-tests/svg/linking/scripted/a-download-click.svg b/tests/wpt/web-platform-tests/svg/linking/scripted/a-download-click.svg index 406d0e6ba56..b728603d547 100644 --- a/tests/wpt/web-platform-tests/svg/linking/scripted/a-download-click.svg +++ b/tests/wpt/web-platform-tests/svg/linking/scripted/a-download-click.svg @@ -22,7 +22,7 @@ const link = frame.contentDocument.querySelector("#blob-url"); link.href.baseVal = URL.createObjectURL(blob); - link.click(); + link.dispatchEvent(new Event('click')); t.step_timeout(() => t.done(), 1000); })); @@ -30,4 +30,4 @@ root.appendChild(frame); }, "Clicking on an element with a download attribute must not throw an exception"); ]]> - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/svg/path/property/getComputedStyle.svg b/tests/wpt/web-platform-tests/svg/path/property/getComputedStyle.svg index 5830191931f..392c570e352 100644 --- a/tests/wpt/web-platform-tests/svg/path/property/getComputedStyle.svg +++ b/tests/wpt/web-platform-tests/svg/path/property/getComputedStyle.svg @@ -10,7 +10,7 @@ d: path('M 10 3 H 30'); } .g5 { - d: path('M 10 5 H 50'); + d: path('m 10 5 h 40'); } .p6 { d: inherit; diff --git a/tests/wpt/web-platform-tests/svg/path/property/serialization.svg b/tests/wpt/web-platform-tests/svg/path/property/serialization.svg new file mode 100644 index 00000000000..297f8ede687 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/path/property/serialization.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-001-ref.png b/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-001-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..691bff6244cd0abe046536efc0a100329b62d407 GIT binary patch literal 15882 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 literal 0 HcmV?d00001 diff --git a/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-001.svg b/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-001.svg new file mode 100644 index 00000000000..24290d40d6c --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-001.svg @@ -0,0 +1,63 @@ + + + Mesh gradient: Single 1x1 patch (userSpaceOnUse). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-002-ref.png b/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-002-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..691bff6244cd0abe046536efc0a100329b62d407 GIT binary patch literal 15882 zcmeIZ`8U+>`v*=^NlAo+6j`z+FI&PZ(Ik69*2$8QnZXbv%V;4x2}PDEOWAj08H{A# zCfR3V$~MB-%`jv5KJ_}E_xb(--ygr7Bj=3ccHh_Yx*w0n^|-EQl$i9FV;@4d{^K@!KeBUpIUgiJw-bC zJZ3>6kqS>dp}sCo-j5Z$d?4v7H!rZTTw*cMyY(O-gOW+~nYmd8|5M7`PiPDT?|ovs z#e3oP#)@OzU}GsgZwlXr{JC~R8rN|*v;?&FkS)r@9^e8T-6AslG`M$e2Uv(WZ4 z4@6QfB*c$6Vvlczq7@z;rR(ElRW6Dwg+9QMLs>%~wR&yPXR4qcB~1h8tn)eq4<>HB zZ8keq<@dnj=Buhg->OCQ3#{2-XL_JM$C)<_yF&L@k&RLcT&oxGv2dMq z8$`j^(AHJktU!7d2cG5R?^@~m-nmDGOz>prk?YTBMY zqLGVk$lsQ75~_LtgQr|5T;KQm?+>nLKw9|HCq&iT4z@?>nhNw_pY!id&GM`AmzoM5iIX3`5ofk1ovq^h zH*eGnI6HVNNC=H(*DB`-w>vw97pvfHot7_A_5`1HskY*s>GFJ3#rw#03EsEc+}EQBxeI{LRIl1$+3QN zn+H2&iTkKvL$*PMk8Nac_|%pshn&NzG`)FfHwR^A-<&E#7mg1KZ=zm}7l56`jVl|P zMS#_sPScxW8K@%z^z3e}wKOW!*wmf)xuar1;3OWyn0a4U!aKL{C7g~#IsVLg6#K`^ z@s6L|&S~Vv)EKa9G(`kOVgXWVfu_0=a!iik$cwpO4f5@iJLPdpx8Cftw$3AwfiNDgYf~07-%;F-AAi4r#Wxu_VB+?jZX1D5pj zU|8T9oe5_=1L0an6U3upP%2~EY%68q4l64f=Fr|FqAM+SvWn*{cHf4(zE>`{>mj=o z1m7C?UG>FW_?vg)v--@&o+nU}O2az4AIw7l?nF6>R_rO*2w?-Z>F+!93RU*orS_v? zNSb%Tl%!CUQuNHC;K}7q)V)YlAM=ORQT6=Ci&7^Zr*9WPhlntArUHh97uR$neF+nK z6P;hj@*sT24_tQ<$dAEQ_{|OeEqBPXj#8i0+i{Q2eWMXKCxmrYo#Lky39SZ#!#4<- zCUa&8+jRWzc*R~PthgiH8C z5qt66usXH`x>3g3GqY9N<|Ur`1>!7C1BUAvbdlQqhO)D3P24YI=-$CCj8V5OmSRw* zGozuAE>AhG8qJDSzdEf_bSwLEd(&5C4k0gtFnxOaUlD~QAm7mKtX4GKF53eCL?3>2v zaCg5K7qkWLEpiA*5x>A}iH!Y>Uj5E2dfk-iEMd2P=J#f1iz$^z4f_PP!q>h;4VEP= zF~6@q37!`$FPCNV=X5FY3?+l1#2Z%3;aN)rFK%nXR5lViOJ4F7b&*l1;XZ*IR79L& z2IDrALxwaT9ZdAo^(PZaYR^#sOf`#40(|+7Zn%M2_UY>E)C^q$udyW0-K22-^UkUi44By~3f-PqsjMehGJZAwpsDC^@Ed(h3l!6~P}vS_^Cb0b?vx05barSLxO zz+7L4H+GFW-q1-*b}xY^q>X>Z`lU4H7Mu$q#{!I7LS;sgKAKUH7c-@0kMP5n(Nc(MA) z4l$)rSVnZyKoN%6TO4K2g6F-->8dF%qpFn?Do10?zf2WHHtBLCHT2g;|JI>|JOgXnhUt!&>=Z%lf z43)pz`!5q#1-+p)r0fSM%S0j47WKYlYU==swp>7A2lss8f9;XUj*CnExjh~=04|%C z40R>@KGbp145sGpRbFUB^FDp7R6G@J*r_%_4FERBx5>(M{5DtnF`_mv&~5}@t5NZu zNnaPNEq7zSRMk9ds1&@Pi2mebS9m?m4$5e6X*Xdm3$LNfPmki;OSNenp&k#nH&vu@ zUMz=PUBp!QRfP*vfr_>-AWp9Tn9LXHco|^Jn{uS!G{oyv|erIQxZRtj71jI&I{1B!h@QhGZmfm{4EEYsG6P< z{ByNSwA$>#+VV<5Bv4gl0D(&JNQy~gm`ySiursvS9rwJrEc8kzKnUH zuV`&&(Qs+UasvF6<(F;=A)BR^m?<68AKyl9r-oE(L$1Y(w+_&8^D*av%yhzPB)|q&{}By3c9W<7a>X%R zs(FR6RP%v;0xDz2FX*Z|Sqe_cv&2l9P86=^BhKmJTxB~X;QhjHF->+8(a`cLKXMVq zlzZjz-v?tsRDMQPbdo>WFs9UyXPIgL!#_DEJ)nX;={_M)=dsY-LdgEidJV(nvCwY+ zEVsW?yxe>)X~^g1;o;bbU!Y4u+l(~3@65UyQuoabWz2o|MN!VX`~NsqYsR-V211v& z&S#GrZl>XLgufA}F4o9J$oZ+2!kwlwlCY8W!oQTYde_cUhmAfGOckA8gKLFt^g73! z(KCLR82Y#pRMrE}_+6q7T}q&ABW5lT+&Zh0CLCv4?hpu2`{Jv70TOq%CXT9{(Z>eH zh2vd-+_0X=CK(3o$uIQJ3Nv}`0wqdQWmVrm5$bnt96t+msS|D7_Ndi#%v!LFd9w|2 zk+PAaKfgwi2!cCg{jr}=x0;S>_$xsc)QTCfiwEp`@qdQ$T@F|YG`6xlgM!6cxQDP~ zBvqYfYFP~N!2aH{IJ(QrE%Bkc30|Oc{U25|7ocCJ&jWzulEsRaq)wyH%ZbwJ!iBNj zsT>~E@%aZDs1s7}YB=~~^2nMpovgSyyi4*-?u;e6^H2>$VizM&zFC{6cH~%fBtXzl z0lk`_AebV;Rjum8Lk4QuH-CoBS?9+3D)(3|$IjE{TXqXbC@CR?%P$rsnnyCkJ%8^X zuA}*jh9H_4Em=hEY9B<=veu{pc~+LSMKzT!CQwU1v^li;ZgCrPJ*oD`@cJ}FK*9aE zZ*tpMr(1$7x~yzfNd5NlD9OJdgR>9iY^bfF@((Zq=C^stDuN)#;i~ranb5*6SRX3b zO4yDJ>z~iju1=yMDqTV|Lo!lQG4l%_`r6XeQUClUxUC(dQXKmv5jDj$fnT|?6dEwS zduFcd=zyL%A6AE}ERJf{&6Q0Lxj__b+C$(MuTV{a7LF;-B@NAJ1 zTy%%&92`5-L%z{iqP>_uqSeH9%G362S@$l#$(y2TmZQ@b=2xHDrHj7mUrmVF&56>f z@vc|@!}XH}Q5p^yPGuuaj$3U=btW7?MEam~l-KSNF8$OU*X&7$zOQXT?5`8i2+I+tX2)Fb=YvwOOQJKMotU%E5*qQOJcgb6p4TW~LDRGiXUQp}Tg zx9xLA*ndHr!ver|UDx`5Z0k05xdMdS{K-JJgl9sf z7uktsEZxevg9Fdp)3-J4=6LDpOF_{k6fa!%Kxyr{&R76^9LEw%N{B>)Jy5=yZz*HR z`3LKN;lgWZ)vxxWT}=4rw#-PAiLNM@jiSkwfrCy|owA7}hQtS%w&Ydgdmd-gr9-HZ zWz7$Na_4zE^##0+W!y!_jc;glnNgA;>MN-o)L)r8^~D{K1g$`N9K$Tof`RnV;_+-Z zF?yu&=YfdF5!yb#=_83~7{Va@kyK_?e@EhqM-Z+muC!D0Gx~elqhn(MNkgK<3^BKH z(o8-<-_9T)&AaM`GS)ow2h|-&+-(j0zH(frc})!FpaJF8#O}cJ=m)ypTvvo*lCsb$ zLUzr_G?k4GPA*F~>fl)Vt}n zyUd&$QtK@er#uK~mem8oVA%kKm>pb*CtGOjshphNGo&{y3zid3d$p<1*@DNU^snrJ z#XyoR*E&r}%L6vi%K3QH6>;pMTxXwHl~6><(8NP=(#w_gZQ#b z^fY~v-mnJ*Hme(w#Y$^_VO*EwU$2Y6?kN5iU10$ss`lWD1Cz%~!pii{ZgmSY)i<_x zn;f{+`q5GS#G)ui?#l`7ih&; zzDCCiU>AG!uI|0gj-~JUMbonpJF1q}!|!WKh8x~W{r7wt>K14>n2!6%79Yso(0dLa zzxP^OjDo?{0?E4ZcbESRn72pKVZ=n?lxFD&8ciGID}C_GVFa^yaF{n-gI*qQU8DH$My{#&W zADe+wb_j}!ys}#y)3Ci)!lsk@=#z&#qp30-H+j87X}S+6gL?SsE4tPc#m8TKRFzrZ zs(%xyjZ&`ior=TO?rN)j9`u}yH!!(()g>P~3(u!Ozq=fzU{xiao^>&Z^n{5c!ZmFqzQfEbn$1sH7Ev~p_WWSF!zt%m zza*2IK=6cP01H5X5_4#^3IAN*?y-~>4@45CIN)xbPHCBQ<)>f+Pd>XtDPecsXuhST zsP?(~;>iAH1=msmCfzr!bDmd;`i;7#O+>=)j@eBs{)GSbYP_V86oh6i ztJYT{I>LOMgEYZK@J(Kas2?L$6Q=`3$FicHlD!E2ngbk(T_R;XB_RomRvIrc?jRY8 zTbrfLwd8UA;*9~@VcvE+UGdQtgGeR-A<#<4?+L#3f-(%6(w`6DiJ6Hm)hw;<3xU1MGmt>I5j%P(|UrcfJqrV>D6Q@c0PzYlC{ z@dFx=Q{(%p#!njV^6sWA+$1)W!mq{|S+hizPb+8I?@ns1=QL2B)%uc|I|~XHgsZFt z1YX?JzUd3gN7Xl$);ViJ+YcQrEiYg{jzuJf*R6yB@xjPV=?;*8sdbx%Y$%V~q=@OP zfdG$C5gMr(+FbWWjxn*><#i4+&HNuJ)qq=ad`YT;;u*oR^-}nu%t9S6=OYjV{n`8& zK82+BvtLDR9I)_8M{NsAd`k9G`*$aFv5S8f&{V#&6%-k?f9empvEiGh{_~s*^ea6B zNw#0~np4HMl$jROU2SiNWnA<$f-`}rKBGbJybQIkfc6xP(GTa?WWzwIBr_VV;q$gD(eB zN3;*^)K`F6txcPJNexNiK-y+Dx6oWeZ(8{OkWVci*)zYnq+ECLiB^>N<9_q~ zo@WVvTuyD!HYLo@=IF5mtgNywGH)7q`aKSx^+BDFoUnH{xiI>Y}dblMOoGDyFKnOXSl1DxVCoN<$CkCOkduY zyqFaI&kZc$n8EW8z}~2?(J|*KB5$MpN+V_P14e9}V->$;jIhq5@QCA?} z%}@*#X=D6%5%$@@EmD!|DQ$_G6Xv9^!uKEEb9eZdR#I|%tI4Ei{p6mEhRp8ccu7fL zzt~nO2Vp&Qf^WXpTJsOup~`?S&=i>38=L_XWsjuTmpnoxQ0dJrUUh8#eqECbA6Fl5 zL`+w3hHVDzYA->S&XKW`PiD#bQ*cR!YPO}uu@I+8)h{LA7`p^9oG$TjLu1=b%!Ynf zQF>fGQ^&`T)HJ07)5jMfXsT&gu6 zjXV@Gw25 zqLFR2qA#d{<=H2Yn4^tcu*ih-a5KvmwnX$0ijk7EpD!_;y2JPMsN{@?kr^M;1dU4|7k?%khihLt407<3Q0|&QQ*_Q-ltOT+p;`R{dIypxtAThcRBjR|Y z25PsLX4*^R;ip^G;*#c8{BLQYvb{=EaN3JE3e~e;muIb%`2=BGnq@G8gP)lOr2ha4 zwJuN|`g)keyyC0s0V>#C4a_?5milo#XBc(X+O{J$R`%+Qgu13jHP-6CH1ycsg?Jbv z>lYu&$=tge0kalhfy$P;NPqr!9Hj5aztVE3LE=OK_-UpXW$m)tmm9O6i@e%%8P3_- zEBSs4=vnDW{P-0hy<$TgrJ}mm-Xq*f_E=P|H3xk#Z-X2QO+$ z_|FMih0{Z*rbo>*Xe=xuF^97NE!ibvqYvufCeK%?x!NkM$j%ofTNX7(xAQRJ8HUrv zv$dEU#O}=K>lzrHiFij66<{E#+4482hpNSs5P|||13!xZw}@Z1nh7v(PLT4s!};Pv z*b@^88Q-SiFw2+$_i4t>kWbP4QF5U-)-6rmgHOux7QoSGv(|;?AMAoU*_{&NLx}&S z2cQQM4pl|aF3L&sTv|-hNeDM+WWN1IjV9N$tLCn>n`~P(+(sC!6T{mcJ3Zd5fE+P- zc-;+(Q=J623(CO^kCa4P%KzKF{ujkY-CgJeV;#D~jB@DfT*8q=N^nE}pt|nQd;i*G z%uUu8eyY5?L$D=YENgp0>@J>uh;|TO@|u2#pln2`N~Gq$b`Vy3eJvi2bcyWnq5fS{ zfO!bjN!cHGTFzc(jyKxJY7dHkEfC4W(|i!6<06KnKF8UB)4{e-yWd9h#NoxwnwRP& zC#r%cJ37~!FA|Og3P}sxf^iUm__t#c*QPqtRxgbW3P0J$ zWVV#lgv5J_iU?tm4A*$?Tjm-l<>aH)RkHJI2(@XmY(&jCrtq#f>u1h8>pMW6T{{ls z8N`>Q{A>SWWT`8e?#NE6&Fo5x`ff5?nA!iyKUfvwCAw1i>LGS=y+t7!Td7$aGTQth zH1N2v+`k12AttLcn=!s=p{)l?&B1oJ4>g5kC&ahcw57o8RrB2pZ7a!vo_Gx&lZk;X zN?W0x{NnwjabMKK_B#9c3{lt&ono-T)$;h=SJl&fAO&oebi1K`-O_4Fd z;b7m=6QWA{H(7oiI^d;zkr!J1uPX|pXm@l!3J}bPeMp@x_F~C0%`&5%#7D>@c72KM z>zrNl-vp*lAv1Ce&~0fw<`wd7-To6LaD8dyj~wCbvgB`#!{oCZ+B{?rbl)dBK>+Bi zmBl4(e|Rmtw~u{w-xu>Ztb_?d#5QFwizk671hZuc(OQ|Kx2=fqIAh z@c&+$-sS&dEkulbm-`7=@*cwe4}Jg?0^H!0zh+<2AGy+J$9@vb8q=;tU^=8esEZTj zR)U=66c!@`q@j zNGhef9CbLU?CRAr4$-SWPNi3_iGP zUx;6=O!<|Ib{EYAOH3L53-}O`0C$ivkd_fz;zw)b=Mj+=hB}XH0^e>LYEG^2s_m8F zem>lw7~(bf94P9sRpV;!{Pa${+w52@E;h#}3aG%YtjQi)pofxN@!&}Fy*4%yP2XfM zJM*ckV7iu?%g-G_A-h+!&3b>7L6Cpe+(T;7tbKLSPR)GSm?2-;eUrJWU++6)#iwIy_1FY<%C@@qyX#-Dql>@F;S~iVx&W%etoE z_U!!8IFzb69b zALz_J0q;?@wJ1sVEyuGk2{eThxl$<4Jw%kWIdNwfgxRpQIe3&AQN_#F2lkMXUvaG2Da7ONGHOm!sYtKn$o#GT#iL6_;Be?62YV;qes zcwdJ~=0oSGDs$e7k)rp+?^WyT#!2z`@^_lT5b)MX#JeF!9Z}8vASwUHOO7(A1~zLA z5XNR8w?u3iSVwIYc=(P5q#&acu8pRsYqHj< z-(!jJAE2hpnr(+68WIXeI()`lRO1U}<9MrqVA(|q7HI~%i=3fP?* z@bhQk9;|_f-HOsJ!SuY;{Y|B^P#fI)gQGC1*P%4tiXQ?T63bQVCg*ks+5dG&>W^3Y z(;L>DK3f#xEL>>1q6eYtX_eF#HNPN=Eb zTyZe7ZFKL__7&#vSE~<>)3u*a@Gr>9RkZ!LHPDT2Pb^hD3*JOw@Cvh2pb;0vueyLS zN(6XFjrm{Hm%MJNX?44`1$_2~X^FEwpsVtNP8d;EkkdOFQ^wEr>YkvZrH-aj-c_}W z71lOta(O^YYIMR0mCZWl@McfOeS`xk2y(HpFyw!okg@~iTyglluosi1_#J>}NAz0> z`Ut}qz5Cc69dW8TO4OyAdw0o}4^=n5vq#M<{SsMWSJwvx#@N!=`;Vrc#Qh3QIi!x2 z=|hN4`3v{>5v-;HrScU9R(q4@M^Iw^Nt-tFqy{;4qBge)pjF-!Y3v2$m0@2y#iJBD z*1x=&Nx%(=Io1-}mHc}(eirp_P2gw${7+sT2$Z|W=;io_=crG_kF9j&IOJ(rA^b(X z#r*5bA0AAEcVa-!8yfanIkw4bmfC)qt?E%9kuH83G6?^gXmwTam4?hX?hR>^ywySA zx-ZRqB=v3u^(y}wT+!fr`dx>BfV>PnJ^dgImLQ(k9j-sSC1w%x%_KG(lMjvq&Hc1b zzY=fTmQ8ppY>i!}A?)oQ5Jg2Tb{>>k?(}uFPsJ(qjsay{3<`v>rz{{dm$F!iE)qr( z#j4zHpTO-pV$`_)N5W}!u#7kg@O>=={wG_)hmPptxXK^(6uII{SN9a25aU)b`rQ9k z{zRotz(hb=oB+9tdh)-%;-OCqm?Cs?z?I}UhaaR5JKW0agc(=FT9SGp$u!$cz11qt zPt9Obr7KK1V{Ks6F$NZ~)G0Ee_Ve^{PLS$5Z_v$reeK&k*>LL3hr-K#CDGLz#CL}k z1ym0Z#S@v`hb|Y1bT(xQ@gD6sUbVidAe5;|L(#$qCz2sU^=ikcOe?K>*8`&i{Pa)1~0 zyF`((fv(@MQ2Z@0f32*Hh530#7jV0cv^Uu8Z*a9$YACh^v3Fiih-60Zy}cm*^_2b% zanB*giL<7Z7Ke~O=Vfc?Q6)!z=^S?w;>eAnjXrJm1}zI19z^>jw5|AP9g6B#O4+2% zda|Imk3C<67HW4U>gFOFg_4so=$aqWdUFtNiz;~Dzj42)~Nek^M zP1T96kFp4;aoc}`<3s*vPwlVyA9*y91=pfFJwVG+aExYY$5y9>CWLr#?wraO-KfR0 zN)Ul4n6Qo3;+MD|xo7zMN7_3WboSzg9g6eCU= z@y>smA>AK1YT58A2=_b>?3<*qk@&qs32I@4HG^^zK{IaS&YG;CY+ zi$*tofQaElXJEx?GgP`A!-bL5;g0-~M=E|$7KO-jfq@UFM!S{hTJM(*yVCL(iBXv* zJ~Qu6D)jOh%}Yvxwl2qe5V!SXV)58Z13&!iY=pVSyP+S9b}ZN5Eu(zi={xcTZv@_4 zP%D9tMF70RnzhMpU)|d_r*ARIinfG4FqQNNBmZemvsIg+t_$$LG@jJnpH+$H|BNjC z6_^s9Y;PSJ$J|atPjr_ZvZdghEmmO@)UQeS?`e_BfPb4KSh>bPS;8AABKF zool?795;BetG#-I$3h0h&W+sET45Wz{F9Y*^}9Lvf!Ft1L2LlYfz5Z>w|3Njx0Gk? z&mpAIzpwhynalDEgS&hoYO?`R%|@|`WC3}ePu_jI1!8p#t3$g|0%7+_zqbE(Q|UUl zH#()Zn|O$scf;W0kbx@o#Fhu~De6?VGsp=8uu6PpvU!Fv$p~l;V0cNL23~m*h|g^) zTNIz-=3~=<&4_$|IO1Kj6~s{fm6JrsvW8c6CsML)otGFN5>ku;g_gQ@2AWM|V_r3> z+JFO??S6*rhzLsf-xvZ@i^e$gF2}Fx9-N*S1Me#S*#Xb5;g0%5{G}W^06IZtrrq4$IT zuxprSOz0H`kC#M6`8jK8formi)YIO;n9W%|J9r+`YE9;FJ>55K--}@7|4sJr7`@v- z_=A$62dDnTZYK7-TR(vbf2L z#)7jNVLQRUS6Oo%``@@^;pS|^N0Ohy?vZ%ywZ+`x3~R}e^4GUSRNYk9KO-lSG%7dE z;|o$>#9gq{Pgd5r!#Rb1O5?ltr}4ZR;WVS}TU79G1-enXP8z9g zscV4oKjj0*KL@87|Ed*Qi(X65>QmkwaV?#FkFeLG2KxzHOkX@ls&8~bt?47G%r#R_uK%)ht;2c{#6Gtjc`&y`bqfd|k*uT95uX&dQhLG$k& zBCOVg93m3Y4I&t#p8&MWQ~Y%JOj-L&QW0O)ZHY1+aonX*HElM`p=iw}c?BL@_HwGR z;w|;CP<@e!9?uELiArhzuwCWv9( zz8L_ZzR>7v)KbkS(uFb7%Pd&Y$wAYsAM$0dG#ryORFkOF!imx#vC~jPpIA>RmG|Ps z{j(w`bL$>uWVuXRuK%6+Y!E(dRHIgK;!i1g21^9y@pJ84Niw}I@CXefBb~EiL}M=N zFa0@^qwbZjlWyccdDba3SFlp(!0@hJ6v)V3nN)mev^;>+{Pi(wL(!{|8aldmc%9{k z<5BqEQ;LrUsn_8iVzLK<6+veqx-edhzpg$;T&a=7rnE4N=u0f&c~w%wj_D_!;TH>K z7Pg8KqCVudwEGDvNKbjLZOoJ%8ke$^!)x_2D2uiBbGR%)nK)RL=_!ls8NggOm^=Pp z903v&j#9q>l3W>V>+3kn(Khyu0+U6^YR*KLFr~<1L0Df;`GdI_8=^Am!r!E{BJcwf zY+1mHkdP6~l!}Y!czoL=Az(1Tm_XNezM^MIG>P;WTk$AR;L#*ry0ehew(QZz&#pP( zknsqK3i!%{Hg1T_SOXB;ns6vH!%?d^c6s{n@ddc}U^i!Sq*6m9>WJI+a+adRcB~$M zNO=zAA5|-VPSA+5$`kQhCqyk18u)Eudp57^F3;zoFF&rBjkh0{8=3Lh`!5T`wWc!9SL$EImKJ7>So>D|tw|J))0<3i@3q*b_~iUE`OL2tz9f#EHEMK! zaY8C~iP%`=ki9@0Kew@Zl-p=PF4T{fvE5|5MtaLfZ{7RsRa?Y_U#RxB=P)-{r7ba(37g9Yt; zl0d2M%PtVxxsC?qD)L|{7R|~b*!5HN>~OKAB86+_O*zeJV}R-Ve+nT4=rY(U5OPDM zb93>ix)E)mqK%BlL!)3D^q&OD&cw;}`{2uv8}-)69#HTkm$k!;Ab1;c3PfMw{>xyp z9nq+=!Bz6XsRE?PLM^Yi@5R{x`ZrFIv#}S${VD7}|<29ngaB z%ZSthf;GQTsDm3nyQST@l!t+UlqDkx*q8Qy$_0KP;so7n-AEdyrRc$7R_$q80*g#d z^cCE}S`|^xUw5|-B)OMp;PB`DOj`bB;@N~O_5y2a#LnXT>sJ1qHY96pHh=P8{P3;c z=B!(G!AiR1$Na<7uqeu5KEG4Z-B!w9?9k}iDZ&w0%ffMMbwiSKrgtlXGoiq8&P=Ja zCs9E`>`t;`j8ZV)e>0Rx=dI^<$`)zBuy*EPDPdx{;idXL^+^T3l&BPW7W4S`RaKNk zZ!uOk-T|_3w0KmK@lBfpcbZ+~OeZ)h&;Q3aQtGMcoo3|n;J|LDTeW8C7JyCICm=xK z-unwK)sq7X7m9gS^56Yq@@B}id6eK*D;QlR<71tE?n^$!=kjrXzKTL?UVj;g!FM+7 z0_jD`Nu(cZ{`f@3-?~spl<8PV0s*W#ZrQfNUJg|xSS|jH8qYf8sXq}Q{u@6YxL$Ol zWK9jOZNS8TH(F1&ou zt}bqW@X2#8GXX8FdB9RVtqXtPDFW6-!oEoPg*PA8@~S7Tjb8r~(QSG5Iry%dk8~nH9(xbs zgmBaHxze3mORe1(cQc!cLTUxFv9i^FTAVCjAcy3!oY_ff zyS^6V1DodO=T;0{A}{rJr0iPqzwT2k7O&S*UHamaz#sLNgrg1t{p_*oL%~;rD%(Ax zaN^Qd<`!|{N-gRRs#&W?i^o#p3;M*ABu`4lxvzSJ5i-LXS?$?Zq~sP1I!FzCjKuD~ zV&cjQ9H@(%d1XPzVu3Mhpjy&;wS+p7^-~`7aziymU8ZA8_d8L_D=M?*W56fEjeEc4S3rxv@djO zVt?5rB$!un@UuvSt?fZNAy6UXH%3<|+qEiHuWpJ(8a)^)V?)exHPrPgOq|M6+@+R< z09&es11n;@f{$gK_=m@8STstdh8OPPL$AB%s;q>Bf8}bpVjr|Ta|Oqp-SJV1I$Y=_%P$=siMaJ_JG?=eR(7>UnU)Q6y}Ov(3K#VZj0{sFKam=9=qN zxNxGe^wjM8tHVcQ^sq5@=Odz(3dMU9NBA;9dyZ*FEf zwN_J|e4>cb%)}UnH3XnODfs#3gLt#ZRXC4u5TaO)3)EJl zfnqY5k56u<2gqO&oba;K`NNsUZCzgk)5m_jSHE5{FlzBkAGdWaR^A^cGbIhq%Nl8R zBLJdpvc3Eer?R@64n)0g^$Cs5?nTF#^H^hgt>6w@I-QhNsQA7%tEGa(BJ8I{jGhzu zCeKs-Ss_iG{b|!nPvpCm^Cl1(>xK4c&|!r$3%ox?Zickn>*9PMNp_#M7I^(hT~@^g zA+wI#Z`NP&Vvf&@;Sp5GDS7v@Ncm06kQDok$4fdpd+zgT_&%=j1o;h-i92H(K${Hi z2mryPpJozSi>*1$<`!XQQLN%@Xt|tYQAzsiOvms~YH==#}a|dinnVQP5Vy literal 0 HcmV?d00001 diff --git a/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-002.svg b/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-002.svg new file mode 100644 index 00000000000..23911352002 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-002.svg @@ -0,0 +1,63 @@ + + + Mesh gradient: Single 1x1 patch (objectBoundingBox) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-003-ref.png b/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-003-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..39c36a150fb1c9f98fcbd118a14589885527034b GIT binary patch literal 21887 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 z + + Mesh gradient: Simple 2x2 patch mesh (userSpaceOnUse). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-004-ref.png b/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-004-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..39c36a150fb1c9f98fcbd118a14589885527034b GIT binary patch literal 21887 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 z + + Mesh gradient: Simple 2x2 patch mesh (objectBoundingBox). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-005-ref.png b/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-basic-005-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..3cd5164b776717ed1c9d487430682ee4ecd00a84 GIT binary patch literal 15284 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 + + Mesh gradient: Star: 10x2 patches. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-bicubic-001-ref.png b/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-bicubic-001-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..551345d732c4f93e9f220d303f4823b5007d7605 GIT binary patch literal 38493 zcmeFY=QkYO8#NpvVv;C>gwci>K@dH9OH3hg6DeA>C_@rGdXG97#vn$QC?SY8qD3cq z7iIL`>*)RUd)9jXhWE?!;jFXP`E=TKoqg@SPv}bxB=sGZJ2!6JpjK0by}EIOZ05RI zQBhuxV5RstuRDOfs@~@tH)xvv*T`D!a?Gy>K~8X8r`L8UC)f9m7B^g7U4=f_e)??o z-rhpU&e1YyOP=M%4bB^Cu%~a_k~eB5<4P+E1o?B;Di6<;)+)#H&R$dt)8l42xs&p{ zQomaAwS2orc@FKo)BZA3@B2$W#ydgJ{$Kb1w&4HWg8%;mVQ1UK-96OUH_`j5c-3Z- zZyR;!yy#KvJy|f_H1ZkLyFcHHC#Koe*nINpDIXs>@I3YqGFwV5pq^IR4k2zcW2e9A zOqY-JR_e_8UfL0^PK*gxd%pkuxZ0~jU7eiad?q>0Qm;mojy9Ei(~jzFkN#QEZ~n=z zv&HV}xUaiR8A}ne{ywrrVHuC`E+d;|6H-%Be|jIM8S`H(7qkcbvwauAT`BeC3y!uVoSDFb2uhU;u9oe7 zZP#91v~FCTZ@*aHJ`%Y52hYqb^m{fCWFzljPu|`56;N)YV28p2(Bqo|woO%97U4WX zX{AOS9KE)=U>&;lfipixyCh;&a_jv1VSK#!=F8@Tcg~Q3yTbs2t}x?pcbDzR*pXd8 z1Z}jCt?lRp-CS|vQGW&3Kjv>=jK>Uz-G1RKeH zb?*|ecd&5$!Y3_cLOZZ?vG-_xN@@Bic0KZxr5)YM8+~9UL@4O$vdI!IFRZQ0WnZD= zQ$Rb-A6lTUJUNoUGc^=lMgn);TV_x1VDTSdX$vXx02IU`buTdaMpYtL-c3-EMxc>~z-}iTJWTzXx8!Kfx zxiQ3Wyl6uD+olaHMwW*8WwGnR*mi_7CZOJ1n67t|4fS#?t#}a zy{4R+xA{z-RxHd+CLrU$Dt;T>s)j47;(;2u1SbTFvn$`mTKw8s9`CwT^4?Ob#`-x_ zMn*ioD<@V#N_l8@V@|DP5eU>+s=Dr0?)LupLP=UAU&$gh0Exn&9|lSz;O2jjBZ@QMn>@~ z?)($6;UyG^u@~ z6u9fSc7bdaY~rQcxjL!yZq7q9r{&FxPoljFVRfj)d&lwx!+i4}SYulGu98o z)BYe{^re!jTMjX8I>4go@R83o8GOd@`sdo>q#kWvvB~&{?|+;A99wzRtFvv{EZ{q( zj4u?{Qm?fJczo!E*E@bI<}%Su;YLAB1YMy`9cNT;&dYR>_59=ra>d6_2M7Af5^We5 z7ITv9chaMhAchA1&g3Z4K~*f?ONj_Z2oD*A`q6r;I^AsL5n~B++C7eHGA)a;{iaco z-R=C-W1Iw{=n~fdNyUs$eoK+ueF7pqkwZF$(e-h$tSX~0P}u30ccqD0aX;Jv9*kt- zT$r|zjqhe&w2IRUTcwpP+pr0sd&7GY0jI1?Z3u6 z;RzVWpjr_srQZ&Tk`F!B18dH_6MwgIvaJPvbc^Q4bp&A8$iOi>of{7XpPK!F&U5yA zEORH_U_YTJ6F(u5@X-<585$LX2VLSOPqf5uvOSe~{LvJ8QlfF}-I1j2>`hO$H{PS# zs9L}NBaIA+O>t99`pcca^l8wD=k%EEfKFeXPhNq4AnP-hYuOet_xR~U^=#2!cYRS_)zn%^JEKS9$ON^D z$L(g>;oSKJ@AQ>?6a3zurC$~kfbEvrsr}5mK8#fGNav-ZM`EZFolQ(~Xs^EiRJ)`{ zEiZJ2kNnwpnz(e(N{U*O+{^BllB1Sd6In+BiHVZyBP0!KuSz# zOPNkrtCNVyqu?bE7VX*37}rInE1H`PS1m|HhU^tjScqnTQKu)2ca(u0cF6s!+Kj8c zh}6AEs*%uWweEbWxYSEnFwounL>-pKF!dlWj*1I*U1n-?KkaUSA(0j zZ7(OQ-D3UhZv&;<3_gz)!Am7Y99e`km3ni76XMjqBb0e`R(!^UQ~oW-l&JDemAnq* zLpjKdpC8U`=rc2qIghay*^3&?U+*`}j}inH$_}-5pVmJ;!I94sUJ;CV<6Qoeq9La= zbUP3?nUb|jbW&NZ|G6=~730NBb|$uWj|_SBs%1fLubL@s9=>Ob@EHIZwwz_Gi;G2~ zZ5Y`t1q`U*wQCN+F~4GjJ0w2ll|c0p+dpzo>zQhsDT=oe+^t=FWWtv-!N|xdRt~P3 z5Wn37tOrfAum#LK8E7XZayaVB7Elup@*om9e|g-9o%&{aO8Dv$u$=V{yy=)5mm}%i zZ8bo_K;_WZA^65BdDKSq9d!q`(k$LUjcZWBF zWhG!BqF`H^3z|VKyZgT|=suTG^65+f=qlv(rXGn&o4$t~^)g?8o>h7XuVZAjDLjL` zDzAhF`II0&LmI{(;<;v25y|*TB|=&^j!$~7EJtSJ2nv{oaydn3m~25IGb>pMA~xP0 z)<0e|d^l9ENFb7%Pskfa|5N>d_XH{C@EeYEJOpKOG~~XaTjxo>2`@9OI%<8B8;EOj z_;BPYSJ`wdp;3OjQsm2@ds#-MpR24b4Vf?M?8fk_jL)?BRGwT85RAHphfXb9^ZLlt zmHhmMK2NlLiCo%mQ$;zpQCY=t59#S>x5ij^=$ofN|T*gmb+}n z3zZ~T(51WYO|53&jz)f&Li)6G-R>J9^9sS_QoCPA68(HT@!0*QJsNgEveZw8FCrqW z7R&R*IJxhVjzzLWcThy`7gDW3@Hd7u<@)mIe43*xHjSCNZS{k2}QBc*hYMoQLXcZ^cUdt$|K1+}%KXgf>(uMzSzq*)nJlHQ8YCbl1 zG~gunnc(aQS|8`{xJ81ThAT-2f?K7f*{90*Uaztu|Z9 z+k9h4$7Dquqz{JBa++LCzUDDLSR!B}PDc^2Dk8nalHrpDHh3hPcD`qDV8&r&GNrX= z91{?y((Vvvfc)^UJjYlM4An!mFJ=@{c6uG&g&4o26vf;= z&^)D9;h0EOXc>F*kl|7Qn0fwhm!N2iQA^ndu*VjoBW>7;Be@`6VxN6%C<5wnfz&etV z@|N54vW6U^KX3sd+s;nd*at-x&q7i%jWJTldi9Dmw?h{0J6%a17-@efV9eibXt=ml z#=O=>5VkU?!xL=&*>aB}0$Hj z-b`ixEJ2D}2^{m#Vr#UDFXWM0jxj3I5Of(1jWGi1UAW}nfBhTz73FmQB=X*Ov7BnG za62qh?o$^*^+i^0H}pKP0(oE|006!3S+b0Gh7?FY(`mJnutjfZg^Vi4fU!% zsFtsOBpd)ZepxW20UmgHQmwwZTvPM?6^qjZ_9^p}F!zhSHfJ!tY;^aovcZz+nHc}$ zbqRj6cSrYc=nhwkExn?RKHpLxvvXQX-ZT%DeebH}WcG1>lqvSN`WRy}cnHC9syeHqL5(rAV&LQKC+*>JmH9Vs|J;^S$y$1l4H7g01<8ize}| ztdZ9!2j%eXZIOa9{1E4X>>H1UZ*0#A@*OL&bb~c^7+YdT1}tiFx5Phz=u+5JhIH4c z)hM<3t?@;Ubif#Uu`0?GtQc1Pk~bNxna-K+l%kx{pjZ*$FS{f=dsHBFTbSwKj?)|i z6|-?^htI3NMY|sWT^!3Z+4Vo2tt0s z?j5+Y$@eFLSQXP%6(d?ow&w-c;1oiUk%4W$s$3W{a4H5 zo%(UDYi+|l9tYzMcCwZW;iQ=r9iS*jZ-t`9eDqzryNREn)MHw@vHY-bz3mJ zm9WaEIfPrZT=*mz=PaS^weeYls0-iFk{c2&`)YHWL8Sa7gGv`??PeV_f~(&lW@W_G zyd!#psciznX>Yz*@QnILxiG-d;_|`OUuF#D4Pqy|4P!~Y8;PaTwVBdfjYoZ^BBPEp(^nTH@hGcZRmMa9D_7cLo0XZo@gYgAj*#WEP;f~1TV_O z62xBA6XP8e>C>~-8;z9cMW^Ol;~kA5GVhZv#G9rHnC87HCyE=!uc|9;=SJr>Pdww3kW>ZMDGbov5HVOx53 z3n)|z`zM)ehHr3~I`rljdY)M!7;}XXIgHz_S3&^z2)DsF`Kr^-Tt2fyu{b9 z+e>yI63V6+V zk1IE0zSHy~sgYShlYU2>)%84+VWipd%E)bfuS91HPlKLAsR4u);ecuIu``&p^8P@THJGJov7EE9XQ}X8IDx4 zMyrg&?!%kcfxa`M=-tVP)KiImbUs=g!2oZK=i75 zrL<&*ERy?BkPJyW^xpm?VY>l?Z^HeXS7abP*7?Q0ZZ+k2_CBWh2nuT#$z(|HhV{$A zvvfzOG{e>zFG$GJZ2b3!65+K}l;|oyd8DfQlHzUqD8?Xp;)V&oPFum&(|1U38S?G zh%67i(SPdf!Zy!(Z=@nx#tCNgw=W?Mi^ds#YF>qDx& zrCtyGDIz-wRd@=umSiGxkO(}1(xU>v@MZ$g9?=MG+;cpyX1En2yk*RF&CZBl6=bV2 zpM`u_NVcbt*LSXe3^9)MQ&5T~E4!6py@egn{JlLNU>2fv7{1FvE*VbEn|8Ob#sjM` zF#qk~QRlXF&3^FV^LOXTRm(7qj5olsAkQ5G?mIXCKI4*JtzVg09iHyx~ zjL4dWQ;lO4jbePxQHWb_A=me(VhsKg4iO!H+!R=37L4F6$s-{B^-#A_#l%?MED)a` zXF*g~Y6Zvk`i%<%-3ML~U+8;=nM!A)E{rbs-3FiN6e>+#*Nlp*6rqh4_E8R!Qv{Fm z&hKni>fMe3KMoTDp`?_Ddd^1hzaRh%=I{Pm!$c05SYaJ{VF``QWQE7|e|CkJhDE(K z&qupSEJ5`wN+jj5Kzfnr!jV6=7sVg3AMqnWG;~|Ys`iUS=OtgX6udr^%-IRC5xTx0 zLmAceUVW9G7qA~|G?W@SUG$}Mq0;KA!+9bV#oHqjsinQ?K+4_}CFrI$RAv{xXlbRL z1mI*FmR+7I3`!DHjcIsHZb=on5&d1pfeahhjx!rHt#3o+K7|=11ZS+w-5Z) zJb146n+YI&YX7`Uu-m)IiHE#Ln^kPUQ2(lWq_uC|64K-JUwf!U;wp;!Olr16X$Dw^CziQddFBZ$}5T3JD#f^Qwc ztW{?IuCZ~#i(LCFyUV(Jfn?Rw#8szTthQCaDY^plB4xJkkXhmqJ_;j$0c9RR_B}*S z7cKr1@?;G9=>er*x_+m3)ESfE^&fp(W_K+txD6tGE=I?fGBM2XQoXb{XL?GNb-6uE zvkG;$&l#%IGkRki%6|VMmH6H-)ID{}y;o)FjbqqnIM)>>pN|`EZ>>}2oucM7`3>u& zbd@B%UFbBIRVf9XT*mqh)e_^Aqujjbvn-v#2p=F28JO}|Mfg8ogv7fN4jGViOM)VX zN*5@Etjj?{i>m)IU(?tFgH}m4gYfgaz@op@b@Xe--M&cgLMs&*n*Zwl$Ym+D&ibE$ z$Y~Ld?cDAEIQGV8(`L<@7TV0|Z20Hc;SEso9@UD+qQEP2fNXdUBbju(M2$~m8{#EJ z7px1oW7V1dSKvjTk+6`cXDT)%%)@~wqpuYjwVDi>MPrJq(P%?sBg_%Ky`)3N=YHpc zd@l|6SuKU$e`g!c_t@MPiAF@rZDxy@N2B64@iv1i$@5rVece`OvsZguFIxIJY%5N;e=&k!qdT1w3O2^|d0 zbJH$FSQx3L)htWhq%I+z$YdEeq1jR}Q5oKmuL$zL({PH$48X8$fmb9iBZSMVqiUN? zHQ5;2axPY|hNa~FU84v;B5_fETe#7}zq&8ZNNA(2XhNi9$!u8Dnh;I9v{wQ12%}jI z-<_h8ezj&vDzQSr7PMq@k9aTa`79!Nv|J_yPf*L2Yi?!UMCZt~HL}z{Yt^%rL|LDK z+Lfwl8mu2s9R?h=w}7>2?R4GMApm!}NJoT)PIsGC{HE3e)Wuz-Iy1k2aE4bBg57QHx>MNWhww{uupD&kmY$aQ`dQyaGiRIfxzG z^T;fmJEI`H?erTvRoMUa0(`XzXN(3&Lq(nxpD;%>pbduH7l8=p$T6{TUZFj`N<=ej zgiI&bz|9HY#dvI_uiOM56!OXx7L1|RKNN-$KO6B*qumIW^}Voql*}Xei?*Dk7oJgm z%RhZ}5{H08aVx&K1Zyby;aNIKPf?Kf-(8=}&cjc^UKebguZO1NkY~Hhi{Yf+Z%%R3 z1-_zF$a)-b?!Oc)i8*J*4YO={Z=PV2C|X9ONNt~26M2=nBG1}Qbg>xeIW$9DCU^~9 zs5jFnf@clQ6ss=F=g+X0cshx68W*1(eM$4{r+lCOL5v-uc{|JxnzAHD7v|@#_GG+7 z(tIH=-RSFF4e^|#ef{J0wa<6Dd(itD>n3vtVcD`C5tjpkrobmXM5i?Cdu?@gx(*7b z-c;&@enOdbxw&{<$c;VulyCHKyg&YmRd%<_yN>-b`fhm=HOSvWlyEK|X6o=M+(%}; z4n&5e;cRRl#((ejaCAdRA-I!q+u{_MJ*nuJaoI>88S=wJBn-2Nq`)|Pg5|;22Qi&v zJ*>C5Qp3FcaK=XT)4E>&PPK!PW6i67s3S44wkqDW*)o*3*7(Epv995Ulc0_TCJyH4 zX;*Tt0)wP8f-3LLY6v?;}F*L}b z_g^oCzxU1sE>)mp=d+L$&p5^lDVx3)x|HL=gE>3@wUSVaB9Ury4=V+cR-H{`us;nN zT!#(VZja?)sekjTKSm=}@y3`V;7(cMuW-G9(5@7H@|%B0;8x+z(~}Cg&o7tmH~k#@ z71`ahj8e0nZ2x_0q#$V$z$@y9s*DCN?urh5ko0*cw)Vm)rTm~TbWt!{kA8gEknx+& zb6%dMvr-`g&|d$p-EEfN7%%n=_xnIcM(R9^4?Rg->-{9c`hPG%lnhtG!D-LPnR}TT z=ma$*`{wL;I$TgHr1r+gcpTb!X zpo#Ta0E>UJW=SA@o+;GrCW)#Coe}pI+TDb_lQaWvF24my1FCz&GSA26Eyz7#QO~~{ z%-RoB$$Qr^Y5PuoAP)z$#YlHFi4D&fiEo~OtNKsnm9))UPKzo&Ka*`R>vhLzSl^sv zj;PdMT0pN$%|G9tsd!!?4(k%G>ykfXfBe+!60L53nOiyAMg?4tOg(bEh)2Y8#eoJ= z4E7eP)wz%NZ3j^$(;XtD8!P$osIP z#FU`m1y46U)MV>^rMjj#qzCgME-_^fr%dZ;*b^23+vqQPy5AO)dL}^f^{W8)8L8Gb1CgV>-X22?`3M7+jk*X?U3dbY`6dh8SaiK3t(QDOU60z zq18|@+DWv#4ZZxz$=loxVUCIaB>fa)T`;WcbrOiY@~8UW3nH)7euVOaEQh^sVF;2?u}!-c$U~|4I3n z7DuQZRfGUdyq=x47EaIJ&^O3poidWghG8=U#FQU??DWp6FGGUa z`(G6tg{vXakb~3|=?kv~nY{V_C(k9Nf2dbaQA+C5;J(k-8scBGy4`R+YpQS$Z(4^sD6Kv{=1jkwi zuyVa}gO`qb2-p2uKEGymmxm~HV(Qlo5+`*i19_M0my=LflH0)CZrk8StexpxBu@#M zduQloj7l57n0*J=c$@~~@>!+bGwiDrI`>|TJAyyp`^o*bd*Y@m%@o{hj}>~)?Y38L zNN-$L7Wkmi)bf|0$C4o(m~(i``x037?8IteH6W!s7I2 z8;6vP0GKrwBEg&aw>N?#VPnY6n}W=DdW+)E!^Zc$9T6ArpN<^+5Ryf@0G&%bb&!#= z_{j--9^r6IdYW@MVEBxK#Y_B*BxEykk0p$B2bap@7n652?=vTZjSG3ni(t@<$i8c) zU0Af;TKDth5TlWAnZg`h(1)9jY^#`charBjIT+zU!jFtAEm1)bh>AQ1k-h8lv#058 z5R%RzA-o2f0 zr%_?DLVn>hJzVVR5bSO9pQ)`AubR^fEds&IE{{mca`yi-2i}%;R-vmL2vuQBPewQlDdyJJcOCfx_%x_TLhi?D0Lv)S=+T2ADJF>7bdKhM<=n|&1w~H@dPl3 zG9BTV#o$hJhDmzkTW2U`*f4(Cg5|5jy;9EUc^hp>#^VhD<`L^KD@?^p186sXgl)e| zZE2|7&qitg+mo?k#m9lnFirrxB>?|VzI(-NYb_aK;;J2oa`~hH@J!Qe2}UzSK%?!m z8E(R4fglH->G6+~8R+rAS}$@kY&vC&ARy1m6xK)x^t1r4x4L{bW>c^B+0f#MehzCC z1Uq*fM7F3#5Wij%49*)iovNc28LGNC!EH}NFEE1$L*d7AS+I=2^Hh07+~7X>wHqhJ zUUZxoA^Vm7O;g-%n)>DbaP zZU#P8zSR&qt?en#T4p5k?BNIO$Co}SBwJURLNY*_kJcipRqV-K?~P8#%dRH;RY^A4NYcI!*cnbT<+2?G$LL(w2T&i+9{53IZpVhZ=m zx1`~wtiF7{khg|54@Eo4LgPRrcAzjm1!vEAQDt4U&99lVclO65xb1$*Ioc^BV)1AF z>7i+Lh@agj&Ds!LP%Qo%*7{AyFEHbIT`zQw>)G}<#z|fURs+s{jg{lzMW1BvU$^&0 zHq~p5rQ|M0@Mjv`KKl+e*?9_Rw|5)pdzuWg58%AzgWNFMX!-W9ZBnNx{e`SiJE@5W zva?qVKI3WYLdG8Vw0M*Gbkv73$x~i7MtS_W$0Kc?-OAX08-kD}jf;xuQo#j*L`0@s z*elC)WB33R(u1Z0+{jRtN06STgWwI%ZQ~5|C^_}jeEewlAA_?@^k|SR8|BymSu0ZuF-0hg zw!g0R+@*_N7~E?M0vdCTgCHE6X2x%F(M;HD7gGlsI~EmzW685RFF{M`xBN8|K8pV& zvXt7ZB^)i%85@e<+wp;SgrU2g0_Eq`#ZKmYBwU0Wlc*}5It46zauExw&F|_JEgpO! ze)38AZrtA%ZD#$Gd%Dd2^T(Z4QpR>^|qy_o5ks0@$DIP0QfZ(s~>??47`Pu%x zQI0cA{)E-5-0slf_M>$d9uq}uo$Z`#zcw>rV_obE**i%&pMOse;j01sQa_uZ(=lI= zDZ0Of+Nx=}Oe76Zq5$KElUguY2ysK-StvJz`eQ8r++PbTVFth)KhSsxz!8J?I+2FV z@vZ&!w#$xrT=sWQX3Zj@$O~t$Knu`agfE1T*r%Z&=0U0<{|D%nu#T`A_f^3(!cf-& z!i6Kv9h+$l80H3?77udx{0bFtH~63oDPe6Q`s#3Ry}PO{_pvMK_jpEHiU`MlU&H*b z`~$AQY(Tp=OKL99KO8-V&Y}I>#n+wFZ62&6CA33@a(w;+m1(hSy$J?;(ZM{&6I8WPpcI1$2=U4DYp2;eeP0&p{PUegR9QY2f)Y_s z8*X0N3cjWatW4^*j|j6DB*dLKVq6SgaOzlW2z3c&VQ@&z-1FaJlCXlO`HS&^En}s< z`E4Lsxr}DXAYd``G4`vUh0J=h+IEF{s_u2g@cJt8fsG33A@626RQye{(hD&V2)Rti zaegypU0eR-Inn0lp`G1ZBmk2=@VBP6`NvJDfGK~eI4^=JdytQ3RfOS;ctvv0>VcLuGyT5zszL0P*Uux^oW$z`MBJ%6*C93*V z8u^Y~>*bOf?{Ml4^kPP8+I{0H%Eya^OhDy{3S)0noUBrnCG1;<7{OD<*}KuZixuaF zswiYWAW{icX-@VwXCBt1KxOPXQeQiZ0%{w7&Xl0elmf6^Gg~+5`Wjr!w^~J1ZJls_ zlcNRQ)=h2r+l{51tSk=G<+WZ1zV&Rg)?^Lo#Ww52mFNBw4HVT9>qh$PZLT%f%GxFZ ztTvj1MSiK-m~{{Y(~YG6tG zz8pL06U{k4*(^oANxJK7Fqj7|V7>N^%Ap|S!=muy3MI$_5Z7anG?YEC!Ilj=!E|&* zwePaWa|!pPMff4F#fhOVQD&UvGJJ7nH$N3wbpffKg0wyCic>nqCmHVe=WAN!2NfSUaau9}DbsjdsDjGaN0KN30aDc_GM% zz(w6atIol_}UHHhl_+s{-#iE>8E1HvWL%jiX>z=KERK)+1H4+P>#`60r6bHBbau z_Z%FLmTgi!on6ipIyM7*XXp=HtkU(d5k0{@$YPk?Ge-Mq@s>#;r3;%iA%Vcq9#|@2 zgpc>_kOJ#3N23P^5gqmOc?;gR*e>8BCb^_Hu+_8C?Ys}#X}O;cJ$}O%Efxh}Rr{vZ zs}BXG6;G*xBh&Oqv_jys(sLGo{CQe0{2w^Vo~aT7@;%_rk7K<66|w5`%+#E=)(Y^z z9B!ZZOrBN$a&_GG_IbTy?ncRRK^_1^{HBZOU@D%`!7-BgG60}tpRZ^yIOj(ntk<$F zbq=kkVi(p=xt#sip0bJEacTr3CH@5*5~`fz0r2CvR)(4 zpeREcU?rx*?Fqt6B9WHh?sch0uYJ%3yY^DiZ;bZppBcDv5(C(+H}!e^%V-%M_oA~WY~2PV+tZRyoi29rky3U` za2rFc{p!_P+!*l0Otl@vIE!|QX{(hfB7Ee73-1i|IHV1K7W+Pv;kyc@Y`=`fQ*Mmx zZs?0X6<*52!l<#K$9c=3^t5i3^qS|j^56`aQ_Op8%R`9yR2tWWPE=ubuXS#XlA2{( z+%76)?V2awxLN~hhrqdLYdCzlO!3U*Qt);QCi#aunwBx^=eRV>xR%>FXGyetf<#k(khG|K!`aU z2g0d=1<^Bv1-BZBH|~7>B|%sqYrGdO8he0t>*DAw6xWn= z(w;H)cva&@(13KHC{`diI^}JxX8`=Oz+ z<6(PI%M1V5YWjNg%ss#nOt$B$pFUva344kie2%h4H4Z2IZ!c0C1l#jYgzF}b#DYKsnL-5gSxN zED}LtUxkOKX4geW-EMSi0hp!e=JOg{rkNh}C;0NTtkeM{2B2n2wB`W%2J@rOiyV$wA;ke7Lu5r~~1dTEe^txVx z()U<5uxb}gy{Mn;H6?GsCpTJ2hhny=J9vv<*`{)q5qF0k^UOd8g1mWVa7Ju)nA;x3zlJZSopYF= zDXROXA5g@*AEaj?G76gAIC#A4m=IEPgMHC8Ve7j=;Ft5KiNV^-s+ZYof+pRMh zUIRO&CHO*Kj{*ZVfeqCXY;hI#INS&K4Qb9i#wfR}pwis273mZSlu;mf9GPC%DksyT z>6Sl`&2UO4-#Z15d7$qJUYs;vw$6}iG1;34r!-~i*xrc8F~XOh?hRKyGfd?G|EQ;Z zLq(1tz2)9ukUuxpTLG7meP77p`QGVm1FM&tO$>5zw9+ZDxe+t=x{4a2de^hflIJ>z-q!xhUm7g(b> zLNVq*PL)y~_5@r*`@@`U@v=^+O((QlRrmb| zm-C#a)$VBpl0xn8>TIJQnr{v~YYn!`5}l2cOZKk*&RumVvXZ$zI(Xp?yeIm~5$kuc z`RPh3$6`{=RnvyoEWr2otKgf90Uk3wBjDlC1KjhJ3TCnwS~JX#Qs}rbRerL?PY8uI zX~rm8@)i%Sc?K#s^BY6Xx%UDg@q+ZAMfm(;V8>D3icUjl%V1iR-7xZD5^xvcc=>2{ zj`@E&ym8$n|EkeLi!IlGaiASt2P0VHbuE0Yb`^@%bC6lS=sSM+Q-DK@SGO&O!IhWA z$hP63CAaZ3GG9IlwQLNaf6>PV5C?j)Dvx^8JSa+T|wsl#Ey(PTi{!R;QU$<_oOe3w>TFYr9vBn4f7aDXxMm5@cbN$?$JaQ?y z%9sn1)^%gfyEn?1@#4}PzykfA*V!xXjWPdAvXIFWP2@5%D3A(Q(;fP?(b4ua)zBw$ zUkEy9DJt#)KDZ|hnGG2>3A#^}k@3CW)jf-5$0g)H{mQ)n;R`7jH8&5E@k0eE#k zeQCLP%1l6Lp1DgRx|YAMhoZXlns8sVS6Gwwyn9;u@YHWJf=#>=?qCr0pJXh6MerXP z)(;%UxfbO3Kaf;uBpL^Vn1XOZ40Bc!7550@yQY;Bw(?90d){&OyAuRv9DN!qPLyF& z6aTF;l6c7H-@7sV*1%y7a^WF*onmke@@4%e2>_q>125zsofps&PyRMueb|JIKcL&( zpzt+?xH>YF{IPaALhIpVSduJL@;|6tsiZ`~jfNN;7Yd>V?V9Aq({OYQ_$nW#p4Yru z+gRC<6B=%>e5fN``UTOa$5et+ocrgYDBS(T!D&-nAwIicb}!f3xp$*dXXd`fYri98 zeKy`YkZj3U3B+<9ZgUDG=5D&+*`}KMyG?m~>p6VkR`>h2(52bsfJzBDIfjWNnJgsBvAE;Yz)J(Yx z&&;S~zV?wWYE2xuubKs&;fh74YwqJP zWpP8$FDH_7zrzpDei`_;gxc8_f!P1i+ws28C;C1xt`OnL89xJw8#%C7GYkkRex?zy zyQ9s2bUTM_^A^kdzF)Lt$p6Z4#kXaL{)vCAUZK9QS^M+!yp{oZmwbz@2&N>vjG+$G zUt+=N$!+e>yIGGLJ`g{Be<*VAPS{2v-H`9y{xg=QufIZ1=;7#&o#KobkhT!hwgdU{ zwOVTGj@!#yvO82nA_ivVgUh<33W+im4YdA9_s)&J%HdF}!{LD<|0C~9!lNvQ{g zXhvXJ2Bl`MwYQe9x8%>*n0?cp&{wNaD=)lHpBdLsPWb+Iaj)L?lbw?sIpy3UKqk3J zPLz$|Nqng|1M|^CP~jhS5q`<_Hl42mowdYW8_R3+|Cr-{QjuykhyC`FK%}{p3YAgn z6&=OVljx&?85;+_t84D;4Bs&5rrzNb?AAY%cb`wvFRYaD`ny-pSm%7+*t#={LjDvR zoN)hf5XLKE!`2w<5${%6-DLY~`S203XahomTRI0Dq=iOXqNQ10y97h%FE3-pM|gL6 zuK$J1cl=~Ed$ez!?s|ulXFzndJ0CeV>d-AXeyxo`kWFn(KZ-vJq7s4|o7|4*6UOa2; zGQCr&z>_()B`RruxykJN)tuy!3x7-Aeinxe_jg#qsxwZ&tF7ojXviA18<=db_xLAc z+IEl@?Hzr9SMhm5Q4D(X`PMT#7vHUA%D4e5k*`m8*OM_gzxyXXWW}aN$LjI1&Ewb$ zEgSlD5g$FZNA}2;)(DpHsJHL7E*#uF5?XtYAJ@=e_A`^bZf+m-g$m5$rBP+07c%83 zod#~{+l$B9vW86Z7Zl_z!o+R_x6%`T_2%c`!dNC;0mLeV2Es zxc;c81H#TGuiyDufEt0tWsrC5Mt`XF<2wS0}l| z3457(+dWhojW$6f7||+|W?+vt&e{c5$4(YA_?MwDDUhFhDq|)xa733E^8TAj3nd-9 zIPdh=(|mKk#gmZdvLS+;xanXmihRsR1PW!Tk_yy^MH#ptFm82t5d6i2(LX2;WEhX} zL-spp+pZ|9j6gBJ74koq}c46*4(L!>s#!sID zcQ)Tus~r*~;E0yBjVU%#j7rnw!}F zRO9tFHF0o4k=u1-8wjxE-hKzGP{}^My^sV$v#9$+|9O&A{ebB%QcuS;}5>zd@uHTbGTpIBt@&9@O z?34v8WuL*SSDcQStGtduB1c2py)DSe&Q>TZJJC~q$u$7+lqfEn)AHmFI@zuKp!S}E zN9rZTlyW`Ov~5hw6Xv%5C8d0y4gPuAvBPV|o!_iQWrNcB_q@!u1-VPsw>DP~PxRbq zLfrQhHKL#pRNP6U4P}=7VvW+MPClE7_G$6~L@fU~?*qAY3hW6c^4#ToPvj+W zkF!x3X8^zw7QP5;?$(;Yq{{vCL8x|^U9?g@*MhJY{C8PBZ{bGeW z7g)6+c77ZVdWPFY&@zsDL1s|d<%u#%oqLD;jS7JDgOJH5?Jy&K+?atwR z-gmW3U(C4h`$51om#&-?af*CW$s)=pE~mivnm#@`tKpC-*+`L3_L|h&m9$90Un|*f zIU=#o(}-_~!0WG$k8Xz@gmyYEZw0vtlZ9~5GV5#SY_Y+V)Eg)53e&}o!6K2huu*+G z!AVu2Pnyj(mB#DA!`rjlkc{QYxTzHviiw`H5OVZq{^u=L7&Ym0rAdSrLH;xtJgqz@ zG2VKkL)lw#i@4zy8qsM2k(3iCgG_X(L`FhWm~oT9_sUo4ZEGuXt1y)sUDKK|!QcXg~uP=oW5uhNse>7n7$OtP=wsH&49#X{JQ7v=Wm>C_1E$Itg28*J)JNm zk3-kzzxpA*!{Kmz600P$Fu)CctFX6+P3*fj z*eJIUj+Wn4e%en*EV%F{JJ&3K-(mX0s_Uy5)-wFnZ8FsM-L{1_E1gIbzoukQc>2O1 z_g`;0O=bYE(aqZdp`R!B%4@)X>2 zwq)OL%Kt!ko21l>u`o9Vdj!eul2M#5%VGToX|pJTI~x!wi!2~@cyPz;>lP)b8Rfdh zlJv2|F>`3!QO9_n)}NwH)yC&7URR=)F;y9gD95ldrgnM9Z(mjL?3Ptb5yG8%@cIf^ z?~zZlxXHtKL51`ZRdg)Ld{Z@kHt=jzAzg`k9(t=pl!2Q)%SCw4P0NxuAkyzqgsQan z(x>IpGbPLCL3}h#=>tMy!9Jskie(3@Wt--KEhhL8E~UP^Y@eM^hQx@8j12{WNlOcCsB}rUNDo9xNsWj2$h8OTHvSk1Njo7SOZT{~ z!>X^w#0&c4EG-~b242_Wt?r8?$#OP|e&hvv@#wS8f@HWGF%B>Jvl8v&%8Ii3Nu_^i z(DkB1xgvrf!D}{L+|%;PHp2hX!nh~(;Ybq^*#n3{r{$>ueYwje?Dx)cb`mSuUJI~b zZ@!f=aBr(hzA$M0F8>7&RokHzpn49Z}55VX&>i zS^q9Gl3bU!YB<~6Ss9%UiN1RLFhYSY7TNItc_Z3wK;O**c+e#*5P+uE-^8fsD>qFh zZjphasaV5wWNxHae)n5qs}OezaX0OH2Wx)E&iiUna8wOZyXH5Dc8zhRU2FqsS$X%+ zm-FFgPC`Q{N7E?(_NXKO3~ozKAe3&OPnJC#E*;CZ6PW%zCL-J7zq{Q{LUuPyLYkS= z(1_Bvca?$&BsZ$Vj<{KxM!FJlhYH|R&gd>mz6t-fO=SyCBOzB_o_eco*|=i-)D}!i zQ^02RkW`P3m-vHDmW%hBcsZaYWlMlEr9&{U`3)EM%f{a_G@Vl8_44na@78t5mKcwd zZHTRnXLcGeGjDl%v8i=X#9HLp@>_lZ9n*3yfLNRZtVd7JN>c;?I1hpKT2`-u^3+1o z;*ZY*xRj1D%ptG6Vz$TK0s|lp)YBQHqP~-7E98wOsH0YKu2rTZnV`R6>dYf)p?Gof zG;7MU68L63bzcY zmRHkVd!3kKpMO^^dw2HW7AZCrOyAe37rU#or+m7TR4P)+?h)a#c=Lpr%3T6k#4;q=*pG(J6KDvZsruaj|!z0SYutU^Jr7pt+PQG zbSPyGzUSSQq_M(u8@N&Xio2Az6=Lo(k+6_%`z^PLLcLkN9NeTGAItqL_94UW;EZGc zps0@N15*thPF`>!;GsDb6{f$q?-TA_nx+mD;SzWQ?VyMpMcDR+N|ARz{w$6Ox-Vdp zTdUq6o0CuoZm^hiPHUBXgr;1KU+sz`zNT7e-)B`(fV$EeX8^iM?+Gv6wrB`F`(%sV zKji7UpN1uUSg;=>P(?L00@F^DPN=s<5mOg7CQp{K*D+q&(4c6cC$H;i%!jgwSH9D} zWBS^Iex~b*}^^9gyP6O`A%hWu( z8}4o_snRp>YF}sX5Ck^p?S!y_pM-?RWHWoBmki-~-RYS$m-wCknD+!YSh~^4R;t9> za&m|M9zoPWHGIb#I@#xH^ftrgF8$z>h%RZl^qPC;h*s;ECSjMZHyA&yueP)d4i1k; zu0M-&O)dv@XMGdz?;Ja9xhHE<@|ATT2_|=W0l4+&O|PV_{oIScv++46cfGfIX=nCf-P1I7sR2c zTp~h@b~UQ3T{}mMo;1)AI~cMW>2?`=sA7v2-rceRSD3P?I#r8gGlmPEvQH*`T0Xk0l(XE+cJm>T zBZI$*Qjr3uQ;jeSm{#QUIE#VW({qcQdp3Y&mHUlcLZEZ%hXtP1#i&cL8K0@k8;4}* zJ3}IB+YjbrC$^C{Zz-bL$gSEipbNPsgT7H8eo~Dbo0v~;b@?SJ?$~q)V^k-aJ%i_A zF5fQ=ppe#_AvFeruas6@2g2cAhOzE{PL=p$uFAO(^4l!?VY^Rfl5oR-zbVn~H(h&< z=Bwt3dKMakBi%J@2$2(*VMzXbR}IsYhS5nuMXrT@OPX=GW)18c&+B~h$S}5eJYzMt zHBt`DyHpQAqH_xOvKvb_PSS!@wuw;i1v?L0ZyyPDw&&sNgQoED5u>*kt!DQa%szBf0If8TQ#_@2LW)c(f2 zXR2RTl$WcI$YQ~?H{UZ~zW>p@(;aN}*go*ha3Yr!`xq8*%$-Usa+tBO{vR{aK= zVUt{Zpf3=_V^B&g4~i89H|FS1uM5OKAVhAU^rCv+IMu!Kt;|?7{-bk>?)xW1MTlg7 zyM8F*Ooo75lGQs>Lu#M076~n*iyfb8J8$enZF*lZZL%3x(-fVqdccEH$i!W4aE)G+ z`(&dU-}Dr(wE52BT;`sg6CZ@DehWX9Xoe0{O=;8pv}l^y6dJ2=;cl+QUXk z7lf(kwuf%8`Qv}_Q7XD%p@;TEKZ%^weMgT}k7w68;VlSY438xKjO;EoI&xVArqMD9(l5pQxBPBSnj%fBSv3 z_VX8-KaUjoCMWhtclqi@JrCK{tSG$xnR)u7pe+NxfVswJ)aeiB8EG1qZv?BJ{4^2n z|FV1Ab#9Wlb2*#vSE2i5vWm?wb9$x&lWUISLVcJ1e8V{Di$rhs90D&dM2qR_?WynY z#y$9o-k(NJ3ytsmdyr7@zli&|P_kLozxdm7kG8w_|7?t-)3u^4FN;d6%h>&_{EiG( zd-ne&BPh0cR}1>^!w=3^CalvH_SLRlLJmyGd{J3e?+@3E4&)Ye4i&sO<^@FAb{aiB z9(esYij(ZAeCyJ;`$7gUX`Y*jSzX$HQCX^?1Yz5sys zzIyOjFIiP0jlothQQD}rp0)HAA=@1=pG-b@uuiRGSYEX4oa!W;1S@A{Ib1^&i*z@Q zr{mA*lIQx>XAAl}`T zgR|gLm}4<&Tq1~dE-F-<&|#~sSHA1v>NC=qtbj_2Uk4v)e}CckcT0H@6Z+(z>xD{p z#4d`=ZbaUz?vdHOjm~dymf?Lh0_qi3Ms)b!L27bx41zDar>>lD&CakddoPP%Ln@!!HWh=-0kmF!l(*=ugKxVmEx~oyQ_k;C66*Yu0!3}WXe4`O z0X*GxF4>oOGQ8xvjPp2ot8npzRZ6o1BP0>mhqRPNXRizQA7drDwKiQ~Z4$igp@O{! zdVfxGZy;cPi?^*<0sS#zTm9XS<2)pxa0~f!W=vK;0bd0Eu0ek}Es z&i!RDSH&mdzxUt9b)|8gy?do9rc$roh{E`CG__;bUt3;$nbit$M9r7&j=|Wp^P8Pl zZ=L3I-Ez432X}Pw{SeCMpP{17*RzOfqLJ9|wM#EH$UrYV`MhuK8`(Esk8YSfLfF1K zW44u}Eov-<1{~9uFbcC48_a&V^|xo?I=#|)s*}#>=k+_T9?I}0DJN7QH?`2`_%_v6 z_a9e!2LX#7R>D8JB3<4j>=Z?=>d3QJo-()k(Vnayi9J=XzKXMX*~#jv#R{F)Ysc)L zK(MDPpD@@j$ABp=tXyv>a~Qp!2%X;xx|V4-xY#ZV`lV%5d2_)H_BJGRB};;>&L#5g z@Qv-3ZHw%yS%rk}yvBTnLq2NLVxO+9$fmZgRaw>9rMWVb@oTbi)o=K6rPdU*#Z)Kxsh`@a(_FLSbg;h_Ripg>_UqX z?Ya$K)=u_g?|L?=LxF-ttgI~q{RelV%9A1*xfaExGnQ}Us#O9=&&4aX79C|z^xTuw zz#!e6!qksQF7W9N3wrPFrmrl+PgWU=2#zMTAG)UclHCAp&o;gYwq+k(VoeMGZlsL5 zJSiEnO*ztIQGQN7OYD~3tzNraqr(-pjOjTp_ z){v;mTDDzNF2>g+#*!Q<9^Mw`6{w);!F8Dw5xq}^Y8qLmxt)^dcb19$DXdr$`VW)TKOTSZFk_wg@T5xy3Ve-qhOsql1oRg# zoHnE?Nq%Fv9r>^uAdtrQWKd`rI)tSH0%KR(J9%(hmzxe`sQE&Fr-(={)5KUiVlZ*Q zQHoh0OuvF57Qnbx&kM67U(boVwS=&3h5+{(eB}4ig2hE&7cG@)!BV@d+wrUbv3|eQ z-{IamY!|O>q;NW`%+O=yxjzRMRPK|W^J|=$d+#)xbHm1fhMrFnGt?*>yPE$PnN|`Ld}r&>d&Bg%PmI7^OiG$SG7;Hx(O7+h3PAMQyJxAN zh_C%7JM-tX7cd;WIV$v>ft5NVvaJZpnw;M5RX6RdL#$|sk-5P_hO(I=VW@2#%O25& z5}M*3d7WYiTu!MudvThe2Zie34N^{C>xj~eaH3-!V6FKXK$$4Z&2zka&0TT561$(3 zf+;`52IZ9-tBEKuSaAooI0T4YS9>&S_+dx?M4Z7DB?u3Re}02WaIH#6FVX%(VA%MB zbFL5ajFdQt>Ob3%9G+Jljj0DD39;E-e#(fV=B`9SlC6-jR5p;<&0MSDT@z*~GO#=7 zIrHuBPJFJn__5$_xuefSbY4TO`7xs_+rA7YZ43YS^IHinAVL~wo|^qmEgt+m8fbvM z4A+(Auw#(cI80nj0oV^s#cu5q@k>#%txl^NHbF*4Q7O-Kynz|O{6olSpCxXfn10XU z)pqPlcU$_?ot&qGihowK2&j&-$LcPU{&_io=eLo;3$+gzWKyapVbjl(ix0)y+_2zQ zTRo)MdTZrG+C3tqZw%P`!o#j?8e}c?ui(G*6RRK>X6=iX41*60q=o!XK4(_W1ANxb zNLUSBy0!E$(D~E>FUZEP?kYdc7HfC!(kZ`FdVN}ltS?lW4Lr)jZaOSd#I-3rm0fiB zh0rW&wJYdGcUQ{SX z2=eHDck?=gfA(FaA{WQxE0LG_$`ApHxb-oAVc=kILP^>CFE(S=Sk4lqkoiy{N?X}u zT(Q-jvb>5bFZU;6%7){bSTzr6W5fIcO&PEXXKeUk{`2fDpArK<8dNMC^P%28T$xlD zjuyww@)!|2{v!U_GBHEiYSYk$(&vt_UF>= zB;sF8sR`)wSZ}e=9(2{&ErURo-IBdcp z_080ZqL5?wX(p2l(0&UWBI2J*wO?iPe@%%FL;214Bwf_uR(0v<1>7iNe~6GtjBu9Z zsx%vz>Tsd{6YQ)rM2n7-bKVxgkW0An5&N-Q;(!9Gv1_L7kM8oM(~VrnuFl&Pcr`+aEaF*x-(n1J5o@r)fR;@bo z6|al*pd-}8m;~cg|yOwN5=)y9p7OT}qxJBH*%_(m%fiyuu}P`-4G2 za`Pu;ne4`3t&FPMS~kV_q%THQ*-rH|0*2U6#+t#hx0O4crpWM*$lCpoUwLMT%EmZ8 zSs+cn5`Is=4|0dd8vC}x*6B(_i>-(sft$MgeeS3BqBoDbu6*| z!yyNX@IgjN{y-w-y}OaR_<*=op{d8tyFsn#Z##uxF}MXEkIP9MWuG&Gs_bA zbV^q?Ysyu;&clx|aKPyW2g@qV4fI$pyw@Ial>K~ChQoR0hRDBt-U=%`p?R)g5%|8> zGi~hkc4~5(05X?B`bTf{_j8L^LTTSX5DG{O7ePNP*g#+?30=EKO|gMXAl7#p8=;_~ zOon(m^OXZiBCGa|i3jcKks`KuX+ReJH(~!6t78bxCBe-}cx_~-Uq%z%f%;Z`-2nYU z^r=@OA23sjUYdpaXxBT?det;lc0 z|MX$c^OIJpnQt)B5X=6ba+{r_T3&RBQ4tdc3}TI zG5NjT1^@`AHSY$Mt{=3jKohX)!jJET3|7R@eWuQDms2GI46)vhT1YV*w6*iZif_Z| zH~M$>OTZ2d-qA!7(ZdNT@|Wx`Yc00@GSOV;?Tuzm?@+^`|mV_ z_WQkB-1FJJ+0;;3sTRQ@uCo{|5ZUUEY%8Bcmyr!_oj}*GgNWZgp80tM~ z5zW{ZwlHS8!TIF#VA>fONG|?ocL#L`18;IQCw0cvcFf-HSm7x3Hu)ooZgS<{mlOWM z4VxYF)PJdmnAgiI5VpCyU6;C^+EhQh`V>kt&zu9p-PrH@%4B!#DL1e1>9qW z1x*CDOW$$*P^+F;2AJ1kiRJc+PgQwF6;YuH#31)2y~~33>8*s%w96iTMA|zMaQdi3 zuH;uY>;2W)!g=P$iheYtRaOE7!f);~@i(Pd;(2JDmxJ>uc9n-LpEi59-N+MB> zuykI>cx=8U;I1kzOaB@?4Satf_H?ASQ4f#XzAOBiHyT96;OmXnAhzl#987mK6IhI4aXN* zU}E4Bb(Bsl$t`(({9BqXcxFZ4Zm-nDvVD559F)Xj`?%4H>`7Xa1hH6%Y{SvXF?*%P zBA;f{v?up-QEYK;Pc`Zs5VcWGZU*e5eC=J@gkqYz-6IsMFFUVc6M*F3`~(iV_Y#@v z9z%{JVFuYK6K&b$?=ZkhC?EOsH3^w60LjR)>jPHDW(&rL+ zOw14{HxnhVRrZ7^LL;$Pc^hIOOtV)RH;ini_#trE9OFAnS^UE<;=xLB%H*_rrPhp} z{Xe&R?LC(F4>K9u__*?%f8P<9J>&kzX4e{Y7349!{GRyUH)HXM?k{HN_-j{yVp>de z$X~FF<=>WY7c<6WD}r{@HBPhNJL8G(Ej2eV3`bFr@Lil06c|D5i!%?z>;T{#sbMWUlyi9Ayr2%~pdvau`hp==8L2R(frl^Ulrk49J)E8Ff=X0IN*72cZ} zED+Y~bk}Z-vxOKmZ5%W;PJ+#Nr=T(D5zN0zN{f&^vb2(?%+Xcze-?};NO{at%g6+5 z^0=fNM!xu7tRBv5QMpTwyC?YfzR4Em=w6thd5c&mhy>-b?DDSi;$eV{HS*&d`{?EY z!R4q<8Qyow_3j&1o`wUgEppgT`z@Po9ZXnJl(Nq&r?5Ss(ZBG7&E8x3yR@phMwN9+mX%@ylb16UlUB2QHbV%y%TwF^7K%x3`B+hTjqyNqvr2uV{m6PSUzX3sWEU*0Ntu^mv$@TS3vh*6!K#&KcX{P_r z0_<(Jl{SA~o%$r|Zf<*neyfw{Qey%p*9(UKYje>U?&*_}szr3Olu1}BV z8*eh}v#)r@QdF>99ffT|oY?0BCXlXcUm!X{G|i%r;L<#H=4^U#IZC;j?SPy%S$;Tq#(3u!!!GlW zlga|I%Jq?^$Dgj<=4@9(9em2KZ~xnjwYz;VEl`VSN`KYlG<)o{&X|#ymE;{8%yVmN zs*GaL73AjAjQYh!ZDD^N^^eJt>JlpVp4((3%wq7fU`b<~IvpTeL?vx(rWftdET){M zui)>G&idXtW5F4C#|>V;J>^?V5f!{%xqfR^LA5R1y38?&XKVl@A)@GPSaNMU&=wKA zxY+wy{P-=b{slh(MJ?r=O3dgGeb7`n{&tqO*m;I1HaZ99-OS7i<4zp#qDf<$TyU;*qn@bp9L|nNp&coEP&@M`yilPv#z zwd$QeQN`)O^0$sG`~U?&Q$926q1tEnAhf;F8m?LDNt0<&zvL|)S32J09+P`tHXs}H z(RmCk;*JM6*||kN#@RlV&F&rI z-~X&mu_QedpwBhBt=cCz!*EKr%Lx-szkWk;ak*T&&}kANONTnX%5rjr8qFTgD-bhl z+kw(YObLxw|AN1DmHxD{-fe1RA-xVzInj95Z0i+Cjrn&+Wz4m8L$P@!hUc_zjbbF% zr3`4U+?dDE2r4^lBQ)^PLUtdj{_UnpdHegr$6#PdpetT) z6QC;z_XTBlo&#aAGlk-jdw4VWK=JFqXqA&()xY__^enUdE&Mx*`HU(smpTs-4dD{S zblbu_SQ;_YE>^9+lmRTW1&65<({0=9qf3oBreP=6Vv%jr-vu2zN*{MKd#?Z>U~W-z zO**dW*%*yv7V<2=44lm|TtFk89?{(pSO7|OOwAHcf4H5`S%3e<4<9#|YB>EY~RgbCc1g9$BlW{lo-rv^D z;B7M8CdG^gocW6uUc%Et|5MxxkKF#~3cl1yFby^U{%Ai77w1$4Ke7+m5%0~aOn#r0 z_YS6wvwl&0T>HD3T+_{^rbVnw(tnm~dznciuZATr{rftyzb7a3NN zyONpeYeB>ZBQn+~aH_Gz|IHPU(kx^av~R0T#$PXOp51Y8m)^b73GD4wd=tvfKY^ke zIhUzL4ILrR4b+q8K@m3IU$*)`zv8PyvVz;BYwap81`^_BKL@q4sW9&4$WK9p9Osa`Wb23_4LGXDfY~AAu(@y=Gd_C~jBeIj)~hp=o$|HI$$QzC$({(0Vi>G#tyb7Rq_F7o+)5+T zusFs?yIp6;z2WV}6dNf5*YA`Z8@)?TrHb7$4FPRO58U&*=>KJae!5G}b(OIB46rkJ z*2%p7+jF${%wARa^16MmX)O=koc+N1LfaBSaioGdy8$;@u1zNDB?zM(O^QTM@{vl@ z(OKg+weQ~qxhlx^{;2+qd6br9z-pjR#YfYl3(4d)AG$FVR+*fPXg;qhs4m9fU#E?9P&Ugww^cAdA!sOj zF(f2b1Qcs6CS3~gU2u}=wh7(Y>5ZP&zH`Uc%%<0g$F21R|9R!qy0w{2gRt*W#Azhu zKolbPLP*i?^Me&@)^Wm^vUWf~nOPYkd=#*K7IVB?gW#K4R8S8&|G}iUn0@!;1NQgg zvKjR_;lBLMc7?~!2@Z$cye8A=Qt9UXCJjEK0LDTHn7urOmF>KfbM`&rff!(uf0+DNsgGpQs}0)#~y6Eor=_Q=c8f zEJI);2?z@BFEs1axOcKXc&?>BQafI4%CbnS-qz{C!~F>8dQd02OVZpLVO{^&YlzLZ zd*|-j*m%v|L-M1JVk!WsJvo_zZzh!_#xwh+d1=6)eS`3bB1Z%r&8WE>r}IdV`b}%Y z@zV!I#51CKPT4EI`ma|$?*wupTu;t#G_eAIx2xz`Hpe3E_YtDNxqY|8d$pjFlM^aE zkqZ{w9^>|LqZsuEAvJc*z+C>yfnJ0v#_Z&eNU5X8J)%n&d432@|ipAD)?_rL6*VI;K| zGG=S=f8ws?d2qB(1_Qi&c2%A&LweKoTgy(FU2k+^T#Uc*O?BveNA&m#-kzSC3j&CE zV{c=_UDuh2QM{=;^68^?@LKhp?R6EMycQ-Vwy0a_jm6-f$GlT3i_$hi48wkyw zI?WQ9wGLeBY5xu7Mq#KLFi+e)!3NK|TZ=S#;bw3@mUo1$cU6cGx}Y73oHzLbUNcQxmG4*;)5u)rwV(Eoc?d3pQw96Z@ z7JY$eA3q7jGlz{Jb_^BEAt|om@IQHJVdU3mFn+lzeN&BSt7mO$)hgXny8O#=aeP@O z7|R%&Z0!oac6{iPAg&9eb3cmqM^eA@Q-D3ZT~KryJxRRtp4b=D?S>8^_~cbR)`(e9`GMCJs}oW{IJ;v$K&Wt5l$00^R987`ju4Xf`b>XS;Y8 zqmt}jr~O#b%S+t&%=hE<#Up;zDxTFXK*{5n@fsVb991j+oPVxI&>( z9nHtPEKH|-(lp~`dNBZFG|!YH{xIAD<21{(!Y5*ZPzT<9j7Z@f4)xyUjBeGI=z;X& z@}>m(j@QA&Cl^0J@5%>!fCDhDMui?fVy&y!^o2e!Eu6o#+DG(w9;r>oPq4h3&>S@h zJq9=+D(lQQBX^EMLv*G6s8|Mv{(f%RoC%bW%}Q6#v$J6aJCnvS|LWeX&zT&v>pi

    %5~x)r*<#(VvOXAjQiT* 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 literal 0 HcmV?d00001 diff --git a/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-bicubic-001.svg b/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-bicubic-001.svg new file mode 100644 index 00000000000..8c3c219f182 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-bicubic-001.svg @@ -0,0 +1,223 @@ + + + Mesh gradient: Coons vs. Bicubic. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-complex-001-ref.png b/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-complex-001-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..4ce893b827cabc5e4627060f3e5334c1b829bd30 GIT binary patch literal 31532 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 literal 0 HcmV?d00001 diff --git a/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-complex-001.svg b/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-complex-001.svg new file mode 100644 index 00000000000..625fae59ea5 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/pservers/reftests/meshgradient-complex-001.svg @@ -0,0 +1,89 @@ + + + Mesh gradient: Patch paint order. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/svg/shapes/animatedPoints-non-animated.html b/tests/wpt/web-platform-tests/svg/shapes/animatedPoints-non-animated.html new file mode 100644 index 00000000000..5c175890860 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/shapes/animatedPoints-non-animated.html @@ -0,0 +1,51 @@ + + + + +animatedPoints non-animated + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/tools/serve/serve.py b/tests/wpt/web-platform-tests/tools/serve/serve.py index 104701caf85..c4afc691d34 100644 --- a/tests/wpt/web-platform-tests/tools/serve/serve.py +++ b/tests/wpt/web-platform-tests/tools/serve/serve.py @@ -22,7 +22,6 @@ from localpaths import repo_root from six.moves import reload_module from manifest.sourcefile import read_script_metadata, js_meta_re, parse_variants -from mozlog.structuredlog import StructuredLogger from wptserve import server as wptserve, handlers from wptserve import stash from wptserve import config @@ -630,14 +629,22 @@ class WebSocketDaemon(object): self.server = None +def release_mozlog_lock(): + try: + from mozlog.structuredlog import StructuredLogger + try: + StructuredLogger._lock.release() + except threading.ThreadError: + pass + except ImportError: + pass + + def start_ws_server(host, port, paths, routes, bind_address, config, **kwargs): # Ensure that when we start this in a new process we have the global lock # in the logging module unlocked reload_module(logging) - try: - StructuredLogger._lock.release() - except threading.ThreadError: - pass + release_mozlog_lock() return WebSocketDaemon(host, str(port), repo_root, @@ -651,10 +658,7 @@ def start_wss_server(host, port, paths, routes, bind_address, config, **kwargs): # Ensure that when we start this in a new process we have the global lock # in the logging module unlocked reload_module(logging) - try: - StructuredLogger._lock.release() - except threading.ThreadError: - pass + release_mozlog_lock() return WebSocketDaemon(host, str(port), repo_root, diff --git a/tests/wpt/web-platform-tests/tools/wpt/run.py b/tests/wpt/web-platform-tests/tools/wpt/run.py index 21dc7c8e977..7e8827b1069 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/run.py +++ b/tests/wpt/web-platform-tests/tools/wpt/run.py @@ -221,6 +221,9 @@ Consider installing certutil via your OS package manager or directly.""") channel=kwargs["browser_channel"]) kwargs["prefs_root"] = prefs_root + # Allow WebRTC tests to call getUserMedia. + kwargs["extra_prefs"].append("media.navigator.streams.fake=true") + class Fennec(BrowserSetup): name = "fennec" @@ -255,6 +258,9 @@ class Chrome(BrowserSetup): logger.info("Automatically turning on experimental features for Chrome Dev") kwargs["binary_args"].append("--enable-experimental-web-platform-features") + # Allow WebRTC tests to call getUserMedia. + kwargs["binary_args"] += ["--use-fake-ui-for-media-stream", "--use-fake-device-for-media-stream"] + class ChromeAndroid(BrowserSetup): name = "chrome_android" diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py index 04f2ce84a41..9f7ebfa2ca5 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py @@ -220,13 +220,15 @@ class FirefoxBrowser(Browser): preferences = self.load_prefs() self.profile = FirefoxProfile(preferences=preferences) - self.profile.set_preferences({"marionette.port": self.marionette_port, - "dom.disable_open_during_load": False, - "network.dns.localDomains": ",".join(self.config.domains_set), - "network.proxy.type": 0, - "places.history.enabled": False, - "dom.send_after_paint_to_content": True, - "network.preload": True}) + self.profile.set_preferences({ + "marionette.port": self.marionette_port, + "network.dns.localDomains": ",".join(self.config.domains_set), + + # TODO: Remove preferences once Firefox 64 is stable (Bug 905404) + "network.proxy.type": 0, + "places.history.enabled": False, + "network.preload": True, + }) if self.e10s: self.profile.set_preferences({"browser.tabs.remote.autostart": True}) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/new_session/platform_name.py b/tests/wpt/web-platform-tests/webdriver/tests/new_session/platform_name.py index 0504f04259d..54fe4743bed 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/new_session/platform_name.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/new_session/platform_name.py @@ -4,7 +4,7 @@ from tests.support import platform_name from tests.support.asserts import assert_success -@pytest.mark.skip_if(platform_name is None, reason="Unsupported platform {}".format(platform_name)) +@pytest.mark.skipif(platform_name is None, reason="Unsupported platform {}".format(platform_name)) def test_corresponds_to_local_system(new_session, add_browser_capabilities): response, _ = new_session({"capabilities": {"alwaysMatch": add_browser_capabilities({})}}) value = assert_success(response) diff --git a/tests/wpt/web-platform-tests/webrtc/RTCConfiguration-iceServers.html b/tests/wpt/web-platform-tests/webrtc/RTCConfiguration-iceServers.html index 6069c25af4a..3f5c367d3ad 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCConfiguration-iceServers.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCConfiguration-iceServers.html @@ -53,6 +53,10 @@ assert_equals(pc.getConfiguration().iceServers, undefined); }, 'new RTCPeerConnection() should have default configuration.iceServers of undefined'); + config_test(makePc => { + makePc({}); + }, '{} should succeed'); + config_test(makePc => { assert_throws(new TypeError(), () => makePc({ iceServers: null })); @@ -126,7 +130,7 @@ }, `with 2 stun servers should succeed`); config_test(makePc => { - const pc = new RTCPeerConnection({ iceServers: [{ + const pc = makePc({ iceServers: [{ urls: 'turn:turn.example.org', username: 'user', credential: 'cred' @@ -281,35 +285,49 @@ transport-ext = 1*unreserved */ config_test(makePc => { - assert_throws('SyntaxError', () => + assert_throws(new SyntaxError(), () => + makePc({ iceServers: [{ + urls: '' + }] })); + }, 'with "" url should throw SyntaxError'); + + config_test(makePc => { + assert_throws(new SyntaxError(), () => + makePc({ iceServers: [{ + urls: ['stun:stun1.example.net', ''] + }] })); + }, 'with ["stun:stun1.example.net", ""] url should throw SyntaxError'); + + config_test(makePc => { + assert_throws(new SyntaxError(), () => makePc({ iceServers: [{ urls: 'relative-url' }] })); }, 'with relative url should throw SyntaxError'); config_test(makePc => { - assert_throws('SyntaxError', () => + assert_throws(new SyntaxError(), () => makePc({ iceServers: [{ urls: 'http://example.com' }] })); }, 'with http url should throw SyntaxError'); config_test(makePc => { - assert_throws('SyntaxError', () => + assert_throws(new SyntaxError(), () => makePc({ iceServers: [{ urls: 'turn://example.org/foo?x=y' }] })); }, 'with invalid turn url should throw SyntaxError'); config_test(makePc => { - assert_throws('SyntaxError', () => + assert_throws(new SyntaxError(), () => makePc({ iceServers: [{ urls: 'stun://example.org/foo?x=y' }] })); }, 'with invalid stun url should throw SyntaxError'); config_test(makePc => { - assert_throws('SyntaxError', () => + assert_throws(new SyntaxError(), () => makePc({ iceServers: [{ urls: [] }] })); @@ -471,52 +489,6 @@ }, 'with stun server, credentialType password, and RTCOAuthCredential credential should succeed'); - // credential type validation is ignored when urls is empty and there is no scheme name - config_test(makePc => { - const pc = makePc({ iceServers: [{ - urls: [], - credentialType: 'oauth', - username: 'user', - credential: 'cred' - }] }); - - const { iceServers } = pc.getConfiguration(); - assert_equals(iceServers.length, 1); - const server = iceServers[0]; - - assert_array_equals(server.urls, []); - assert_equals(server.credentialType, 'oauth'); - assert_equals(server.username, 'user'); - assert_equals(server.credential, 'cred'); - - }, 'with empty urls list, credentialType oauth, and string credential should succeed'); - - // credential type validation is ignored when urls is empty and there is no scheme name - config_test(makePc => { - const pc = makePc({ iceServers: [{ - urls: [], - credentialType: 'password', - username: 'user', - credential: { - macKey: '', - accessToken: '' - } - }] }); - - const { iceServers } = pc.getConfiguration(); - assert_equals(iceServers.length, 1); - - const server = iceServers[0]; - assert_array_equals(server.urls, []); - assert_equals(server.credentialType, 'password'); - assert_equals(server.username, 'user'); - - const { credential } = server; - assert_equals(credential.macKey, ''); - assert_equals(credential.accessToken, ''); - - }, 'with empty urls list, credentialType password, and RTCOAuthCredential credential should succeed'); - /* Tested 4.3.2. To set a configuration diff --git a/tests/wpt/web-platform-tests/x-frame-options/multiple.sub.html b/tests/wpt/web-platform-tests/x-frame-options/multiple.sub.html index f7a28e40ee2..717e9fd25c5 100644 --- a/tests/wpt/web-platform-tests/x-frame-options/multiple.sub.html +++ b/tests/wpt/web-platform-tests/x-frame-options/multiple.sub.html @@ -49,29 +49,27 @@ var i = document.createElement('iframe'); i.src = "./support/xfo.py?value=INVALID&value2=SAMEORIGIN"; - assert_no_message_from(i, t); - - i.onload = t.step_func_done(_ => { - assert_equals(i.contentDocument, null); - i.remove(); - }); + wait_for_message_from(i, t) + .then(t.step_func_done(e => { + assert_equals(e.data, "Loaded"); + i.remove(); + })); document.body.appendChild(i); - }, "`XFO: INVALID; XFO: SAMEORIGIN` blocks same-origin framing."); + }, "`XFO: INVALID; XFO: SAMEORIGIN` allows same-origin framing."); async_test(t => { var i = document.createElement('iframe'); i.src = "./support/xfo.py?value=SAMEORIGIN&value2=INVALID"; - assert_no_message_from(i, t); - - i.onload = t.step_func_done(_ => { - assert_equals(i.contentDocument, null); - i.remove(); - }); + wait_for_message_from(i, t) + .then(t.step_func_done(e => { + assert_equals(e.data, "Loaded"); + i.remove(); + })); document.body.appendChild(i); - }, "`XFO: SAMEORIGIN; XFO: INVALID` blocks same-origin framing."); + }, "`XFO: SAMEORIGIN; XFO: INVALID` allows same-origin framing."); async_test(t => { var i = document.createElement('iframe'); diff --git a/tests/wpt/web-platform-tests/xhr/getallresponseheaders.htm b/tests/wpt/web-platform-tests/xhr/getallresponseheaders.htm index 7b54e9e16f8..e5747331a8c 100644 --- a/tests/wpt/web-platform-tests/xhr/getallresponseheaders.htm +++ b/tests/wpt/web-platform-tests/xhr/getallresponseheaders.htm @@ -30,4 +30,14 @@ test(() => { client.send() assert_equals(client.getAllResponseHeaders(), "content-length: 0\r\n") }) + +async_test(t => { + const client = new XMLHttpRequest(); + client.onload = t.step_func_done(() => { + assert_equals(client.getAllResponseHeaders(), "www-authenticate: 1, 2, 3, 4\r\n"); + }); + client.onerror = t.unreached_func("unexpected error"); + client.open("GET", "resources/headers-www-authenticate.asis"); + client.send(); +}); diff --git a/tests/wpt/web-platform-tests/xhr/getresponseheader.any.js b/tests/wpt/web-platform-tests/xhr/getresponseheader.any.js new file mode 100644 index 00000000000..4ff791aeb16 --- /dev/null +++ b/tests/wpt/web-platform-tests/xhr/getresponseheader.any.js @@ -0,0 +1,19 @@ +async_test(t => { + const client = new XMLHttpRequest(); + client.onload = t.step_func_done(() => { + assert_equals(client.getResponseHeader("foo-test"), "1, 2, 3"); + }); + client.onerror = t.unreached_func("unexpected error"); + client.open("GET", "resources/headers-basic.asis"); + client.send(); +}, "getResponseHeader('foo-test')"); + +async_test(t => { + const client = new XMLHttpRequest(); + client.onload = t.step_func_done(() => { + assert_equals(client.getResponseHeader("www-authenticate"), "1, 2, 3, 4"); + }); + client.onerror = t.unreached_func("unexpected error"); + client.open("GET", "resources/headers-www-authenticate.asis"); + client.send(); +}, "getResponseHeader('www-authenticate')"); diff --git a/tests/wpt/web-platform-tests/xhr/resources/headers-www-authenticate.asis b/tests/wpt/web-platform-tests/xhr/resources/headers-www-authenticate.asis new file mode 100644 index 00000000000..6f9905ee7a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/xhr/resources/headers-www-authenticate.asis @@ -0,0 +1,4 @@ +HTTP/1.1 280 HELLO +www-authenticate: 1 +www-authenticate: 2 +www-authenticate: 3, 4 diff --git a/tests/wpt/webgl/meta/conformance/textures/misc/texture-upload-size.html.ini b/tests/wpt/webgl/meta/conformance/textures/misc/texture-upload-size.html.ini index a4c57939ad5..ca35ba9e620 100644 --- a/tests/wpt/webgl/meta/conformance/textures/misc/texture-upload-size.html.ini +++ b/tests/wpt/webgl/meta/conformance/textures/misc/texture-upload-size.html.ini @@ -5,3 +5,6 @@ [WebGL test #36: could not create image (SVG)] expected: FAIL + [WebGL test #52: could not create image (SVG)] + expected: FAIL +