From 953dbda9a6fa775525f39b5c9b3f8b2837d13759 Mon Sep 17 00:00:00 2001
From: WPT Sync Bot
Date: Thu, 21 Mar 2019 21:40:20 -0400
Subject: [PATCH] Update web-platform-tests to revision
b7a8b84debb42268ea95a45bdad8f727d1facdf7
---
tests/wpt/metadata/MANIFEST.json | 1511 ++++++++++++++---
.../at-font-face-font-matching.html.ini | 18 +-
.../variations/font-weight-matching.html.ini | 3 +
...nsitions-animatable-properties-01.html.ini | 15 -
...ation-unload-same-origin-fragment.html.ini | 4 -
.../traverse_the_history_5.html.ini | 4 +
.../name-attribute.window.js.ini | 2 +-
.../non-active-document.html.ini | 10 -
.../parsing/DOMContentLoaded-defer.html.ini | 4 +
.../workers/Worker-custom-event.any.js.ini | 11 +
.../Worker-replace-event-handler.any.js.ini | 11 +
...rNavigator-hardware-concurrency.any.js.ini | 14 +
.../semantics/multiple-workers/005.html.ini | 1 +
.../semantics/run-a-worker/003.html.ini | 1 +
.../xhr/send-data-formdata.any.js.ini | 9 +
.../web-platform-tests/.azure-pipelines.yml | 6 +-
tests/wpt/web-platform-tests/.taskcluster.yml | 496 +++---
tests/wpt/web-platform-tests/.travis.yml | 55 -
.../IndexedDB/idbcursor-request.any.js | 40 +
.../idbfactory-origin-isolation.html | 41 +
.../idbfactory-origin-isolation-iframe.html | 50 +
.../animation-worklet/common.js | 9 +-
...orklet-animation-with-fill-mode.https.html | 144 +-
.../async-interfaces.https.html | 16 +-
...sync-navigator-clipboard-basics.https.html | 42 +-
...c-write-blobs-read-blobs-manual.https.html | 17 +-
...e-blobtext-read-blobtext-manual.https.html | 14 +-
...write-blobtext-read-text-manual.https.html | 8 +-
...rite-duplicate-mime-type-manual.https.html | 26 -
...c-write-image-read-image-manual.https.html | 18 +-
...write-text-read-blobtext-manual.https.html | 12 +-
...ync-write-text-read-text-manual.https.html | 6 +-
.../clipboard-apis/copy-event-manual.html | 6 +-
.../clipboard-apis/cut-event-manual.html | 6 +-
.../clipboard-apis/paste-event-manual.html | 8 +-
...trinsic-width-overflow-auto.tentative.html | 21 -
.../grid-container-baseline-001.html | 153 ++
.../position-absolute-crash-chrome-002.html | 2 +-
.../position-absolute-crash-chrome-003.html | 29 +
.../position-absolute-in-inline-001.html | 25 +
...ticky-scroll-with-clip-and-abspos-ref.html | 33 +
...on-sticky-scroll-with-clip-and-abspos.html | 33 +
.../css-tables/caption-writing-mode-002.html | 34 +
...pixel-perspective-backface-hidden-ref.html | 4 +
.../subpixel-perspective-backface-hidden.html | 12 +
...ubpixel-perspective-translate-z-0-ref.html | 4 +
.../subpixel-perspective-translate-z-0.html | 10 +
.../cssom/CSSStyleSheet-constructable.html | 8 +-
.../docs/_writing-tests/lint-tool.md | 2 +-
.../Event-dispatch-on-disabled-elements.html | 1 +
.../feature-policy-idle-detection-worker.js | 8 +-
.../feature-policy-idle-detection.html | 3 +-
.../fetch/stale-while-revalidate/stale-css.py | 22 +-
.../stale-while-revalidate/stale-image.py | 23 +-
.../stale-while-revalidate/stale-script.py | 24 +-
.../interfaces/TextTrack/activeCues.html | 7 +-
.../track-element/track-cues-enter-exit.html | 2 +-
.../basics.tentative.https.any.js | 82 +-
...-attribute-redirect-on-load.https.sub.html | 8 +-
...by-feature-policy-attribute.https.sub.html | 8 +-
...n-allowed-by-feature-policy.https.sub.html | 13 +-
...tion-default-feature-policy.https.sub.html | 9 +-
...-disabled-by-feature-policy.https.sub.html | 18 +-
.../idle-detection/idle-detection.idl | 20 +-
.../idle-detection/idlharness.https.any.js | 24 +-
.../idle-detection/interceptor.https.html | 231 ++-
...ection-allowed-by-feature-policy-worker.js | 4 +-
...ction-disabled-by-feature-policy-worker.js | 13 +-
...plied-to-target-dynamic.sub.tentative.html | 26 +
.../csp/applied-to-target.sub.tentative.html | 31 +
.../csp/hash-failure.tentative.html | 24 +
.../import-maps/csp/hash.tentative.html | 24 +
.../csp/nonce-failure.tentative.html | 27 +
.../import-maps/csp/nonce.tentative.html | 20 +
.../csp/unsafe-inline.tentative.html | 20 +
.../actions/actionsWithKeyPressed.html.ini | 9 +
.../testdriver/generate_test_report.html.ini | 4 +
.../actions/actionsWithKeyPressed.html | 67 +
.../testdriver/generate_test_report.html | 16 +
.../interfaces/ResizeObserver.idl | 30 -
.../interfaces/css-regions.idl | 2 +-
.../interfaces/css-typed-om.idl | 2 +-
.../interfaces/image-capture.idl | 8 +
.../interfaces/resize-observer.idl | 43 +
.../interfaces/user-timing.idl | 6 +-
.../interfaces/webauthn.idl | 3 +-
.../interfaces/webrtc-stats.idl | 34 +-
.../web-platform-tests/interfaces/webxr.idl | 4 +-
tests/wpt/web-platform-tests/lint.whitelist | 1 +
.../operators/mo-paint-lspace-rspace-ref.html | 78 +
.../operators/mo-paint-lspace-rspace.html | 69 +
...asource-correct-frames-after-reappend.html | 162 ++
.../mediasource-correct-frames.html | 146 ++
.../media-source/mp4/test-boxes-audio.mp4 | Bin 0 -> 64208 bytes
.../media-source/mp4/test-boxes-video.mp4 | Bin 0 -> 344085 bytes
.../dictionary-manual.https.html | 194 +--
...anual.html => free-fall-manual.https.html} | 0
...l => horizontal-surface-manual.https.html} | 0
...l.html => screen-upmost-manual.https.html} | 0
....html => screen-upright-manual.https.html} | 0
...001-manual.html => t001-manual.https.html} | 0
...002-manual.html => t002-manual.https.html} | 0
...003-manual.html => t003-manual.https.html} | 0
...006-manual.html => t006-manual.https.html} | 0
...009-manual.html => t009-manual.https.html} | 0
...010-manual.html => t010-manual.https.html} | 0
...012-manual.html => t012-manual.https.html} | 0
...021-manual.html => t021-manual.https.html} | 0
...022-manual.html => t022-manual.https.html} | 0
...023-manual.html => t023-manual.https.html} | 0
...025-manual.html => t025-manual.https.html} | 0
...028-manual.html => t028-manual.https.html} | 0
.../payment-method-basic-card/META.yml | 2 +-
.../apply_the_modifiers.html | 152 ++
...eps_for_selecting_the_payment_handler.html | 100 ++
.../payment-request/META.yml | 1 -
...With-method-abort-update-manual.https.html | 2 +-
...rument-method-manual.tentative.https.html} | 0
...nt-method-protection.tentative.https.html} | 0
...ledinstrument-method.tentative.https.html} | 0
...With-method-pmi-handling-manual.https.html | 37 +-
...nge-touch-action-onpointerdown_touch.html} | 14 +-
... => pointerevent_pointercancel_touch.html} | 12 +
...interleave_after_pointercancel_touch.html} | 12 +-
...pointerout_after_pointercancel_touch.html} | 12 +-
...pointercapture_onpointercancel_touch.html} | 14 +-
.../pointerevents/pointerevent_support.js | 33 +
...terevent_touch-action-auto-css_touch.html} | 14 +-
...on-inherit_highest-parent-none_touch.html} | 14 +-
...event_touch-action-pan-x-pan-y_touch.html} | 14 +-
.../pointerevent_coordinates_when_locked.html | 109 ++
.../portals/portal-activate-data.html | 28 +
.../resize-observer/idlharness.window.js | 2 +-
.../chromium/mock-barcodedetection.js | 124 ++
.../chromium/mock-barcodedetection.js.headers | 1 +
.../resources/chromium/mock-facedetection.js | 131 ++
.../chromium/mock-facedetection.js.headers | 1 +
...xtendable-event-async-waituntil.https.html | 49 +-
.../fetch-event-async-respond-with.https.html | 79 +-
.../extendable-event-async-waituntil.js | 116 +-
.../fetch-event-async-respond-with-worker.js | 67 +-
.../shape-detection/README.md | 44 +
.../detected-boundingBox-read-only.html | 51 +
.../detection-HTMLCanvasElement.html | 73 +
.../detection-HTMLImageElement.html | 65 +
.../detection-HTMLVideoElement.html | 55 +
.../detection-ImageBitmap.html | 54 +
.../shape-detection/detection-ImageData.html | 56 +
.../detection-getSupportedFormats.html | 16 +
.../detection-on-worker.worker.js | 47 +
.../shape-detection/detection-options.html | 26 +
.../detection-security-test.html | 74 +
.../shape-detection/detector-same-object.html | 55 +
.../shape-detection/idlharness.any.js | 54 +-
.../resources/shapedetection-helpers.js | 91 +
.../shapedetection-cross-origin.sub.html | 62 +
.../shapedetection-empty-input.html | 33 +
.../appcache/appcache.manifest | 3 +
.../resources/appcached-url-in-sxg.html | 10 +
.../appcache/resources/appcached-url.html | 10 +
.../appcache/resources/inner-url.html | 10 +
.../appcache/resources/sxg/__dir__.headers | 2 +
.../appcache/resources/sxg/sxg-appcached.sxg | Bin 0 -> 1003 bytes
.../appcache/resources/sxg/sxg-location.sxg | Bin 0 -> 1000 bytes
...er-resp-over-appcache.tentative.https.html | 21 +
...-served-from-appcache.tentative.https.html | 21 +
.../resources/generate-test-sxgs.sh | 31 +
.../radialgradient-fully-overlapping.svg | 8 +-
.../reftests/reference/green-100x100.svg | 3 +
.../use-svg-dimensions-override-001.svg | 18 +
.../use-svg-dimensions-override-002.svg | 18 +
.../use-symbol-dimensions-override-001.svg | 18 +
.../use-symbol-dimensions-override-002.svg | 18 +
.../tools/ci/azure/affected_tests.yml | 2 +-
.../tools/ci/azure/fyi_hook.yml | 4 +-
.../tools/ci/before_install.sh | 3 +
.../tools/ci/ci_resources_unittest.sh | 6 +-
.../tools/ci/ci_tools_unittest.sh | 2 +-
.../wpt/web-platform-tests/tools/ci/ci_wpt.sh | 6 +-
.../tools/ci/ci_wptrunner_infrastructure.sh | 11 +-
tests/wpt/web-platform-tests/tools/ci/lib.sh | 35 -
.../wpt/web-platform-tests/tools/ci/run_tc.py | 261 +++
.../wpt/web-platform-tests/tools/ci/start.sh | 32 +-
.../tools/ci/tests/test_run_tc.py | 33 +
.../tools/docker/Dockerfile | 8 +-
.../tools/manifest/manifest.py | 23 +-
.../web-platform-tests/tools/wpt/browser.py | 104 +-
tests/wpt/web-platform-tests/tools/wpt/run.py | 5 +-
.../web-platform-tests/tools/wpt/testfiles.py | 14 +-
.../wptrunner/formatters/chromium.py | 97 ++
.../formatters/tests/test_chromium.py | 118 ++
.../wptrunner/wptrunner/wptcommandline.py | 4 +-
...eConnectionState-candidate-pair.https.html | 2 +-
.../webrtc/RTCRtpTransceiver-stop.html | 2 +-
.../webrtc/RTCSctpTransport-constructor.html | 4 +-
.../protocol/jsep-initial-offer.https.html | 20 +-
.../webxr/xrFrame_lifetime.https.html | 1 +
.../webxr/xrRigidTransform_inverse.https.html | 108 ++
...equestAnimationFrame_data_valid.https.html | 17 +-
.../workers/Worker-custom-event.any.js | 8 +
.../workers/Worker-formdata.any.js | 19 +
.../Worker-replace-event-handler.any.js | 11 +
...orkerNavigator-hardware-concurrency.any.js | 4 +
.../xhr/FormData-append.html | 8 +
.../web-platform-tests/xhr/formdata-set.htm | 8 +
tests/wpt/web-platform-tests/xhr/formdata.htm | 2 +-
.../xhr/send-data-arraybuffer.any.js | 31 +
.../xhr/send-data-arraybuffer.htm | 48 -
.../xhr/send-data-arraybufferview.any.js | 18 +
.../xhr/send-data-arraybufferview.htm | 36 -
.../xhr/send-data-es-object.any.js | 50 +
.../xhr/send-data-es-object.htm | 61 -
.../xhr/send-data-formdata.any.js | 21 +
.../xhr/send-data-formdata.htm | 38 -
.../misc/texture-upload-size.html.ini | 3 +
215 files changed, 6409 insertions(+), 1644 deletions(-)
delete mode 100644 tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html.ini
create mode 100644 tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
delete mode 100644 tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
create mode 100644 tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
create mode 100644 tests/wpt/metadata/workers/Worker-custom-event.any.js.ini
create mode 100644 tests/wpt/metadata/workers/Worker-replace-event-handler.any.js.ini
create mode 100644 tests/wpt/metadata/workers/WorkerNavigator-hardware-concurrency.any.js.ini
create mode 100644 tests/wpt/metadata/xhr/send-data-formdata.any.js.ini
create mode 100644 tests/wpt/web-platform-tests/IndexedDB/idbcursor-request.any.js
create mode 100644 tests/wpt/web-platform-tests/IndexedDB/idbfactory-origin-isolation.html
create mode 100644 tests/wpt/web-platform-tests/IndexedDB/resources/idbfactory-origin-isolation-iframe.html
delete mode 100644 tests/wpt/web-platform-tests/clipboard-apis/async-write-duplicate-mime-type-manual.https.html
delete mode 100644 tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-width-overflow-auto.tentative.html
create mode 100644 tests/wpt/web-platform-tests/css/css-grid/alignment/grid-container-baseline-001.html
create mode 100644 tests/wpt/web-platform-tests/css/css-position/position-absolute-crash-chrome-003.html
create mode 100644 tests/wpt/web-platform-tests/css/css-position/position-absolute-in-inline-001.html
create mode 100644 tests/wpt/web-platform-tests/css/css-position/position-sticky-scroll-with-clip-and-abspos-ref.html
create mode 100644 tests/wpt/web-platform-tests/css/css-position/position-sticky-scroll-with-clip-and-abspos.html
create mode 100644 tests/wpt/web-platform-tests/css/css-tables/caption-writing-mode-002.html
create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/subpixel-perspective-backface-hidden-ref.html
create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/subpixel-perspective-backface-hidden.html
create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/subpixel-perspective-translate-z-0-ref.html
create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/subpixel-perspective-translate-z-0.html
create mode 100644 tests/wpt/web-platform-tests/import-maps/csp/applied-to-target-dynamic.sub.tentative.html
create mode 100644 tests/wpt/web-platform-tests/import-maps/csp/applied-to-target.sub.tentative.html
create mode 100644 tests/wpt/web-platform-tests/import-maps/csp/hash-failure.tentative.html
create mode 100644 tests/wpt/web-platform-tests/import-maps/csp/hash.tentative.html
create mode 100644 tests/wpt/web-platform-tests/import-maps/csp/nonce-failure.tentative.html
create mode 100644 tests/wpt/web-platform-tests/import-maps/csp/nonce.tentative.html
create mode 100644 tests/wpt/web-platform-tests/import-maps/csp/unsafe-inline.tentative.html
create mode 100644 tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini
create mode 100644 tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini
create mode 100644 tests/wpt/web-platform-tests/infrastructure/testdriver/actions/actionsWithKeyPressed.html
create mode 100644 tests/wpt/web-platform-tests/infrastructure/testdriver/generate_test_report.html
delete mode 100644 tests/wpt/web-platform-tests/interfaces/ResizeObserver.idl
create mode 100644 tests/wpt/web-platform-tests/interfaces/resize-observer.idl
create mode 100644 tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-paint-lspace-rspace-ref.html
create mode 100644 tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-paint-lspace-rspace.html
create mode 100644 tests/wpt/web-platform-tests/media-source/mediasource-correct-frames-after-reappend.html
create mode 100644 tests/wpt/web-platform-tests/media-source/mediasource-correct-frames.html
create mode 100644 tests/wpt/web-platform-tests/media-source/mp4/test-boxes-audio.mp4
create mode 100644 tests/wpt/web-platform-tests/media-source/mp4/test-boxes-video.mp4
rename tests/wpt/web-platform-tests/orientation-event/{free-fall-manual.html => free-fall-manual.https.html} (100%)
rename tests/wpt/web-platform-tests/orientation-event/{horizontal-surface-manual.html => horizontal-surface-manual.https.html} (100%)
rename tests/wpt/web-platform-tests/orientation-event/{screen-upmost-manual.html => screen-upmost-manual.https.html} (100%)
rename tests/wpt/web-platform-tests/orientation-event/{screen-upright-manual.html => screen-upright-manual.https.html} (100%)
rename tests/wpt/web-platform-tests/orientation-event/{t001-manual.html => t001-manual.https.html} (100%)
rename tests/wpt/web-platform-tests/orientation-event/{t002-manual.html => t002-manual.https.html} (100%)
rename tests/wpt/web-platform-tests/orientation-event/{t003-manual.html => t003-manual.https.html} (100%)
rename tests/wpt/web-platform-tests/orientation-event/{t006-manual.html => t006-manual.https.html} (100%)
rename tests/wpt/web-platform-tests/orientation-event/{t009-manual.html => t009-manual.https.html} (100%)
rename tests/wpt/web-platform-tests/orientation-event/{t010-manual.html => t010-manual.https.html} (100%)
rename tests/wpt/web-platform-tests/orientation-event/{t012-manual.html => t012-manual.https.html} (100%)
rename tests/wpt/web-platform-tests/orientation-event/{t021-manual.html => t021-manual.https.html} (100%)
rename tests/wpt/web-platform-tests/orientation-event/{t022-manual.html => t022-manual.https.html} (100%)
rename tests/wpt/web-platform-tests/orientation-event/{t023-manual.html => t023-manual.https.html} (100%)
rename tests/wpt/web-platform-tests/orientation-event/{t025-manual.html => t025-manual.https.html} (100%)
rename tests/wpt/web-platform-tests/orientation-event/{t028-manual.html => t028-manual.https.html} (100%)
create mode 100644 tests/wpt/web-platform-tests/payment-method-basic-card/apply_the_modifiers.html
create mode 100644 tests/wpt/web-platform-tests/payment-method-basic-card/steps_for_selecting_the_payment_handler.html
rename tests/wpt/web-platform-tests/payment-request/{payment-request-hasenrolledinstrument-method-manual.https.html => payment-request-hasenrolledinstrument-method-manual.tentative.https.html} (100%)
rename tests/wpt/web-platform-tests/payment-request/{payment-request-hasenrolledinstrument-method-protection.https.html => payment-request-hasenrolledinstrument-method-protection.tentative.https.html} (100%)
rename tests/wpt/web-platform-tests/payment-request/{payment-request-hasenrolledinstrument-method.https.html => payment-request-hasenrolledinstrument-method.tentative.https.html} (100%)
rename tests/wpt/web-platform-tests/pointerevents/{pointerevent_change-touch-action-onpointerdown_touch-manual.html => pointerevent_change-touch-action-onpointerdown_touch.html} (89%)
rename tests/wpt/web-platform-tests/pointerevents/{pointerevent_pointercancel_touch-manual.html => pointerevent_pointercancel_touch.html} (86%)
rename tests/wpt/web-platform-tests/pointerevents/{pointerevent_pointerleave_after_pointercancel_touch-manual.html => pointerevent_pointerleave_after_pointercancel_touch.html} (82%)
rename tests/wpt/web-platform-tests/pointerevents/{pointerevent_pointerout_after_pointercancel_touch-manual.html => pointerevent_pointerout_after_pointercancel_touch.html} (83%)
rename tests/wpt/web-platform-tests/pointerevents/{pointerevent_releasepointercapture_onpointercancel_touch-manual.html => pointerevent_releasepointercapture_onpointercancel_touch.html} (83%)
rename tests/wpt/web-platform-tests/pointerevents/{pointerevent_touch-action-auto-css_touch-manual.html => pointerevent_touch-action-auto-css_touch.html} (87%)
rename tests/wpt/web-platform-tests/pointerevents/{pointerevent_touch-action-inherit_highest-parent-none_touch-manual.html => pointerevent_touch-action-inherit_highest-parent-none_touch.html} (88%)
rename tests/wpt/web-platform-tests/pointerevents/{pointerevent_touch-action-pan-x-pan-y_touch-manual.html => pointerevent_touch-action-pan-x-pan-y_touch.html} (87%)
create mode 100644 tests/wpt/web-platform-tests/pointerevents/pointerlock/pointerevent_coordinates_when_locked.html
create mode 100644 tests/wpt/web-platform-tests/resources/chromium/mock-barcodedetection.js
create mode 100644 tests/wpt/web-platform-tests/resources/chromium/mock-barcodedetection.js.headers
create mode 100644 tests/wpt/web-platform-tests/resources/chromium/mock-facedetection.js
create mode 100644 tests/wpt/web-platform-tests/resources/chromium/mock-facedetection.js.headers
create mode 100644 tests/wpt/web-platform-tests/shape-detection/README.md
create mode 100644 tests/wpt/web-platform-tests/shape-detection/detected-boundingBox-read-only.html
create mode 100644 tests/wpt/web-platform-tests/shape-detection/detection-HTMLCanvasElement.html
create mode 100644 tests/wpt/web-platform-tests/shape-detection/detection-HTMLImageElement.html
create mode 100644 tests/wpt/web-platform-tests/shape-detection/detection-HTMLVideoElement.html
create mode 100644 tests/wpt/web-platform-tests/shape-detection/detection-ImageBitmap.html
create mode 100644 tests/wpt/web-platform-tests/shape-detection/detection-ImageData.html
create mode 100644 tests/wpt/web-platform-tests/shape-detection/detection-getSupportedFormats.html
create mode 100644 tests/wpt/web-platform-tests/shape-detection/detection-on-worker.worker.js
create mode 100644 tests/wpt/web-platform-tests/shape-detection/detection-options.html
create mode 100644 tests/wpt/web-platform-tests/shape-detection/detection-security-test.html
create mode 100644 tests/wpt/web-platform-tests/shape-detection/detector-same-object.html
create mode 100644 tests/wpt/web-platform-tests/shape-detection/resources/shapedetection-helpers.js
create mode 100644 tests/wpt/web-platform-tests/shape-detection/shapedetection-cross-origin.sub.html
create mode 100644 tests/wpt/web-platform-tests/shape-detection/shapedetection-empty-input.html
create mode 100644 tests/wpt/web-platform-tests/signed-exchange/appcache/appcache.manifest
create mode 100644 tests/wpt/web-platform-tests/signed-exchange/appcache/resources/appcached-url-in-sxg.html
create mode 100644 tests/wpt/web-platform-tests/signed-exchange/appcache/resources/appcached-url.html
create mode 100644 tests/wpt/web-platform-tests/signed-exchange/appcache/resources/inner-url.html
create mode 100644 tests/wpt/web-platform-tests/signed-exchange/appcache/resources/sxg/__dir__.headers
create mode 100644 tests/wpt/web-platform-tests/signed-exchange/appcache/resources/sxg/sxg-appcached.sxg
create mode 100644 tests/wpt/web-platform-tests/signed-exchange/appcache/resources/sxg/sxg-location.sxg
create mode 100644 tests/wpt/web-platform-tests/signed-exchange/appcache/sxg-inner-resp-over-appcache.tentative.https.html
create mode 100644 tests/wpt/web-platform-tests/signed-exchange/appcache/sxg-served-from-appcache.tentative.https.html
create mode 100644 tests/wpt/web-platform-tests/svg/struct/reftests/reference/green-100x100.svg
create mode 100644 tests/wpt/web-platform-tests/svg/struct/reftests/use-svg-dimensions-override-001.svg
create mode 100644 tests/wpt/web-platform-tests/svg/struct/reftests/use-svg-dimensions-override-002.svg
create mode 100644 tests/wpt/web-platform-tests/svg/struct/reftests/use-symbol-dimensions-override-001.svg
create mode 100644 tests/wpt/web-platform-tests/svg/struct/reftests/use-symbol-dimensions-override-002.svg
delete mode 100644 tests/wpt/web-platform-tests/tools/ci/lib.sh
create mode 100755 tests/wpt/web-platform-tests/tools/ci/run_tc.py
create mode 100644 tests/wpt/web-platform-tests/tools/ci/tests/test_run_tc.py
create mode 100644 tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters/chromium.py
create mode 100644 tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters/tests/test_chromium.py
create mode 100644 tests/wpt/web-platform-tests/webxr/xrRigidTransform_inverse.https.html
create mode 100644 tests/wpt/web-platform-tests/workers/Worker-custom-event.any.js
create mode 100644 tests/wpt/web-platform-tests/workers/Worker-formdata.any.js
create mode 100644 tests/wpt/web-platform-tests/workers/Worker-replace-event-handler.any.js
create mode 100644 tests/wpt/web-platform-tests/workers/WorkerNavigator-hardware-concurrency.any.js
create mode 100644 tests/wpt/web-platform-tests/xhr/send-data-arraybuffer.any.js
delete mode 100644 tests/wpt/web-platform-tests/xhr/send-data-arraybuffer.htm
create mode 100644 tests/wpt/web-platform-tests/xhr/send-data-arraybufferview.any.js
delete mode 100644 tests/wpt/web-platform-tests/xhr/send-data-arraybufferview.htm
create mode 100644 tests/wpt/web-platform-tests/xhr/send-data-es-object.any.js
delete mode 100644 tests/wpt/web-platform-tests/xhr/send-data-es-object.htm
create mode 100644 tests/wpt/web-platform-tests/xhr/send-data-formdata.any.js
delete mode 100644 tests/wpt/web-platform-tests/xhr/send-data-formdata.htm
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 57d5ffc48d6..68f0ff37160 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -1237,12 +1237,6 @@
{}
]
],
- "clipboard-apis/async-write-duplicate-mime-type-manual.https.html": [
- [
- "clipboard-apis/async-write-duplicate-mime-type-manual.https.html",
- {}
- ]
- ],
"clipboard-apis/async-write-image-read-image-manual.https.html": [
[
"clipboard-apis/async-write-image-read-image-manual.https.html",
@@ -13459,99 +13453,99 @@
{}
]
],
- "orientation-event/free-fall-manual.html": [
+ "orientation-event/free-fall-manual.https.html": [
[
- "orientation-event/free-fall-manual.html",
+ "orientation-event/free-fall-manual.https.html",
{}
]
],
- "orientation-event/horizontal-surface-manual.html": [
+ "orientation-event/horizontal-surface-manual.https.html": [
[
- "orientation-event/horizontal-surface-manual.html",
+ "orientation-event/horizontal-surface-manual.https.html",
{}
]
],
- "orientation-event/screen-upmost-manual.html": [
+ "orientation-event/screen-upmost-manual.https.html": [
[
- "orientation-event/screen-upmost-manual.html",
+ "orientation-event/screen-upmost-manual.https.html",
{}
]
],
- "orientation-event/screen-upright-manual.html": [
+ "orientation-event/screen-upright-manual.https.html": [
[
- "orientation-event/screen-upright-manual.html",
+ "orientation-event/screen-upright-manual.https.html",
{}
]
],
- "orientation-event/t001-manual.html": [
+ "orientation-event/t001-manual.https.html": [
[
- "orientation-event/t001-manual.html",
+ "orientation-event/t001-manual.https.html",
{}
]
],
- "orientation-event/t002-manual.html": [
+ "orientation-event/t002-manual.https.html": [
[
- "orientation-event/t002-manual.html",
+ "orientation-event/t002-manual.https.html",
{}
]
],
- "orientation-event/t003-manual.html": [
+ "orientation-event/t003-manual.https.html": [
[
- "orientation-event/t003-manual.html",
+ "orientation-event/t003-manual.https.html",
{}
]
],
- "orientation-event/t006-manual.html": [
+ "orientation-event/t006-manual.https.html": [
[
- "orientation-event/t006-manual.html",
+ "orientation-event/t006-manual.https.html",
{}
]
],
- "orientation-event/t009-manual.html": [
+ "orientation-event/t009-manual.https.html": [
[
- "orientation-event/t009-manual.html",
+ "orientation-event/t009-manual.https.html",
{}
]
],
- "orientation-event/t010-manual.html": [
+ "orientation-event/t010-manual.https.html": [
[
- "orientation-event/t010-manual.html",
+ "orientation-event/t010-manual.https.html",
{}
]
],
- "orientation-event/t012-manual.html": [
+ "orientation-event/t012-manual.https.html": [
[
- "orientation-event/t012-manual.html",
+ "orientation-event/t012-manual.https.html",
{}
]
],
- "orientation-event/t021-manual.html": [
+ "orientation-event/t021-manual.https.html": [
[
- "orientation-event/t021-manual.html",
+ "orientation-event/t021-manual.https.html",
{}
]
],
- "orientation-event/t022-manual.html": [
+ "orientation-event/t022-manual.https.html": [
[
- "orientation-event/t022-manual.html",
+ "orientation-event/t022-manual.https.html",
{}
]
],
- "orientation-event/t023-manual.html": [
+ "orientation-event/t023-manual.https.html": [
[
- "orientation-event/t023-manual.html",
+ "orientation-event/t023-manual.https.html",
{}
]
],
- "orientation-event/t025-manual.html": [
+ "orientation-event/t025-manual.https.html": [
[
- "orientation-event/t025-manual.html",
+ "orientation-event/t025-manual.https.html",
{}
]
],
- "orientation-event/t028-manual.html": [
+ "orientation-event/t028-manual.https.html": [
[
- "orientation-event/t028-manual.html",
+ "orientation-event/t028-manual.https.html",
{}
]
],
@@ -13657,9 +13651,9 @@
{}
]
],
- "payment-request/payment-request-hasenrolledinstrument-method-manual.https.html": [
+ "payment-request/payment-request-hasenrolledinstrument-method-manual.tentative.https.html": [
[
- "payment-request/payment-request-hasenrolledinstrument-method-manual.https.html",
+ "payment-request/payment-request-hasenrolledinstrument-method-manual.tentative.https.html",
{}
]
],
@@ -13873,12 +13867,6 @@
{}
]
],
- "pointerevents/pointerevent_change-touch-action-onpointerdown_touch-manual.html": [
- [
- "pointerevents/pointerevent_change-touch-action-onpointerdown_touch-manual.html",
- {}
- ]
- ],
"pointerevents/pointerevent_disabled_form_control-manual.html": [
[
"pointerevents/pointerevent_disabled_form_control-manual.html",
@@ -13915,42 +13903,18 @@
{}
]
],
- "pointerevents/pointerevent_pointercancel_touch-manual.html": [
- [
- "pointerevents/pointerevent_pointercancel_touch-manual.html",
- {}
- ]
- ],
- "pointerevents/pointerevent_pointerleave_after_pointercancel_touch-manual.html": [
- [
- "pointerevents/pointerevent_pointerleave_after_pointercancel_touch-manual.html",
- {}
- ]
- ],
"pointerevents/pointerevent_pointerleave_pen-manual.html": [
[
"pointerevents/pointerevent_pointerleave_pen-manual.html",
{}
]
],
- "pointerevents/pointerevent_pointerout_after_pointercancel_touch-manual.html": [
- [
- "pointerevents/pointerevent_pointerout_after_pointercancel_touch-manual.html",
- {}
- ]
- ],
"pointerevents/pointerevent_releasepointercapture_events_to_original_target-manual.html": [
[
"pointerevents/pointerevent_releasepointercapture_events_to_original_target-manual.html",
{}
]
],
- "pointerevents/pointerevent_releasepointercapture_onpointercancel_touch-manual.html": [
- [
- "pointerevents/pointerevent_releasepointercapture_onpointercancel_touch-manual.html",
- {}
- ]
- ],
"pointerevents/pointerevent_releasepointercapture_release_right_after_capture-manual.html": [
[
"pointerevents/pointerevent_releasepointercapture_release_right_after_capture-manual.html",
@@ -13981,12 +13945,6 @@
{}
]
],
- "pointerevents/pointerevent_touch-action-auto-css_touch-manual.html": [
- [
- "pointerevents/pointerevent_touch-action-auto-css_touch-manual.html",
- {}
- ]
- ],
"pointerevents/pointerevent_touch-action-button-test_touch-manual.html": [
[
"pointerevents/pointerevent_touch-action-button-test_touch-manual.html",
@@ -14017,12 +13975,6 @@
{}
]
],
- "pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch-manual.html": [
- [
- "pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch-manual.html",
- {}
- ]
- ],
"pointerevents/pointerevent_touch-action-inherit_parent-none_touch-manual.html": [
[
"pointerevents/pointerevent_touch-action-inherit_parent-none_touch-manual.html",
@@ -14059,12 +14011,6 @@
{}
]
],
- "pointerevents/pointerevent_touch-action-pan-x-pan-y_touch-manual.html": [
- [
- "pointerevents/pointerevent_touch-action-pan-x-pan-y_touch-manual.html",
- {}
- ]
- ],
"pointerevents/pointerevent_touch-action-pan-y-css_touch-manual.html": [
[
"pointerevents/pointerevent_touch-action-pan-y-css_touch-manual.html",
@@ -132509,6 +132455,18 @@
{}
]
],
+ "css/css-position/position-sticky-scroll-with-clip-and-abspos.html": [
+ [
+ "css/css-position/position-sticky-scroll-with-clip-and-abspos.html",
+ [
+ [
+ "/css/css-position/position-sticky-scroll-with-clip-and-abspos-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-position/position-sticky-stacking-context.html": [
[
"css/css-position/position-sticky-stacking-context.html",
@@ -151877,6 +151835,30 @@
{}
]
],
+ "css/css-transforms/subpixel-perspective-backface-hidden.html": [
+ [
+ "css/css-transforms/subpixel-perspective-backface-hidden.html",
+ [
+ [
+ "/css/css-transforms/subpixel-perspective-backface-hidden-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-transforms/subpixel-perspective-translate-z-0.html": [
+ [
+ "css/css-transforms/subpixel-perspective-translate-z-0.html",
+ [
+ [
+ "/css/css-transforms/subpixel-perspective-translate-z-0-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-transforms/text-perspective-001.html": [
[
"css/css-transforms/text-perspective-001.html",
@@ -195997,6 +195979,18 @@
{}
]
],
+ "mathml/presentation-markup/operators/mo-paint-lspace-rspace.html": [
+ [
+ "mathml/presentation-markup/operators/mo-paint-lspace-rspace.html",
+ [
+ [
+ "/mathml/presentation-markup/operators/mo-paint-lspace-rspace-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"mathml/presentation-markup/spaces/space-2.html": [
[
"mathml/presentation-markup/spaces/space-2.html",
@@ -197653,6 +197647,54 @@
{}
]
],
+ "svg/struct/reftests/use-svg-dimensions-override-001.svg": [
+ [
+ "svg/struct/reftests/use-svg-dimensions-override-001.svg",
+ [
+ [
+ "/svg/struct/reftests/reference/green-100x100.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "svg/struct/reftests/use-svg-dimensions-override-002.svg": [
+ [
+ "svg/struct/reftests/use-svg-dimensions-override-002.svg",
+ [
+ [
+ "/svg/struct/reftests/reference/green-100x100.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "svg/struct/reftests/use-symbol-dimensions-override-001.svg": [
+ [
+ "svg/struct/reftests/use-symbol-dimensions-override-001.svg",
+ [
+ [
+ "/svg/struct/reftests/reference/green-100x100.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "svg/struct/reftests/use-symbol-dimensions-override-002.svg": [
+ [
+ "svg/struct/reftests/use-symbol-dimensions-override-002.svg",
+ [
+ [
+ "/svg/struct/reftests/reference/green-100x100.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"svg/styling/render/transform-box.svg": [
[
"svg/styling/render/transform-box.svg",
@@ -203467,6 +203509,11 @@
{}
]
],
+ "IndexedDB/resources/idbfactory-origin-isolation-iframe.html": [
+ [
+ {}
+ ]
+ ],
"IndexedDB/support-promises.js": [
[
{}
@@ -270337,6 +270384,11 @@
{}
]
],
+ "css/css-position/position-sticky-scroll-with-clip-and-abspos-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-position/position-sticky-stacking-context-ref.html": [
[
{}
@@ -276007,6 +276059,16 @@
{}
]
],
+ "css/css-transforms/subpixel-perspective-backface-hidden-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/css-transforms/subpixel-perspective-translate-z-0-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-transforms/support/1x1-green.png": [
[
{}
@@ -304087,6 +304149,11 @@
{}
]
],
+ "infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini": [
+ [
+ {}
+ ]
+ ],
"infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini": [
[
{}
@@ -304112,6 +304179,11 @@
{}
]
],
+ "infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini": [
+ [
+ {}
+ ]
+ ],
"infrastructure/reftest-wait-ref.html": [
[
{}
@@ -304232,11 +304304,6 @@
{}
]
],
- "interfaces/ResizeObserver.idl": [
- [
- {}
- ]
- ],
"interfaces/SRI.idl": [
[
{}
@@ -304707,6 +304774,11 @@
{}
]
],
+ "interfaces/resize-observer.idl": [
+ [
+ {}
+ ]
+ ],
"interfaces/resource-timing.idl": [
[
{}
@@ -305147,6 +305219,11 @@
{}
]
],
+ "mathml/presentation-markup/operators/mo-paint-lspace-rspace-ref.html": [
+ [
+ {}
+ ]
+ ],
"mathml/presentation-markup/spaces/space-2-ref.html": [
[
{}
@@ -305522,6 +305599,16 @@
{}
]
],
+ "media-source/mp4/test-boxes-audio.mp4": [
+ [
+ {}
+ ]
+ ],
+ "media-source/mp4/test-boxes-video.mp4": [
+ [
+ {}
+ ]
+ ],
"media-source/mp4/test-v-128k-320x240-24fps-8kfr-manifest.json": [
[
{}
@@ -311437,6 +311524,26 @@
{}
]
],
+ "resources/chromium/mock-barcodedetection.js": [
+ [
+ {}
+ ]
+ ],
+ "resources/chromium/mock-barcodedetection.js.headers": [
+ [
+ {}
+ ]
+ ],
+ "resources/chromium/mock-facedetection.js": [
+ [
+ {}
+ ]
+ ],
+ "resources/chromium/mock-facedetection.js.headers": [
+ [
+ {}
+ ]
+ ],
"resources/chromium/mock-imagecapture.js": [
[
{}
@@ -316012,6 +316119,16 @@
{}
]
],
+ "shape-detection/README.md": [
+ [
+ {}
+ ]
+ ],
+ "shape-detection/resources/shapedetection-helpers.js": [
+ [
+ {}
+ ]
+ ],
"signed-exchange/META.yml": [
[
{}
@@ -316022,6 +316139,41 @@
{}
]
],
+ "signed-exchange/appcache/appcache.manifest": [
+ [
+ {}
+ ]
+ ],
+ "signed-exchange/appcache/resources/appcached-url-in-sxg.html": [
+ [
+ {}
+ ]
+ ],
+ "signed-exchange/appcache/resources/appcached-url.html": [
+ [
+ {}
+ ]
+ ],
+ "signed-exchange/appcache/resources/inner-url.html": [
+ [
+ {}
+ ]
+ ],
+ "signed-exchange/appcache/resources/sxg/__dir__.headers": [
+ [
+ {}
+ ]
+ ],
+ "signed-exchange/appcache/resources/sxg/sxg-appcached.sxg": [
+ [
+ {}
+ ]
+ ],
+ "signed-exchange/appcache/resources/sxg/sxg-location.sxg": [
+ [
+ {}
+ ]
+ ],
"signed-exchange/resources/127.0.0.1.sxg.ext": [
[
{}
@@ -317137,6 +317289,11 @@
{}
]
],
+ "svg/struct/reftests/reference/green-100x100.svg": [
+ [
+ {}
+ ]
+ ],
"svg/styling/render/transform-box-ref.svg": [
[
{}
@@ -317477,11 +317634,6 @@
{}
]
],
- "tools/ci/lib.sh": [
- [
- {}
- ]
- ],
"tools/ci/make_hosts_file.py": [
[
{}
@@ -317492,6 +317644,11 @@
{}
]
],
+ "tools/ci/run_tc.py": [
+ [
+ {}
+ ]
+ ],
"tools/ci/start.sh": [
[
{}
@@ -317517,6 +317674,11 @@
{}
]
],
+ "tools/ci/tests/test_run_tc.py": [
+ [
+ {}
+ ]
+ ],
"tools/conftest.py": [
[
{}
@@ -324012,6 +324174,16 @@
{}
]
],
+ "tools/wptrunner/wptrunner/formatters/chromium.py": [
+ [
+ {}
+ ]
+ ],
+ "tools/wptrunner/wptrunner/formatters/tests/test_chromium.py": [
+ [
+ {}
+ ]
+ ],
"tools/wptrunner/wptrunner/formatters/wptreport.py": [
[
{}
@@ -336253,6 +336425,30 @@
{}
]
],
+ "IndexedDB/idbcursor-request.any.js": [
+ [
+ "IndexedDB/idbcursor-request.any.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "support.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "IndexedDB/idbcursor-request.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "support.js"
+ ]
+ ]
+ }
+ ]
+ ],
"IndexedDB/idbcursor-reused.htm": [
[
"IndexedDB/idbcursor-reused.htm",
@@ -336839,6 +337035,12 @@
{}
]
],
+ "IndexedDB/idbfactory-origin-isolation.html": [
+ [
+ "IndexedDB/idbfactory-origin-isolation.html",
+ {}
+ ]
+ ],
"IndexedDB/idbfactory_cmp.htm": [
[
"IndexedDB/idbfactory_cmp.htm",
@@ -353261,12 +353463,6 @@
{}
]
],
- "css/css-flexbox/intrinsic-width-overflow-auto.tentative.html": [
- [
- "css/css-flexbox/intrinsic-width-overflow-auto.tentative.html",
- {}
- ]
- ],
"css/css-flexbox/order_value.html": [
[
"css/css-flexbox/order_value.html",
@@ -354343,6 +354539,12 @@
{}
]
],
+ "css/css-grid/alignment/grid-container-baseline-001.html": [
+ [
+ "css/css-grid/alignment/grid-container-baseline-001.html",
+ {}
+ ]
+ ],
"css/css-grid/alignment/grid-content-alignment-second-pass-001.html": [
[
"css/css-grid/alignment/grid-content-alignment-second-pass-001.html",
@@ -356503,12 +356705,24 @@
{}
]
],
+ "css/css-position/position-absolute-crash-chrome-003.html": [
+ [
+ "css/css-position/position-absolute-crash-chrome-003.html",
+ {}
+ ]
+ ],
"css/css-position/position-absolute-dynamic-containing-block.html": [
[
"css/css-position/position-absolute-dynamic-containing-block.html",
{}
]
],
+ "css/css-position/position-absolute-in-inline-001.html": [
+ [
+ "css/css-position/position-absolute-in-inline-001.html",
+ {}
+ ]
+ ],
"css/css-position/position-absolute-in-inline-crash.html": [
[
"css/css-position/position-absolute-in-inline-crash.html",
@@ -358315,6 +358529,12 @@
{}
]
],
+ "css/css-tables/caption-writing-mode-002.html": [
+ [
+ "css/css-tables/caption-writing-mode-002.html",
+ {}
+ ]
+ ],
"css/css-tables/fixed-layout-1.html": [
[
"css/css-tables/fixed-layout-1.html",
@@ -366485,7 +366705,8 @@
[
"dom/events/Event-dispatch-on-disabled-elements.html",
{
- "testdriver": true
+ "testdriver": true,
+ "timeout": "long"
}
]
],
@@ -397500,6 +397721,48 @@
{}
]
],
+ "import-maps/csp/applied-to-target-dynamic.sub.tentative.html": [
+ [
+ "import-maps/csp/applied-to-target-dynamic.sub.tentative.html",
+ {}
+ ]
+ ],
+ "import-maps/csp/applied-to-target.sub.tentative.html": [
+ [
+ "import-maps/csp/applied-to-target.sub.tentative.html",
+ {}
+ ]
+ ],
+ "import-maps/csp/hash-failure.tentative.html": [
+ [
+ "import-maps/csp/hash-failure.tentative.html",
+ {}
+ ]
+ ],
+ "import-maps/csp/hash.tentative.html": [
+ [
+ "import-maps/csp/hash.tentative.html",
+ {}
+ ]
+ ],
+ "import-maps/csp/nonce-failure.tentative.html": [
+ [
+ "import-maps/csp/nonce-failure.tentative.html",
+ {}
+ ]
+ ],
+ "import-maps/csp/nonce.tentative.html": [
+ [
+ "import-maps/csp/nonce.tentative.html",
+ {}
+ ]
+ ],
+ "import-maps/csp/unsafe-inline.tentative.html": [
+ [
+ "import-maps/csp/unsafe-inline.tentative.html",
+ {}
+ ]
+ ],
"import-maps/data.sub.tentative.html": [
[
"import-maps/data.sub.tentative.html",
@@ -397907,6 +398170,14 @@
{}
]
],
+ "infrastructure/testdriver/actions/actionsWithKeyPressed.html": [
+ [
+ "infrastructure/testdriver/actions/actionsWithKeyPressed.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"infrastructure/testdriver/actions/elementPosition.html": [
[
"infrastructure/testdriver/actions/elementPosition.html",
@@ -397971,6 +398242,14 @@
}
]
],
+ "infrastructure/testdriver/generate_test_report.html": [
+ [
+ "infrastructure/testdriver/generate_test_report.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"infrastructure/testdriver/send_keys.html": [
[
"infrastructure/testdriver/send_keys.html",
@@ -399208,6 +399487,22 @@
{}
]
],
+ "media-source/mediasource-correct-frames-after-reappend.html": [
+ [
+ "media-source/mediasource-correct-frames-after-reappend.html",
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
+ "media-source/mediasource-correct-frames.html": [
+ [
+ "media-source/mediasource-correct-frames.html",
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
"media-source/mediasource-detach.html": [
[
"media-source/mediasource-detach.html",
@@ -414659,6 +414954,12 @@
{}
]
],
+ "payment-method-basic-card/apply_the_modifiers.html": [
+ [
+ "payment-method-basic-card/apply_the_modifiers.html",
+ {}
+ ]
+ ],
"payment-method-basic-card/historical.https.html": [
[
"payment-method-basic-card/historical.https.html",
@@ -414688,6 +414989,12 @@
{}
]
],
+ "payment-method-basic-card/steps_for_selecting_the_payment_handler.html": [
+ [
+ "payment-method-basic-card/steps_for_selecting_the_payment_handler.html",
+ {}
+ ]
+ ],
"payment-method-id/payment-request-ctor-pmi-handling.https.html": [
[
"payment-method-id/payment-request-ctor-pmi-handling.https.html",
@@ -414901,17 +415208,17 @@
{}
]
],
- "payment-request/payment-request-hasenrolledinstrument-method-protection.https.html": [
+ "payment-request/payment-request-hasenrolledinstrument-method-protection.tentative.https.html": [
[
- "payment-request/payment-request-hasenrolledinstrument-method-protection.https.html",
+ "payment-request/payment-request-hasenrolledinstrument-method-protection.tentative.https.html",
{
"testdriver": true
}
]
],
- "payment-request/payment-request-hasenrolledinstrument-method.https.html": [
+ "payment-request/payment-request-hasenrolledinstrument-method.tentative.https.html": [
[
- "payment-request/payment-request-hasenrolledinstrument-method.https.html",
+ "payment-request/payment-request-hasenrolledinstrument-method.tentative.https.html",
{
"testdriver": true
}
@@ -415566,6 +415873,14 @@
}
]
],
+ "pointerevents/pointerevent_change-touch-action-onpointerdown_touch.html": [
+ [
+ "pointerevents/pointerevent_change-touch-action-onpointerdown_touch.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"pointerevents/pointerevent_click_during_capture.html": [
[
"pointerevents/pointerevent_click_during_capture.html",
@@ -415626,6 +415941,14 @@
{}
]
],
+ "pointerevents/pointerevent_pointercancel_touch.html": [
+ [
+ "pointerevents/pointerevent_pointercancel_touch.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"pointerevents/pointerevent_pointerenter_does_not_bubble.html": [
[
"pointerevents/pointerevent_pointerenter_does_not_bubble.html",
@@ -415634,6 +415957,14 @@
}
]
],
+ "pointerevents/pointerevent_pointerleave_after_pointercancel_touch.html": [
+ [
+ "pointerevents/pointerevent_pointerleave_after_pointercancel_touch.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"pointerevents/pointerevent_pointerleave_descendant_over.html": [
[
"pointerevents/pointerevent_pointerleave_descendant_over.html",
@@ -415682,6 +416013,14 @@
}
]
],
+ "pointerevents/pointerevent_pointerout_after_pointercancel_touch.html": [
+ [
+ "pointerevents/pointerevent_pointerout_after_pointercancel_touch.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"pointerevents/pointerevent_pointerout_pen.html": [
[
"pointerevents/pointerevent_pointerout_pen.html",
@@ -415706,6 +416045,14 @@
}
]
],
+ "pointerevents/pointerevent_releasepointercapture_onpointercancel_touch.html": [
+ [
+ "pointerevents/pointerevent_releasepointercapture_onpointercancel_touch.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"pointerevents/pointerevent_releasepointercapture_onpointerup_mouse.html": [
[
"pointerevents/pointerevent_releasepointercapture_onpointerup_mouse.html",
@@ -415774,18 +416121,50 @@
}
]
],
+ "pointerevents/pointerevent_touch-action-auto-css_touch.html": [
+ [
+ "pointerevents/pointerevent_touch-action-auto-css_touch.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"pointerevents/pointerevent_touch-action-illegal.html": [
[
"pointerevents/pointerevent_touch-action-illegal.html",
{}
]
],
+ "pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch.html": [
+ [
+ "pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
+ "pointerevents/pointerevent_touch-action-pan-x-pan-y_touch.html": [
+ [
+ "pointerevents/pointerevent_touch-action-pan-x-pan-y_touch.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"pointerevents/pointerevent_touch-action-verification.html": [
[
"pointerevents/pointerevent_touch-action-verification.html",
{}
]
],
+ "pointerevents/pointerlock/pointerevent_coordinates_when_locked.html": [
+ [
+ "pointerevents/pointerlock/pointerevent_coordinates_when_locked.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"pointerlock/constructor.html": [
[
"pointerlock/constructor.html",
@@ -427990,7 +428369,9 @@
"service-workers/service-worker/extendable-event-async-waituntil.https.html": [
[
"service-workers/service-worker/extendable-event-async-waituntil.https.html",
- {}
+ {
+ "timeout": "long"
+ }
]
],
"service-workers/service-worker/extendable-event-waituntil.https.html": [
@@ -429545,6 +429926,74 @@
{}
]
],
+ "shape-detection/detected-boundingBox-read-only.html": [
+ [
+ "shape-detection/detected-boundingBox-read-only.html",
+ {}
+ ]
+ ],
+ "shape-detection/detection-HTMLCanvasElement.html": [
+ [
+ "shape-detection/detection-HTMLCanvasElement.html",
+ {}
+ ]
+ ],
+ "shape-detection/detection-HTMLImageElement.html": [
+ [
+ "shape-detection/detection-HTMLImageElement.html",
+ {}
+ ]
+ ],
+ "shape-detection/detection-HTMLVideoElement.html": [
+ [
+ "shape-detection/detection-HTMLVideoElement.html",
+ {}
+ ]
+ ],
+ "shape-detection/detection-ImageBitmap.html": [
+ [
+ "shape-detection/detection-ImageBitmap.html",
+ {}
+ ]
+ ],
+ "shape-detection/detection-ImageData.html": [
+ [
+ "shape-detection/detection-ImageData.html",
+ {}
+ ]
+ ],
+ "shape-detection/detection-getSupportedFormats.html": [
+ [
+ "shape-detection/detection-getSupportedFormats.html",
+ {}
+ ]
+ ],
+ "shape-detection/detection-on-worker.worker.js": [
+ [
+ "shape-detection/detection-on-worker.worker.html",
+ {
+ "script_metadata": []
+ }
+ ]
+ ],
+ "shape-detection/detection-options.html": [
+ [
+ "shape-detection/detection-options.html",
+ {}
+ ]
+ ],
+ "shape-detection/detection-security-test.html": [
+ [
+ "shape-detection/detection-security-test.html",
+ {}
+ ]
+ ],
+ "shape-detection/detector-same-object.html": [
+ [
+ "shape-detection/detector-same-object.html",
+ {}
+ ]
+ ],
"shape-detection/idlharness.any.js": [
[
"shape-detection/idlharness.any.html",
@@ -429557,6 +430006,10 @@
[
"script",
"/resources/idlharness.js"
+ ],
+ [
+ "script",
+ "/shape-detection/resources/shapedetection-helpers.js"
]
]
}
@@ -429572,11 +430025,39 @@
[
"script",
"/resources/idlharness.js"
+ ],
+ [
+ "script",
+ "/shape-detection/resources/shapedetection-helpers.js"
]
]
}
]
],
+ "shape-detection/shapedetection-cross-origin.sub.html": [
+ [
+ "shape-detection/shapedetection-cross-origin.sub.html",
+ {}
+ ]
+ ],
+ "shape-detection/shapedetection-empty-input.html": [
+ [
+ "shape-detection/shapedetection-empty-input.html",
+ {}
+ ]
+ ],
+ "signed-exchange/appcache/sxg-inner-resp-over-appcache.tentative.https.html": [
+ [
+ "signed-exchange/appcache/sxg-inner-resp-over-appcache.tentative.https.html",
+ {}
+ ]
+ ],
+ "signed-exchange/appcache/sxg-served-from-appcache.tentative.https.html": [
+ [
+ "signed-exchange/appcache/sxg-served-from-appcache.tentative.https.html",
+ {}
+ ]
+ ],
"signed-exchange/check-cert-request.tentative.html": [
[
"signed-exchange/check-cert-request.tentative.html",
@@ -449249,6 +449730,12 @@
{}
]
],
+ "webxr/xrRigidTransform_inverse.https.html": [
+ [
+ "webxr/xrRigidTransform_inverse.https.html",
+ {}
+ ]
+ ],
"webxr/xrRigidTransform_matrix.https.html": [
[
"webxr/xrRigidTransform_matrix.https.html",
@@ -449473,6 +449960,54 @@
}
]
],
+ "workers/Worker-custom-event.any.js": [
+ [
+ "workers/Worker-custom-event.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "!default,worker"
+ ]
+ ]
+ }
+ ],
+ [
+ "workers/Worker-custom-event.any.sharedworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "!default,worker"
+ ]
+ ]
+ }
+ ],
+ [
+ "workers/Worker-custom-event.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "!default,worker"
+ ]
+ ]
+ }
+ ]
+ ],
+ "workers/Worker-formdata.any.js": [
+ [
+ "workers/Worker-formdata.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "!default,dedicatedworker"
+ ]
+ ]
+ }
+ ]
+ ],
"workers/Worker-location.sub.any.js": [
[
"workers/Worker-location.sub.any.sharedworker.html",
@@ -449515,6 +450050,41 @@
{}
]
],
+ "workers/Worker-replace-event-handler.any.js": [
+ [
+ "workers/Worker-replace-event-handler.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "!default,worker"
+ ]
+ ]
+ }
+ ],
+ [
+ "workers/Worker-replace-event-handler.any.sharedworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "!default,worker"
+ ]
+ ]
+ }
+ ],
+ [
+ "workers/Worker-replace-event-handler.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "!default,worker"
+ ]
+ ]
+ }
+ ]
+ ],
"workers/Worker-replace-global-constructor.any.js": [
[
"workers/Worker-replace-global-constructor.any.serviceworker.html",
@@ -449787,6 +450357,41 @@
{}
]
],
+ "workers/WorkerNavigator-hardware-concurrency.any.js": [
+ [
+ "workers/WorkerNavigator-hardware-concurrency.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "!default,worker"
+ ]
+ ]
+ }
+ ],
+ [
+ "workers/WorkerNavigator-hardware-concurrency.any.sharedworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "!default,worker"
+ ]
+ ]
+ }
+ ],
+ [
+ "workers/WorkerNavigator-hardware-concurrency.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "!default,worker"
+ ]
+ ]
+ }
+ ]
+ ],
"workers/WorkerNavigator.any.js": [
[
"workers/WorkerNavigator.any.serviceworker.html",
@@ -452554,16 +453159,52 @@
{}
]
],
- "xhr/send-data-arraybuffer.htm": [
+ "xhr/send-data-arraybuffer.any.js": [
[
- "xhr/send-data-arraybuffer.htm",
- {}
+ "xhr/send-data-arraybuffer.any.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "XMLHttpRequest.send(arraybuffer)"
+ ]
+ ]
+ }
+ ],
+ [
+ "xhr/send-data-arraybuffer.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "XMLHttpRequest.send(arraybuffer)"
+ ]
+ ]
+ }
]
],
- "xhr/send-data-arraybufferview.htm": [
+ "xhr/send-data-arraybufferview.any.js": [
[
- "xhr/send-data-arraybufferview.htm",
- {}
+ "xhr/send-data-arraybufferview.any.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "XMLHttpRequest.send(arraybufferview)"
+ ]
+ ]
+ }
+ ],
+ [
+ "xhr/send-data-arraybufferview.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "XMLHttpRequest.send(arraybufferview)"
+ ]
+ ]
+ }
]
],
"xhr/send-data-blob.htm": [
@@ -452572,16 +453213,52 @@
{}
]
],
- "xhr/send-data-es-object.htm": [
+ "xhr/send-data-es-object.any.js": [
[
- "xhr/send-data-es-object.htm",
- {}
+ "xhr/send-data-es-object.any.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "XMLHttpRequest.send(ES object)"
+ ]
+ ]
+ }
+ ],
+ [
+ "xhr/send-data-es-object.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "XMLHttpRequest.send(ES object)"
+ ]
+ ]
+ }
]
],
- "xhr/send-data-formdata.htm": [
+ "xhr/send-data-formdata.any.js": [
[
- "xhr/send-data-formdata.htm",
- {}
+ "xhr/send-data-formdata.any.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "XMLHttpRequest.send(formdata)"
+ ]
+ ]
+ }
+ ],
+ [
+ "xhr/send-data-formdata.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "XMLHttpRequest.send(formdata)"
+ ]
+ ]
+ }
]
],
"xhr/send-data-readablestream.any.js": [
@@ -473913,7 +474590,7 @@
},
"paths": {
".azure-pipelines.yml": [
- "f0b29604e4d6165b0e7b8fa43ff5b34c8cb68008",
+ "8c0025357b19d41fc969f079d7ff30eabc202db5",
"support"
],
".codecov.yml": [
@@ -473937,11 +474614,11 @@
"support"
],
".taskcluster.yml": [
- "2212a047c1528a0deeec790f9eccfa7d6da69f30",
+ "435edf7c5859066943ed1a05b8e524ed9da417ae",
"support"
],
".travis.yml": [
- "20093dfd1d2543eb1ba1ff31b78107f27f7a5ac0",
+ "02d760ca98f75c41f9f0540567204f063e32b9af",
"support"
],
".well-known/README.md": [
@@ -478792,6 +479469,10 @@
"9216a0c4416b47ab5ab51e0b407429512a0125d2",
"testharness"
],
+ "IndexedDB/idbcursor-request.any.js": [
+ "a62efc0b8eb7a39dffd0e3414b46d9c2969fc0d7",
+ "testharness"
+ ],
"IndexedDB/idbcursor-reused.htm": [
"603041e7cdf98bcbbf9a513970902db72b038e97",
"testharness"
@@ -479180,6 +479861,10 @@
"0c2ab948531a194fdc76423b54a327e500cc0dad",
"testharness"
],
+ "IndexedDB/idbfactory-origin-isolation.html": [
+ "3f200877ba7c75a2bcb1bf670d0f0f6b25b2c69e",
+ "testharness"
+ ],
"IndexedDB/idbfactory_cmp.htm": [
"7b301ece46d6b7f1753b8a61ae96674882fe81cb",
"testharness"
@@ -479996,6 +480681,10 @@
"21d72d75a6fa9389c05e968f3e9eebc386063e51",
"testharness"
],
+ "IndexedDB/resources/idbfactory-origin-isolation-iframe.html": [
+ "d405ea48e15e298241a2c400a6d04adbd054e1e5",
+ "support"
+ ],
"IndexedDB/string-list-ordering.htm": [
"cc905e56ecf83ea4cd4f1fe2ccfac425cdc5f9d0",
"testharness"
@@ -481881,7 +482570,7 @@
"testharness"
],
"animation-worklet/common.js": [
- "b3ca522a32fef6e0b0635a94bd620b98856d62e8",
+ "4a715a52cedf4d2904a7d242df68c0625cb6094a",
"support"
],
"animation-worklet/current-time.https.html": [
@@ -481985,7 +482674,7 @@
"reftest"
],
"animation-worklet/worklet-animation-with-fill-mode.https.html": [
- "b910ab280ec80725eee7894e8331cf72f6c24492",
+ "725d10de438ce60d1b6eece5109e9016cc3fc9e8",
"testharness"
],
"animation-worklet/worklet-animation-with-invalid-effect.https.html": [
@@ -485273,39 +485962,35 @@
"support"
],
"clipboard-apis/async-interfaces.https.html": [
- "0617ac11ac2e7dbc2cac3f0665e2df121d1ae477",
+ "e0d0977959b5dbe943005587c1442de451d9a18d",
"testharness"
],
"clipboard-apis/async-navigator-clipboard-basics.https.html": [
- "2d2ebf6c6c2667e1e2e465baa3dd78b657b97a7c",
+ "b71b43efe064c3fba60c6922c09da7e835398903",
"testharness"
],
"clipboard-apis/async-write-blobs-read-blobs-manual.https.html": [
- "e616b5ed794bfd38dbd2199685c622e7ee01ec15",
+ "57cf542ca77bc648d4a839e21775957f287ec60f",
"manual"
],
"clipboard-apis/async-write-blobtext-read-blobtext-manual.https.html": [
- "bc8511efa72c6c7db097f2a35d1b864d92359039",
+ "fded721f9bfa1a9efd9e42b05b4ddcc40a3b8e48",
"manual"
],
"clipboard-apis/async-write-blobtext-read-text-manual.https.html": [
- "b1b85de65e8b3bdef5a462152946617082041d79",
- "manual"
- ],
- "clipboard-apis/async-write-duplicate-mime-type-manual.https.html": [
- "8e249fc993a810ff1bec41c4ecbccdac8c2982c4",
+ "98ff7c27b667182432d744edcdbdfc5ca36dabb0",
"manual"
],
"clipboard-apis/async-write-image-read-image-manual.https.html": [
- "76d3d872c980447d46da093800dff8e1116b215d",
+ "6c326cf8ddeaa8777ef6b41d6bc9e4c32282a5c3",
"manual"
],
"clipboard-apis/async-write-text-read-blobtext-manual.https.html": [
- "b54fa609b655d08083bfddd382cd76bb6447392f",
+ "ab85a6fc649e6a6c7a86127adb1a41845324f3ff",
"manual"
],
"clipboard-apis/async-write-text-read-text-manual.https.html": [
- "496bdd78c7ab2ec0d26adafea6449ec18cc03340",
+ "25c7edb43f061552717459caf6d4df969383e84c",
"manual"
],
"clipboard-apis/clipboard-events-synthetic.html": [
@@ -485313,15 +485998,15 @@
"testharness"
],
"clipboard-apis/copy-event-manual.html": [
- "e4cf3379ace559671d4ca03c1ed7dcd32f565ed8",
+ "6f687af196fa198cda7d83f468945f9f69330568",
"manual"
],
"clipboard-apis/cut-event-manual.html": [
- "abef6f94bf640c210e56121e5407a1d00e558d71",
+ "c5593171754cfa2bd684e1ff3a8a724283456cbd",
"manual"
],
"clipboard-apis/paste-event-manual.html": [
- "4131a41bff6fd6bf5fb22fa805aea219ec7f72aa",
+ "19e6b95c5f32a0eb7dbccb0f5bd538e9dbb1360e",
"manual"
],
"clipboard-apis/resources/greenbox.png": [
@@ -579648,10 +580333,6 @@
"0220d79d901cca14324ea331d0ddfd9c086a08ee",
"manual"
],
- "css/css-flexbox/intrinsic-width-overflow-auto.tentative.html": [
- "8310e66cc4a2ef680d15f5c3ea56feb6edf4252e",
- "testharness"
- ],
"css/css-flexbox/item-with-table-with-infinite-max-intrinsic-width.html": [
"f475db5bcffd1449be231da943cd1511b15e20b1",
"reftest"
@@ -588780,6 +589461,10 @@
"3630eee37558bfa33c84b9c5ec467224b747edef",
"testharness"
],
+ "css/css-grid/alignment/grid-container-baseline-001.html": [
+ "d352977f9318395d0fa0c882bc6e1b9754da29ac",
+ "testharness"
+ ],
"css/css-grid/alignment/grid-content-alignment-second-pass-001.html": [
"5b4bbabbb160079796aa4eb6786ea15383f6dd75",
"testharness"
@@ -595649,13 +596334,21 @@
"testharness"
],
"css/css-position/position-absolute-crash-chrome-002.html": [
- "9a4ff0ae58349d7be0583b9e8ccc6bcf6104ab89",
+ "e7ed1daba51f9f8557f63272ccd6f502812af82e",
+ "testharness"
+ ],
+ "css/css-position/position-absolute-crash-chrome-003.html": [
+ "c443e836e57a361c7de9bc5f9a6debe7ff832fe0",
"testharness"
],
"css/css-position/position-absolute-dynamic-containing-block.html": [
"3968f685849663574ca213fcb90dc5fb3eaffaa3",
"testharness"
],
+ "css/css-position/position-absolute-in-inline-001.html": [
+ "204260ee6784c9e648ab9f1e86b113f0d7227e22",
+ "testharness"
+ ],
"css/css-position/position-absolute-in-inline-crash.html": [
"5d36710b6fe694b256d9841b3e7a0fff4535c85b",
"testharness"
@@ -595884,6 +596577,14 @@
"596fd9b24054bc0c3f0579146834d6fef674d6cf",
"testharness"
],
+ "css/css-position/position-sticky-scroll-with-clip-and-abspos-ref.html": [
+ "a36934e38079cfc8fd6e9d36524968675235983e",
+ "support"
+ ],
+ "css/css-position/position-sticky-scroll-with-clip-and-abspos.html": [
+ "46085b49b4c405bdc1d0a05eafda3faca8ecf74a",
+ "reftest"
+ ],
"css/css-position/position-sticky-stacking-context-ref.html": [
"0fe20bd3c339a1a92a3481653d6ea6d85ec054df",
"support"
@@ -601168,6 +601869,10 @@
"835a5116ae36bca9f92698b7766d0b65f1514f9f",
"testharness"
],
+ "css/css-tables/caption-writing-mode-002.html": [
+ "8a2b60864228d2d79af3ad18e6b8366e340dbbe3",
+ "testharness"
+ ],
"css/css-tables/fixed-layout-1.html": [
"3e0d013af1c6970a1180cf19db37e8e7b82cc0c0",
"testharness"
@@ -609924,6 +610629,22 @@
"a83705e3985de757804bcc7134d17129b0f26516",
"reftest"
],
+ "css/css-transforms/subpixel-perspective-backface-hidden-ref.html": [
+ "8413e3e2d2cf5f0e18b5cb1a15095d2696e2c280",
+ "support"
+ ],
+ "css/css-transforms/subpixel-perspective-backface-hidden.html": [
+ "e24539bfa2f50e9db422237d089acdaa2d3c178e",
+ "reftest"
+ ],
+ "css/css-transforms/subpixel-perspective-translate-z-0-ref.html": [
+ "5f3a8e279b48f314ad8d7a46091cc6ff0a49a814",
+ "support"
+ ],
+ "css/css-transforms/subpixel-perspective-translate-z-0.html": [
+ "4033e46f8ac2cee4e54fe672560323795fb89f0d",
+ "reftest"
+ ],
"css/css-transforms/support/1x1-green.png": [
"b98ca0ba0a03c580ac339e4a3653539cfa8edc71",
"support"
@@ -625781,7 +626502,7 @@
"testharness"
],
"css/cssom/CSSStyleSheet-constructable.html": [
- "5ee86ae4a6775abb47abff558b292b2303e2ef27",
+ "c7ae5f27b8bfb4220d7e9b2c956d2360f335c12a",
"testharness"
],
"css/cssom/CSSStyleSheet.html": [
@@ -639629,7 +640350,7 @@
"support"
],
"docs/_writing-tests/lint-tool.md": [
- "498df7f293d893043c1efc221c444d48b5092e30",
+ "774366159ab901f22973294bddfbb04f3341c5b0",
"support"
],
"docs/_writing-tests/manual.md": [
@@ -639853,7 +640574,7 @@
"testharness"
],
"dom/events/Event-dispatch-on-disabled-elements.html": [
- "008eb30cf6bbbcaf959b4400e308b86c9ff7ec59",
+ "a295ce1ef780d551490c41186aecb3dd97c87860",
"testharness"
],
"dom/events/Event-dispatch-order.html": [
@@ -645337,11 +646058,11 @@
"support"
],
"feature-policy/resources/feature-policy-idle-detection-worker.js": [
- "c6b8a7c88729c4106db162a9850b92e74b92d6ed",
+ "2e4e3cdc727613bbecf51465a0f3802781cf847b",
"support"
],
"feature-policy/resources/feature-policy-idle-detection.html": [
- "e542e3b8912228e87bf6265bbab803dfe2756b1e",
+ "65a578181b9ac433961416759195402343c57c6a",
"support"
],
"feature-policy/resources/feature-policy-nested-subframe-policy.https.sub.html": [
@@ -646877,7 +647598,7 @@
"testharness"
],
"fetch/stale-while-revalidate/stale-css.py": [
- "9566833e507603a35aadd4de622f388d4f77307f",
+ "a6ae546d0651f97f3020829452db6225486dc451",
"support"
],
"fetch/stale-while-revalidate/stale-css.tentative.html": [
@@ -646885,7 +647606,7 @@
"testharness"
],
"fetch/stale-while-revalidate/stale-image.py": [
- "e0cf94bcd0abc3e2f3aba3ad4448d5f519312335",
+ "4b67184185eb6cf9206bc57e2ca25c3da96643c2",
"support"
],
"fetch/stale-while-revalidate/stale-image.tentative.html": [
@@ -646893,7 +647614,7 @@
"testharness"
],
"fetch/stale-while-revalidate/stale-script.py": [
- "5ea5987db3dd707b7ab77d11d883c0217705aaf6",
+ "8ad54671f4211735f56df50a55deea6ed281d5a2",
"support"
],
"fetch/stale-while-revalidate/stale-script.tentative.html": [
@@ -658185,7 +658906,7 @@
"testharness"
],
"html/semantics/embedded-content/media-elements/interfaces/TextTrack/activeCues.html": [
- "ac0f56f7d5482b67f8893d6e1e5bf51901cacaa8",
+ "7a57826f3090a75d1a8878b1ed518526bc9c2e88",
"testharness"
],
"html/semantics/embedded-content/media-elements/interfaces/TextTrack/addCue.html": [
@@ -659201,7 +659922,7 @@
"testharness"
],
"html/semantics/embedded-content/media-elements/track/track-element/track-cues-enter-exit.html": [
- "970666793a73614563daa66fe515037513c51ec2",
+ "707240415dd5c95622481719cac2299cd1171ad4",
"testharness"
],
"html/semantics/embedded-content/media-elements/track/track-element/track-cues-missed.html": [
@@ -667233,19 +667954,19 @@
"support"
],
"idle-detection/basics.tentative.https.any.js": [
- "ef5de2164ed8d58fd27bcbd92eb891892ad28e25",
+ "df547570a78c31686d56065edfb7af243afde635",
"testharness"
],
"idle-detection/idle-detection-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [
- "f8f57348dfa10cf671f82902f4ec7d4ca5fcd7c6",
+ "6129ba12fa45090a8da80b27cecd3bd28232547c",
"testharness"
],
"idle-detection/idle-detection-allowed-by-feature-policy-attribute.https.sub.html": [
- "422c45c3de6a74134be261142d455a2003a30999",
+ "b19cd241bf4673dfc7cb9995c0071f2f6cc969b2",
"testharness"
],
"idle-detection/idle-detection-allowed-by-feature-policy.https.sub.html": [
- "3c019b7e0e476b82e812a3821119c0365eee2fd2",
+ "cafe96f5c898b6d21f0d1398361d9ef2f17f02fb",
"testharness"
],
"idle-detection/idle-detection-allowed-by-feature-policy.https.sub.html.headers": [
@@ -667253,11 +667974,11 @@
"support"
],
"idle-detection/idle-detection-default-feature-policy.https.sub.html": [
- "7ecf7a4f67700fa86fea55d744656875f1960820",
+ "59eeae00bc4fcd33c4b41dcaf1bf9161508437fc",
"testharness"
],
"idle-detection/idle-detection-disabled-by-feature-policy.https.sub.html": [
- "cb455f40bab08010511f17eea4b764872bfbf9b1",
+ "2814a2263db71658ac9104974147b543929c25e4",
"testharness"
],
"idle-detection/idle-detection-disabled-by-feature-policy.https.sub.html.headers": [
@@ -667265,15 +667986,15 @@
"support"
],
"idle-detection/idle-detection.idl": [
- "4b502c975ce3b25a94518ce5d98c842b57c6a70d",
+ "1fd4d451be98c7fb12bb1734d8bfcb57ad60bfbd",
"support"
],
"idle-detection/idlharness.https.any.js": [
- "4bda5c1a85b71e8fcb1c050710279bfec2919b68",
+ "482e2f4d40088a33809e8629051194605b0627cd",
"testharness"
],
"idle-detection/interceptor.https.html": [
- "03595afccdcd224f918f6e8baaf21c2419c24062",
+ "37922c8cf795eeeb6ec0443c3f6539aecbbce840",
"testharness"
],
"idle-detection/mock.js": [
@@ -667281,11 +668002,11 @@
"support"
],
"idle-detection/resources/idle-detection-allowed-by-feature-policy-worker.js": [
- "103ce5e9bdb0fae14cd88b4f760c93afce47ae2b",
+ "e643414f750897516db0576cd02262c3d571d4c1",
"support"
],
"idle-detection/resources/idle-detection-disabled-by-feature-policy-worker.js": [
- "66218a5c4420b5644ddefa276fb52f2718907525",
+ "138b29173f73eaed62dc57f4c912d15c174f9a5f",
"support"
],
"imagebitmap-renderingcontext/META.yml": [
@@ -667616,6 +668337,34 @@
"e85289e4d884d49bb4520154cecdd2826a07b333",
"testharness"
],
+ "import-maps/csp/applied-to-target-dynamic.sub.tentative.html": [
+ "cef80bfcda72956fe7acc59788d984370f25a62f",
+ "testharness"
+ ],
+ "import-maps/csp/applied-to-target.sub.tentative.html": [
+ "e6bbfecd0d9a62b5d4262c3cdbc7f97c301aa686",
+ "testharness"
+ ],
+ "import-maps/csp/hash-failure.tentative.html": [
+ "4bab1ed91731a362d02602a4e5a58e6272a3fd66",
+ "testharness"
+ ],
+ "import-maps/csp/hash.tentative.html": [
+ "868c5beb81b45dbf2ce07548427f8547accaeec4",
+ "testharness"
+ ],
+ "import-maps/csp/nonce-failure.tentative.html": [
+ "a1661a432ab57534fee650b4b15009ea1c8a13cd",
+ "testharness"
+ ],
+ "import-maps/csp/nonce.tentative.html": [
+ "858c572214fb482398707a7b7bd45cf7021a8d94",
+ "testharness"
+ ],
+ "import-maps/csp/unsafe-inline.tentative.html": [
+ "101c33cf84e9fb5e68cf8d5910f4ffbe7949e9d7",
+ "testharness"
+ ],
"import-maps/data.sub.tentative.html": [
"1c7172bf7c6f21aeb22948f9d3eb05d9b3c11b86",
"testharness"
@@ -667864,6 +668613,10 @@
"cbae6b15410e13433c4a9fadd8c2a8cc5fbc4fdc",
"support"
],
+ "infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini": [
+ "f62bf62a9713c2c12e4d572e0701efde494224c0",
+ "support"
+ ],
"infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini": [
"9ae71a6e73e22a855c69d3269936d71c17d6e9e5",
"support"
@@ -667884,6 +668637,10 @@
"42c98117c58bbe7b9201d1883e0c1649898b5570",
"support"
],
+ "infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini": [
+ "0b01c8369a56495d0dbf07540efb9d7a8d979790",
+ "support"
+ ],
"infrastructure/reftest-wait-ref.html": [
"6772c2c460e79993979688ddf46e2045b14f7d71",
"support"
@@ -668044,6 +668801,10 @@
"ea7973a62e0ee9cdc874879fd844b2309e944e61",
"testharness"
],
+ "infrastructure/testdriver/actions/actionsWithKeyPressed.html": [
+ "74e939f5fde4773aade6ce4f7bbee573e39ae8ec",
+ "testharness"
+ ],
"infrastructure/testdriver/actions/elementPosition.html": [
"145852e7b51bd0cdc9e7b4ef5ebddcbf1c0235c5",
"testharness"
@@ -668084,6 +668845,10 @@
"097d2a3a3f31dbd8f14cff73974cf042b6ebfcd2",
"support"
],
+ "infrastructure/testdriver/generate_test_report.html": [
+ "168c9e9956f9efae57d64948a34d7a24aa5bb44f",
+ "testharness"
+ ],
"infrastructure/testdriver/send_keys.html": [
"2170347c9729564f7e492009b3d20b3267422c1d",
"testharness"
@@ -668164,10 +668929,6 @@
"024cd0885a67fca28f0f1a3d5a5c2df3ca4bd42d",
"support"
],
- "interfaces/ResizeObserver.idl": [
- "fc56faf4f93ba59cdbf52d54fb39e5427549120e",
- "support"
- ],
"interfaces/SRI.idl": [
"3abb66cd6e7c5b2ac76faf466924d44c1d2cafc8",
"support"
@@ -668293,7 +669054,7 @@
"support"
],
"interfaces/css-regions.idl": [
- "254ef53b69b1eae99206cc682691116effcec241",
+ "f7cf3d31a114a653734990ef081ac109478dfcd8",
"support"
],
"interfaces/css-transitions.idl": [
@@ -668301,7 +669062,7 @@
"support"
],
"interfaces/css-typed-om.idl": [
- "02fe7bb83ad7dc6f7ec328636071d125d2181d62",
+ "be2946bc20f7689577c43635cc10ba635cc9c7df",
"support"
],
"interfaces/cssom-view.idl": [
@@ -668393,7 +669154,7 @@
"support"
],
"interfaces/image-capture.idl": [
- "424e44773ad6ca30636591c56dfe19c6e88d1729",
+ "e9016a1f9bab87e9ed62a4bc99e7bcd0d958abf4",
"support"
],
"interfaces/input-events.idl": [
@@ -668544,6 +669305,10 @@
"812cc0ef81533136f537b2591cf6c1774bf525ba",
"support"
],
+ "interfaces/resize-observer.idl": [
+ "d96a348a721a62516a451c2bb58618fe48035178",
+ "support"
+ ],
"interfaces/resource-timing.idl": [
"fc14253f5e9aebec47ce83da1afa938819015f51",
"support"
@@ -668605,7 +669370,7 @@
"support"
],
"interfaces/user-timing.idl": [
- "da8a0acd6738745fc2a724213e404c2f364329de",
+ "cd2e1446b89ef6bb2e03caadda707f141476c9b7",
"support"
],
"interfaces/vibration.idl": [
@@ -668649,7 +669414,7 @@
"support"
],
"interfaces/webauthn.idl": [
- "becf8dd335cbcd1f5dc4471fbe02b77e5d2f0115",
+ "be8d0c10c47e979ed6c7c8caa10f46d6578b972b",
"support"
],
"interfaces/webdriver.idl": [
@@ -668673,7 +669438,7 @@
"support"
],
"interfaces/webrtc-stats.idl": [
- "c86097b697b56f105abedfcd700d496f9687a153",
+ "b6b30e88268d27dd6e9a902768521fcf74c3a514",
"support"
],
"interfaces/webrtc.idl": [
@@ -668689,7 +669454,7 @@
"support"
],
"interfaces/webxr.idl": [
- "1bbe7efd2da4c5f17967257cb52d1c6139624ddf",
+ "7594489a36d130864e553a3c8125aa2488895b2e",
"support"
],
"interfaces/worklets.idl": [
@@ -669149,7 +669914,7 @@
"support"
],
"lint.whitelist": [
- "fd4d4049d6d2bd5dd68b1a72864fb63496ec1bea",
+ "96fd7ed0c2939411333b4b204687e68f61001fc8",
"support"
],
"loading/preloader-css-import-no-quote.tentative.html": [
@@ -669412,6 +670177,14 @@
"c88484b9d59a7811f6cfde7065de4facbdf1f74a",
"testharness"
],
+ "mathml/presentation-markup/operators/mo-paint-lspace-rspace-ref.html": [
+ "da0b79ff9a67cbe53daeb141aaa2efd4f2eb96ad",
+ "support"
+ ],
+ "mathml/presentation-markup/operators/mo-paint-lspace-rspace.html": [
+ "66df88264d191d91234364aebaa33c849e0217b5",
+ "reftest"
+ ],
"mathml/presentation-markup/radicals/root-parameters-1.html": [
"51d4713d4ea1c429e018c6a0914b130bc6dc1cd5",
"testharness"
@@ -670036,6 +670809,14 @@
"b28aa90f1f3d8135a7ea86b82820ffd414451920",
"support"
],
+ "media-source/mediasource-correct-frames-after-reappend.html": [
+ "5c0f2e11195c3b8fe6292f726f12bf6190df32de",
+ "testharness"
+ ],
+ "media-source/mediasource-correct-frames.html": [
+ "4ef3f4605e6580f949e4e53e6192f0eec1206e78",
+ "testharness"
+ ],
"media-source/mediasource-detach.html": [
"b25b5c6f02f6e6abdb32de0902438c0b24d1f1c4",
"testharness"
@@ -670208,6 +670989,14 @@
"f224a5426a16e0a44df788f704ce6e602663b61a",
"support"
],
+ "media-source/mp4/test-boxes-audio.mp4": [
+ "b1cabbfd21efdc08bff28a6b043f8eb856b7e322",
+ "support"
+ ],
+ "media-source/mp4/test-boxes-video.mp4": [
+ "714c17ca126c110d64e9fe58a50798e2a0ebc414",
+ "support"
+ ],
"media-source/mp4/test-v-128k-320x240-24fps-8kfr-manifest.json": [
"a31b6d0245ba5de8a59dcdf795ba2ab008647ef4",
"support"
@@ -670473,7 +671262,7 @@
"support"
],
"mediacapture-depth/dictionary-manual.https.html": [
- "e464f293fb1d74a2820fc58217a77895396457ba",
+ "0a5b824881509baee240f385a9eeaa380a579948",
"manual"
],
"mediacapture-depth/idlharness.html": [
@@ -680392,11 +681181,11 @@
"b6485f696b446c83389518b9aaead9f1cb74884a",
"testharness"
],
- "orientation-event/free-fall-manual.html": [
+ "orientation-event/free-fall-manual.https.html": [
"c71f61fa696050da421e7c3311716bf63b978c71",
"manual"
],
- "orientation-event/horizontal-surface-manual.html": [
+ "orientation-event/horizontal-surface-manual.https.html": [
"0b7302e704018f2b412c0565b7f134bb08c0b9df",
"manual"
],
@@ -680408,59 +681197,59 @@
"73ce97ab5c1fd7220fb65e53fb51e0bfa86beb28",
"testharness"
],
- "orientation-event/screen-upmost-manual.html": [
+ "orientation-event/screen-upmost-manual.https.html": [
"560c3e3a1f6bde251197585843263dcd1fc8ed6d",
"manual"
],
- "orientation-event/screen-upright-manual.html": [
+ "orientation-event/screen-upright-manual.https.html": [
"8a1b6d27da83cab9c734f78bff11985127a5e48c",
"manual"
],
- "orientation-event/t001-manual.html": [
+ "orientation-event/t001-manual.https.html": [
"a38d3fd5398f5c49da5034e5a357d908ee0e6dc3",
"manual"
],
- "orientation-event/t002-manual.html": [
+ "orientation-event/t002-manual.https.html": [
"13acb46838a85292ee9b679391d49c8bf191050d",
"manual"
],
- "orientation-event/t003-manual.html": [
+ "orientation-event/t003-manual.https.html": [
"328132d08e8c06f9979f66dc5c46ddf6d465fdd5",
"manual"
],
- "orientation-event/t006-manual.html": [
+ "orientation-event/t006-manual.https.html": [
"e41f4634e8bc3d26b9a69d86b6794b922cd5df53",
"manual"
],
- "orientation-event/t009-manual.html": [
+ "orientation-event/t009-manual.https.html": [
"d00f7e71b01a9486f138f01dcb0b3cb635a60906",
"manual"
],
- "orientation-event/t010-manual.html": [
+ "orientation-event/t010-manual.https.html": [
"9a6e00e1f739c9d6d045e20730472602cb015852",
"manual"
],
- "orientation-event/t012-manual.html": [
+ "orientation-event/t012-manual.https.html": [
"e5ac1c98b476840b286bc219cc01f6e6dbd81f2b",
"manual"
],
- "orientation-event/t021-manual.html": [
+ "orientation-event/t021-manual.https.html": [
"449d6100f10b141044ae9802a3121a72c115c109",
"manual"
],
- "orientation-event/t022-manual.html": [
+ "orientation-event/t022-manual.https.html": [
"45e9e7e83e46f6aed982d15933245af750fb54be",
"manual"
],
- "orientation-event/t023-manual.html": [
+ "orientation-event/t023-manual.https.html": [
"7606e52327d17c7b5f10f780272fd977e80840f4",
"manual"
],
- "orientation-event/t025-manual.html": [
+ "orientation-event/t025-manual.https.html": [
"9489855fcddfc8dcfb0deb2aa032f38c87a62ce4",
"manual"
],
- "orientation-event/t028-manual.html": [
+ "orientation-event/t028-manual.https.html": [
"669c4e47e0f18ff6a008cc60a1cef022fbc57a1a",
"manual"
],
@@ -680841,9 +681630,13 @@
"support"
],
"payment-method-basic-card/META.yml": [
- "b1d851431cb2ce519bf8df956d9c623db24cf33d",
+ "30994b67caf6ba8b0486876333352ba655f5f768",
"support"
],
+ "payment-method-basic-card/apply_the_modifiers.html": [
+ "8b9fe78e2e4f50f11364246edc6c53941b0ad395",
+ "testharness"
+ ],
"payment-method-basic-card/empty-data-manual.https.html": [
"ba881ee2366c49aa15799767892c5ed847e41ac3",
"manual"
@@ -680860,6 +681653,10 @@
"f1b0c28abb886745713378025af341507a3a7c2d",
"testharness"
],
+ "payment-method-basic-card/steps_for_selecting_the_payment_handler.html": [
+ "19cefadb3d4cb445e8acb55a3bcff0a6be02b38c",
+ "testharness"
+ ],
"payment-method-id/META.yml": [
"5e9fe05abae6f862301ef85f9905d91eb4e42121",
"support"
@@ -680873,7 +681670,7 @@
"testharness"
],
"payment-request/META.yml": [
- "558db3e088c1b07ad90eff717feccbb0591e67fb",
+ "5897c26fe88725725792c07698e7691df403db8b",
"support"
],
"payment-request/MerchantValidationEvent/complete-method.https.html": [
@@ -680921,7 +681718,7 @@
"manual"
],
"payment-request/PaymentRequestUpdateEvent/updateWith-method-abort-update-manual.https.html": [
- "abbf39ba3959d55e0480ed0bdc262ff15129b8ea",
+ "99b7a28e90d2882068e71d8e22ce62f723f1f1c2",
"manual"
],
"payment-request/PaymentRequestUpdateEvent/updateWith-state-checks-manual.https.html": [
@@ -681064,15 +681861,15 @@
"5f888f0389f6c756ede8c3e481ece7bcf8b71ccf",
"testharness"
],
- "payment-request/payment-request-hasenrolledinstrument-method-manual.https.html": [
+ "payment-request/payment-request-hasenrolledinstrument-method-manual.tentative.https.html": [
"e6b164f7cc7b8f1c57b8fa9fd14cbc7f5ef81eea",
"manual"
],
- "payment-request/payment-request-hasenrolledinstrument-method-protection.https.html": [
+ "payment-request/payment-request-hasenrolledinstrument-method-protection.tentative.https.html": [
"4da11304a21427040f72317e3746feebb251d12e",
"testharness"
],
- "payment-request/payment-request-hasenrolledinstrument-method.https.html": [
+ "payment-request/payment-request-hasenrolledinstrument-method.tentative.https.html": [
"c1f7b27a22b41fe64a7fb77e73336d3d0daec159",
"testharness"
],
@@ -681205,7 +682002,7 @@
"manual"
],
"payment-request/updateWith-method-pmi-handling-manual.https.html": [
- "8bab88212bab51ea771a0fc2a81a1a9e7ee6e0d1",
+ "6cddeb97365fb3b32395e6b76d887080b571208b",
"manual"
],
"payment-request/user-abort-algorithm-manual.https.html": [
@@ -681464,9 +682261,9 @@
"127b07a9ee0c36004e2a5c1113b01c18633672d4",
"manual"
],
- "pointerevents/pointerevent_change-touch-action-onpointerdown_touch-manual.html": [
- "04d56cb7a51db2be25972c181cf60cf69ba39591",
- "manual"
+ "pointerevents/pointerevent_change-touch-action-onpointerdown_touch.html": [
+ "7b09a17bb484d5996253447984679296085e3b0e",
+ "testharness"
],
"pointerevents/pointerevent_click_during_capture.html": [
"7f63283b61a4bedac614914b3fda14364abd14ad",
@@ -681524,17 +682321,17 @@
"3640cb6f6bba67b51f96c857a4deb811a495845d",
"manual"
],
- "pointerevents/pointerevent_pointercancel_touch-manual.html": [
- "70a65eeb5ca4a340aff4a74873e12e869a07ac48",
- "manual"
+ "pointerevents/pointerevent_pointercancel_touch.html": [
+ "a645033a247437604d6b1c4614079c9193c28e9d",
+ "testharness"
],
"pointerevents/pointerevent_pointerenter_does_not_bubble.html": [
"7d38de7446938de3715b19f4585d747a18912d77",
"testharness"
],
- "pointerevents/pointerevent_pointerleave_after_pointercancel_touch-manual.html": [
- "56be26549f8fc9bed9836114569261f7252b3799",
- "manual"
+ "pointerevents/pointerevent_pointerleave_after_pointercancel_touch.html": [
+ "555e5feb010aa3277c454e8396d2b976f552dbb8",
+ "testharness"
],
"pointerevents/pointerevent_pointerleave_descendant_over.html": [
"ccc5f37477cc8eabc3effa75d45f2f45d7ea31f5",
@@ -681564,9 +682361,9 @@
"f65512832c8fa78a461562a41755e617159dc521",
"testharness"
],
- "pointerevents/pointerevent_pointerout_after_pointercancel_touch-manual.html": [
- "1888591a7c2b2d18bbfff9395845426e3a5baffb",
- "manual"
+ "pointerevents/pointerevent_pointerout_after_pointercancel_touch.html": [
+ "13e7ffaebc1a80ba7bef12d32088aca1c250cde2",
+ "testharness"
],
"pointerevents/pointerevent_pointerout_pen.html": [
"972f99d95080ab702da79f8125119a2b27778a84",
@@ -681584,9 +682381,9 @@
"75351dfb0689418537e6b20d92ac60feae0da2fb",
"testharness"
],
- "pointerevents/pointerevent_releasepointercapture_onpointercancel_touch-manual.html": [
- "497840041f6b6f67326bede1fbfef442f403f7b7",
- "manual"
+ "pointerevents/pointerevent_releasepointercapture_onpointercancel_touch.html": [
+ "493236150dd32d0c6713b5b2dff123d1eefd5f7b",
+ "testharness"
],
"pointerevents/pointerevent_releasepointercapture_onpointerup_mouse.html": [
"23c28b4bf755e493d747f7814a21aa598f4f0d8c",
@@ -681641,7 +682438,7 @@
"support"
],
"pointerevents/pointerevent_support.js": [
- "5c35e016a0ed51353868e0307af0896c62db64de",
+ "e8c847b12a880a557d8d3cd69bc0bc77cf3378af",
"support"
],
"pointerevents/pointerevent_suppress_compat_events_on_click.html": [
@@ -681652,9 +682449,9 @@
"5bab6e66121cebc47213914fb07f7995d8b0722d",
"testharness"
],
- "pointerevents/pointerevent_touch-action-auto-css_touch-manual.html": [
- "f5e9d12c353902852670524181df5bbdf48425df",
- "manual"
+ "pointerevents/pointerevent_touch-action-auto-css_touch.html": [
+ "e995ccd5d6e1d4c23a3df075208d794f2b66edbe",
+ "testharness"
],
"pointerevents/pointerevent_touch-action-button-test_touch-manual.html": [
"c7c5d9a44080863f69afda3c1a94f268e7d90096",
@@ -681680,9 +682477,9 @@
"d420cc56c77b6910ee96d875ee24eb0b9b0a4c71",
"manual"
],
- "pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch-manual.html": [
- "d87d2b3a34decc5a4633c5facf8b231dcbb6036a",
- "manual"
+ "pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch.html": [
+ "a1fefe16982316546b2cb0a7bf14362fe21f7145",
+ "testharness"
],
"pointerevents/pointerevent_touch-action-inherit_parent-none_touch-manual.html": [
"5e674a14da550fb63bfe53859a8e4db529f559e8",
@@ -681708,9 +682505,9 @@
"e2a4386b27abcd29be0563a8537653bec0206ccd",
"manual"
],
- "pointerevents/pointerevent_touch-action-pan-x-pan-y_touch-manual.html": [
- "0c900ff7407fbccf652975d7d7c84187817a6cc8",
- "manual"
+ "pointerevents/pointerevent_touch-action-pan-x-pan-y_touch.html": [
+ "0c88054379538b4287c9157124f68b9cbff82234",
+ "testharness"
],
"pointerevents/pointerevent_touch-action-pan-y-css_touch-manual.html": [
"4ad39ecc8386688a6ac0f10014dc55bd77289ae8",
@@ -681736,6 +682533,10 @@
"f42d9f6bd6703b962058b79faae413fbed0757cc",
"testharness"
],
+ "pointerevents/pointerlock/pointerevent_coordinates_when_locked.html": [
+ "2556e83da10d9b8ee36b8ebbe67d513597d2fe77",
+ "testharness"
+ ],
"pointerevents/pointerlock/pointerevent_movementxy-manual.html": [
"5b0edd3c61da0bf817cf2e53bab2a564013872fa",
"manual"
@@ -681857,7 +682658,7 @@
"support"
],
"portals/portal-activate-data.html": [
- "e2417cb7332010cccd66435743f300313614c0e6",
+ "0d8ec33cae787ddd0ed22284ed0a955e312d505d",
"testharness"
],
"portals/portal-activate-event.html": [
@@ -691609,7 +692410,7 @@
"testharness"
],
"resize-observer/idlharness.window.js": [
- "592af2e0c079197457e091d84dfdb3741703395e",
+ "2d459b0b1263682f0f3472d4bf706b8b735dbccc",
"testharness"
],
"resize-observer/notify.html": [
@@ -692208,6 +693009,22 @@
"bf8dd16ca75d4be1095808138d09a9c400159b86",
"support"
],
+ "resources/chromium/mock-barcodedetection.js": [
+ "2558bbda58913ec51c36bdce28e0f84a1aea32e7",
+ "support"
+ ],
+ "resources/chromium/mock-barcodedetection.js.headers": [
+ "6c61a34a4ec2e75096db0eb9f7748b142f0db7bb",
+ "support"
+ ],
+ "resources/chromium/mock-facedetection.js": [
+ "1275e4dd2f5e24988e723a728dbf5bb4acc4c6cb",
+ "support"
+ ],
+ "resources/chromium/mock-facedetection.js.headers": [
+ "6c61a34a4ec2e75096db0eb9f7748b142f0db7bb",
+ "support"
+ ],
"resources/chromium/mock-imagecapture.js": [
"329cbc3a761dc5720b7a67ed09ef68aec6a8bc3d",
"support"
@@ -695121,7 +695938,7 @@
"testharness"
],
"service-workers/service-worker/extendable-event-async-waituntil.https.html": [
- "cb4ed30a37fdfd07fd8b34181f073c6de2e165b9",
+ "04e98266b4f1a0b6ec572e1c317ab852fc2e4480",
"testharness"
],
"service-workers/service-worker/extendable-event-waituntil.https.html": [
@@ -695173,7 +695990,7 @@
"testharness"
],
"service-workers/service-worker/fetch-event-async-respond-with.https.html": [
- "87fa04679832f792579b6fefcee2eee550bb58fd",
+ "7842a829c9b82c0ebff94a3902284ad191b5be71",
"testharness"
],
"service-workers/service-worker/fetch-event-is-history-backward-navigation-manual.https.html": [
@@ -695957,7 +696774,7 @@
"support"
],
"service-workers/service-worker/resources/extendable-event-async-waituntil.js": [
- "abf54934a3b42e18908a730bdfa140e6b692c7ae",
+ "8a975b0d2e9b0789ce7ab7b05757b6d93f2ec400",
"support"
],
"service-workers/service-worker/resources/extendable-event-waituntil.js": [
@@ -696009,7 +696826,7 @@
"support"
],
"service-workers/service-worker/resources/fetch-event-async-respond-with-worker.js": [
- "7f66d20dfc2dff0af01dfa07f823c660b7a1ec1b",
+ "3409d0a0397bdc552da166961b435fb2363e3468",
"support"
],
"service-workers/service-worker/resources/fetch-event-network-error-controllee-iframe.html": [
@@ -697772,8 +698589,68 @@
"775462404762d0123d21601396bcec1e873dbcaa",
"support"
],
+ "shape-detection/README.md": [
+ "556568baddbeec6ed0b597b5a8391833e807ebfa",
+ "support"
+ ],
+ "shape-detection/detected-boundingBox-read-only.html": [
+ "86b88892260602c17ebbf57e7a370d0342350374",
+ "testharness"
+ ],
+ "shape-detection/detection-HTMLCanvasElement.html": [
+ "4e9615a03d0d079bc55eee0f76b50b6d1de8b859",
+ "testharness"
+ ],
+ "shape-detection/detection-HTMLImageElement.html": [
+ "979efabdcb07cfdc0190383026a24e144dea1747",
+ "testharness"
+ ],
+ "shape-detection/detection-HTMLVideoElement.html": [
+ "7b3736d02e9b6b0769a18354b054e5c3ce268773",
+ "testharness"
+ ],
+ "shape-detection/detection-ImageBitmap.html": [
+ "a7157c0960eb463b953576e00bb9628cd48df73d",
+ "testharness"
+ ],
+ "shape-detection/detection-ImageData.html": [
+ "a74c2afbe1bcde274793853c593c662f4b161e91",
+ "testharness"
+ ],
+ "shape-detection/detection-getSupportedFormats.html": [
+ "4ccb5ab7661c7ba4217f2ae0f0fea15e53bb3b43",
+ "testharness"
+ ],
+ "shape-detection/detection-on-worker.worker.js": [
+ "6b440af7b81703915a1c25dad27f5518e1802e97",
+ "testharness"
+ ],
+ "shape-detection/detection-options.html": [
+ "31475575e3f42e1b63723c08031dd7833bb30bc8",
+ "testharness"
+ ],
+ "shape-detection/detection-security-test.html": [
+ "b3f458e23ee8869aaad56847b8c451e72c4ccf94",
+ "testharness"
+ ],
+ "shape-detection/detector-same-object.html": [
+ "52540271d27ecf76cfe68ca0502630eac8c5d0a3",
+ "testharness"
+ ],
"shape-detection/idlharness.any.js": [
- "ea7726891052c54b3afd3e0a7a2399dfb44e7509",
+ "dab7de99d2d1f15ed72f562a0fb7fbfb3367eeac",
+ "testharness"
+ ],
+ "shape-detection/resources/shapedetection-helpers.js": [
+ "09cea09c6fe0c1fb20c707a766e746b8246cfc02",
+ "support"
+ ],
+ "shape-detection/shapedetection-cross-origin.sub.html": [
+ "c9d86430356de470bca7a8dfef8596e9159164ad",
+ "testharness"
+ ],
+ "shape-detection/shapedetection-empty-input.html": [
+ "601c992ed85a58ca575901485bafc1f34f5bde24",
"testharness"
],
"signed-exchange/META.yml": [
@@ -697784,6 +698661,42 @@
"f1dbfe6d1adbe7ef7663c5298692872897ce3e0c",
"support"
],
+ "signed-exchange/appcache/appcache.manifest": [
+ "adc0409be92a30565f31bb323e001ecae95ed5fe",
+ "support"
+ ],
+ "signed-exchange/appcache/resources/appcached-url-in-sxg.html": [
+ "5f5defbedf025e399ffb69df45ffafbc6fe32938",
+ "support"
+ ],
+ "signed-exchange/appcache/resources/appcached-url.html": [
+ "d58617b64eb038e6b16653c63bace22844a5aac0",
+ "support"
+ ],
+ "signed-exchange/appcache/resources/inner-url.html": [
+ "5b247bbfe99a5e502f8d775c37c5d543dfea3fe3",
+ "support"
+ ],
+ "signed-exchange/appcache/resources/sxg/__dir__.headers": [
+ "83a3c128cfe36a3c50eca2fae6ac866e1bd339c5",
+ "support"
+ ],
+ "signed-exchange/appcache/resources/sxg/sxg-appcached.sxg": [
+ "673adc20926479486821fdf6fbe1c11cde119b64",
+ "support"
+ ],
+ "signed-exchange/appcache/resources/sxg/sxg-location.sxg": [
+ "624e67362c50f083483597b4968e668d1424356b",
+ "support"
+ ],
+ "signed-exchange/appcache/sxg-inner-resp-over-appcache.tentative.https.html": [
+ "68edbede31f0be0e095ce110af0970ca4535d304",
+ "testharness"
+ ],
+ "signed-exchange/appcache/sxg-served-from-appcache.tentative.https.html": [
+ "b9ca0ff61e59991853de4abc0eb99a445045859c",
+ "testharness"
+ ],
"signed-exchange/check-cert-request.tentative.html": [
"b1418e929083bf1cd8c591bb42e13a35b0b47a6f",
"testharness"
@@ -697941,7 +698854,7 @@
"support"
],
"signed-exchange/resources/generate-test-sxgs.sh": [
- "e76286be991ca3d3832f767a5ab7aab172157184",
+ "64c28325d3a98e330dafc0a5567f4681b812ff55",
"support"
],
"signed-exchange/resources/inner-url.html": [
@@ -701985,7 +702898,7 @@
"reftest"
],
"svg/pservers/reftests/radialgradient-fully-overlapping.svg": [
- "e16bb4ab917178b7a17bcb82b74046a457e9c03f",
+ "5b5f7bd4c836efc57f72064b9b1a46b8c2bc79e4",
"reftest"
],
"svg/pservers/reftests/reference/green-100x100.svg": [
@@ -702248,6 +703161,26 @@
"862e5fde273a5b8ad467f8e062b3bb9ec16e5242",
"testharness"
],
+ "svg/struct/reftests/reference/green-100x100.svg": [
+ "120941444a4898197d6b6001f9908a6cd48b62ba",
+ "support"
+ ],
+ "svg/struct/reftests/use-svg-dimensions-override-001.svg": [
+ "c658adce80f82d5ce6457101ecd3b3d3f562ddd9",
+ "reftest"
+ ],
+ "svg/struct/reftests/use-svg-dimensions-override-002.svg": [
+ "6c3f97b8dc48eb2150311de4bae409b464e948ca",
+ "reftest"
+ ],
+ "svg/struct/reftests/use-symbol-dimensions-override-001.svg": [
+ "1f8f71414783ec6f46d74d700cd63bdc225607a9",
+ "reftest"
+ ],
+ "svg/struct/reftests/use-symbol-dimensions-override-002.svg": [
+ "9c1fd49083ae55b5a6743c9da4b4ecab46683b2c",
+ "reftest"
+ ],
"svg/styling/render/transform-box-ref.svg": [
"b41f8bb2a7baac19d907c378a0e269b9a8e914fb",
"support"
@@ -702777,7 +703710,7 @@
"support"
],
"tools/ci/azure/affected_tests.yml": [
- "17fca51d50cbd4f1986c63f3383b18dbdbe9c6fe",
+ "8076bc386986ed48a7af50fd48a59a544bf8c3bc",
"support"
],
"tools/ci/azure/checkout.yml": [
@@ -702789,7 +703722,7 @@
"support"
],
"tools/ci/azure/fyi_hook.yml": [
- "ddfbe3d3cf8e1db0453a4b909a7b6176dc32a96f",
+ "5af16af31bcc34558ae3af3831ee2f3e39ba87e7",
"support"
],
"tools/ci/azure/install_certs.yml": [
@@ -702837,7 +703770,7 @@
"support"
],
"tools/ci/before_install.sh": [
- "ea53f969015f0f79a98a64abc968d4424b407a89",
+ "cde1879211b36654bc82d9a033017b514860c773",
"support"
],
"tools/ci/ci_built_diff.sh": [
@@ -702853,19 +703786,19 @@
"support"
],
"tools/ci/ci_resources_unittest.sh": [
- "f1d0389b2d6f4f8d3ad9e34d3d23175a5ae5df3c",
+ "11190fc58d64491bae719f9ac91adb1e879886fb",
"support"
],
"tools/ci/ci_tools_unittest.sh": [
- "55afb9f4331af97a3548550dbe8f7d4eb260cc24",
+ "366dcf66de88e6ba29fc85c9697832eead9376c3",
"support"
],
"tools/ci/ci_wpt.sh": [
- "5af04110b20b673c3df07ba1f01a0ae6658a2968",
+ "7c37e7863e002db66c59009ae3d4360aaa717499",
"support"
],
"tools/ci/ci_wptrunner_infrastructure.sh": [
- "267bf17525abea558833d20dca27213f6b7185c5",
+ "f3ce3e73ea796479529da554c17f61293d138d3a",
"support"
],
"tools/ci/commands.json": [
@@ -702880,10 +703813,6 @@
"2b54327ad20506c23f6698ddd6c5c5f1def8b09f",
"support"
],
- "tools/ci/lib.sh": [
- "8d5e6aef73b456446aaf265e35c3d0d6d252d1a7",
- "support"
- ],
"tools/ci/make_hosts_file.py": [
"d0a80ab46c7a86b476776d2dff0fcd23776dfc9e",
"support"
@@ -702892,8 +703821,12 @@
"5af38d0b56c1bbabb3e3748633cb7dca4f15c5e6",
"support"
],
+ "tools/ci/run_tc.py": [
+ "53b0870ea9f7f7d179e1379bd6599eed3f5deca2",
+ "support"
+ ],
"tools/ci/start.sh": [
- "98c368427f64da37be111b1a6fcf0aa23aa63f70",
+ "18e2784e6cd01bcad8bcc556a362a019d00defdc",
"support"
],
"tools/ci/tag_master.py": [
@@ -702912,6 +703845,10 @@
"1548171376efae2b5e474d27bbf5feeaa31065b1",
"support"
],
+ "tools/ci/tests/test_run_tc.py": [
+ "436dc79670e07681b84f85495aeb28f171bab3c8",
+ "support"
+ ],
"tools/conftest.py": [
"021a49fc297303b6e4178c427422d91813dbb762",
"support"
@@ -702921,7 +703858,7 @@
"support"
],
"tools/docker/Dockerfile": [
- "0cb2352e5fdf6117d51c9f745d18bbf453c48a1c",
+ "e60b4ea6a3a1c909c715fb7248a6f1b0cc6e9d4e",
"support"
],
"tools/docker/retry.py": [
@@ -703145,7 +704082,7 @@
"support"
],
"tools/manifest/manifest.py": [
- "90655daca22406f99cf92295413894d0f8d9291b",
+ "f5d939fa1325f0660baf5fa66f9a647c1ea8588e",
"support"
],
"tools/manifest/sourcefile.py": [
@@ -707633,7 +708570,7 @@
"support"
],
"tools/wpt/browser.py": [
- "c4469800608ad73b4a00c3bbef558cf9d0f7e596",
+ "f5bc7c0af02697c29818a8800c1d11a379023790",
"support"
],
"tools/wpt/commands.json": [
@@ -707661,11 +708598,11 @@
"support"
],
"tools/wpt/run.py": [
- "a19851d14c5cd2a64355a4e0389ace0b7cbd022f",
+ "1178c5a3f6d3f041ed5e4fe8597139d21d64de00",
"support"
],
"tools/wpt/testfiles.py": [
- "70e695aa0100f1763233e4a680863d31f704f5d4",
+ "006e4a22d0bbc0bb2dab5a7bd237377cd77bf370",
"support"
],
"tools/wpt/tests/latest_mozilla_central.txt": [
@@ -708108,6 +709045,14 @@
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
"support"
],
+ "tools/wptrunner/wptrunner/formatters/chromium.py": [
+ "071c2f378902965971a77d46911fd89a85a18bdc",
+ "support"
+ ],
+ "tools/wptrunner/wptrunner/formatters/tests/test_chromium.py": [
+ "22d9fb4e7ea022ed109047c0887a3443d19bc28c",
+ "support"
+ ],
"tools/wptrunner/wptrunner/formatters/wptreport.py": [
"c58422d0de0a594c237b7fa6b2e89bf14eaf44cc",
"support"
@@ -708253,7 +709198,7 @@
"support"
],
"tools/wptrunner/wptrunner/wptcommandline.py": [
- "eb61461e4746041612612ecd83544af8961795c9",
+ "0b5dc82e067c2f50179d1093c3146e504c42056d",
"support"
],
"tools/wptrunner/wptrunner/wptlogging.py": [
@@ -714645,7 +715590,7 @@
"testharness"
],
"webrtc/RTCIceConnectionState-candidate-pair.https.html": [
- "7280d040856370f448796a4de2f92f82f9c78c53",
+ "6c93aec9260d50d1d6cfcd637d15dd44385bee0d",
"testharness"
],
"webrtc/RTCIceTransport-extension-helper.js": [
@@ -714901,7 +715846,7 @@
"testharness"
],
"webrtc/RTCRtpTransceiver-stop.html": [
- "b45e03bd019015947b03df8c8bfbb1aa736bd3fe",
+ "4f57dc7b6d348486e2715aff1e7d7e773c29d0e3",
"testharness"
],
"webrtc/RTCRtpTransceiver.https.html": [
@@ -714909,7 +715854,7 @@
"testharness"
],
"webrtc/RTCSctpTransport-constructor.html": [
- "7d3df051d876e490c926639499c13ba0dcf8d30a",
+ "28dae0555324907af1649544344dad1f1899f39d",
"testharness"
],
"webrtc/RTCSctpTransport-maxMessageSize.html": [
@@ -714993,7 +715938,7 @@
"support"
],
"webrtc/protocol/jsep-initial-offer.https.html": [
- "88bdfcfc2867335ca53c30f5637b38b3d12c64ca",
+ "50527f88dfe8f3f025cfffae91b347fdc2527a1d",
"testharness"
],
"webrtc/protocol/missing-fields.html": [
@@ -719465,7 +720410,7 @@
"testharness"
],
"webxr/xrFrame_lifetime.https.html": [
- "971a6d78a1e1ee1c51141a475868185318680495",
+ "30cf5f996773b9c278370c3ae7df086574d3b72d",
"testharness"
],
"webxr/xrRay_constructor.https.html": [
@@ -719480,6 +720425,10 @@
"abaf8bf9ebe2fed3c99cef5bf52d697b9e8ed1c8",
"testharness"
],
+ "webxr/xrRigidTransform_inverse.https.html": [
+ "ddae2af6469034e67dc579dfd6cfb53b86f28d6a",
+ "testharness"
+ ],
"webxr/xrRigidTransform_matrix.https.html": [
"21236c732461de4422dcab7a3709cdc7ffc0f3a6",
"testharness"
@@ -719513,7 +720462,7 @@
"testharness"
],
"webxr/xrSession_requestAnimationFrame_data_valid.https.html": [
- "41801bcd3643b9173e0b447545967beb60cee330",
+ "6c567d2fda6888ee0b30e4f4716e75ee4763516d",
"testharness"
],
"webxr/xrSession_requestAnimationFrame_getViewerPose.https.html": [
@@ -719588,6 +720537,14 @@
"73eabd55226d67b05fc3a86a9e57880b9a725e5b",
"testharness"
],
+ "workers/Worker-custom-event.any.js": [
+ "201e0313b0e968b6b8c2d5d9a990476dab13c04b",
+ "testharness"
+ ],
+ "workers/Worker-formdata.any.js": [
+ "3ee42d9f4b76228bc25a89d0fb8a1c653139e45a",
+ "testharness"
+ ],
"workers/Worker-location.sub.any.js": [
"2ef944553105767535f6e3119048091f959bfac8",
"testharness"
@@ -719604,6 +720561,10 @@
"8863b7523010dd8566d1ed42094e519efc500a65",
"testharness"
],
+ "workers/Worker-replace-event-handler.any.js": [
+ "1623573c7ebf5b436eb22b46fecc2da51cdccb8d",
+ "testharness"
+ ],
"workers/Worker-replace-global-constructor.any.js": [
"f208f3736362a82a322527b2f983b9e3ccaff33e",
"testharness"
@@ -719744,6 +720705,10 @@
"9907e6473c2dcf60f8f17335e3d6ab41f800418a",
"testharness"
],
+ "workers/WorkerNavigator-hardware-concurrency.any.js": [
+ "bd4910fcafae58d0dfc34be0a246a8fa567a338e",
+ "testharness"
+ ],
"workers/WorkerNavigator.any.js": [
"3588045c490a45170c84bcfa5211086646afbb76",
"testharness"
@@ -721325,7 +722290,7 @@
"support"
],
"xhr/FormData-append.html": [
- "bf6c66d0f665df8cfb30b97063cca33442900250",
+ "a10244fa23d475a6fc4cb6fe2b15f869c3081218",
"testharness"
],
"xhr/META.yml": [
@@ -721697,11 +722662,11 @@
"testharness"
],
"xhr/formdata-set.htm": [
- "f030caa78f95309e223ece150c30261dbf85d937",
+ "ee43e1569f1958e5c71f14a3bd89b75756d6a85c",
"testharness"
],
"xhr/formdata.htm": [
- "65a5d29c6714d25bfcf97e39f04ae2f7f04de761",
+ "699c11ab7838a32a3e62460f13a2a427d8d81707",
"testharness"
],
"xhr/getallresponseheaders-cookies.htm": [
@@ -722560,24 +723525,24 @@
"6c2c00823c6aab1e22ff15e5eca23d78f2407d02",
"testharness"
],
- "xhr/send-data-arraybuffer.htm": [
- "25c5d24072788b32e4bcf136c7eb5a37b9d39148",
+ "xhr/send-data-arraybuffer.any.js": [
+ "71933d089780168d93954d0045b3a1d94b1c5741",
"testharness"
],
- "xhr/send-data-arraybufferview.htm": [
- "4de7e9e8920b4e38d8a336065415b9998c08cc0f",
+ "xhr/send-data-arraybufferview.any.js": [
+ "a3985b4701db056ed8dfd28050c916179086d448",
"testharness"
],
"xhr/send-data-blob.htm": [
"5285fc180cc979e33c567f537e8575abf285db50",
"testharness"
],
- "xhr/send-data-es-object.htm": [
- "6f7743286ecdd06a52ce545d56dfb1589242996e",
+ "xhr/send-data-es-object.any.js": [
+ "d98a4ca65aa6b2f3f4043f09742354e6b12ff833",
"testharness"
],
- "xhr/send-data-formdata.htm": [
- "9456aa77c53585f0c13bac628770521428e6022a",
+ "xhr/send-data-formdata.any.js": [
+ "6ff04793ea65057a095dd3389eee10a5db77966f",
"testharness"
],
"xhr/send-data-readablestream.any.js": [
diff --git a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
index 35af5352290..6b82f6b0e66 100644
--- a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
@@ -62,9 +62,6 @@
[Matching font-style: 'italic' should prefer 'italic' over 'oblique 20deg']
expected: FAIL
- [Matching font-style: 'italic' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg']
- expected: FAIL
-
[Matching font-style: 'italic' should prefer 'oblique 40deg 50deg' over 'oblique 5deg 10deg']
expected: FAIL
@@ -149,9 +146,6 @@
[Matching font-style: 'oblique 20deg' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg']
expected: FAIL
- [Matching font-style: 'oblique 20deg' should prefer 'oblique 40deg 50deg' over 'oblique 10deg']
- expected: FAIL
-
[Matching font-style: 'oblique 20deg' should prefer 'oblique 0deg' over 'oblique -50deg -20deg']
expected: FAIL
@@ -224,9 +218,6 @@
[Matching font-weight: '500' should prefer '450 460' over '400']
expected: FAIL
- [Matching font-weight: '501' should prefer '501' over '502 510']
- expected: FAIL
-
[Matching font-style: 'oblique -20deg' should prefer 'oblique -20deg' over 'oblique -60deg -40deg']
expected: FAIL
@@ -326,3 +317,12 @@
[Matching font-style: 'oblique -21deg' should prefer 'oblique -10deg' over 'italic']
expected: FAIL
+ [Matching font-weight: '399' should prefer '340 360' over '200 300']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 0deg' should prefer 'oblique 5deg' over 'oblique 15deg 20deg']
+ expected: FAIL
+
+ [Matching font-weight: '501' should prefer '500' over '450 460']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini b/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini
index a5b51f7ff93..c9cc353fce2 100644
--- a/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini
@@ -38,3 +38,6 @@
[Test @font-face matching for weight 500]
expected: FAIL
+ [Test @font-face matching for weight 400]
+ 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 7d9242c1a54..8850ec200da 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
@@ -74,18 +74,3 @@
[opacity end]
expected: FAIL
- [height end]
- expected: FAIL
-
- [border-top-width end]
- expected: FAIL
-
- [border-left-width end]
- expected: FAIL
-
- [border-bottom-width end]
- expected: FAIL
-
- [border-right-width end]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html.ini
deleted file mode 100644
index e495b626d2e..00000000000
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[navigation-unload-same-origin-fragment.html]
- [Tests that a fragment navigation in the unload handler will not block the initial navigation]
- expected: FAIL
-
diff --git a/tests/wpt/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
new file mode 100644
index 00000000000..dc2e45516de
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_5.html]
+ [Multiple history traversals, last would be aborted]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/windows/nested-browsing-contexts/name-attribute.window.js.ini b/tests/wpt/metadata/html/browsers/windows/nested-browsing-contexts/name-attribute.window.js.ini
index ef2deddc5dc..636c298b2a1 100644
--- a/tests/wpt/metadata/html/browsers/windows/nested-browsing-contexts/name-attribute.window.js.ini
+++ b/tests/wpt/metadata/html/browsers/windows/nested-browsing-contexts/name-attribute.window.js.ini
@@ -1,5 +1,5 @@
[name-attribute.window.html]
- expected: CRASH
+ expected: TIMEOUT
[cross-origin ]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
deleted file mode 100644
index 8cc42056d34..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[non-active-document.html]
- [DOMParser]
- expected: FAIL
-
- [createHTMLDocument]
- expected: FAIL
-
- []
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
new file mode 100644
index 00000000000..a9677391662
--- /dev/null
+++ b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
@@ -0,0 +1,4 @@
+[DOMContentLoaded-defer.html]
+ [The end: DOMContentLoaded and defer scripts]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/workers/Worker-custom-event.any.js.ini b/tests/wpt/metadata/workers/Worker-custom-event.any.js.ini
new file mode 100644
index 00000000000..c9c023af197
--- /dev/null
+++ b/tests/wpt/metadata/workers/Worker-custom-event.any.js.ini
@@ -0,0 +1,11 @@
+[Worker-custom-event.any.worker.html]
+
+[Worker-custom-event.any.sharedworker.html]
+ [Worker-custom-event]
+ expected: FAIL
+
+
+[Worker-custom-event.any.serviceworker.html]
+ [Worker-custom-event]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/workers/Worker-replace-event-handler.any.js.ini b/tests/wpt/metadata/workers/Worker-replace-event-handler.any.js.ini
new file mode 100644
index 00000000000..6775bf5e610
--- /dev/null
+++ b/tests/wpt/metadata/workers/Worker-replace-event-handler.any.js.ini
@@ -0,0 +1,11 @@
+[Worker-replace-event-handler.any.sharedworker.html]
+ [Worker-replace-event-handler]
+ expected: FAIL
+
+
+[Worker-replace-event-handler.any.worker.html]
+
+[Worker-replace-event-handler.any.serviceworker.html]
+ [Worker-replace-event-handler]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/workers/WorkerNavigator-hardware-concurrency.any.js.ini b/tests/wpt/metadata/workers/WorkerNavigator-hardware-concurrency.any.js.ini
new file mode 100644
index 00000000000..25d0a3f43b2
--- /dev/null
+++ b/tests/wpt/metadata/workers/WorkerNavigator-hardware-concurrency.any.js.ini
@@ -0,0 +1,14 @@
+[WorkerNavigator-hardware-concurrency.any.sharedworker.html]
+ [WorkerNavigator-hardware-concurrency]
+ expected: FAIL
+
+
+[WorkerNavigator-hardware-concurrency.any.worker.html]
+ [Test worker navigator hardware concurrency.]
+ expected: FAIL
+
+
+[WorkerNavigator-hardware-concurrency.any.serviceworker.html]
+ [WorkerNavigator-hardware-concurrency]
+ 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 268949ced5c..f584fce5df1 100644
--- a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
+++ b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
@@ -1,4 +1,5 @@
[005.html]
+ expected: ERROR
[dedicated worker in shared worker in dedicated worker]
expected: FAIL
diff --git a/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini b/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini
index d6e39444229..49f489d2a1c 100644
--- a/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini
+++ b/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini
@@ -1,5 +1,6 @@
[003.html]
type: testharness
+ expected: ERROR
[shared]
expected: FAIL
diff --git a/tests/wpt/metadata/xhr/send-data-formdata.any.js.ini b/tests/wpt/metadata/xhr/send-data-formdata.any.js.ini
new file mode 100644
index 00000000000..bb51642c93a
--- /dev/null
+++ b/tests/wpt/metadata/xhr/send-data-formdata.any.js.ini
@@ -0,0 +1,9 @@
+[send-data-formdata.any.html]
+ [XMLHttpRequest.send(formdata)]
+ expected: FAIL
+
+
+[send-data-formdata.any.worker.html]
+ [XMLHttpRequest.send(formdata)]
+ expected: FAIL
+
diff --git a/tests/wpt/web-platform-tests/.azure-pipelines.yml b/tests/wpt/web-platform-tests/.azure-pipelines.yml
index f0b29604e4d..8c0025357b1 100644
--- a/tests/wpt/web-platform-tests/.azure-pipelines.yml
+++ b/tests/wpt/web-platform-tests/.azure-pipelines.yml
@@ -154,7 +154,7 @@ jobs:
- template: tools/ci/azure/install_certs.yml
- template: tools/ci/azure/update_hosts.yml
- template: tools/ci/azure/update_manifest.yml
- - script: python ./wpt run --yes --no-manifest-update --install-fonts --manifest MANIFEST.json --metadata infrastructure/metadata/ --log-tbpl $(Build.ArtifactStagingDirectory)/edge.tbpl.log --log-tbpl-level info edge_webdriver infrastructure/
+ - script: python ./wpt run --yes --no-manifest-update --install-fonts --manifest MANIFEST.json --metadata infrastructure/metadata/ --webdriver-arg=--verbose --log-tbpl $(Build.ArtifactStagingDirectory)/edge.tbpl.log --log-tbpl-level info edge_webdriver infrastructure/
displayName: 'Run tests (Edge)'
- task: PublishBuildArtifacts@1
displayName: 'Publish results'
@@ -183,7 +183,7 @@ jobs:
- template: tools/ci/azure/install_certs.yml
- template: tools/ci/azure/update_hosts.yml
- template: tools/ci/azure/update_manifest.yml
- - script: python ./wpt run --no-manifest-update --no-fail-on-unexpected --install-fonts --test-types reftest testharness --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-tbpl - --log-tbpl-level info --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json edge_webdriver
+ - script: python ./wpt run --no-manifest-update --no-fail-on-unexpected --install-fonts --webdriver-arg=--verbose --test-types reftest testharness --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-tbpl - --log-tbpl-level info --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt edge_webdriver
displayName: 'Run tests'
- task: PublishBuildArtifacts@1
displayName: 'Publish results'
@@ -217,7 +217,7 @@ jobs:
- template: tools/ci/azure/install_safari.yml
- template: tools/ci/azure/update_hosts.yml
- template: tools/ci/azure/update_manifest.yml
- - script: no_proxy='*' ./wpt run --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --this-chunk=$(System.JobPositionInPhase) --total-chunks=$(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --channel preview safari
+ - script: no_proxy='*' ./wpt run --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --this-chunk=$(System.JobPositionInPhase) --total-chunks=$(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --channel preview safari
displayName: 'Run tests'
- task: PublishBuildArtifacts@1
displayName: 'Publish results'
diff --git a/tests/wpt/web-platform-tests/.taskcluster.yml b/tests/wpt/web-platform-tests/.taskcluster.yml
index 2212a047c15..435edf7c585 100644
--- a/tests/wpt/web-platform-tests/.taskcluster.yml
+++ b/tests/wpt/web-platform-tests/.taskcluster.yml
@@ -1,133 +1,51 @@
version: 1
+reporting: checks-v1
policy:
pullRequests: public
tasks:
- $flattenDeep:
- - $if: tasks_for == "github-push"
- then:
- $map:
- $flatten:
- $match: {
- event.ref == "refs/heads/master": [{name: firefox, channel: nightly}, {name: chrome, channel: dev}],
- event.ref == "refs/heads/epochs/daily": [{name: firefox, channel: stable}, {name: chrome, channel: stable}],
- event.ref == "refs/heads/epochs/weekly": [{name: firefox, channel: beta}, {name: chrome, channel: beta}]
- }
- each(browser):
- $map:
- - [testharness, 1, 15]
- - [testharness, 2, 15]
- - [testharness, 3, 15]
- - [testharness, 4, 15]
- - [testharness, 5, 15]
- - [testharness, 6, 15]
- - [testharness, 7, 15]
- - [testharness, 8, 15]
- - [testharness, 9, 15]
- - [testharness, 10, 15]
- - [testharness, 11, 15]
- - [testharness, 12, 15]
- - [testharness, 13, 15]
- - [testharness, 14, 15]
- - [testharness, 15, 15]
- - [reftest, 1, 10]
- - [reftest, 2, 10]
- - [reftest, 3, 10]
- - [reftest, 4, 10]
- - [reftest, 5, 10]
- - [reftest, 6, 10]
- - [reftest, 7, 10]
- - [reftest, 8, 10]
- - [reftest, 9, 10]
- - [reftest, 10, 10]
- - [wdspec, 1, 1]
- each(chunk):
- taskId: {$eval: 'as_slugid(browser.name + browser.channel + chunk[0] + str(chunk[1]))'}
- taskGroupId: {$eval: 'as_slugid("task group")'}
- created: {$fromNow: ''}
- deadline: {$fromNow: '24 hours'}
- provisionerId: aws-provisioner-v1
- workerType:
- $if: event.repository.full_name == 'web-platform-tests/wpt'
- then:
- wpt-docker-worker
- else:
- github-worker
- metadata:
- name: wpt-${browser.name}-${browser.channel}-${chunk[0]}-${chunk[1]}
- description: >-
- A subset of WPT's "${chunk[0]}" tests (chunk number ${chunk[1]}
- of ${chunk[2]}), run in the ${browser.channel} release of
- ${browser.name}.
- owner: ${event.pusher.email}
- source: ${event.repository.url}
- payload:
- image: harjgam/web-platform-tests:0.29
- maxRunTime: 7200
- artifacts:
- public/results:
- path: /home/test/artifacts
- type: directory
- command:
- - /bin/bash
- - --login
- - -c
- - set -ex;
- ~/start.sh
- ${event.repository.url}
- ${event.ref}
- ${event.after}
- ${browser.name}
- ${browser.channel};
- cd ~/web-platform-tests;
- ./tools/ci/taskcluster-run.py
- ${browser.name}
- --
- --channel=${browser.channel}
- --log-wptreport=../artifacts/wpt_report.json
- --log-wptscreenshot=../artifacts/wpt_screenshot.txt
- --no-fail-on-unexpected
- --test-type=${chunk[0]}
- --this-chunk=${chunk[1]}
- --total-chunks=${chunk[2]};
- - $if: tasks_for == "github-pull-request"
- # PR tasks that run the tests in various configurations
- then:
- # Taskcluster responds to a number of events issued by the GitHub API
- # which should not trigger re-validation.
- $if: event.action in ['opened', 'reopened', 'synchronize']
+ $let:
+ event_str: {$json: {$eval: event}}
+ in:
+ $flattenDeep:
+ - $if: tasks_for == "github-push"
then:
- $map: [{name: firefox, channel: nightly}, {name: chrome, channel: dev}]
+ $map:
+ $flatten:
+ $match: {
+ event.ref == "refs/heads/master": [{name: firefox, channel: nightly}, {name: chrome, channel: dev}],
+ event.ref == "refs/heads/epochs/daily": [{name: firefox, channel: stable}, {name: chrome, channel: stable}],
+ event.ref == "refs/heads/epochs/weekly": [{name: firefox, channel: beta}, {name: chrome, channel: beta}]
+ }
each(browser):
$map:
- - name: wpt-${browser.name}-${browser.channel}-stability
- checkout: FETCH_HEAD
- diff_range: HEAD^
- description: >-
- Verify that all tests affected by a pull request are stable
- when executed in ${browser.name}.
- extra_args: '--verify'
- - name: wpt-${browser.name}-${browser.channel}-results
- checkout: FETCH_HEAD
- diff_range: HEAD^
- description: >-
- Collect results for all tests affected by a pull request in
- ${browser.name}.
- extra_args: >-
- --no-fail-on-unexpected
- --log-wptreport=../artifacts/wpt_report.json
- --log-wptscreenshot=../artifacts/wpt_screenshot.txt
- - name: wpt-${browser.name}-${browser.channel}-results-without-changes
- checkout: FETCH_HEAD^
- diff_range: FETCH_HEAD
- description: >-
- Collect results for all tests affected by a pull request in
- ${browser.name} but without the changes in the PR.
- extra_args: >-
- --no-fail-on-unexpected
- --log-wptreport=../artifacts/wpt_report.json
- --log-wptscreenshot=../artifacts/wpt_screenshot.txt
- each(operation):
- taskId: {$eval: 'as_slugid(operation.name)'}
+ - [testharness, 1, 15]
+ - [testharness, 2, 15]
+ - [testharness, 3, 15]
+ - [testharness, 4, 15]
+ - [testharness, 5, 15]
+ - [testharness, 6, 15]
+ - [testharness, 7, 15]
+ - [testharness, 8, 15]
+ - [testharness, 9, 15]
+ - [testharness, 10, 15]
+ - [testharness, 11, 15]
+ - [testharness, 12, 15]
+ - [testharness, 13, 15]
+ - [testharness, 14, 15]
+ - [testharness, 15, 15]
+ - [reftest, 1, 10]
+ - [reftest, 2, 10]
+ - [reftest, 3, 10]
+ - [reftest, 4, 10]
+ - [reftest, 5, 10]
+ - [reftest, 6, 10]
+ - [reftest, 7, 10]
+ - [reftest, 8, 10]
+ - [reftest, 9, 10]
+ - [reftest, 10, 10]
+ - [wdspec, 1, 1]
+ each(chunk):
+ taskId: {$eval: 'as_slugid(browser.name + browser.channel + chunk[0] + str(chunk[1]))'}
taskGroupId: {$eval: 'as_slugid("task group")'}
created: {$fromNow: ''}
deadline: {$fromNow: '24 hours'}
@@ -139,101 +57,273 @@ tasks:
else:
github-worker
metadata:
- name: ${operation.name}
- description: ${operation.description}
- owner: ${event.pull_request.user.login}@users.noreply.github.com
+ name: wpt-${browser.name}-${browser.channel}-${chunk[0]}-${chunk[1]}
+ description: >-
+ A subset of WPT's "${chunk[0]}" tests (chunk number ${chunk[1]}
+ of ${chunk[2]}), run in the ${browser.channel} release of
+ ${browser.name}.
+ owner: ${event.pusher.email}
source: ${event.repository.url}
payload:
- image: harjgam/web-platform-tests:0.29
+ image: harjgam/web-platform-tests:0.30
maxRunTime: 7200
artifacts:
public/results:
path: /home/test/artifacts
type: directory
- # Fetch the GitHub-provided merge commit (rather than the pull
- # request branch) so that the tasks simulate the behavior of the
- # submitted patch after it is merged. Using the merge commit also
- # simplifies detection of modified files because the first parent
- # of the merge commit can consistently be used to summarize the
- # changes.
command:
- /bin/bash
- --login
- -c
- set -ex;
+ echo "wpt-${browser.name}-${browser.channel}-${chunk[0]}-${chunk[1]}";
+ export TASK_EVENT='${event_str}';
~/start.sh
- ${event.repository.clone_url}
- refs/pull/${event.number}/merge
- ${operation.checkout}
- ${browser.name}
- ${browser.channel};
+ ${event.repository.url}
+ ${event.ref}
+ ${event.after};
cd ~/web-platform-tests;
- ./tools/ci/taskcluster-run.py
- --commit-range ${operation.diff_range}
+ ./tools/ci/run_tc.py
+ --oom-killer
+ --hosts
+ --browser=${browser.name}
+ --channel=${browser.channel}
+ --xvfb
+ ./tools/ci/taskcluster-run.py
${browser.name}
--
--channel=${browser.channel}
- ${operation.extra_args};
- - $map:
- - name: lint
- description: >-
- Lint for wpt-specific requirements
- script: tools/ci/ci_lint.sh
- conditions:
- push
- pull-request
- each(operation):
- # Note: jsone doesn't short-circuit evaluation so all parts of the conditional are evaluated
- # Accessing properties using the [] notation allows them to evaluate as null in case they're undefined
- # TODO: Allow running pushes on branches other than master
- - $if: ("push" in operation.conditions && tasks_for == "github-push" && event['ref'] == "refs/heads/master") || ("pull-request" in operation.conditions && tasks_for == "github-pull-request" && event['action'] in ['opened', 'reopened', 'synchronize'])
+ --log-wptreport=../artifacts/wpt_report.json
+ --log-wptscreenshot=../artifacts/wpt_screenshot.txt
+ --no-fail-on-unexpected
+ --test-type=${chunk[0]}
+ --this-chunk=${chunk[1]}
+ --total-chunks=${chunk[2]};
+ - $if: tasks_for == "github-pull-request"
+ # PR tasks that run the tests in various configurations
+ then:
+ # Taskcluster responds to a number of events issued by the GitHub API
+ # which should not trigger re-validation.
+ $if: event.action in ['opened', 'reopened', 'synchronize']
then:
- $let:
- checkout_ref:
- $if: tasks_for == "github-push"
- then:
- ${event.ref}
- else:
- refs/pull/${event.number}/merge
- in:
- taskId: {$eval: 'as_slugid(operation.name)'}
- taskGroupId: {$eval: 'as_slugid("task group")'}
- created: {$fromNow: ''}
- deadline: {$fromNow: '24 hours'}
- provisionerId: aws-provisioner-v1
- workerType:
- $if: event.repository.full_name == 'web-platform-tests/wpt'
- then:
- wpt-docker-worker
- else:
- github-worker
- metadata:
- name: ${operation.name}
- description: ${operation.description}
- owner: ${event.sender.login}@users.noreply.github.com
- source: ${event.repository.url}
- payload:
- image: harjgam/web-platform-tests:0.29
- maxRunTime: 7200
- artifacts:
- public/results:
- path: /home/test/artifacts
- type: directory
- # Fetch the GitHub-provided merge commit (rather than the pull
- # request branch) so that the tasks simulate the behavior of the
- # submitted patch after it is merged. Using the merge commit also
- # simplifies detection of modified files because the first parent
- # of the merge commit can consistently be used to summarize the
- # changes.
- command:
- - /bin/bash
- - --login
- - -c
- - set -ex;
- ~/start.sh
- ${event.repository.clone_url}
- ${checkout_ref}
- FETCH_HEAD
- none;
- cd ~/web-platform-tests;
- ${operation.script};
+ $map: [{name: firefox, channel: nightly}, {name: chrome, channel: dev}]
+ each(browser):
+ $map:
+ # This is the main place to define new stability checks
+ - name: wpt-${browser.name}-${browser.channel}-stability
+ checkout: FETCH_HEAD
+ diff_range: HEAD^
+ description: >-
+ Verify that all tests affected by a pull request are stable
+ when executed in ${browser.name}.
+ extra_args: '--verify'
+ - name: wpt-${browser.name}-${browser.channel}-results
+ checkout: FETCH_HEAD
+ diff_range: HEAD^
+ description: >-
+ Collect results for all tests affected by a pull request in
+ ${browser.name}.
+ extra_args: >-
+ --no-fail-on-unexpected
+ --log-wptreport=../artifacts/wpt_report.json
+ --log-wptscreenshot=../artifacts/wpt_screenshot.txt
+ - name: wpt-${browser.name}-${browser.channel}-results-without-changes
+ checkout: FETCH_HEAD^
+ diff_range: FETCH_HEAD
+ description: >-
+ Collect results for all tests affected by a pull request in
+ ${browser.name} but without the changes in the PR.
+ extra_args: >-
+ --no-fail-on-unexpected
+ --log-wptreport=../artifacts/wpt_report.json
+ --log-wptscreenshot=../artifacts/wpt_screenshot.txt
+ each(operation):
+ taskId: {$eval: 'as_slugid(operation.name)'}
+ taskGroupId: {$eval: 'as_slugid("task group")'}
+ created: {$fromNow: ''}
+ deadline: {$fromNow: '24 hours'}
+ provisionerId: aws-provisioner-v1
+ workerType:
+ $if: event.repository.full_name == 'web-platform-tests/wpt'
+ then:
+ wpt-docker-worker
+ else:
+ github-worker
+ metadata:
+ name: ${operation.name}
+ description: ${operation.description}
+ owner: ${event.pull_request.user.login}@users.noreply.github.com
+ source: ${event.repository.url}
+ payload:
+ image: harjgam/web-platform-tests:0.30
+ maxRunTime: 7200
+ artifacts:
+ public/results:
+ path: /home/test/artifacts
+ type: directory
+ # Fetch the GitHub-provided merge commit (rather than the pull
+ # request branch) so that the tasks simulate the behavior of the
+ # submitted patch after it is merged. Using the merge commit also
+ # simplifies detection of modified files because the first parent
+ # of the merge commit can consistently be used to summarize the
+ # changes.
+ command:
+ - /bin/bash
+ - --login
+ - -c
+ - set -ex;
+ echo "${operation.name}";
+ export TASK_EVENT='${event_str}';
+ ~/start.sh
+ ${event.repository.clone_url}
+ refs/pull/${event.number}/merge
+ FETCH_HEAD;
+ cd web-platform-tests;
+ ./tools/ci/run_tc.py
+ --checkout=${operation.checkout}
+ --oom-killer
+ --browser=${browser.name}
+ --channel=${browser.channel}
+ --xvfb
+ stability
+ ./tools/ci/taskcluster-run.py
+ --commit-range ${operation.diff_range}
+ ${browser.name}
+ --
+ --channel=${browser.channel}
+ ${operation.extra_args};
+ - $map:
+ # This is the main point to define new CI checks other than stability checks
+ - name: lint
+ description: >-
+ Lint for wpt-specific requirements
+ script: ./tools/ci/run_tc.py --no-hosts lint tools/ci/ci_lint.sh
+ conditions:
+ push
+ pull-request
+ - name: update built tests
+ description: >-
+ Ensure test suites that require a build step are updated
+ script: ./tools/ci/run_tc.py --no-hosts update_built tools/ci/ci_built_diff.sh
+ conditions:
+ pull-request
+ - name: tools/ unittests (Python 2)
+ description: >-
+ Unit tests for tools running under Python 2.7, excluding wptrunner
+ script: >-
+ export TOXENV=py27;
+ export HYPOTHESIS_PROFILE=ci;
+ ./tools/ci/run_tc.py \
+ tools_unittest \
+ tools/ci/ci_tools_unittest.sh
+ conditions:
+ push
+ pull-request
+ - name: tools/ unittests (Python 3)
+ description: >-
+ Unit tests for tools running under Python 3, excluding wptrunner
+ script: >-
+ export TOXENV=py36;
+ export HYPOTHESIS_PROFILE=ci;
+ sudo apt install -qqy python3-pip;
+ ./tools/ci/run_tc.py \
+ tools_unittest \
+ tools/ci/ci_tools_unittest.sh
+ conditions:
+ push
+ pull-request
+ - name: tools/wpt/ tests
+ description: >-
+ Integration tests for wpt commands
+ script: >-
+ export TOXENV=py27;
+ sudo apt install -qqy libnss3-tools;
+ ./tools/ci/run_tc.py \
+ --oom-killer \
+ --browser=firefox \
+ --browser=chrome \
+ --channel=experimental \
+ --xvfb \
+ wpt_integration \
+ tools/ci/ci_wpt.sh
+ conditions:
+ pull-request
+ - name: resources/ tests
+ description: >-
+ Tests for testharness.js and other files in resources/
+ script: >-
+ export TOXENV=py27;
+ ./tools/ci/run_tc.py \
+ --browser=firefox \
+ --channel=experimental \
+ --xvfb \
+ resources_unittest \
+ tools/ci/ci_resources_unittest.sh
+ conditions:
+ pull-request
+ - name: infrastructure/ tests
+ description: >-
+ Smoketests for wptrunner
+ script: >-
+ sudo apt install -qqy libnss3-tools libappindicator1 fonts-liberation;
+ ./tools/ci/run_tc.py \
+ --oom-killer \
+ --browser=firefox \
+ --browser=chrome \
+ --channel=experimental \
+ --no-hosts \
+ --xvfb \
+ wptrunner_infrastructure \
+ tools/ci/ci_wptrunner_infrastructure.sh
+ conditions:
+ pull-request
+ each(operation):
+ # Note: jsone doesn't short-circuit evaluation so all parts of the conditional are evaluated
+ # Accessing properties using the [] notation allows them to evaluate as null in case they're undefined
+ # TODO: Allow running pushes on branches other than master
+ - $if: ("push" in operation.conditions && tasks_for == "github-push" && event['ref'] == "refs/heads/master") || ("pull-request" in operation.conditions && tasks_for == "github-pull-request" && event['action'] in ['opened', 'reopened', 'synchronize'])
+ then:
+ $let:
+ checkout_ref:
+ $if: tasks_for == "github-push"
+ then:
+ ${event.ref}
+ else:
+ refs/pull/${event.number}/merge
+ in:
+ taskId: {$eval: 'as_slugid(operation.name)'}
+ taskGroupId: {$eval: 'as_slugid("task group")'}
+ created: {$fromNow: ''}
+ deadline: {$fromNow: '24 hours'}
+ provisionerId: aws-provisioner-v1
+ workerType:
+ $if: event.repository.full_name == 'web-platform-tests/wpt'
+ then:
+ wpt-docker-worker
+ else:
+ github-worker
+ metadata:
+ name: ${operation.name}
+ description: ${operation.description}
+ owner: ${event.sender.login}@users.noreply.github.com
+ source: ${event.repository.url}
+ payload:
+ image: harjgam/web-platform-tests:0.30
+ maxRunTime: 7200
+ artifacts:
+ public/results:
+ path: /home/test/artifacts
+ type: directory
+ command:
+ - /bin/bash
+ - --login
+ - -c
+ - set -ex;
+ echo "${operation.name}";
+ export TASK_EVENT='${event_str}';
+ ~/start.sh
+ ${event.repository.clone_url}
+ ${checkout_ref}
+ FETCH_HEAD;
+ cd ~/web-platform-tests;
+ ${operation.script};
diff --git a/tests/wpt/web-platform-tests/.travis.yml b/tests/wpt/web-platform-tests/.travis.yml
index 20093dfd1d2..02d760ca98f 100644
--- a/tests/wpt/web-platform-tests/.travis.yml
+++ b/tests/wpt/web-platform-tests/.travis.yml
@@ -28,66 +28,11 @@ matrix:
secure: "EljDx50oNpDLs7rzwIv+z1PxIgB5KMnx1W0OQkpNvltR0rBW9g/aQaE+Z/c8M/sPqN1bkvKPybKzGKjb6j9Dw3/EJhah4SskH78r3yMAe2DU/ngxqqjjfXcCc2t5MKxzHAILTAxqScPj2z+lG1jeK1Z+K5hTbSP9lk+AvS0D16w="
file: $WPT_MANIFEST_FILE.gz
skip_cleanup: true
- - name: "update-built-tests.sh"
- if: type = pull_request
- os: linux
- python: "2.7"
- env: JOB=update_built SCRIPT=tools/ci/ci_built_diff.sh
- name: "build-css-testsuites.sh"
if: type = pull_request
os: linux
python: "2.7"
env: JOB=build_css SCRIPT=css/build-css-testsuites.sh
- - name: "tools/ unittests (Python 2)"
- if: type = pull_request
- os: linux
- python: "2.7"
- env: JOB=tools_unittest TOXENV=py27 HYPOTHESIS_PROFILE=ci SCRIPT=tools/ci/ci_tools_unittest.sh
- - name: "tools/ unittests (Python 3)"
- if: type = pull_request
- os: linux
- python: "3.6"
- env: JOB=tools_unittest TOXENV=py36 HYPOTHESIS_PROFILE=ci SCRIPT=tools/ci/ci_tools_unittest.sh
- - name: "tools/wpt/ tests"
- if: type = pull_request
- os: linux
- python: "2.7"
- addons:
- apt:
- packages:
- - libnss3-tools
- env: JOB=wpt_integration TOXENV=py27 SCRIPT=tools/ci/ci_wpt.sh
- addons:
- apt:
- packages:
- - fonts-liberation
- - libappindicator1
- - libnss3-tools
- - pulseaudio
- - name: "resources/ tests"
- if: type = pull_request
- os: linux
- python: "2.7"
- env: JOB=resources_unittest TOXENV=py27 SCRIPT=tools/ci/ci_resources_unittest.sh
- addons:
- apt:
- packages:
- - fonts-liberation
- - libappindicator1
- - libnss3-tools
- - pulseaudio
- - name: "infrastructure/ tests"
- if: type = pull_request
- os: linux
- python: "2.7"
- env: JOB=wptrunner_infrastructure SCRIPT=tools/ci/ci_wptrunner_infrastructure.sh
- addons:
- apt:
- packages:
- - fonts-liberation
- - libappindicator1
- - libnss3-tools
- - pulseaudio
exclude:
- env: # exclude empty env from the top-level above
allow_failures:
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbcursor-request.any.js b/tests/wpt/web-platform-tests/IndexedDB/idbcursor-request.any.js
new file mode 100644
index 00000000000..a62efc0b8eb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbcursor-request.any.js
@@ -0,0 +1,40 @@
+// META: script=support.js
+
+function cursorRequestTest({ useIndex, useKeyCursor }) {
+ indexeddb_test(
+ (t, db) => {
+ const objStore = db.createObjectStore("my_objectstore");
+ objStore.add("data", 1);
+ objStore.createIndex("my_index", "");
+ },
+ (t, db) => {
+ const tx = db.transaction("my_objectstore");
+ let source = tx.objectStore("my_objectstore");
+ if (useIndex) source = source.index('my_index');
+ const req = useKeyCursor ? source.openKeyCursor() : source.openCursor();
+ let cursor;
+
+ req.onsuccess = t.step_func(() => {
+ cursor = req.result;
+ assert_equals(cursor.request, req, 'cursor.request');
+ assert_readonly(cursor, 'request');
+ });
+
+ req.transaction.oncomplete = t.step_func(() => {
+ setTimeout(t.step_func(() => {
+ assert_equals(cursor.request, req, 'cursor.request after transaction complete');
+ t.done();
+ }), 0);
+ });
+
+ req.transaction.onerror = t.unreached_func('Transaction error');
+ },
+ `cursor.request from ${useIndex ? 'IDBIndex' : 'IDBObjectStore'}.${useKeyCursor ? 'openKeyCursor' : 'openCursor'}`
+ );
+}
+
+for (const useIndex of [false, true]) {
+ for (const useKeyCursor of [false, true]) {
+ cursorRequestTest({ useIndex, useKeyCursor });
+ }
+}
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbfactory-origin-isolation.html b/tests/wpt/web-platform-tests/IndexedDB/idbfactory-origin-isolation.html
new file mode 100644
index 00000000000..3f200877ba7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbfactory-origin-isolation.html
@@ -0,0 +1,41 @@
+
+Databases on different origins use separate locking
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/IndexedDB/resources/idbfactory-origin-isolation-iframe.html b/tests/wpt/web-platform-tests/IndexedDB/resources/idbfactory-origin-isolation-iframe.html
new file mode 100644
index 00000000000..d405ea48e15
--- /dev/null
+++ b/tests/wpt/web-platform-tests/IndexedDB/resources/idbfactory-origin-isolation-iframe.html
@@ -0,0 +1,50 @@
+
+This iframe keeps a transaction on a database alive indefinitely to test
+
diff --git a/tests/wpt/web-platform-tests/animation-worklet/common.js b/tests/wpt/web-platform-tests/animation-worklet/common.js
index b3ca522a32f..4a715a52ced 100644
--- a/tests/wpt/web-platform-tests/animation-worklet/common.js
+++ b/tests/wpt/web-platform-tests/animation-worklet/common.js
@@ -48,7 +48,7 @@ async function waitForAnimationFrameWithCondition(condition) {
do {
await new Promise(window.requestAnimationFrame);
} while (!condition())
-};
+}
async function waitForDocumentTimelineAdvance() {
const timeAtStart = document.timeline.currentTime;
@@ -56,3 +56,10 @@ async function waitForDocumentTimelineAdvance() {
await new Promise(window.requestAnimationFrame);
} while (timeAtStart === document.timeline.currentTime)
}
+
+// Wait until animation's effect has a non-null localTime.
+async function waitForNotNullLocalTime(animation) {
+ await waitForAnimationFrameWithCondition(_ => {
+ return animation.effect.getComputedTiming().localTime !== null;
+ });
+}
\ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-fill-mode.https.html b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-fill-mode.https.html
index b910ab280ec..725d10de438 100644
--- a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-fill-mode.https.html
+++ b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-fill-mode.https.html
@@ -50,110 +50,98 @@ function setupAndRegisterTests() {
}
async function effect_with_fill_mode_forwards(t) {
- const effect_with_fill_forwards = new KeyframeEffect(
- target,
- { opacity: [0.5, 0] },
- { duration: 1000, fill: 'forwards' });
- const animation = new WorkletAnimation(
- 'constant_time',
- effect_with_fill_forwards);
- animation.play();
+ const effect_with_fill_forwards = new KeyframeEffect(
+ target,
+ { opacity: [0.5, 0] },
+ { duration: 1000, fill: 'forwards' });
+ const animation = new WorkletAnimation(
+ 'constant_time',
+ effect_with_fill_forwards);
+ animation.play();
+ await waitForNotNullLocalTime(animation);
- await waitForAsyncAnimationFrames(1);
- await waitForNextFrame();
+ assert_equals(getComputedStyle(target).opacity, '0');
- assert_equals(getComputedStyle(target).opacity, '0');
-
- animation.cancel();
+ animation.cancel();
}
async function effect_without_fill_mode_forwards(t) {
- const effect_without_fill_forwards = new KeyframeEffect(
- target,
- { opacity: [0.5, 0] },
- { duration: 1000 });
- const animation = new WorkletAnimation(
- 'constant_time',
- effect_without_fill_forwards);
- animation.play();
+ const effect_without_fill_forwards = new KeyframeEffect(
+ target,
+ { opacity: [0.5, 0] },
+ { duration: 1000 });
+ const animation = new WorkletAnimation(
+ 'constant_time',
+ effect_without_fill_forwards);
+ animation.play();
+ await waitForNotNullLocalTime(animation);
- await waitForAsyncAnimationFrames(1);
- await waitForNextFrame();
+ assert_equals(getComputedStyle(target).opacity, '1');
- assert_equals(getComputedStyle(target).opacity, '1');
-
- animation.cancel();
+ animation.cancel();
}
async function effect_without_fill_forwards_at_end(t) {
- const effect_without_fill_forwards_at_end = new KeyframeEffect(
- target,
- { opacity: [0.5, 0] },
- { duration: 2000 });
- const animation = new WorkletAnimation(
- 'constant_time',
- effect_without_fill_forwards_at_end);
- animation.play();
+ const effect_without_fill_forwards_at_end = new KeyframeEffect(
+ target,
+ { opacity: [0.5, 0] },
+ { duration: 2000 });
+ const animation = new WorkletAnimation(
+ 'constant_time',
+ effect_without_fill_forwards_at_end);
+ animation.play();
+ await waitForNotNullLocalTime(animation);
- await waitForAsyncAnimationFrames(1);
- await waitForNextFrame();
+ assert_equals(getComputedStyle(target).opacity, '1');
- assert_equals(getComputedStyle(target).opacity, '1');
-
- animation.cancel();
+ animation.cancel();
}
async function effect_with_fill_backwards(t) {
- const effect_with_fill_backwards = new KeyframeEffect(
- target,
- { opacity: [0.5, 0] },
- { duration: 1000, delay: 2001, fill: 'backwards' });
- const animation = new WorkletAnimation(
- 'constant_time',
- effect_with_fill_backwards);
- animation.play();
+ const effect_with_fill_backwards = new KeyframeEffect(
+ target,
+ { opacity: [0.5, 0] },
+ { duration: 1000, delay: 2001, fill: 'backwards' });
+ const animation = new WorkletAnimation(
+ 'constant_time',
+ effect_with_fill_backwards);
+ animation.play();
+ await waitForNotNullLocalTime(animation);
- await waitForAsyncAnimationFrames(1);
- await waitForNextFrame();
+ assert_equals(getComputedStyle(target).opacity, '0.5');
- assert_equals(getComputedStyle(target).opacity, '0.5');
-
- animation.cancel();
+ animation.cancel();
}
async function effect_without_fill_backwards(t) {
- const effect_without_fill_backwards = new KeyframeEffect(
- target,
- { opacity: [0.5, 0] },
- { duration: 1000, delay: 2001 });
- const animation = new WorkletAnimation(
- 'constant_time',
- effect_without_fill_backwards);
- animation.play();
+ const effect_without_fill_backwards = new KeyframeEffect(
+ target,
+ { opacity: [0.5, 0] },
+ { duration: 1000, delay: 2001 });
+ const animation = new WorkletAnimation(
+ 'constant_time',
+ effect_without_fill_backwards);
+ animation.play();
+ waitForNotNullLocalTime(animation);
- await waitForAsyncAnimationFrames(1);
- await waitForNextFrame();
+ assert_equals(getComputedStyle(target).opacity, '1');
- assert_equals(getComputedStyle(target).opacity, '1');
-
- animation.cancel();
+ animation.cancel();
}
async function effect_without_fill_backwards_at_start(t) {
- const effect_without_fill_backwards_at_start = new KeyframeEffect(
- target,
- { opacity: [0.5, 0] },
- { duration: 1000, delay: 2000 });
- const animation = new WorkletAnimation(
- 'constant_time',
- effect_without_fill_backwards_at_start);
- animation.play();
+ const effect_without_fill_backwards_at_start = new KeyframeEffect(
+ target,
+ { opacity: [0.5, 0] },
+ { duration: 1000, delay: 2000 });
+ const animation = new WorkletAnimation(
+ 'constant_time',
+ effect_without_fill_backwards_at_start);
+ animation.play();
+ await waitForNotNullLocalTime(animation);
- await waitForAsyncAnimationFrames(1);
- await waitForNextFrame();
+ assert_equals(getComputedStyle(target).opacity, '0.5');
- assert_equals(getComputedStyle(target).opacity, '0.5');
-
- animation.cancel();
+ animation.cancel();
}
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-interfaces.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-interfaces.https.html
index 0617ac11ac2..e0d0977959b 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/async-interfaces.https.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/async-interfaces.https.html
@@ -1,11 +1,11 @@
Clipboard IDL test
-
-
-
-
-
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-navigator-clipboard-basics.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-navigator-clipboard-basics.https.html
index 2d2ebf6c6c2..b71b43efe06 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/async-navigator-clipboard-basics.https.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/async-navigator-clipboard-basics.https.html
@@ -9,55 +9,59 @@ test(() => {
assert_not_equals(navigator.clipboard, undefined);
assert_true(navigator.clipboard instanceof Clipboard);
assert_equals(navigator.clipboard, navigator.clipboard);
-}, "navigator.clipboard exists");
+}, 'navigator.clipboard exists');
promise_test(async () => {
- const blob = new Blob(["hello"], {type: 'text/plain'});
- await navigator.clipboard.write([blob]);
-}, "navigator.clipboard.write([text/plain Blob]) succeeds");
+ const blob = new Blob(['hello'], {type: 'text/plain'});
+ await navigator.clipboard.write({'text/plain': blob});
+}, 'navigator.clipboard.write({string : text/plain Blob}) succeeds');
promise_test(async t => {
await promise_rejects(t, new TypeError(),
navigator.clipboard.write());
-}, "navigator.clipboard.write() fails (expect [Blob])");
+}, 'navigator.clipboard.write() fails (expect {string : Blob})');
promise_test(async t => {
await promise_rejects(t, new TypeError(),
navigator.clipboard.write(null));
-}, "navigator.clipboard.write(null) fails (expect [Blob])");
+}, 'navigator.clipboard.write(null) fails (expect {string : Blob})');
promise_test(async t => {
await promise_rejects(t, new TypeError(),
- navigator.clipboard.write("Bad string"));
-}, "navigator.clipboard.write(DOMString) fails (expect [Blob])");
+ navigator.clipboard.write('Bad string'));
+}, 'navigator.clipboard.write(DOMString) fails (expect {string : Blob})');
+
+promise_test(async t => {
+ const blob = new Blob(['hello'], {type: 'text/plain'});
+ await promise_rejects(t, 'NotAllowedError',
+ navigator.clipboard.write(blob));
+}, 'navigator.clipboard.write(Blob) fails (expect {string : Blob})');
promise_test(async () => {
- await navigator.clipboard.writeText("New clipboard text");
-}, "navigator.clipboard.writeText(DOMString) succeeds");
+ await navigator.clipboard.writeText('New clipboard text');
+}, 'navigator.clipboard.writeText(DOMString) succeeds');
promise_test(async t => {
await promise_rejects(t, new TypeError(),
navigator.clipboard.writeText());
-}, "navigator.clipboard.writeText() fails (expect DOMString)");
+}, 'navigator.clipboard.writeText() fails (expect DOMString)');
promise_test(async () => {
const fetched = await fetch(
'http://localhost:8001/clipboard-apis/resources/greenbox.png');
const image = await fetched.blob();
- await navigator.clipboard.write([image]);
-}, "navigator.clipboard.write([image/png Blob]) succeeds");
+ await navigator.clipboard.write({'image/png' : image});
+}, 'navigator.clipboard.write({string : image/png Blob}) succeeds');
promise_test(async () => {
const result = await navigator.clipboard.read();
- assert_true(result instanceof Array);
- assert_true(result[0] instanceof Blob);
- assert_equals(typeof result, "object");
-}, "navigator.clipboard.read() succeeds");
+ assert_true(result instanceof Object);
+}, 'navigator.clipboard.read() succeeds');
promise_test(async () => {
const result = await navigator.clipboard.readText();
- assert_equals(typeof result, "string");
-}, "navigator.clipboard.readText() succeeds");
+ assert_equals(typeof result, 'string');
+}, 'navigator.clipboard.readText() succeeds');
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobs-read-blobs-manual.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobs-read-blobs-manual.https.html
index e616b5ed794..57cf542ca77 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobs-read-blobs-manual.https.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobs-read-blobs-manual.https.html
@@ -13,19 +13,20 @@ async function loadBlob(fileName) {
}
promise_test(async t => {
- const blobText = new Blob(["test text"], {type: 'text/plain'});
+ const blobText = new Blob(['test text'], {type: 'text/plain'});
const blobImage = await loadBlob('resources/greenbox.png');
- assert_equals(blobText.type, "text/plain");
- assert_equals(blobImage.type, "image/png");
+ assert_equals(blobText.type, 'text/plain');
+ assert_equals(blobImage.type, 'image/png');
- await navigator.clipboard.write([blobText, blobImage]);
+ await navigator.clipboard.write(
+ {'text/plain' : blobText, 'image/png' : blobImage});
const output = await navigator.clipboard.read();
- assert_equals(output.length, 2);
- assert_equals(output[0].type, "text/plain");
- assert_equals(output[1].type, "image/png");
-}, "Verify write and read clipboard (multiple blobs)");
+ assert_equals(Object.keys(output).length, 2);
+ assert_equals(output['text/plain'].type, 'text/plain');
+ assert_equals(output['image/png'].type, 'image/png');
+}, 'Verify write and read clipboard (multiple blobs)');
Note: This is a manual test because it writes/reads to the shared system
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobtext-read-blobtext-manual.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobtext-read-blobtext-manual.https.html
index bc8511efa72..fded721f9bf 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobtext-read-blobtext-manual.https.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobtext-read-blobtext-manual.https.html
@@ -10,19 +10,19 @@ async function readWriteTest(textInput) {
promise_test(async t => {
const blobInput = new Blob([textInput], {type: 'text/plain'});
- await navigator.clipboard.write([blobInput]);
+ await navigator.clipboard.write({'text/plain': blobInput});
const blobsOutput = await navigator.clipboard.read();
- assert_equals(blobsOutput.length, 1);
- const blobOutput = blobsOutput[0];
- assert_equals(blobOutput.type, "text/plain");
+ assert_equals(Object.keys(blobsOutput).length, 1);
+ const blobOutput = blobsOutput['text/plain'];
+ assert_equals(blobOutput.type, 'text/plain');
const textOutput = await (new Response(blobOutput)).text();
assert_equals(textOutput, textInput);
- }, "Verify write and read clipboard given text: " + textInput);
+ }, 'Verify write and read clipboard given text: ' + textInput);
}
-readWriteTest("Clipboard write ([text/plain Blob]) -> read ([text/plain Blob]) test");
-readWriteTest("non-Latin1 text encoding test データ");
+readWriteTest('Clipboard write ([text/plain Blob]) -> read ([text/plain Blob]) test');
+readWriteTest('non-Latin1 text encoding test データ');
Note: This is a manual test because it writes/reads to the shared system
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobtext-read-text-manual.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobtext-read-text-manual.https.html
index b1b85de65e8..98ff7c27b66 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobtext-read-text-manual.https.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobtext-read-text-manual.https.html
@@ -8,15 +8,15 @@ async function readWriteTest(textInput) {
promise_test(async t => {
const blobInput = new Blob([textInput], {type: 'text/plain'});
- await navigator.clipboard.write([blobInput]);
+ await navigator.clipboard.write({'text/plain': blobInput});
const textOutput = await navigator.clipboard.readText();
assert_equals(textOutput, textInput);
- }, "Verify write and read clipboard given text: " + textInput);
+ }, 'Verify write and read clipboard given text: ' + textInput);
}
-readWriteTest("Clipboard write ([text/plain Blob]) -> read text test");
-readWriteTest("non-Latin1 text encoding test データ");
+readWriteTest('Clipboard write ([text/plain Blob]) -> read text test');
+readWriteTest('non-Latin1 text encoding test データ');
Note: This is a manual test because it writes/reads to the shared system
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-write-duplicate-mime-type-manual.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-write-duplicate-mime-type-manual.https.html
deleted file mode 100644
index 8e249fc993a..00000000000
--- a/tests/wpt/web-platform-tests/clipboard-apis/async-write-duplicate-mime-type-manual.https.html
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
- Async Clipboard write duplicate mime type test
-
-
-
-
-
-
- Note: This is a manual test because it writes/reads to the shared system
- clipboard and thus cannot be run async with other tests that might interact
- with the clipboard.
-
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-write-image-read-image-manual.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-write-image-read-image-manual.https.html
index 76d3d872c98..6c326cf8dde 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/async-write-image-read-image-manual.https.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/async-write-image-read-image-manual.https.html
@@ -9,11 +9,11 @@
The bottom image should display the same image as the top image.
Original Image:
-
Image after copy/paste:
-
-
+
+
Note: This is a manual test because it writes/reads to the shared system
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-write-text-read-blobtext-manual.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-write-text-read-blobtext-manual.https.html
index b54fa609b65..ab85a6fc649 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/async-write-text-read-blobtext-manual.https.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/async-write-text-read-blobtext-manual.https.html
@@ -8,17 +8,17 @@ async function readWriteTest(textInput) {
promise_test(async t => {
await navigator.clipboard.writeText(textInput);
const blobsOutput = await navigator.clipboard.read();
- assert_equals(blobsOutput.length, 1);
- const blobOutput = blobsOutput[0];
- assert_equals(blobOutput.type, "text/plain");
+ assert_equals(Object.keys(blobsOutput).length, 1);
+ const blobOutput = blobsOutput['text/plain'];
+ assert_equals(blobOutput.type, 'text/plain');
const textOutput = await (new Response(blobOutput)).text();
assert_equals(textOutput, textInput);
- }, "Verify write and read clipboard given text: " + textInput);
+ }, 'Verify write and read clipboard given text: ' + textInput);
}
-readWriteTest("Clipboard write text -> read ([text/plain Blob]) test");
-readWriteTest("non-Latin1 text encoding test データ");
+readWriteTest('Clipboard write text -> read ([text/plain Blob]) test');
+readWriteTest('non-Latin1 text encoding test データ');
Note: This is a manual test because it writes/reads to the shared system
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-write-text-read-text-manual.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-write-text-read-text-manual.https.html
index 496bdd78c7a..25c7edb43f0 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/async-write-text-read-text-manual.https.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/async-write-text-read-text-manual.https.html
@@ -10,11 +10,11 @@ async function readWriteTest(textInput) {
const textOutput = await navigator.clipboard.readText();
assert_equals(textOutput, textInput);
- }, "Verify write and read clipboard given text: " + textInput);
+ }, 'Verify write and read clipboard given text: ' + textInput);
}
-readWriteTest("Clipboard write text -> read text test");
-readWriteTest("non-Latin1 text encoding test データ");
+readWriteTest('Clipboard write text -> read text test');
+readWriteTest('non-Latin1 text encoding test データ');
Note: This is a manual test because it writes/reads to the shared system
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/copy-event-manual.html b/tests/wpt/web-platform-tests/clipboard-apis/copy-event-manual.html
index e4cf3379ace..6f687af196f 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/copy-event-manual.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/copy-event-manual.html
@@ -11,9 +11,9 @@ async_test(t => {
document.oncopy = t.step_func_done(event => {
// Nothing can be asserted about the event target until
// https://github.com/w3c/clipboard-apis/issues/70 is resolved.
- // assert_equals(event.target, document.body, "event.target");
- assert_true(event.isTrusted, "event.isTrusted");
- assert_true(event.composed, "event.composed");
+ // assert_equals(event.target, document.body, 'event.target');
+ assert_true(event.isTrusted, 'event.isTrusted');
+ assert_true(event.composed, 'event.composed');
});
});
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/cut-event-manual.html b/tests/wpt/web-platform-tests/clipboard-apis/cut-event-manual.html
index abef6f94bf6..c5593171754 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/cut-event-manual.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/cut-event-manual.html
@@ -11,9 +11,9 @@ async_test(t => {
document.oncut = t.step_func_done(event => {
// Nothing can be asserted about the event target until
// https://github.com/w3c/clipboard-apis/issues/70 is resolved.
- // assert_equals(event.target, document.body, "event.target");
- assert_true(event.isTrusted, "event.isTrusted");
- assert_true(event.composed, "event.composed");
+ // assert_equals(event.target, document.body, 'event.target');
+ assert_true(event.isTrusted, 'event.isTrusted');
+ assert_true(event.composed, 'event.composed');
});
});
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/paste-event-manual.html b/tests/wpt/web-platform-tests/clipboard-apis/paste-event-manual.html
index 4131a41bff6..19e6b95c5f3 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/paste-event-manual.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/paste-event-manual.html
@@ -9,13 +9,13 @@
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-width-overflow-auto.tentative.html b/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-width-overflow-auto.tentative.html
deleted file mode 100644
index 8310e66cc4a..00000000000
--- a/tests/wpt/web-platform-tests/css/css-flexbox/intrinsic-width-overflow-auto.tentative.html
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-container-baseline-001.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-container-baseline-001.html
new file mode 100644
index 00000000000..d352977f931
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-container-baseline-001.html
@@ -0,0 +1,153 @@
+
+
+CSS Grid Layout Test: Grid container baseline
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-position/position-absolute-crash-chrome-002.html b/tests/wpt/web-platform-tests/css/css-position/position-absolute-crash-chrome-002.html
index 9a4ff0ae583..e7ed1daba51 100644
--- a/tests/wpt/web-platform-tests/css/css-position/position-absolute-crash-chrome-002.html
+++ b/tests/wpt/web-platform-tests/css/css-position/position-absolute-crash-chrome-002.html
@@ -1,5 +1,5 @@
-CSS Position Absolute: Chrome chrash
+CSS Position Absolute: Chrome crash
diff --git a/tests/wpt/web-platform-tests/css/css-position/position-absolute-crash-chrome-003.html b/tests/wpt/web-platform-tests/css/css-position/position-absolute-crash-chrome-003.html
new file mode 100644
index 00000000000..c443e836e57
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/position-absolute-crash-chrome-003.html
@@ -0,0 +1,29 @@
+
+CSS Position Absolute: Chrome crash
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-position/position-absolute-in-inline-001.html b/tests/wpt/web-platform-tests/css/css-position/position-absolute-in-inline-001.html
new file mode 100644
index 00000000000..204260ee678
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/position-absolute-in-inline-001.html
@@ -0,0 +1,25 @@
+
+
+
+ Absolute inside inline container location should be correct
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-position/position-sticky-scroll-with-clip-and-abspos-ref.html b/tests/wpt/web-platform-tests/css/css-position/position-sticky-scroll-with-clip-and-abspos-ref.html
new file mode 100644
index 00000000000..a36934e3807
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/position-sticky-scroll-with-clip-and-abspos-ref.html
@@ -0,0 +1,33 @@
+
+
+
+position:sticky should operate correctly
+
+
+
+
+
+There should be text visible below.
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-position/position-sticky-scroll-with-clip-and-abspos.html b/tests/wpt/web-platform-tests/css/css-position/position-sticky-scroll-with-clip-and-abspos.html
new file mode 100644
index 00000000000..46085b49b4c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/position-sticky-scroll-with-clip-and-abspos.html
@@ -0,0 +1,33 @@
+
+
+
+position:sticky should operate correctly
+
+
+
+
+
+There should be text visible below.
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-tables/caption-writing-mode-002.html b/tests/wpt/web-platform-tests/css/css-tables/caption-writing-mode-002.html
new file mode 100644
index 00000000000..8a2b6086422
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-tables/caption-writing-mode-002.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+ caption
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/subpixel-perspective-backface-hidden-ref.html b/tests/wpt/web-platform-tests/css/css-transforms/subpixel-perspective-backface-hidden-ref.html
new file mode 100644
index 00000000000..8413e3e2d2c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transforms/subpixel-perspective-backface-hidden-ref.html
@@ -0,0 +1,4 @@
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/subpixel-perspective-backface-hidden.html b/tests/wpt/web-platform-tests/css/css-transforms/subpixel-perspective-backface-hidden.html
new file mode 100644
index 00000000000..e24539bfa2f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transforms/subpixel-perspective-backface-hidden.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/subpixel-perspective-translate-z-0-ref.html b/tests/wpt/web-platform-tests/css/css-transforms/subpixel-perspective-translate-z-0-ref.html
new file mode 100644
index 00000000000..5f3a8e279b4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transforms/subpixel-perspective-translate-z-0-ref.html
@@ -0,0 +1,4 @@
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/subpixel-perspective-translate-z-0.html b/tests/wpt/web-platform-tests/css/css-transforms/subpixel-perspective-translate-z-0.html
new file mode 100644
index 00000000000..4033e46f8ac
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transforms/subpixel-perspective-translate-z-0.html
@@ -0,0 +1,10 @@
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable.html b/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable.html
index 5ee86ae4a67..c7ae5f27b8b 100644
--- a/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable.html
+++ b/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable.html
@@ -568,5 +568,11 @@ test(() => {
assert_equals(getComputedStyle(shadowDiv).color, "rgb(0, 0, 0)");
}, 'Adopting a shadow host will empty adoptedStyleSheets if adopting to a different document');
-
+test(() => {
+ const host = document.createElement("div");
+ const root = host.attachShadow({mode: "open"});
+ root.adoptedStyleSheets = [new CSSStyleSheet()];
+ document.body.offsetTop;
+}, 'Forcing a style update after adding an adopted stylesheet on a disconnected shadow root should not crash.');
+
diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/lint-tool.md b/tests/wpt/web-platform-tests/docs/_writing-tests/lint-tool.md
index 498df7f293d..774366159ab 100644
--- a/tests/wpt/web-platform-tests/docs/_writing-tests/lint-tool.md
+++ b/tests/wpt/web-platform-tests/docs/_writing-tests/lint-tool.md
@@ -21,7 +21,7 @@ you must either [fix all lint errors](#fixing-lint-errors), or you must
You must fix any errors the lint tool reports, unless an error is for
something essential to a certain test or that for some other
exceptional reason shouldn't prevent the test from being merged; in
-those cases you can [whitelist test files](#updating-the-whiteslist)
+those cases you can [whitelist test files](#updating-the-whitelist)
to suppress the errors. In all other cases, follow the instructions
below to fix all errors reported.
diff --git a/tests/wpt/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements.html b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements.html
index 008eb30cf6b..a295ce1ef78 100644
--- a/tests/wpt/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements.html
+++ b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements.html
@@ -1,5 +1,6 @@
+
Events must dispatch on disabled elements
diff --git a/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-idle-detection-worker.js b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-idle-detection-worker.js
index c6b8a7c8872..2e4e3cdc727 100644
--- a/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-idle-detection-worker.js
+++ b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-idle-detection-worker.js
@@ -5,9 +5,11 @@ if (typeof postMessage === 'function') {
onmessage = event => {
switch(event.data.type) {
case 'ready':
- navigator.idle.query().then(
- () => postMessage({ enabled: true }),
- error => postMessage ({ enabled: false }));
+ new IdleDetector().start().then(() => {
+ postMessage({ enabled: true });
+ }, error => {
+ postMessage ({ enabled: false });
+ });
break;
}
};
diff --git a/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-idle-detection.html b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-idle-detection.html
index e542e3b8912..65a578181b9 100644
--- a/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-idle-detection.html
+++ b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-idle-detection.html
@@ -1,9 +1,10 @@
diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-css.py b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-css.py
index 9566833e507..a6ae546d065 100644
--- a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-css.py
+++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-css.py
@@ -1,18 +1,23 @@
def main(request, response):
token = request.GET.first("token", None)
- value = request.server.stash.take(token)
- count = 0
- if value != None:
- count = int(value)
- if request.GET.first("query", None) != None:
+ is_query = request.GET.first("query", None) != None
+ with request.server.stash.lock:
+ value = request.server.stash.take(token)
+ count = 0
+ if value != None:
+ count = int(value)
+ if is_query:
+ if count < 2:
+ request.server.stash.put(token, count)
+ else:
+ count = count + 1
+ request.server.stash.put(token, count)
+ if is_query:
headers = [("Count", count)]
content = ""
- if count < 2:
- request.server.stash.put(token, count)
return 200, headers, content
else:
- count = count + 1
content = "body { background: rgb(0, 128, 0); }"
if count > 1:
content = "body { background: rgb(255, 0, 0); }"
@@ -20,5 +25,4 @@ def main(request, response):
headers = [("Content-Type", "text/css"),
("Cache-Control", "private, max-age=0, stale-while-revalidate=60")]
- request.server.stash.put(token, count)
return 200, headers, content
diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-image.py b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-image.py
index e0cf94bcd0a..4b67184185e 100644
--- a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-image.py
+++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-image.py
@@ -3,18 +3,24 @@ import os.path
def main(request, response):
token = request.GET.first("token", None)
- value = request.server.stash.take(token)
- count = 0
- if value != None:
- count = int(value)
- if request.GET.first("query", None) != None:
+ is_query = request.GET.first("query", None) != None
+ with request.server.stash.lock:
+ value = request.server.stash.take(token)
+ count = 0
+ if value != None:
+ count = int(value)
+ if is_query:
+ if count < 2:
+ request.server.stash.put(token, count)
+ else:
+ count = count + 1
+ request.server.stash.put(token, count)
+
+ if is_query:
headers = [("Count", count)]
content = ""
- if count < 2:
- request.server.stash.put(token, count)
return 200, headers, content
else:
- count = count + 1
filename = "green-16x16.png"
if count > 1:
filename = "green-256x256.png"
@@ -22,7 +28,6 @@ def main(request, response):
path = os.path.join(os.path.dirname(__file__), "../../images", filename)
body = open(path, "rb").read()
- request.server.stash.put(token, count)
response.add_required_headers = False
response.writer.write_status(200)
response.writer.write_header("content-length", len(body))
diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-script.py b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-script.py
index 5ea5987db3d..8ad54671f42 100644
--- a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-script.py
+++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-script.py
@@ -6,23 +6,27 @@ def id_token():
def main(request, response):
token = request.GET.first("token", None)
- value = request.server.stash.take(token)
- count = 0
- if value != None:
- count = int(value)
- if request.GET.first("query", None) != None:
+ is_query = request.GET.first("query", None) != None
+ with request.server.stash.lock:
+ value = request.server.stash.take(token)
+ count = 0
+ if value != None:
+ count = int(value)
+ if is_query:
+ if count < 2:
+ request.server.stash.put(token, count)
+ else:
+ count = count + 1
+ request.server.stash.put(token, count)
+
+ if is_query:
headers = [("Count", count)]
content = ""
- if count < 2:
- request.server.stash.put(token, count)
return 200, headers, content
else:
- count = count + 1
-
unique_id = id_token()
headers = [("Content-Type", "text/javascript"),
("Cache-Control", "private, max-age=0, stale-while-revalidate=60"),
("Unique-Id", unique_id)]
content = "report('{}')".format(unique_id)
- request.server.stash.put(token, count)
return 200, headers, content
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/TextTrack/activeCues.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/TextTrack/activeCues.html
index ac0f56f7d54..7a57826f309 100644
--- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/TextTrack/activeCues.html
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/TextTrack/activeCues.html
@@ -77,11 +77,8 @@ test1.step(function(){
test3.step(function(){
var c3 = new VTTCue(0, 2, "text3");
t1.addCue(c3);
- assert_equals(t1.activeCues.length, 1, "t1.activeCues.length after adding a cue in the same script");
- test3.step_timeout(function(){
- assert_equals(t1.activeCues.length, 2, "t1.activeCues.length after the event loop has spun");
- test3.done();
- }, 0);
+ assert_equals(t1.activeCues.length, 2, "t1.activeCues.length should be changed immediately");
+ test3.done();
});
test2.done();
});
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cues-enter-exit.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cues-enter-exit.html
index 970666793a7..707240415dd 100644
--- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cues-enter-exit.html
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cues-enter-exit.html
@@ -25,7 +25,7 @@
}
var cueCount = 0;
- function cueEntered() {
+ function cueEntered(event) {
var currentCue = event.target;
// This cue is the currently active cue.
diff --git a/tests/wpt/web-platform-tests/idle-detection/basics.tentative.https.any.js b/tests/wpt/web-platform-tests/idle-detection/basics.tentative.https.any.js
index ef5de2164ed..df547570a78 100644
--- a/tests/wpt/web-platform-tests/idle-detection/basics.tentative.https.any.js
+++ b/tests/wpt/web-platform-tests/idle-detection/basics.tentative.https.any.js
@@ -3,70 +3,76 @@
'use strict';
promise_test(async t => {
- let promise = navigator.idle.query();
- assert_equals(promise.constructor, Promise,
- 'query() returns a promise');
+ let status = new IdleDetector();
- let status = await promise;
- assert_true(status instanceof IdleStatus,
- 'query() promise resolves to an IdleStatus');
+ let watcher = new EventWatcher(t, status, ["change"]);
+
+ await status.start();
+
+ await watcher.wait_for("change");
assert_true(['active', 'idle'].includes(status.state.user),
'status has a valid user state');
assert_true(['locked', 'unlocked'].includes(status.state.screen),
'status has a valid screen state');
-}, 'query() basics');
+}, 'start() basics');
promise_test(async t => {
let used = false;
- await navigator.idle.query({
+ new IdleDetector({
get threshold() {
used = true;
return 1;
}
});
- assert_true(used, 'query() options "threshold" member was used');
-}, 'query() uses threshold property');
+ assert_true(used, 'constructor options "threshold" member was used');
+}, 'constructor uses threshold property');
promise_test(async t => {
- return promise_rejects(
- t,
- new TypeError,
- navigator.idle.query({threshold: 0}),
- 'Threshold of 0 should reject');
-}, 'query() throws with invalid threshold (0)');
+ try {
+ new IdleDetector({threshold: 0});
+ assert_unreached('Threshold of 0 should reject');
+ } catch (error) {
+ assert_equals(error.name, 'TypeError');
+ }
+}, 'constructor throws with invalid threshold (0)');
promise_test(async t => {
- return promise_rejects(
- t,
- new TypeError,
- navigator.idle.query({threshold: null}),
- 'Threshold of null should reject');
-}, 'query() throws with invalid threshold (null)');
+ try {
+ new IdleDetector({threshold: null});
+ assert_unreached('Threshold of null should reject');
+ } catch (error) {
+ assert_equals(error.name, 'TypeError');
+ }
+}, 'constructor throws with invalid threshold (null)');
promise_test(async t => {
- return promise_rejects(
- t,
- new TypeError,
- navigator.idle.query({threshold: -1}),
- 'Threshold of negative numbers should reject');
-}, 'query() throws with invalid threshold (-1)');
+ try {
+ new IdleDetector({threshold: -1});
+ assert_unreached('Threshold of negative numbers should reject');
+ } catch (error) {
+ assert_equals(error.name, 'TypeError');
+ }
+}, 'constructor throws with invalid threshold (-1)');
promise_test(async t => {
- return promise_rejects(
- t,
- new TypeError,
- navigator.idle.query({threshold: NaN}),
- 'Threshold of NaN should reject');
-}, 'query() throws with invalid threshold (NaN)');
+ try {
+ new IdleDetector({threshold: NaN});
+ assert_unreached('Threshold of NaN should reject');
+ } catch (error) {
+ assert_equals(error.name, 'TypeError');
+ }
+}, 'constructor throws with invalid threshold (NaN)');
promise_test(async t => {
- return navigator.idle.query();
-}, 'query() uses a default value for the threshold when none is passed');
+ new IdleDetector();
+}, 'constructor uses a default value for the threshold when none is passed');
promise_test(async t => {
- return navigator.idle.query({threshold: undefined});
-}, 'query() uses a default value for the threshold');
+ new IdleDetector({threshold: undefined});
+}, 'constructor uses a default value for the threshold');
+
+
diff --git a/tests/wpt/web-platform-tests/idle-detection/idle-detection-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html b/tests/wpt/web-platform-tests/idle-detection/idle-detection-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html
index f8f57348dfa..6129ba12fa4 100644
--- a/tests/wpt/web-platform-tests/idle-detection/idle-detection-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html
+++ b/tests/wpt/web-platform-tests/idle-detection/idle-detection-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html
@@ -19,25 +19,25 @@ const cross_origin_worker_frame_src = base_src + sub +
relative_worker_frame_path;
async_test(t => {
- test_feature_availability('idle.query()', t, same_origin_src,
+ test_feature_availability('new IdleDetector().start()', t, same_origin_src,
expect_feature_available_default, 'idle-detection');
}, 'Attribute allow="idle-detection" in top-level frame ' +
'allows same-origin relocation.');
async_test(t => {
- test_feature_availability('idle.query()', t, same_origin_worker_frame_src,
+ test_feature_availability('new IdleDetector().start()', t, same_origin_worker_frame_src,
expect_feature_available_default, 'idle-detection');
}, 'Attribute allow="idle-detection" in top-level frame ' +
'allows workers in same-origin relocation.');
async_test(t => {
- test_feature_availability('idle.query()', t, cross_origin_src,
+ test_feature_availability('new IdleDetector().start()', t, cross_origin_src,
expect_feature_unavailable_default, 'idle-detection');
}, 'Attribute allow="idle-detection" in top-level frame ' +
'disallows cross-origin relocation.');
async_test(t => {
- test_feature_availability('idle.query()', t, cross_origin_worker_frame_src,
+ test_feature_availability('new IdleDetector().start()', t, cross_origin_worker_frame_src,
expect_feature_unavailable_default, 'idle-detection');
}, 'Attribute allow="idle-detection" in top-level frame ' +
'disallows workers in cross-origin relocation.');
diff --git a/tests/wpt/web-platform-tests/idle-detection/idle-detection-allowed-by-feature-policy-attribute.https.sub.html b/tests/wpt/web-platform-tests/idle-detection/idle-detection-allowed-by-feature-policy-attribute.https.sub.html
index 422c45c3de6..b19cd241bf4 100644
--- a/tests/wpt/web-platform-tests/idle-detection/idle-detection-allowed-by-feature-policy-attribute.https.sub.html
+++ b/tests/wpt/web-platform-tests/idle-detection/idle-detection-allowed-by-feature-policy-attribute.https.sub.html
@@ -15,25 +15,25 @@ const cross_origin_src = sub + same_origin_src;
const cross_origin_worker_frame_src = sub + same_origin_worker_frame_src;
async_test(t => {
- test_feature_availability('idle.query()', t, same_origin_src,
+ test_feature_availability('new IdleDetector().start()', t, same_origin_src,
expect_feature_available_default, 'idle-detection');
}, 'Attribute allow="idle-detection" in top-level frame can be enabled ' +
'in same-origin iframe using Feature policy "idle-detection".');
async_test(t => {
- test_feature_availability('idle.query()', t, same_origin_worker_frame_src,
+ test_feature_availability('new IdleDetector().start()', t, same_origin_worker_frame_src,
expect_feature_available_default, 'idle-detection');
}, 'Attribute allow="idle-detection" in top-level frame can be enabled ' +
'in a worker in same-origin iframe using Feature policy "idle-detection".');
async_test(t => {
- test_feature_availability('idle.query()', t, cross_origin_src,
+ test_feature_availability('new IdleDetector().start()', t, cross_origin_src,
expect_feature_available_default, 'idle-detection');
}, 'Attribute allow="idle-detection" in top-level frame can be enabled ' +
'in cross-origin iframe using Feature policy "idle-detection".');
async_test(t => {
- test_feature_availability('idle.query()', t, cross_origin_worker_frame_src,
+ test_feature_availability('new IdleDetector().start()', t, cross_origin_worker_frame_src,
expect_feature_available_default, 'idle-detection');
}, 'Attribute allow="idle-detection" in top-level frame can be enabled ' +
'in a worker in cross-origin iframe using Feature policy "idle-detection".');
diff --git a/tests/wpt/web-platform-tests/idle-detection/idle-detection-allowed-by-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/idle-detection/idle-detection-allowed-by-feature-policy.https.sub.html
index 3c019b7e0e4..cafe96f5c89 100644
--- a/tests/wpt/web-platform-tests/idle-detection/idle-detection-allowed-by-feature-policy.https.sub.html
+++ b/tests/wpt/web-platform-tests/idle-detection/idle-detection-allowed-by-feature-policy.https.sub.html
@@ -14,31 +14,32 @@ const same_origin_worker_frame_src =
const cross_origin_src = sub + same_origin_src;
const cross_origin_worker_frame_src = sub + same_origin_worker_frame_src;
-promise_test(
- () => navigator.idle.query(),
+promise_test(async () => {
+ await new IdleDetector().start();
+},
'Feature-Policy {"idle-detection" : ["*"]} explicity set by top-level ' +
'frame allows the top-level document.');
async_test(t => {
- test_feature_availability('idle.query()', t, same_origin_src,
+ test_feature_availability('new IdleDetector().start()', t, same_origin_src,
expect_feature_available_default);
}, 'Feature-Policy {"idle-detection" : ["*"]} explicity set by top-level ' +
'frame allows same-origin iframes.');
async_test(t => {
- test_feature_availability('idle.query()', t, same_origin_worker_frame_src,
+ test_feature_availability('new IdleDetector().start()', t, same_origin_worker_frame_src,
expect_feature_available_default);
}, 'Feature-Policy {"idle-detection" : ["*"]} explicity set by top-level ' +
'frame allows workers in same-origin iframes.');
async_test(t => {
- test_feature_availability('idle.query()', t, cross_origin_src,
+ test_feature_availability('new IdleDetector().start()', t, cross_origin_src,
expect_feature_available_default);
}, 'Feature-Policy {"idle-detection" : ["*"]} explicity set by top-level ' +
'frame allows cross-origin iframes.');
async_test(t => {
- test_feature_availability('idle.query()', t, cross_origin_worker_frame_src,
+ test_feature_availability('new IdleDetector().start()', t, cross_origin_worker_frame_src,
expect_feature_available_default);
}, 'Feature-Policy {"idle-detection" : ["*"]} explicity set by top-level ' +
'frame allows workers in cross-origin iframes.');
diff --git a/tests/wpt/web-platform-tests/idle-detection/idle-detection-default-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/idle-detection/idle-detection-default-feature-policy.https.sub.html
index 7ecf7a4f677..59eeae00bc4 100644
--- a/tests/wpt/web-platform-tests/idle-detection/idle-detection-default-feature-policy.https.sub.html
+++ b/tests/wpt/web-platform-tests/idle-detection/idle-detection-default-feature-policy.https.sub.html
@@ -11,19 +11,20 @@ const same_origin_src =
const cross_origin_src = 'https://{{domains[www]}}:{{ports[https][0]}}' +
same_origin_src;
-promise_test(
- () => navigator.idle.query(),
+promise_test(async () => {
+ await new IdleDetector().start()
+},
'Default "idle-detection" feature policy ["self"] ' +
'allows the top-level document.');
async_test(t => {
- test_feature_availability('idle.query()', t, same_origin_src,
+ test_feature_availability('new IdleDetector().start()', t, same_origin_src,
expect_feature_available_default);
}, 'Default "idle-detection" feature policy ["self"] ' +
'allows same-origin iframes.');
async_test(t => {
- test_feature_availability('idle.query()', t, cross_origin_src,
+ test_feature_availability('new IdleDetector().start()', t, cross_origin_src,
expect_feature_unavailable_default);
}, 'Default "idle-detection" feature policy ["self"] ' +
'disallows cross-origin iframes.');
diff --git a/tests/wpt/web-platform-tests/idle-detection/idle-detection-disabled-by-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/idle-detection/idle-detection-disabled-by-feature-policy.https.sub.html
index cb455f40bab..2814a2263db 100644
--- a/tests/wpt/web-platform-tests/idle-detection/idle-detection-disabled-by-feature-policy.https.sub.html
+++ b/tests/wpt/web-platform-tests/idle-detection/idle-detection-disabled-by-feature-policy.https.sub.html
@@ -14,35 +14,37 @@ const same_origin_worker_frame_src =
const cross_origin_src = sub + same_origin_src;
const cross_origin_worker_frame_src = sub + same_origin_worker_frame_src;
-promise_test(() => {
- return navigator.idle.query().then(() => {
+promise_test(async () => {
+ try {
+ let idleDetector = new IdleDetector();
+ await idleDetector.start();
assert_unreached('expected promise to reject with SecurityError');
- }, error => {
+ } catch (error) {
assert_equals(error.name, 'SecurityError');
- });
+ }
}, 'Feature-Policy {"idle-detection" : []} explicitly set by top-level frame ' +
'disallows query in the top-level document.');
async_test(t => {
- test_feature_availability('idle.query()', t, same_origin_src,
+ test_feature_availability('new IdleDetector().start()', t, same_origin_src,
expect_feature_unavailable_default);
}, 'Feature-Policy {"idle-detection" : []} explicitly set by top-level frame ' +
'disallows same-origin iframes.');
async_test(t => {
- test_feature_availability('idle.query()', t, same_origin_worker_frame_src,
+ test_feature_availability('new IdleDetector().start()', t, same_origin_worker_frame_src,
expect_feature_unavailable_default);
}, 'Feature-Policy {"idle-detection" : []} explicitly set by top-level frame ' +
'disallows workers in same-origin iframes.');
async_test(t => {
- test_feature_availability('idle.query()', t, cross_origin_src,
+ test_feature_availability('new IdleDetector().start()', t, cross_origin_src,
expect_feature_unavailable_default);
}, 'Feature-Policy {"idle-detection" : []} explicitly set by top-level frame ' +
'disallows cross-origin iframes.');
async_test(t => {
- test_feature_availability('idle.query()', t, cross_origin_worker_frame_src,
+ test_feature_availability('new IdleDetector().start()', t, cross_origin_worker_frame_src,
expect_feature_unavailable_default);
}, 'Feature-Policy {"idle-detection" : []} explicitly set by top-level frame ' +
'disallows workers in cross-origin iframes.');
diff --git a/tests/wpt/web-platform-tests/idle-detection/idle-detection.idl b/tests/wpt/web-platform-tests/idle-detection/idle-detection.idl
index 4b502c975ce..1fd4d451be9 100644
--- a/tests/wpt/web-platform-tests/idle-detection/idle-detection.idl
+++ b/tests/wpt/web-platform-tests/idle-detection/idle-detection.idl
@@ -1,28 +1,16 @@
-[SecureContext]
-interface mixin NavigatorIdle {
- readonly attribute IdleManager idle;
-};
-
-Navigator includes NavigatorIdle;
-WorkerNavigator includes NavigatorIdle;
-
-[
- SecureContext,
- Exposed=(Window,Worker)
-] interface IdleManager {
- Promise query(optional IdleOptions options);
-};
-
dictionary IdleOptions {
unsigned long threshold;
};
[
SecureContext,
+ Constructor(optional IdleOptions options),
Exposed=(Window,Worker)
-] interface IdleStatus : EventTarget {
+] interface IdleDetector : EventTarget {
readonly attribute IdleState state;
attribute EventHandler onchange;
+ Promise start();
+ void stop();
};
[
diff --git a/tests/wpt/web-platform-tests/idle-detection/idlharness.https.any.js b/tests/wpt/web-platform-tests/idle-detection/idlharness.https.any.js
index 4bda5c1a85b..482e2f4d400 100644
--- a/tests/wpt/web-platform-tests/idle-detection/idlharness.https.any.js
+++ b/tests/wpt/web-platform-tests/idle-detection/idlharness.https.any.js
@@ -1,34 +1,36 @@
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js
-// https://github.com/inexorabletash/idle-detection
+// https://github.com/samuelgoto/idle-detection
'use strict';
-promise_test(async () => {
+promise_test(async (t) => {
const srcs = ['./idle-detection.idl',
'/interfaces/dom.idl',
'/interfaces/html.idl'];
+
const [idle, dom, html] = await Promise.all(
- srcs.map(i => fetch(i).then(r => r.text())));
+ srcs.map(i => fetch(i).then(r => r.text()))
+ );
const idl_array = new IdlArray();
idl_array.add_idls(idle);
idl_array.add_dependency_idls(dom);
idl_array.add_dependency_idls(html);
- self.idle = await navigator.idle.query();
+ self.idle = new IdleDetector({threshold: 1});
+
+ let watcher = new EventWatcher(t, self.idle, ["change"]);
+
+ self.idle.start();
+
+ await watcher.wait_for("change");
idl_array.add_objects({
- IdleManager: ['navigator.idle'],
- IdleStatus: ['idle'],
+ IdleDetector: ['idle'],
IdleState: ['idle.state']
});
- if (self.Window) {
- idl_array.add_objects({ Navigator: ['navigator'] });
- } else {
- idl_array.add_objects({ WorkerNavigator: ['navigator'] });
- }
idl_array.test();
}, 'Test IDL implementation of Idle Detection API');
diff --git a/tests/wpt/web-platform-tests/idle-detection/interceptor.https.html b/tests/wpt/web-platform-tests/idle-detection/interceptor.https.html
index 03595afccdc..37922c8cf79 100644
--- a/tests/wpt/web-platform-tests/idle-detection/interceptor.https.html
+++ b/tests/wpt/web-platform-tests/idle-detection/interceptor.https.html
@@ -1,19 +1,19 @@
-
+
Tests the Idle Detection API
-
+
\ No newline at end of file
+ // Calling start() multiple times should be safe.
+ await detector.start();
+ await detector.start();
+ await detector.start();
+ await detector.start();
+
+ // waits for the initial state.
+ await watcher.wait_for("change");
+ assert_equals(detector.state.user, "active");
+ assert_equals(detector.state.screen, "unlocked");
+
+ // Calling stop() multiple times should be safe.
+ detector.stop();
+ detector.stop();
+ detector.stop();
+ detector.stop();
+}, 'Safe to call start() or stop() multiple times');
+
+promise_test(async t => {
+ expect(addMonitor).andReturn((threshold, monitorPtr) => {
+ return Promise.resolve({
+ state: {
+ user: UserIdleState.ACTIVE,
+ screen: ScreenIdleState.UNLOCKED
+ }
+ });
+ });
+
+ let detector = new IdleDetector({threshold: 10});
+
+ // Calling stop() before start() is a no-op.
+ detector.stop();
+
+ let watcher = new EventWatcher(t, detector, ["change"]);
+
+ await detector.start();
+
+ // waits for the initial state.
+ await watcher.wait_for("change");
+ assert_equals(detector.state.user, "active");
+ assert_equals(detector.state.screen, "unlocked");
+
+ detector.stop();
+}, 'Calling stop() after start() is a no-op');
+
+promise_test(async t => {
+ expect(addMonitor).andReturn((threshold, monitorPtr) => {
+ return Promise.resolve({
+ state: {
+ user: UserIdleState.ACTIVE,
+ screen: ScreenIdleState.UNLOCKED
+ }
+ });
+ });
+
+ let detector = new IdleDetector({threshold: 10});
+
+ let watcher = new EventWatcher(t, detector, ["change"]);
+
+ await detector.start();
+ await watcher.wait_for("change");
+ detector.stop();
+
+ expect(addMonitor).andReturn((threshold, monitorPtr) => {
+ return Promise.resolve({
+ state: {
+ user: UserIdleState.IDLE,
+ screen: ScreenIdleState.LOCKED
+ }
+ });
+ });
+
+ // Restarting the monitor.
+ await detector.start();
+ await watcher.wait_for("change");
+ assert_equals(detector.state.user, "idle");
+ assert_equals(detector.state.screen, "locked");
+
+ detector.stop();
+}, 'Calling start() after stop(): re-starting monitor.');
+
+
diff --git a/tests/wpt/web-platform-tests/idle-detection/resources/idle-detection-allowed-by-feature-policy-worker.js b/tests/wpt/web-platform-tests/idle-detection/resources/idle-detection-allowed-by-feature-policy-worker.js
index 103ce5e9bdb..e643414f750 100644
--- a/tests/wpt/web-platform-tests/idle-detection/resources/idle-detection-allowed-by-feature-policy-worker.js
+++ b/tests/wpt/web-platform-tests/idle-detection/resources/idle-detection-allowed-by-feature-policy-worker.js
@@ -8,7 +8,9 @@ if (typeof postMessage === 'function') {
workerType = 'dedicated';
}
-promise_test(() => navigator.idle.query(),
+promise_test(async () => {
+ await new IdleDetector().start()
+},
`Inherited header feature policy allows ${workerType} workers.`)
done();
diff --git a/tests/wpt/web-platform-tests/idle-detection/resources/idle-detection-disabled-by-feature-policy-worker.js b/tests/wpt/web-platform-tests/idle-detection/resources/idle-detection-disabled-by-feature-policy-worker.js
index 66218a5c442..138b29173f7 100644
--- a/tests/wpt/web-platform-tests/idle-detection/resources/idle-detection-disabled-by-feature-policy-worker.js
+++ b/tests/wpt/web-platform-tests/idle-detection/resources/idle-detection-disabled-by-feature-policy-worker.js
@@ -9,9 +9,14 @@ if (typeof postMessage === 'function') {
workerType = 'dedicated';
}
-promise_test(() => navigator.idle.query().then(
- () => assert_unreached('expected promise to reject with SecurityError'),
- error => assert_equals(error.name, 'SecurityError')),
- `Inherited ${header} disallows ${workerType} workers.`);
+promise_test(async () => {
+ try {
+ await new IdleDetector().start();
+ assert_unreached('expected start() to throw with SecurityError');
+ } catch (error) {
+ assert_equals(error.name, 'SecurityError');
+ }
+},
+`Inherited ${header} disallows ${workerType} workers.`);
done();
diff --git a/tests/wpt/web-platform-tests/import-maps/csp/applied-to-target-dynamic.sub.tentative.html b/tests/wpt/web-platform-tests/import-maps/csp/applied-to-target-dynamic.sub.tentative.html
new file mode 100644
index 00000000000..cef80bfcda7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/import-maps/csp/applied-to-target-dynamic.sub.tentative.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/import-maps/csp/applied-to-target.sub.tentative.html b/tests/wpt/web-platform-tests/import-maps/csp/applied-to-target.sub.tentative.html
new file mode 100644
index 00000000000..e6bbfecd0d9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/import-maps/csp/applied-to-target.sub.tentative.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/import-maps/csp/hash-failure.tentative.html b/tests/wpt/web-platform-tests/import-maps/csp/hash-failure.tentative.html
new file mode 100644
index 00000000000..4bab1ed9173
--- /dev/null
+++ b/tests/wpt/web-platform-tests/import-maps/csp/hash-failure.tentative.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/import-maps/csp/hash.tentative.html b/tests/wpt/web-platform-tests/import-maps/csp/hash.tentative.html
new file mode 100644
index 00000000000..868c5beb81b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/import-maps/csp/hash.tentative.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/import-maps/csp/nonce-failure.tentative.html b/tests/wpt/web-platform-tests/import-maps/csp/nonce-failure.tentative.html
new file mode 100644
index 00000000000..a1661a432ab
--- /dev/null
+++ b/tests/wpt/web-platform-tests/import-maps/csp/nonce-failure.tentative.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/import-maps/csp/nonce.tentative.html b/tests/wpt/web-platform-tests/import-maps/csp/nonce.tentative.html
new file mode 100644
index 00000000000..858c572214f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/import-maps/csp/nonce.tentative.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/import-maps/csp/unsafe-inline.tentative.html b/tests/wpt/web-platform-tests/import-maps/csp/unsafe-inline.tentative.html
new file mode 100644
index 00000000000..101c33cf84e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/import-maps/csp/unsafe-inline.tentative.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini
new file mode 100644
index 00000000000..f62bf62a971
--- /dev/null
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini
@@ -0,0 +1,9 @@
+[actionsWithKeyPressed.html]
+ expected:
+ if product == "safari" or product == "firefox": ERROR
+
+
+ [TestDriver actions: actions with key pressed]
+ expected:
+ if product == "chrome": FAIL
+
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini
new file mode 100644
index 00000000000..0b01c8369a5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini
@@ -0,0 +1,4 @@
+[generate_test_report.html]
+ expected:
+ if product == "firefox": ERROR
+ if product == "safari": ERROR
diff --git a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/actionsWithKeyPressed.html b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/actionsWithKeyPressed.html
new file mode 100644
index 00000000000..74e939f5fde
--- /dev/null
+++ b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/actionsWithKeyPressed.html
@@ -0,0 +1,67 @@
+
+
+TestDriver actions: actions with key pressed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/infrastructure/testdriver/generate_test_report.html b/tests/wpt/web-platform-tests/infrastructure/testdriver/generate_test_report.html
new file mode 100644
index 00000000000..168c9e9956f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/infrastructure/testdriver/generate_test_report.html
@@ -0,0 +1,16 @@
+
+
+TestDriver generate_test_report method
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/interfaces/ResizeObserver.idl b/tests/wpt/web-platform-tests/interfaces/ResizeObserver.idl
deleted file mode 100644
index fc56faf4f93..00000000000
--- a/tests/wpt/web-platform-tests/interfaces/ResizeObserver.idl
+++ /dev/null
@@ -1,30 +0,0 @@
-// GENERATED CONTENT - DO NOT EDIT
-// Content was automatically extracted by Reffy into reffy-reports
-// (https://github.com/tidoust/reffy-reports)
-// Source: Resize Observer 1 (https://wicg.github.io/ResizeObserver/)
-
-[Constructor(ResizeObserverCallback callback),
- Exposed=Window]
-interface ResizeObserver {
- void observe(Element target);
- void unobserve(Element target);
- void disconnect();
-};
-
-callback ResizeObserverCallback = void (sequence entries, ResizeObserver observer);
-
-[Constructor(Element target)
-]
-interface ResizeObserverEntry {
- readonly attribute Element target;
- readonly attribute DOMRectReadOnly contentRect;
-};
-
-[Constructor(Element target)
-]
-interface ResizeObservation {
- readonly attribute Element target;
- readonly attribute float broadcastWidth;
- readonly attribute float broadcastHeight;
- boolean isActive();
-};
diff --git a/tests/wpt/web-platform-tests/interfaces/css-regions.idl b/tests/wpt/web-platform-tests/interfaces/css-regions.idl
index 254ef53b69b..f7cf3d31a11 100644
--- a/tests/wpt/web-platform-tests/interfaces/css-regions.idl
+++ b/tests/wpt/web-platform-tests/interfaces/css-regions.idl
@@ -25,7 +25,7 @@ interface NamedFlow : EventTarget {
sequence getRegionsByContent(Node node);
};
-interface Region {
+interface mixin Region {
readonly attribute CSSOMString regionOverset;
sequence? getRegionFlowRanges();
};
diff --git a/tests/wpt/web-platform-tests/interfaces/css-typed-om.idl b/tests/wpt/web-platform-tests/interfaces/css-typed-om.idl
index 02fe7bb83ad..be2946bc20f 100644
--- a/tests/wpt/web-platform-tests/interfaces/css-typed-om.idl
+++ b/tests/wpt/web-platform-tests/interfaces/css-typed-om.idl
@@ -37,7 +37,7 @@ partial interface CSSStyleRule {
[SameObject] readonly attribute StylePropertyMap styleMap;
};
-partial interface ElementCSSInlineStyle {
+partial interface mixin ElementCSSInlineStyle {
[SameObject] readonly attribute StylePropertyMap attributeStyleMap;
};
diff --git a/tests/wpt/web-platform-tests/interfaces/image-capture.idl b/tests/wpt/web-platform-tests/interfaces/image-capture.idl
index 424e44773ad..e9016a1f9ba 100644
--- a/tests/wpt/web-platform-tests/interfaces/image-capture.idl
+++ b/tests/wpt/web-platform-tests/interfaces/image-capture.idl
@@ -59,9 +59,11 @@ partial dictionary MediaTrackSupportedConstraints {
boolean brightness = true;
boolean contrast = true;
+ boolean pan = true;
boolean saturation = true;
boolean sharpness = true;
boolean focusDistance = true;
+ boolean tilt = true;
boolean zoom = true;
boolean torch = true;
};
@@ -82,6 +84,8 @@ partial dictionary MediaTrackCapabilities {
MediaSettingsRange sharpness;
MediaSettingsRange focusDistance;
+ MediaSettingsRange pan;
+ MediaSettingsRange tilt;
MediaSettingsRange zoom;
boolean torch;
@@ -104,6 +108,8 @@ partial dictionary MediaTrackConstraintSet {
ConstrainDouble sharpness;
ConstrainDouble focusDistance;
+ ConstrainDouble pan;
+ ConstrainDouble tilt;
ConstrainDouble zoom;
ConstrainBoolean torch;
@@ -126,6 +132,8 @@ partial dictionary MediaTrackSettings {
double sharpness;
double focusDistance;
+ double pan;
+ double tilt;
double zoom;
boolean torch;
diff --git a/tests/wpt/web-platform-tests/interfaces/resize-observer.idl b/tests/wpt/web-platform-tests/interfaces/resize-observer.idl
new file mode 100644
index 00000000000..d96a348a721
--- /dev/null
+++ b/tests/wpt/web-platform-tests/interfaces/resize-observer.idl
@@ -0,0 +1,43 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into reffy-reports
+// (https://github.com/tidoust/reffy-reports)
+// Source: Resize Observer (https://drafts.csswg.org/resize-observer/)
+
+enum ResizeObserverBoxOptions {
+ "border-box", "content-box"
+};
+
+dictionary ResizeObserverOptions {
+ ResizeObserverBoxOptions box = "content-box";
+};
+
+[Exposed=(Window),
+ Constructor(ResizeObserverCallback callback)]
+interface ResizeObserver {
+ void observe(Element target, optional ResizeObserverOptions options);
+ void unobserve(Element target);
+ void disconnect();
+};
+
+callback ResizeObserverCallback = void (sequence entries, ResizeObserver observer);
+
+[Exposed=Window, Constructor(Element target)]
+interface ResizeObserverEntry {
+ readonly attribute Element target;
+ readonly attribute DOMRectReadOnly contentRect;
+ readonly attribute ResizeObserverSize borderBoxSize;
+ readonly attribute ResizeObserverSize contentBoxSize;
+};
+
+interface ResizeObserverSize {
+ readonly attribute unrestricted double inlineSize;
+ readonly attribute unrestricted double blockSize;
+};
+
+[Constructor(Element target)
+]
+interface ResizeObservation {
+ readonly attribute Element target;
+ readonly attribute ResizeObserverBoxOptions observedBox;
+ readonly attribute ResizeObserverSize lastReportedSize;
+};
diff --git a/tests/wpt/web-platform-tests/interfaces/user-timing.idl b/tests/wpt/web-platform-tests/interfaces/user-timing.idl
index da8a0acd673..cd2e1446b89 100644
--- a/tests/wpt/web-platform-tests/interfaces/user-timing.idl
+++ b/tests/wpt/web-platform-tests/interfaces/user-timing.idl
@@ -10,15 +10,15 @@ dictionary PerformanceMarkOptions {
dictionary PerformanceMeasureOptions {
any detail = null;
- (DOMString or DOMHighResTimeStamp) startTime;
+ (DOMString or DOMHighResTimeStamp) start;
DOMHighResTimeStamp duration;
- (DOMString or DOMHighResTimeStamp) endTime;
+ (DOMString or DOMHighResTimeStamp) end;
};
partial interface Performance {
PerformanceMark mark(DOMString markName, optional PerformanceMarkOptions markOptions);
void clearMarks(optional DOMString markName);
- PerformanceMeasure measure(DOMString measureName, optional (DOMString or PerformanceMeasureOptions) startOrMeasureOptions, optional DOMString endMark);
+ PerformanceMeasure measure(DOMString measureName, optional (DOMString or PerformanceMeasureOptions)? startOrMeasureOptions, optional DOMString endMark);
void clearMeasures(optional DOMString measureName);
};
diff --git a/tests/wpt/web-platform-tests/interfaces/webauthn.idl b/tests/wpt/web-platform-tests/interfaces/webauthn.idl
index becf8dd335c..be8d0c10c47 100644
--- a/tests/wpt/web-platform-tests/interfaces/webauthn.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webauthn.idl
@@ -1,7 +1,7 @@
// GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into reffy-reports
// (https://github.com/tidoust/reffy-reports)
-// Source: Web Authentication: An API for accessing Public Key Credentials - Level 1 (https://w3c.github.io/webauthn/)
+// Source: Web Authentication: An API for accessing Public Key Credentials - Level 2 (https://w3c.github.io/webauthn/)
[SecureContext, Exposed=Window]
interface PublicKeyCredential : Credential {
@@ -30,6 +30,7 @@ interface AuthenticatorResponse {
[SecureContext, Exposed=Window]
interface AuthenticatorAttestationResponse : AuthenticatorResponse {
[SameObject] readonly attribute ArrayBuffer attestationObject;
+ sequence getTransports();
};
[SecureContext, Exposed=Window]
diff --git a/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl b/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl
index c86097b697b..b6b30e88268 100644
--- a/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl
@@ -20,7 +20,8 @@ enum RTCStatsType {
"candidate-pair",
"local-candidate",
"remote-candidate",
-"certificate"
+"certificate",
+"stunserverconnection"
};
dictionary RTCRtpStreamStats : RTCStats {
@@ -28,11 +29,6 @@ dictionary RTCRtpStreamStats : RTCStats {
DOMString kind;
DOMString transportId;
DOMString codecId;
- unsigned long firCount;
- unsigned long pliCount;
- unsigned long nackCount;
- unsigned long sliCount;
- unsigned long long qpSum;
};
dictionary RTCCodecStats : RTCStats {
@@ -72,13 +68,19 @@ dictionary RTCInboundRtpStreamStats : RTCReceivedRtpStreamStats {
DOMString receiverId;
DOMString remoteId;
unsigned long framesDecoded;
+ unsigned long long qpSum;
DOMHighResTimeStamp lastPacketReceivedTimestamp;
double averageRtcpInterval;
unsigned long fecPacketsReceived;
+ unsigned long fecPacketsDiscarded;
unsigned long long bytesReceived;
unsigned long packetsFailedDecryption;
unsigned long packetsDuplicated;
record perDscpPacketsReceived;
+ unsigned long nackCount;
+ unsigned long firCount;
+ unsigned long pliCount;
+ unsigned long sliCount;
};
dictionary RTCRemoteInboundRtpStreamStats : RTCReceivedRtpStreamStats {
@@ -102,11 +104,16 @@ dictionary RTCOutboundRtpStreamStats : RTCSentRtpStreamStats {
DOMHighResTimeStamp lastPacketSentTimestamp;
double targetBitrate;
unsigned long framesEncoded;
+ unsigned long long qpSum;
double totalEncodeTime;
double averageRtcpInterval;
RTCQualityLimitationReason qualityLimitationReason;
record qualityLimitationDurations;
record perDscpPacketsSent;
+ unsigned long nackCount;
+ unsigned long firCount;
+ unsigned long pliCount;
+ unsigned long sliCount;
};
enum RTCQualityLimitationReason {
@@ -198,6 +205,7 @@ dictionary RTCAudioReceiverStats : RTCAudioHandlerStats {
unsigned long long jitterBufferEmittedCount;
unsigned long long totalSamplesReceived;
unsigned long long concealedSamples;
+ unsigned long long silentConcealedSamples;
unsigned long long concealmentEvents;
};
@@ -298,6 +306,16 @@ dictionary RTCCertificateStats : RTCStats {
DOMString issuerCertificateId;
};
+dictionary RTCStunServerConnectionStats : RTCStats {
+ DOMString url;
+ long port;
+ DOMString protocol;
+ RTCNetworkType networkType;
+ unsigned long totalRequestsSent;
+ unsigned long totalResponsesReceived;
+ double totalRoundTripTime;
+ };
+
partial dictionary RTCIceCandidateStats {
boolean isRemote;
};
@@ -312,3 +330,7 @@ partial dictionary RTCRtpStreamStats {
DOMString mediaType;
double averageRTCPInterval;
};
+
+partial dictionary RTCInboundRtpStreamStats {
+ double fractionLost;
+};
diff --git a/tests/wpt/web-platform-tests/interfaces/webxr.idl b/tests/wpt/web-platform-tests/interfaces/webxr.idl
index 1bbe7efd2da..7594489a36d 100644
--- a/tests/wpt/web-platform-tests/interfaces/webxr.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webxr.idl
@@ -25,7 +25,6 @@ enum XREnvironmentBlendMode {
[SecureContext, Exposed=Window] interface XRSession : EventTarget {
// Attributes
readonly attribute XRSessionMode mode;
- readonly attribute XRPresentationContext? outputContext;
readonly attribute XREnvironmentBlendMode environmentBlendMode;
readonly attribute XRRenderState renderState;
readonly attribute XRSpace viewerSpace;
@@ -59,19 +58,20 @@ enum XRSessionMode {
dictionary XRSessionCreationOptions {
XRSessionMode mode = "inline";
- XRPresentationContext? outputContext = null;
};
dictionary XRRenderStateInit {
double depthNear;
double depthFar;
XRLayer? baseLayer;
+ XRPresentationContext? outputContext;
};
[SecureContext, Exposed=Window] interface XRRenderState {
readonly attribute double depthNear;
readonly attribute double depthFar;
readonly attribute XRLayer? baseLayer;
+ readonly attribute XRPresentationContext? outputContext;
};
callback XRFrameRequestCallback = void (DOMHighResTimeStamp time, XRFrame frame);
diff --git a/tests/wpt/web-platform-tests/lint.whitelist b/tests/wpt/web-platform-tests/lint.whitelist
index fd4d4049d6d..96fd7ed0c29 100644
--- a/tests/wpt/web-platform-tests/lint.whitelist
+++ b/tests/wpt/web-platform-tests/lint.whitelist
@@ -804,4 +804,5 @@ CSS-COLLIDING-REF-NAME: css/vendor-imports/mozilla/mozilla-central-reftests/cont
# Signed Exchange files have hard-coded URLs in the certUrl field
WEB-PLATFORM.TEST:signed-exchange/resources/*.sxg
+WEB-PLATFORM.TEST:signed-exchange/appcache/resources/*.sxg
WEB-PLATFORM.TEST:signed-exchange/resources/generate-test-sxgs.sh
diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-paint-lspace-rspace-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-paint-lspace-rspace-ref.html
new file mode 100644
index 00000000000..da0b79ff9a6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-paint-lspace-rspace-ref.html
@@ -0,0 +1,78 @@
+
+
+
+ <mo> paint lspace rspace
+
+
+
+ LTR case
+
+ The test passes if the arrow has a leading space of 100px, which is as wide as the black block to the left,
+ and a trailing space of 200px, which is as wide as the black block to the right.
+
+
+
+
+ →
+
+
+
+
+ The test passes if the arrow has a leading space of 150px, which is as wide as the black block to the left,
+ and a trailing space of 150px, which is as wide as the black block to the right.
+
+
+
+
+ →
+
+
+
+
+ The test passes if the arrow has a leading space of 200px, which is as wide as the black block to the left,
+ and a trailing space of 100px, which is as wide as the black block to the right.
+
+
+
+
+ →
+
+
+
+
+ RTL case
+
+ The test passes if the arrow has a leading space of 100px, which is as wide as the black block to the right,
+ and a trailing space of 200px, which is as wide as the black block to the left.
+
+
+
+
+ →
+
+
+
+
+ The test passes if the arrow has a leading space of 150px, which is as wide as the black block to the right,
+ and a trailing space of 150px, which is as wide as the black block to the left.
+
+
+
+
+ →
+
+
+
+
+ The test passes if the arrow has a leading space of 200px, which is as wide as the black block to the right,
+ and a trailing space of 100px, which is as wide as the black block to the left.
+
+
+
+
+ →
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-paint-lspace-rspace.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-paint-lspace-rspace.html
new file mode 100644
index 00000000000..66df88264d1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-paint-lspace-rspace.html
@@ -0,0 +1,69 @@
+
+
+
+
+ <mo> paint lspace rspace
+
+
+
+
+
+ LTR case
+
+ The test passes if the arrow has a leading space of 100px, which is as wide as the black block to the left,
+ and a trailing space of 200px, which is as wide as the black block to the right.
+
+
+
+ →
+
+
+
+ The test passes if the arrow has a leading space of 150px, which is as wide as the black block to the left,
+ and a trailing space of 150px, which is as wide as the black block to the right.
+
+
+
+ →
+
+
+
+ The test passes if the arrow has a leading space of 200px, which is as wide as the black block to the left,
+ and a trailing space of 100px, which is as wide as the black block to the right.
+
+
+
+ →
+
+
+
+ RTL case
+
+ The test passes if the arrow has a leading space of 100px, which is as wide as the black block to the right,
+ and a trailing space of 200px, which is as wide as the black block to the left.
+
+
+
+ →
+
+
+
+ The test passes if the arrow has a leading space of 150px, which is as wide as the black block to the right,
+ and a trailing space of 150px, which is as wide as the black block to the left.
+
+
+
+ →
+
+
+
+ The test passes if the arrow has a leading space of 200px, which is as wide as the black block to the right,
+ and a trailing space of 100px, which is as wide as the black block to the left.
+
+
+
+ →
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/media-source/mediasource-correct-frames-after-reappend.html b/tests/wpt/web-platform-tests/media-source/mediasource-correct-frames-after-reappend.html
new file mode 100644
index 00000000000..5c0f2e11195
--- /dev/null
+++ b/tests/wpt/web-platform-tests/media-source/mediasource-correct-frames-after-reappend.html
@@ -0,0 +1,162 @@
+
+
+
+
+ Frame checking test for MSE playback in presence of a reappend.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/media-source/mediasource-correct-frames.html b/tests/wpt/web-platform-tests/media-source/mediasource-correct-frames.html
new file mode 100644
index 00000000000..4ef3f4605e6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/media-source/mediasource-correct-frames.html
@@ -0,0 +1,146 @@
+
+
+
+
+ Frame checking test for simple MSE playback.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/media-source/mp4/test-boxes-audio.mp4 b/tests/wpt/web-platform-tests/media-source/mp4/test-boxes-audio.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..b1cabbfd21efdc08bff28a6b043f8eb856b7e322
GIT binary patch
literal 64208
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 bVJS6h+3{zc{^TI*
z$Q0tz$pR*4k>`C&^u$Z_O#XX;)Rdz3w+sx!9kN49W*+NB&nOR18EK=DfLj*6So5dN
z5{nwxoVpLa2M8JTdA!ro29n7ow38da{Q}x0G$WtD)<{}z47OU>)ZuKBm-O5#*(WXY
z2ESHXDl~QlV){HqDlcrC81~fE^QZ9!;@lvpe%%~4y{}J|TqBdQ6sYLfBRh3o3a7B?
z*DK`9xk>xAycPfzCB2<)za93BBhjSv>%%cfjg+F3K32xOP90sHN}TAyv3e6tgn2IE
z#=4QoveDP=CyIG0z$)_USBqAQ0uPZViSQK9795|h$)&y?
zG(EpWrz78Az90%u6CD1Jc=-d%=E_h}(+-5h?<2p3%#^$WsNr5aTw<7n_6WwOh!^Gg
zTdY+VOp!T`5H@W-pYT6?V)@SZ@boB2_E;+O4<~h-E&+=ruV*vsq|ra0EW}iX_;fdQ
z79UnGE*e&XB1^;Jtpv$r1e1w~WsfmE$r3YD)4mDyjiqbyT2~DoUt(Mpbc``9RdeJU
z=yX{J>r!J=S&&e=M{COu_#w~A!IAgbOui!1@5baQw@nAFTBnZt37H27Ht1=svl74*
zBue@z4NUDCM)?}lASQvo6$5?bZ26cxV>`0G`55=X8$f(1DRFs31RfDiscb`Tw7S;v
zs1*Q`dC8h49Ee4oN}RlC`l)bl>j+)C>m63nbtto5i%$C-_8yc~><8?#9Kyhx;w`Zw
zz>49=F)F?Yk!VTy+T-)=*FbVM9jyflw^#ZrWu|M#czoeg6v-ZShJj8$b&-ib7{(7w(5E!AX
z7Ytc5RoN|R-;7@LeaP5H(o_rMokh`H)1MhDv;BH$*V7ZnKDNT=Rd`}{vs?YMC(Cv{
zPk6gLr?7nwA5kTWaJF)<59_v`-Kne+Uflu0P@8bn0TV$gH4ql9+@!@r8gTSDJ~f
z|3o*;+*XpkILW`dDM5y(i#=5g65?%-QVR
zuR`vGEB|T>cDbe3vyd)zpJ+!tOSX39s-COrM6WaQ2=vzzJwO?A+B*5O4DB@hlOYli
zVuaE;d`|`akkQ
zi1L$))(1WbKll*C$ad-LbXC@k&5=uJ?gDgTd~OBMFww$8oh=F}*}AomOK;*EN-&MR
zdLfs$3=XcVlA?mv=lnZf{7-d3jcoK4Dm6D*vA@t_|NMftP@Ydu=6`1*(MvwT2=~U&
zkGD3VyX4TqALl%Gs4LQLI?!Wh*GJWUuJawf{&TDA(m=QI8
ztb->s?I27Mzh!NNuB8%PGfB=lu?A?v{g65(O#G`C7d=J7%kmo32Ck~<-MWP2*UUHO
zRdXoP>MH@F&i__RCBH1r63l<2F*vOL2aBz|IPXWy=z1tPQy06_2N1P!x)J>oZbdrfq%69Nyg;Ti2Y9H@CLP**)@3-m70ip{9*3Mbir^Y
z7%d3m0EjRT<(9wcE*)J`UGz#V9v*+Kg4EB~JR#aWFih^czQWIMz+ir
zLq5X-_m|~#;B$%leyL6JPtle7=t2urH&-bCt<+n^T|RgK#i@(6N_Xr5#=BoKnq4jJ
zqF3BdG&`m(bLBX`;^f}4uT%FBicA-_Td2=vKC$c_yVIYWzEgJF><|)P7@sd}UvPqd
zF~y59kcgO(HP{+B@1ZCwS*XlLdL)oGhLVh@%h_BCs6=G5uNhTE)yZJLT`kS{CX(o1
zF&6YhGCXj2dHO~DTHeV#a{mOudqevkXEWDN1Kn}(6%v7#6L2~dA@K%ku`)4etED;G
z2*zSOY-DUP(o+dk-e@5!K~T(o6~#(Y6c@@&joT~_
zwdIy3dBg-3dbN0qi$9ouV#*4{g8R<(-~xOkP)jDY59iXC$+Qw&1TKxP8&DeiMrdHp{qj
zHLxE<&~y6G2=u$8(cMj;!lS!QXEmThw=(+CrzxD&gNUS(+^;7
z5==7m7xwFsA7gN2!^@>t1|BvbhZ|}Zf6_eJW%pZk7&&H(>M#qQ-m=chBOD{z8@saj
z8BFYq8uS$aBM_#uK$}osc5v)NAIb#!OUxuOk<);e0Y~aQ6
zApY_P)a|lPwPaaJO7@U~jl}Xiu=;_FJdM
zLarN)VJ{--fWYR0Q1P!@jjAaf!OV2DdRW{|9fqO!f
zM?(EARXI9~z+twB%1|AZLanlgbs*U-bXGBXsUCQ!LV&ES1_uCAz+v{tUYiH2il}|vO{Z^
zbZ*8ESyXT<92r1uXK0wWbN-DNxI;$ZpSt5T>Od)l9zGP;_O1`JsucTCLii#{NDoNF
zV%I;u^{`N+;+5`D+TA))+v?z_PxY${jrc*Ef1%V+Fk2sA6uJr$Z0Ldw-(ZvBq>m6y
zLbi_eXNhgTQ3|*gS+iqGf$fN7V`WMhZhl+8bBG&Ug7A*o(a6AM=U@!)jV%D93XhMX
zkFtptoGb`5g1)sX7E_hez*O}u{gF^fun3BH$db7s(1<_`H>S@_J?6QT8`LpuEJ2!I
zJcZ!wo_RfoAkrGq*7?J$q=FcLga@fA86O?F=_hpw+Pv^^F!BAhcD!|d%wD<_vinSe
zgkaV;YS%+LwNq(g>Wd2%o$+U7_nqz?TG2ao9#^)$W&CO^{ghj@^)%DGXAg??=b&eY
z?(u;}Ht39O?-R$nv%VviC+d)W1SdcI;2z^nFjo}tN^(=TCgi;6~JpYFS
zLcL`4@C|X#MWl;Q`PUR%6>t;qtS$zFSLAd_Il192@YvQHS;X+;PTSf~2?i)t>_LOo-uwXw?(9#FwI45R>)$eop>rWAlp(%SQ$M$brux
zpC2W+=CbgnAE;-2LA-yUsmv(A(IP*@Z;;Adzanb#vxa+nk=M61*5T3YD;?oVdryYTv{~eN$nccI)c!X=kP394KzB#Z0$2Q}VR;_!+T>}3
z#fGiw63&MIC^^@CmAapn#h)d}Y9m1f^oL0Rcu^>})M7**kCbBv9VF4e^P6&c@RcaN
zHCB;Kvh9L5tRv(V(X)C~`;v8rn?`wU#xDS5{m+mSnWhV1;|V0k6>;(|L6av_-t1*yB29FmX;7Z*dm4dqr1+XLtV6JJ0FHCIY#m7Zf|(Gt?yLThsfr!X>!
z8*Oq=!WV>1>wwiLz}O{lLf(@Jc7g`mY#ZytTd&CcNxn)5fGS7xLUk6~?J~9`y44Tm
z@A4?yQ1=QU2|+E5RrpphW|vg4e{{1&BIN#;E3V+D~RPXIt*E7rBxXF#R|
z!$E)Z^0jZLO@GiuI=#<}o?i9-ED~>V^#KH*p&)U?{(
z*YIKfFwMl-u;Bp{{j5#2dqrJNV7MgsGPF|9S>R*}ATCGLFfdo*X#~O0mqDT%em8Y5
zyeXw_^J29k8GDj5&lEa>`!;n~Fo;Ob6xZwH)&TWh`ZZMVoK5=Vsi|k1jcgD|CLy7BDN?*EkYga`A
zk6=|TnqbVZ@E+H1i}ylDj>fafE<7w{Hm*6YeP3yc;4Vk)Y+z>dV)|-Y9TAFN_#xU{
z;0?(D0z&VJDNyy!3PAa@GmYXu-3{Egm|lRMI{`ArRY&^auj#|Tg!EbzU%YBxz|^IP
z%2g51bQ)_eA9B3oya0h!MS2JUZB*Y&{f@X|8hprNNyi^(@^D*z1xT-I7zeJ+ME=B4
z!(M}W
zGVd4woKYsyuny~IkCG29OASSLTPFMgtAMBd>Kn&1=5xl+chBo$_tZl$LZs>1ze-A|
zv-Aku$9Hpub=H(-#LG}4@>BO=Nk|Qn6i;%|KwQN|4|Vm62xVW_uVi{0oGr#UHZoe(
zh)s=zI{1dbj>0YDg489`@_e+hpl%PqCaA;AW+&7U(>5G%Y?ae2!_k5_AwP+zCe0G<
zpC1@V<)k6c!ZZ7F<&CUQR>aqn^iE1aU9C}~qe?1LWS$Ni`O&7Uoip;J1;yK0#YLL*
z2?qx-z&Ej;Go0i9Vn(NzqMnV`0UQTu77RIE%lIgy*PL)hjiNBZnkDQDnLiSoKbyWwY^KOB4z;nJ2w{HrwO8U=nn8Jso2@#RTYeAOTj>
zN-zfNLk8iDm;0CKIL9zuMHaPeFNr58euE6VuB%^K#~IHN1uAK4*-2inPDL4tl16}8
z2F{E=ncrPMi$?3zX@2j?xfir;L)m_$oCIP;DL+ILb|e`{BY#SPX+n
zNsu|DEPX><10x$kbASl(w)%E*@Y@ya*FSr2`o>`RJ#Zt+9gNj^r1yq#+FZXnawz2(
z-ckfDTLa5J8`j03HxYnh9}U%KZA(d6G;^h9|30!n-Sz-*)|*#Ie0uS)eeVqwSiGvh
zGs2Vfx9tYWsY0+>IAm(GD!(>c4kIf;~;O_dfU1CXKr!TXNtta8-+I0b@e!zGd
zUWGga{YX$Qw+8W#qTH$zS}NAxHOriDmK&0}=V*_vNP&;V)&6}4bpAw-1)c&mI^BFt
zDa{}vH<4abaviC`!<)VO<8)#I}^EUGkwN-tVO&6>q_3%w)
zvFE3`q5_k^sghUJcaCm-{9TOzy<*7EUhQxRD4>LXeZCJ+KM#&dPxkr$8hZ<;oOI46*lPV7_V
z%8O%$bWVoO6;pY!zGvBnJyM;J&vHhAttprPt$D!_UVmoARAp~AcvQUg3noqMTOXgW
zT9Qe(CKi-nJSos30oTBNaUs&dpP&XmYx~`(^pRvEGpDI^?|i(Vr0(?sW0>6|T3R9D
zp+HhD
zzFyA!PS-w@7(0;jCBxxizQxlBTvVwf=$?rqW%jKHiY%BDw@?`5g+R1ddky^kNkZC&tSeceEB_aik%wQ3LI1p&;%B|pJF<^hW
zGuEKT`{ObWBD*gG<+Fd7dm|-oMe%{(PRY`8X}skQ8qRw{XXaE`IE4T}LwR%ZS+XET
zCSKFWsfoF4;P9dJ`c=DO-vEj2=o<<5#m?J$wH0jx%vple$jAS>IKW(}VplK#%8!Kr
z!$1mbYT!B)%i#!DA8l1xdBju9B7if|8lQ}2%m$Mo)mAxAuN)|-R|98j7j*E>`8Rt%
zHQZJnd&>=XtPtWJmO8~pRo*9X*-Pz^Ndm6T@3JLzT*HHC^+omcmAaqOAX^Kzs2-pt
z^P57wTV`Y6&~To91c1#a8!QLBi>2`=iUn{C7o+@i<%|jVEV9S&mJyKpFwz`VZpB2q;fAjJ7xUry*5Waik&%{-xR8G+735@s~7vZ9=DsNEE?$s
zbSUds@PmCFi*qc?qw9``K(*7jNI(#EAaNyiv=AbAF(K=d(Q|@oo6*aRUmJ(n)AxR`
zUMg?Wd-3U8E1n{6Rl~X!hUT@Tdiafg=)ov3|Me+7qC)+LTBrcqqo(5+&l?
zz<2NAS98=XU$0RGmRELJge3O>V9LwU#^q25)dW4UEcw$pUp|GNBZxR4V7I@|vZ6NL
zZ9-J^^6GU)Kc3p{Mf^jgqb|_d0dVF4b)fcya~}81KlaP1I~E41=qO+ct#iU(>P(!OqeLQ|CJc31~bX3`XZ1LsfL?gT_IRA6aJR
zw5r$J`F_)Ii7H#$L`k!{#-i@+4A=gf(NG
zYgMn!lw--*NWELqUYJOhqa6yupwZ^XgVmfn-=(D|Q|OXeeqVDjU)Ofg;17>icpX|p
zGFh_hkJ>G%iK5kch)-NkIFC!+(eL5Z30A(~=2$HCLuBspZ~b
zOk-zFODLor9?1ARA3JLMa{6dR(PnqdGB5XecayZ}-Ec*e@1u2=ASN$k3YZuVa*
zz}R(1q%oWeskI6AWz1+DW^XyvIfIF7Pa09(e)ZEReO72`}+$4
zllYt4pk+_KQBhU!PB=!I(4l-TAs2UEcFOkYSEEi>^!pgV!{mC%AXebH>^AkjeK)(xJo(l5xkvn
z%aFi>f2YHlNrsvJPBf7xcJ&KN)>1kfoeqj8l1;X(EgwPAu_wKqtpXn71t6w38^n6p
z?*y8Q3lO|jeic>|HRfY38Turt?W-9B}ChJ5_B7!Zpx3R9q}Kkmkm}-x~9!T<=xx+v}S;JBLBb^=CWZt9EOmsi-hZGRrrpzRKZy?MPdz5}o!AK#
zq(vkTRxd>FArlM~hEP;|J93)vwU`~8$HO@QWF
zECxSNaP!MW#`DF+WSD4{e#J|09L*@N`e-%Mn4DRVl!e&00uBzOnWZN~b2xtayz>{@
zCeKbMNI5x>FRg<>TdW@G2#w6V0QSeH9xbE0{1B=AxsS=le(?4lWkM6np@2wJR}-ND
z32|W8A`L+wO#riS+#O@XP%AzT_9km%Be^O{qT{3}fRiI&N}C~?|34556yZD3`v7nO
zBKq(U-l}3e`@I#DGmlu9OI^LM7>YbUBW51wq
zMYw2Wk@C@8BeOs3?i-5_lPLv+rcXjW9y1UTbgtkid2aRV%bH$@p;-}A>rkSd?9n!L
z-n^ydLLQ;4alQ5l0t}6E+3x5Nx}xHy#p63U?w#uI@BQY4_(5n>8qM+icy(K1}=y1K9h
z#;J$8d@`RxNQL==)n&uLl!*IHy}{4kL#>~jh@o8J+ll5P(H*n
zm{y}^YbtPl`xvmGXLY#B8t#8;2y>e1k8}u77U{AY3-eUyLxRf*_koDyU)ng-87~6;
z=tK(J^qTfN32OL~RB8NAW2)`&A4nQ-QMphm=
zQI>Dq6r)+0f8`s0G(8GmI3r;(|J8bp__aHl
z=xDEFnT~G@3;F
zgY_9N3G3F99Ifr@M)MY;9@r{*k$SIi%gFHd&J65+JIVz|i~L{cxSZV~yPUH{t^?+ruLsMANJ~Wwo=LD`j+j`(i#wv21
z_89~rcM?{mTE4=3XUnN1)glmaigp3cM9xE@%wsbq`i|KOAv091Fv?*EwWj$)6Qtk@{sJo|%HxwB-rMv%m_Q5pOsoAoC
zH{;p7Kp;O!uj&U+G$*V2IBLWl?~(%$q~nj9_m`-r^C1KY8h2Xfr7iD*A?zDJVc5mP
zKWQs6UKt<){00%}U#kYAzF|BQ=RVIt`!VxW5Q|Ukg*Sy9L5uzM#FyJ^x+3B=%@$
z{K8!8;hXqDSJn8QmQS$I@v|?n)-Cq+j$DBk522Kn-$*{KcEK0LHpv~XwxDu=mr?0J
zUj#imz?nE0W~k<4g8-?
z{OY6<6ZghruSTT~TwQm|?75oX*+v_GFi9+ad+sJ4eyHRrnEF
z5>q@IDe#t{l&xYLh?j}G*DmVW?6i|fO6uIbR99iyhC)j*nQr|p8?W43%M_o(4O+Rl{WiT+-+}z!_T9OoXf4&qA
zMw^=Jbm=_KdSTrJ1~dr3L5d3~Y2a1$6G-!?=cHJ7;SIdHsjMQnp&MG^S1&=!6Jq4x
zvXG$Pa`yYeDn-wy=1nbAVsJ|oJ`a3ubOr@S&VX!phn=Eu!o8o!*NQuSmvQnutQ7VV
zZab|mz^lhs!r}N&maTb(YW#CH=veHt>h`h}mkZf`mo+VX$jvfV9a)aK_##6b%jB7H
zD&$Od;mQVlrMt>&%<9LV_BUi014Zprsf0wM^N`{SJ^>o&4wid$3MJv$RToXe%x<^S@>s-#lL9ZsQ38a8MIFGonK_Xq(XtBY^K=YQP6PCL
zF8au@pqUiD7g(R_8^)^F@At$FOV)|#c%ddp-L95?5YN~WW##r@dLL(@8=QZn!7uQ%
zKl&(}K3w6u^W!@1k5gCObKmXQZ>@~ifh$IID{!
zCabL1H`5Ks>ZBFrLw9qW*U+_-Y|8udS`HblSw(+vhsP)#N?O1f;a#j67utQP*za>O
zyu)hb?Wcnsi?l6sxsRTnkRbg93nJ>Ar(6DS6b}s;qO)yx!{eFI8(+qTi-un?h#ngr
zBIY5K^jmvOmZ*Gw?;z?)^`<(0_+aoHs%0ve(G%`u(znB_nc4U_ga@n@4HUJ0wZYL;REOXaC
zT1C7Si@M4f$f1H_YmLE2YkFF?XXGatZYC2WS(Zy`oaT$bCqS_g@cJCs@~6%Zm?HvE
z_XS^c$ogG8O&ZtFf-13B8G5_YDbs=pLxvCg%{Ap*mXkMnk(LVsq@<+e0Xpm!aC&`P
z1sQhDkx_2hZ4+kyn`hqyZpMm9&XP++o-1OJu9}|8d$ZO-G#Ec8msU)OXlY#S8|pwI
zMv9ifHlMXDlw9vcfrsvR4nUOKe(v_SXO?O0XT}$IDjxLh#?$rFoYxPP87L1b7t{5sC`XE&&
z=O;W*(l_L&)oMKA5Q_&^NT8{3%RoQ2!AW*V6~p
zF**qPJp;h^k0Js<2Y5ac9gTnr4cP15L*&t+gNoavnwzjkRvL0s;KQhU>fMR!sMoEgeoB)nUM!^y9ONRhlH3Xk2NHUPm0@Q+Ux
zSc|YYD=sEqGC~b{!Gu4*Z~P@M6=pi^w1#S{yT0>va}wi)tTOu|hYmyb*>1zx`~w+e
zkK0|WvOc8j-nxBrfMK?2nm;{xw~`l>8|&lxh)#4IuK;?Z9}hcx`thqPNL@xCI%H7s
zTo)ZdQSr?eeHGjaG5Cu>P;M_zVT5@R)W9{s;1}`XJoOR0%9yRI*G(s^emu9BxBA8g
zg-aH4{&1kNwRcOGHQEKc!$J+(;dWmY2CM8V((pGL1_N!|pYXnT_6*c?pm12lso(rYpI%*cn-m#rPHLq#vd
zFFW11QnyzKK(4BB=;xn)Q*UyFk6J6Cw8jhw@V-dD%Y`C@QSnVsen#34d3
z-dq_83<$|2|7j%DSVErJ7Ly*Z##10VOVYuufJnBUFR<0p(c(v!4;y6KFnKojowGi}K6!SDng9tpOl`bN#TD_Z
z9OtFa+40{ro=izDbpLIta8+x^WPjT=ZLbB~4};Sy*_n`n^K>Yr!#`^Ko!gzmTIR&Y
zk1&0A$p<=kt3|7`Rbb2>_|1uMDT#y8cfMnfy{>q(Ka&r~Z5LmYRbluRB4ot#YQ8sK
z$Z*;tLv?i+$Tvq1Hx9WDh2ig*!AmX{5QqC$*HsL|V?+P^X&0u^RVWX0*gJilh;)4!
z)gQc2PpN?EQ6irik_Z*_}AY;-(;_6t#8KKXFQtOW6$?H
za^+Fp9G^kjPiozH9CRHN*zit3wn5AB+}yiIs;wvk!>4`C9lXMVQa&u*{w+Om+d;;r
z;z_Q(wt+-e_i({