From ee8bd14f3be0bc7ad57549ad4be6b3db9a18b7eb Mon Sep 17 00:00:00 2001 From: Servo WPT Sync <32481905+servo-wpt-sync@users.noreply.github.com> Date: Sun, 6 Jul 2025 10:33:30 +0200 Subject: [PATCH] Sync WPT with upstream (06-07-2025) (#37901) Automated downstream sync of changes from upstream as of 06-07-2025 [no-wpt-sync] --------- Signed-off-by: WPT Sync Bot Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com> Co-authored-by: sagudev <16504129+sagudev@users.noreply.github.com> --- tests/wpt/meta/MANIFEST.json | 6292 +++++++++-------- ...ive.html.ini => __HostHttp.https.html.ini} | 2 +- ...ntative.html.ini => __Http.https.html.ini} | 2 +- .../animation-range-end-computed.html.ini | 6 + .../animation-range-start-computed.html.ini | 6 + .../border-shape-overflow-stroke.html.ini | 2 + .../border-shape-overflow.html.ini | 2 + .../at-custom-media-parsing.html.ini | 21 + ...iation-settings-serialization-002.html.ini | 3 + .../parsing/font-style-valid.html.ini | 3 + ...ations-width-neutral-keyframe-001.html.ini | 3 + ...ations-width-neutral-keyframe-002.html.ini | 3 + .../row-rule-width-interpolation.html.ini | 504 ++ ...interpolation-multiple-values-001.html.ini | 144 + ...interpolation-multiple-values-002.html.ini | 144 + ...ontent-size-with-max-content-item.html.ini | 2 + tests/wpt/meta/css/css-mixins/basic.html.ini | 3 + .../css/css-mixins/contents-rule.html.ini | 15 + .../css/css-mixins/cross-stylesheet.html.ini | 3 + .../meta/css/css-mixins/declarations.html.ini | 3 + .../mixins-including-mixins.html.ini | 3 + .../meta/css/css-mixins/shadow-dom.html.ini | 9 + ...tive-box-order-of-pseudo-elements.html.ini | 2 + ...s-for-intrinsic-contributions-002.html.ini | 6 + .../tentative/table-quirks.html.ini | 6 + .../if-initial-unregistered.html.ini | 3 + .../parsing/filter-computed.html.ini | 51 + .../parsing/filter-parsing-valid.html.ini | 72 + ...validation-first-in-sibling-chain.html.ini | 12 + ...owRoot-init-customElementRegistry.html.ini | 9 + .../max-payload.tentative.https.window.js.ini | 2 +- .../css-font-face.sub.tentative.html.ini | 3 + .../navigating-across-documents/009.html.ini | 3 - ...eshow-events-iframe-contentWindow.html.ini | 3 - ...ation-unload-same-origin-fragment.html.ini | 3 - ...as.2d.disconnected-font-size-math.html.ini | 2 - ....text.measure.width.nullCharacter.html.ini | 3 + ....measure.width.nullCharacter.worker.js.ini | 3 + .../link-multiple-load-events.html.ini | 9 + ...-loading-lazy-nav-location-assign.html.ini | 3 + .../iframe_sandbox_popups_escaping-2.html.ini | 2 +- .../iframe_sandbox_popups_escaping-3.html.ini | 2 +- ...rame_sandbox_popups_nonescaping-1.html.ini | 1 - .../prefetch-time-to-fetch.https.html.ini | 3 + .../meta/preload/preload-error.sub.html.ini | 6 + .../navigate-to-javascript-url-001.html.ini | 3 + .../navigate-to-javascript-url-002.html.ini | 3 + .../navigate-to-javascript-url-003.html.ini | 3 + .../navigate-to-javascript-url-004.html.ini | 3 + .../navigate-to-javascript-url-005.html.ini | 3 + ...avigate-to-javascript-url-006.sub.html.ini | 3 + ...ate-to-javascript-url-csp-headers.html.ini | 40 + .../trusted-types-navigation.html.ini | 71 + ...audionode-connect-method-chaining.html.ini | 2 + ...ate-audiobuffersource-connections.html.ini | 5 + .../meta/webmessaging/with-ports/018.html.ini | 4 - .../webstorage/symbol-props.window.js.ini | 6 - .../idbindex_getAll-options.tentative.any.js | 4 + .../tests/IndexedDB/idbindex_getAll.any.js | 4 + ...bindex_getAllKeys-options.tentative.any.js | 4 + .../IndexedDB/idbindex_getAllKeys.any.js | 4 + .../idbindex_getAllRecords.tentative.any.js | 4 + ...bjectstore_getAll-options.tentative.any.js | 4 + .../IndexedDB/idbobjectstore_getAll.any.js | 4 + ...tstore_getAllKeys-options.tentative.any.js | 4 + .../idbobjectstore_getAllKeys.any.js | 4 + ...objectstore_getAllRecords.tentative.any.js | 4 + .../IndexedDB/resources/support-get-all.js | 44 + ...ter-absent-getAvailability.https.window.js | 1 + ...owered-off-getAvailability.https.window.js | 1 + ...powered-on-getAvailability.https.window.js | 1 + ...iframe-getAvailability.sub.https.window.js | 1 + .../characteristicProperties.https.window.js | 5 +- ...-characteristic-is-removed.https.window.js | 30 + ...descriptor-get-same-object.https.window.js | 41 + .../gen-service-is-removed.https.window.js | 25 + ...istic-is-removed-with-uuid.https.window.js | 30 + ...-characteristic-is-removed.https.window.js | 29 + ...descriptor-get-same-object.https.window.js | 41 + ...rvice-is-removed-with-uuid.https.window.js | 25 + .../gen-service-is-removed.https.window.js | 25 + .../characteristic-is-removed.https.window.js | 5 +- .../service-is-removed.https.window.js | 6 +- ...d-multiple-event-listeners.https.window.js | 5 +- .../characteristic-is-removed.https.window.js | 8 +- .../readValue/event-is-fired.https.window.js | 5 +- ...-characteristic-is-removed.https.window.js | 29 + .../readValue/read-succeeds.https.window.js | 5 +- .../read-updates-value.https.window.js | 5 +- .../service-is-removed.https.window.js | 6 +- ...ame-from-2-characteristics.https.window.js | 5 +- .../service-same-object.https.window.js | 5 +- ...-characteristic-is-removed.https.window.js | 29 + ...-characteristic-is-removed.https.window.js | 29 + .../characteristic-is-removed.https.window.js | 5 +- ...-characteristic-is-removed.https.window.js | 30 + .../service-is-removed.https.window.js | 6 +- .../write-succeeds.https.window.js | 17 +- .../characteristic-is-removed.https.window.js | 5 +- ...-characteristic-is-removed.https.window.js | 30 + .../service-is-removed.https.window.js | 6 +- .../gen-service-is-removed.https.window.js | 23 + .../readValue/read-succeeds.https.window.js | 5 +- .../gen-service-is-removed.https.window.js | 23 + .../connect-after-forget.https.window.js | 7 +- .../device/forget/getDevices.https.window.js | 10 +- .../disconnected.https.window.js | 5 +- .../disconnected_gc.https.window.js | 5 +- ...ne-event-per-disconnection.https.window.js | 5 +- ...-during-disconnected-event.https.window.js | 5 +- .../bluetooth/{legacy => bidi}/generate.py | 12 +- .../{legacy => bidi}/generate_test.py | 10 +- ...nted-devices-with-services.https.window.js | 5 +- .../no-granted-devices.https.window.js | 5 +- .../reject_opaque_origin.https.html | 0 .../reject_opaque_origin.https.html.headers | 0 ...me-bluetooth-device-object.https.window.js | 5 +- .../idl/idl-Bluetooth.https.window.js | 7 +- .../idl/idl-BluetoothDevice.https.window.js | 5 +- .../idl/idl-BluetoothUUID.window.js | 8 +- .../idl-NavigatorBluetooth.https.window.js | 2 +- .../idl/idl-NavigatorBluetooth.window.js | 2 +- .../idl/idlharness.tentative.https.window.js | 21 + .../device-with-empty-name.https.window.js | 1 + .../device-with-name.https.window.js | 1 + .../optional-services-missing.https.window.js | 20 + .../optional-services-present.https.window.js | 20 + ...anufacturer-data-in-filter.https.window.js | 5 +- ...cklisted-service-in-filter.https.window.js | 7 +- ...ervice-in-optionalServices.https.window.js | 5 +- .../data-prefix-and-mask-size.https.window.js | 5 +- ...aPrefix-buffer-is-detached.https.window.js | 7 +- ...-name-longer-than-29-bytes.https.window.js | 5 +- .../empty-dataPrefix.https.window.js | 7 +- .../empty-exclusion-filter.https.window.js | 5 +- ...y-exclusion-filters-member.https.window.js | 5 +- .../empty-filter.https.window.js | 5 +- .../empty-filters-member.https.window.js | 5 +- ...ty-manufacturerData-member.https.window.js | 7 +- .../empty-namePrefix.https.window.js | 5 +- .../empty-services-member.https.window.js | 5 +- ...on-filters-require-filters.https.window.js | 14 +- ...lters-xor-acceptAllDevices.https.window.js | 5 +- .../invalid-companyIdentifier.https.window.js | 7 +- .../mask-buffer-is-detached.https.window.js | 7 +- ...ngth-exceeded-name-unicode.https.window.js | 5 +- .../max-length-exceeded-name.https.window.js | 5 +- ...xceeded-namePrefix-unicode.https.window.js | 5 +- ...length-exceeded-namePrefix.https.window.js | 5 +- .../max-length-name-unicode.https.window.js | 5 +- .../max-length-name.https.window.js | 5 +- ...-length-namePrefix-unicode.https.window.js | 5 +- .../max-length-namePrefix.https.window.js | 5 +- .../no-arguments.https.window.js | 3 +- .../same-company-identifier.https.window.js | 5 +- ...ode-valid-length-name-name.https.window.js | 5 +- ...lid-length-name-namePrefix.https.window.js | 5 +- ...in-optionalServices-member.https.window.js | 5 +- ...service-in-services-member.https.window.js | 5 +- .../cross-origin-iframe.sub.https.window.js | 5 +- .../discovery-succeeds.https.window.js | 5 +- ...oesnt-consume-user-gesture.https.window.js | 19 + .../filter-matches.https.window.js | 5 +- ...ice-from-name-empty-filter.https.window.js | 5 +- ...ot-processing-user-gesture.https.window.js | 5 +- .../radio-not-present.https.window.js | 1 + .../reject_opaque_origin.https.html | 0 .../reject_opaque_origin.https.html.headers | 0 .../requestDevice/same-device.https.window.js | 5 +- ...ngle-filter-single-service.https.window.js | 5 +- .../script-tests/base_test_js.template | 6 +- .../characteristic-is-removed.js | 29 + .../descriptor-get-same-object.js | 35 + .../characteristic/service-is-removed.js | 20 + .../descriptor/service-is-removed.js | 17 + .../server/disconnect-called-before.js | 24 + .../server/disconnect-called-during-error.js | 22 + .../disconnect-called-during-success.js | 22 + .../server/disconnect-invalidates-objects.js | 40 + .../server/disconnected-device.js | 21 + .../garbage-collection-ran-during-error.js | 25 + .../garbage-collection-ran-during-success.js | 24 + ...et-different-service-after-reconnection.js | 41 + .../script-tests/server/get-same-object.js | 38 + .../server/invalid-service-name.js | 21 + .../script-tests/server/service-not-found.js | 18 + .../service/blocklisted-characteristic.js | 20 + .../garbage-collection-ran-during-error.js | 25 + .../script-tests/service/get-same-object.js | 33 + .../service/invalid-characteristic-name.js | 22 + .../service/service-is-removed.js | 19 + .../connection-succeeds.https.window.js | 5 +- ...lection-ran-during-success.https.window.js | 5 +- .../get-same-gatt-server.https.window.js | 5 +- .../server/device-same-object.https.window.js | 5 +- .../connect-disconnect-twice.https.window.js | 5 +- .../disconnect-twice-in-a-row.https.window.js | 5 +- ...n-disconnect-called-before.https.window.js | 29 + ...onnect-called-during-error.https.window.js | 26 + ...nect-called-during-success.https.window.js | 27 +- ...onnect-invalidates-objects.https.window.js | 45 + .../gen-disconnected-device.https.window.js | 26 + ...ollection-ran-during-error.https.window.js | 30 + ...lection-ran-during-success.https.window.js | 30 + ...service-after-reconnection.https.window.js | 46 + .../gen-get-same-object.https.window.js | 43 + .../gen-invalid-service-name.https.window.js | 27 + .../gen-service-not-found.https.window.js | 24 + .../service-found.https.window.js | 5 +- ...klisted-services-with-uuid.https.window.js | 5 +- .../blocklisted-services.https.window.js | 5 +- ...ct-called-before-with-uuid.https.window.js | 29 + ...n-disconnect-called-before.https.window.js | 28 + ...led-during-error-with-uuid.https.window.js | 26 + ...onnect-called-during-error.https.window.js | 26 + ...d-during-success-with-uuid.https.window.js | 27 +- ...nect-called-during-success.https.window.js | 27 +- ...alidates-objects-with-uuid.https.window.js | 45 + ...onnect-invalidates-objects.https.window.js | 45 + ...connected-device-with-uuid.https.window.js | 26 + .../gen-disconnected-device.https.window.js | 25 + ...ran-during-error-with-uuid.https.window.js | 30 + ...ollection-ran-during-error.https.window.js | 29 + ...n-during-success-with-uuid.https.window.js | 30 + ...lection-ran-during-success.https.window.js | 29 + ...ter-reconnection-with-uuid.https.window.js | 46 + ...service-after-reconnection.https.window.js | 46 + ...-get-same-object-with-uuid.https.window.js | 43 + .../gen-get-same-object.https.window.js | 42 + .../gen-invalid-service-name.https.window.js | 27 + ...ervice-not-found-with-uuid.https.window.js | 24 + .../services-not-found.https.window.js | 5 +- .../device-same-object.https.window.js | 5 +- .../characteristic-found.https.window.js | 5 +- ...blocklisted-characteristic.https.window.js | 26 + ...ollection-ran-during-error.https.window.js | 30 + .../gen-get-same-object.https.window.js | 38 + ...nvalid-characteristic-name.https.window.js | 28 + .../gen-service-is-removed.https.window.js | 24 + ...locklisted-characteristics.https.window.js | 5 +- ...d-characteristic-with-uuid.https.window.js | 26 + ...ran-during-error-with-uuid.https.window.js | 30 + ...ollection-ran-during-error.https.window.js | 29 + ...-get-same-object-with-uuid.https.window.js | 38 + .../gen-get-same-object.https.window.js | 37 + ...nvalid-characteristic-name.https.window.js | 28 + ...rvice-is-removed-with-uuid.https.window.js | 24 + .../gen-service-is-removed.https.window.js | 24 + ...pter-added-getAvailability.https.window.js | 23 - ...-on-off-on-getAvailability.https.window.js | 37 - ...er-removed-getAvailability.https.window.js | 24 - .../detachedIframe.https.window.js | 33 - ...-characteristic-is-removed.https.window.js | 22 - ...descriptor-get-same-object.https.window.js | 36 - .../gen-service-is-removed.https.window.js | 24 - .../detachedIframe.https.window.js | 33 - ...istic-is-removed-with-uuid.https.window.js | 22 - ...-characteristic-is-removed.https.window.js | 22 - ...descriptor-get-same-object.https.window.js | 36 - ...rvice-is-removed-with-uuid.https.window.js | 24 - .../gen-service-is-removed.https.window.js | 24 - .../characteristic-is-removed.https.window.js | 21 - .../readValue/detachedIframe.https.window.js | 33 - ...-characteristic-is-removed.https.window.js | 22 - .../detachedIframe.https.window.js | 33 - ...-characteristic-is-removed.https.window.js | 22 - .../detachedIframe.https.window.js | 33 - .../buffer-is-detached.https.window.js | 41 - .../writeValue/detachedIframe.https.window.js | 33 - ...-characteristic-is-removed.https.window.js | 22 - .../service-is-removed.https.window.js | 18 - .../buffer-is-detached.https.window.js | 43 - ...-characteristic-is-removed.https.window.js | 22 - .../write-succeeds.https.window.js | 47 - .../buffer-is-detached.https.window.js | 38 - ...-characteristic-is-removed.https.window.js | 22 - .../write-succeeds.https.window.js | 41 - .../readValue/detachedIframe.https.window.js | 34 - .../gen-service-is-removed.https.window.js | 22 - .../buffer-is-detached.https.window.js | 33 - .../writeValue/detachedIframe.https.window.js | 34 - .../gen-service-is-removed.https.window.js | 22 - .../forget/detachedIframe.https.window.js | 27 - ...before-watchAdvertisements.https.window.js | 17 - .../abort-pending-operation.https.window.js | 22 - .../abort-signal-stops-events.https.window.js | 27 - ...isements-call-stops-events.https.window.js | 26 - ...sementreceived-event-fired.https.window.js | 25 - ...r-data-filtered-from-event.https.window.js | 50 - ...-watchAdvertisements-calls.https.window.js | 29 - .../detachedIframe.https.window.js | 27 - ...r-data-filtered-from-event.https.window.js | 41 - ...t-watchAdvertisements-call.https.window.js | 25 - ...rt-one-watchAdvertisements.https.window.js | 47 - .../watching-two-devices.https.window.js | 41 - .../reject_opaque_origin.https.html | 13 - .../sandboxed_iframe.https.window.js | 26 - .../sandboxed_iframe.https.window.js | 26 - .../idl/idlharness.tentative.https.window.js | 25 - .../optional-services-missing.https.window.js | 21 - .../optional-services-present.https.window.js | 25 - ...oesnt-consume-user-gesture.https.window.js | 24 - .../le-not-supported.https.window.js | 15 - ...cturer-data-filter-matches.https.window.js | 139 - .../reject_opaque_origin.https.html.headers | 1 - .../request-from-iframe.https.window.js | 43 - ...uest-from-sandboxed-iframe.https.window.js | 35 - .../sandboxed_iframe.https.window.js | 27 - .../reject_opaque_origin.https.html | 13 - .../reject_opaque_origin.https.html.headers | 1 - .../sandboxed_iframe.https.window.js | 27 - .../characteristic-is-removed.js | 24 - .../descriptor-get-same-object.js | 32 - .../characteristic/service-is-removed.js | 20 - .../descriptor/service-is-removed.js | 18 - .../server/disconnect-called-before.js | 22 - .../server/disconnect-called-during-error.js | 22 - .../disconnect-called-during-success.js | 23 - .../server/disconnect-discovery-timeout.js | 42 - .../server/disconnect-invalidates-objects.js | 39 - .../server/disconnected-device.js | 20 - ...y-complete-no-permission-absent-service.js | 25 - .../discovery-complete-service-not-found.js | 16 - .../garbage-collection-ran-during-error.js | 25 - .../garbage-collection-ran-during-success.js | 24 - ...et-different-service-after-reconnection.js | 35 - .../script-tests/server/get-same-object.js | 33 - .../server/invalid-service-name.js | 22 - .../server/no-permission-absent-service.js | 23 - .../server/no-permission-for-any-service.js | 17 - .../server/no-permission-present-service.js | 22 - .../script-tests/server/service-not-found.js | 16 - .../service/blocklisted-characteristic.js | 19 - .../service/characteristic-not-found.js | 15 - .../garbage-collection-ran-during-error.js | 24 - .../script-tests/service/get-same-object.js | 24 - .../service/invalid-characteristic-name.js | 23 - .../script-tests/service/reconnect-during.js | 36 - .../service/service-is-removed.js | 20 - .../connect/detachedIframe.https.window.js | 27 - .../disconnect/detach-gc.https.window.js | 34 - .../disconnect/detachedIframe.https.window.js | 28 - .../disconnect/gc-detach.https.window.js | 36 - ...n-disconnect-called-before.https.window.js | 26 - ...onnect-called-during-error.https.window.js | 25 - ...sconnect-discovery-timeout.https.window.js | 46 - ...onnect-invalidates-objects.https.window.js | 43 - .../gen-disconnected-device.https.window.js | 23 - ...-permission-absent-service.https.window.js | 29 - ...complete-service-not-found.https.window.js | 20 - ...ollection-ran-during-error.https.window.js | 28 - ...lection-ran-during-success.https.window.js | 28 - ...service-after-reconnection.https.window.js | 39 - .../gen-get-same-object.https.window.js | 37 - .../gen-invalid-service-name.https.window.js | 26 - ...-permission-absent-service.https.window.js | 27 - ...permission-for-any-service.https.window.js | 21 - ...permission-present-service.https.window.js | 26 - .../gen-service-not-found.https.window.js | 20 - ...o-iframes-from-same-origin.https.window.js | 88 - .../correct-services.https.window.js | 30 - ...ct-called-before-with-uuid.https.window.js | 26 - ...n-disconnect-called-before.https.window.js | 26 - ...led-during-error-with-uuid.https.window.js | 25 - ...onnect-called-during-error.https.window.js | 25 - ...iscovery-timeout-with-uuid.https.window.js | 46 - ...sconnect-discovery-timeout.https.window.js | 46 - ...alidates-objects-with-uuid.https.window.js | 43 - ...onnect-invalidates-objects.https.window.js | 43 - ...connected-device-with-uuid.https.window.js | 23 - .../gen-disconnected-device.https.window.js | 23 - ...n-absent-service-with-uuid.https.window.js | 29 - ...ervice-not-found-with-uuid.https.window.js | 20 - ...ran-during-error-with-uuid.https.window.js | 28 - ...ollection-ran-during-error.https.window.js | 28 - ...n-during-success-with-uuid.https.window.js | 28 - ...lection-ran-during-success.https.window.js | 28 - ...ter-reconnection-with-uuid.https.window.js | 39 - ...service-after-reconnection.https.window.js | 39 - ...-get-same-object-with-uuid.https.window.js | 37 - .../gen-get-same-object.https.window.js | 37 - .../gen-invalid-service-name.https.window.js | 26 - ...n-absent-service-with-uuid.https.window.js | 27 - ...-for-any-service-with-uuid.https.window.js | 21 - ...permission-for-any-service.https.window.js | 21 - ...-present-service-with-uuid.https.window.js | 26 - ...ervice-not-found-with-uuid.https.window.js | 20 - .../services-found-with-uuid.https.window.js | 25 - .../services-found.https.window.js | 25 - .../service/detachedIframe.https.window.js | 26 - ...evice-same-from-2-services.https.window.js | 14 - .../detachedIframe.https.window.js | 31 - ...blocklisted-characteristic.https.window.js | 23 - ...n-characteristic-not-found.https.window.js | 19 - ...ollection-ran-during-error.https.window.js | 27 - .../gen-get-same-object.https.window.js | 28 - ...nvalid-characteristic-name.https.window.js | 27 - .../gen-reconnect-during.https.window.js | 39 - .../gen-service-is-removed.https.window.js | 23 - ...cteristics-found-with-uuid.https.window.js | 39 - .../characteristics-found.https.window.js | 41 - .../characteristics-not-found.https.window.js | 15 - ...d-characteristic-with-uuid.https.window.js | 23 - ...ristic-not-found-with-uuid.https.window.js | 19 - ...ran-during-error-with-uuid.https.window.js | 27 - ...ollection-ran-during-error.https.window.js | 27 - ...-get-same-object-with-uuid.https.window.js | 28 - .../gen-get-same-object.https.window.js | 28 - ...nvalid-characteristic-name.https.window.js | 27 - ...reconnect-during-with-uuid.https.window.js | 39 - .../gen-reconnect-during.https.window.js | 39 - ...rvice-is-removed-with-uuid.https.window.js | 23 - .../gen-service-is-removed.https.window.js | 23 - .../resources/bluetooth-fake-devices.js | 7 +- .../bluetooth/resources/bluetooth-test.js | 13 +- ...s.tentative.html => __HostHttp.https.html} | 0 ...https.tentative.html => __Http.https.html} | 0 .../cookies/resources/cookie-helper.sub.js | 6 +- .../tests/css/CSS2/floats/inheritance.html | 24 + .../parsing/animation-range-end-computed.html | 2 + .../animation-range-start-computed.html | 2 + .../border-shape-overflow-ref.html | 16 + .../border-shape-overflow-stroke.html | 24 + .../border-shape/border-shape-overflow.html | 22 + .../tests/css/css-cascade/WEB_FEATURES.yml | 2 +- .../css-color/relative-color-with-zoom.html | 17 + .../at-custom-media-parsing.html | 38 + ...ontent-visibility-on-display-contents.html | 15 + .../flexbox-ignores-first-letter.html | 106 + .../select-element-multiple-ref.html | 6 + .../css-flexbox/select-element-multiple.html | 8 + ...-variation-settings-descriptor-01-ref.html | 21 + ...font-variation-settings-descriptor-01.html | 25 + ...-variation-settings-descriptor-02-ref.html | 21 + ...font-variation-settings-descriptor-02.html | 26 + ...-variation-settings-descriptor-03-ref.html | 29 + ...font-variation-settings-descriptor-03.html | 34 + ...-variation-settings-serialization-002.html | 32 + .../css-fonts/parsing/font-style-valid.html | 2 +- .../test-synthetic-bold-2-notref.html | 24 - .../css/css-fonts/test-synthetic-bold-2.html | 32 - .../test-synthetic-italic-4-notref.html | 24 - .../css-fonts/test-synthetic-italic-4.html | 32 - ...ecorations-width-neutral-keyframe-001.html | 25 + ...ecorations-width-neutral-keyframe-002.html | 25 + .../row-rule-width-interpolation.html | 119 + ...dth-interpolation-multiple-values-001.html | 59 + ...dth-interpolation-multiple-values-002.html | 59 + .../grid-container-as-flex-item-001.html | 35 + .../grid-container-as-flex-item-002.html | 36 + .../grid-container-as-flex-item-003.html | 37 + ...ax-content-size-with-max-content-item.html | 30 + .../masonry-item-placement-001-ref.html | 11 +- .../masonry-item-placement-001.html | 10 +- .../masonry-item-placement-002-ref.html | 4 +- .../masonry-item-placement-002.html | 6 +- .../masonry-item-placement-004-ref.html | 23 +- .../masonry-item-placement-004.html | 3 +- .../masonry-item-placement-005-ref.html | 23 +- .../masonry-item-placement-005.html | 3 +- .../masonry-item-placement-006-ref.html | 112 +- .../masonry-item-placement-006.html | 18 + .../masonry-item-placement-007-ref.html | 90 +- tests/wpt/tests/css/css-mixins/basic.html | 42 + .../tests/css/css-mixins/contents-rule.html | 87 + .../css/css-mixins/cross-stylesheet.html | 29 + .../tests/css/css-mixins/declarations.html | 27 + .../css-mixins/mixins-including-mixins.html | 33 + .../wpt/tests/css/css-mixins/shadow-dom.html | 75 + ...tive-box-order-of-pseudo-elements-ref.html | 15 + ...relative-box-order-of-pseudo-elements.html | 64 + .../css/css-scroll-snap/overscroll-snap.html | 1 + ...c-fixed-width-with-max-content-height.html | 1 + ...c-fixed-width-with-min-content-height.html | 1 + ...sizes-for-intrinsic-contributions-002.html | 14 +- ...k-to-fit-sizing-max-width-min-content.html | 1 + .../css-tables/tentative/table-quirks.html | 10 +- .../text-autospace-dynamic-001.html | 1 + .../text-autospace-dynamic-text-001-ref.html | 3 + .../text-autospace-dynamic-text-001.html | 3 + .../text-autospace-dynamic-text-002.html | 3 + .../text-autospace-dynamic-text-003.html | 3 + .../text-autospace-dynamic-text-004.html | 3 + .../text-autospace-edit-001-ref.html | 1 + .../text-autospace-edit-001.html | 1 + .../text-autospace-mixed-001.html | 1 + .../text-autospace-vertical-combine-001.html | 1 + .../text-autospace-vertical-upright-001.html | 1 + .../text-autospace/text-autospace-vs-001.html | 1 + .../css/css-text/zwnj-renders-invisible.html | 22 + .../css-values/if-initial-unregistered.html | 20 + .../percentage-without-context.html | 4 + ...ution-with-percentage-without-context.html | 25 + .../scoped/transform-clip-ref.html | 35 + .../scoped/transform-clip.html | 72 + ...ansition-name-is-backdrop-filter-root.html | 3 + .../css/css-viewport/zoom/border-ref.html | 17 + .../tests/css/css-viewport/zoom/border.html | 20 + .../css-viewport/zoom/zoom-precision-ref.html | 22 + .../css/css-viewport/zoom/zoom-precision.html | 30 + ...drop-filter-backdrop-root-opacity-ref.html | 4 +- ...backdrop-filter-backdrop-root-opacity.html | 2 +- .../backdrop-filter-edge-behavior.html | 1 + .../filter-effects/feconvolve-region-001.html | 26 + .../filter-effects/feconvolve-region-002.html | 28 + .../filter-with-mix-blend-mode.html | 23 + .../parsing/filter-computed.html | 55 + .../parsing/filter-parsing-valid.html | 62 +- .../reference/feconvolve-region-ref.html | 10 + .../filter-with-mix-blend-mode-ref.html | 27 + ...s-invalidation-first-in-sibling-chain.html | 77 + ...ShadowRoot-init-customElementRegistry.html | 28 +- ...copy-elements-with-css-vars.tentative.html | 2 + tests/wpt/tests/fonts/ahem-visible-zwnj.otf | Bin 0 -> 13392 bytes .../2d.text.measure.width.nullCharacter.html | 38 + .../html/canvas/element/text/WEB_FEATURES.yml | 4 - ...creencanvas.transfer.to.imagebitmap.w.html | 6 +- .../offscreencanvas.transferrable.w.html | 18 +- .../2d.text.measure.width.nullCharacter.html | 27 + ...text.measure.width.nullCharacter.worker.js | 20 + .../canvas/offscreen/text/WEB_FEATURES.yml | 4 - .../tests/html/canvas/tools/yaml/text.yaml | 12 + .../tests/html/editing/dnd/canvas/005.html | 77 +- .../tests/html/editing/dnd/canvas/007.html | 59 +- .../tests/html/editing/dnd/images/007.html | 2 +- .../tests/html/editing/dnd/images/008.html | 2 +- .../tests/html/editing/dnd/images/010.html | 2 +- .../tests/html/editing/dnd/images/011.xhtml | 45 +- .../tests/html/editing/dnd/images/012.xhtml | 45 +- .../tests/html/editing/dnd/images/013.xhtml | 45 +- .../tests/html/editing/dnd/images/014.xhtml | 45 +- .../tests/html/editing/dnd/images/021.html | 2 +- .../html/editing/dnd/resources/test-helper.js | 26 +- ...quee-with-trusted-types-alternate-ref.html | 8 + .../marquee-with-trusted-types-ref.html | 8 +- .../marquee-with-trusted-types.html | 14 +- .../list-style-position-quirks-mode-ref.html | 21 + .../list-style-position-quirks-mode.html | 23 + .../link-multiple-error-events.html | 21 - .../link-multiple-load-events.html | 136 +- .../the-link-element/stylesheet.py | 4 +- ...ove-node-local-root-events-still-fire.html | 68 + .../move-node-local-root.html | 61 + ...eate-button-with-pointerdown-listener.html | 12 + .../cross-origin-middle-frame-2.html | 21 + .../resources/cross-origin-middle-frame.html | 19 + .../show-picker-disabled-readonly.html | 2 + .../dialog-popover-overlay-ref.html | 15 + .../dialog-popover-overlay.html | 33 + .../permission-element/inherited-css-ref.html | 9 + .../inherited-css-tentative.html | 19 + .../popovers/popover-hidden-appearance.html | 36 + .../popover-light-dismiss-scroll-within.html | 1 + .../event-handler-attributes-body-window.html | 3 +- .../structured-clone-battery-of-tests.js | 3 +- .../get_all_cookies.sub.https.html.ini | 5 - .../get_named_cookie.sub.https.html.ini | 5 - .../tests/interfaces/digital-credentials.idl | 1 + tests/wpt/tests/interfaces/dom.idl | 2 +- tests/wpt/tests/interfaces/webtransport.idl | 1 + tests/wpt/tests/lint.ignore | 1 + ...ment-captureStream-settings.tentative.html | 33 + ...n-url-encoding-euc-kr.tentative.https.html | 18 + ...pointercapture_remove_setcapture_node.html | 73 + ...pointercapture_remove_setcapture_node.html | 58 +- ...wupdate_changes_pointer_capture.https.html | 295 + ..._target_at_clicking_link_in_image_map.html | 76 + .../preload/prefetch-time-to-fetch.https.html | 10 +- tests/wpt/tests/resources/testharness.js | 2 +- .../resources/web-bluetooth-bidi-test.js | 323 +- .../tests/screen-orientation/active-lock.html | 4 +- .../fullscreen-interactions.html | 2 +- .../resources/orientation-utils.js | 13 +- .../animation-trigger-name-parsing.html | 40 + ...e-trigger-behavior-computed.tentative.html | 19 + ...line-trigger-behavior-valid.tentative.html | 29 + ...gger-exit-range-end-invalid.tentative.html | 21 + ...rigger-exit-range-end-valid.tentative.html | 33 + ...ger-exit-range-end.computed.tentative.html | 37 + ...r-exit-range-start-computed.tentative.html | 36 + ...er-exit-range-start-invalid.tentative.html | 17 + ...gger-exit-range-start-valid.tentative.html | 34 + ...-trigger-range-end-computed.tentative.html | 36 + ...e-trigger-range-end-invalid.tentative.html | 20 + ...ine-trigger-range-end-valid.tentative.html | 32 + ...rigger-range-start-computed.tentative.html | 35 + ...trigger-range-start-invalid.tentative.html | 16 + ...e-trigger-range-start-valid.tentative.html | 33 + ...ne-trigger-timeline-parsing.tentative.html | 97 + .../attachShadow-with-ShadowRoot.html | 69 + .../lcp/tentative/contracted-image.html | 78 + .../crashtests/firefox-bug-1974334.html | 73 + .../transform-translate-single-parameter.html | 26 + .../svg/geometry/reftests/ellipse-005.svg | 6 + .../svg/geometry/reftests/ellipse-006.svg | 6 + .../svg/painting/reftests/marker-path-002.svg | 2 +- .../wpt/tests/svg/sniffing-content-type.html | 28 + ...t-baseline-central-large-font-size-ref.svg | 6 + ...inant-baseline-central-large-font-size.svg | 11 + .../SVGGraphicsElement.getBBox-03.html | 4 +- tests/wpt/tests/tools/ci/requirements_tc.txt | 2 +- tests/wpt/tests/tools/requirements_tests.txt | 2 +- .../wpt/tests/tools/serve/test_functional.py | 7 +- .../tests/tools/wptrunner/requirements.txt | 2 +- .../wptrunner/wptrunner/browsers/firefox.py | 3 + .../wptrunner/browsers/firefox_android.py | 6 + .../tests/tools/wptserve/wptserve/server.py | 22 + ...p-when-touchend-listener-use-sync-xhr.html | 68 + .../navigate-to-javascript-url-001.html | 28 + .../navigate-to-javascript-url-002.html | 18 + .../navigate-to-javascript-url-003.html | 21 + .../navigate-to-javascript-url-004.html | 21 + .../navigate-to-javascript-url-005.html | 20 + .../navigate-to-javascript-url-006.sub.html | 23 + .../navigate-to-javascript-url-007-crash.html | 20 + ...avigate-to-javascript-url-csp-headers.html | 183 + .../trusted-types/support/csp-violations.js | 15 + ...navigate-to-javascript-url-005-iframe.html | 8 + .../support/navigate-to-javascript-url.html | 12 + .../navigation-report-only-support.html | 4 + .../support/navigation-support.html | 4 + .../support/navigation-support.js | 141 +- .../trusted-types-navigation.html | 117 +- .../tests/url/resources/setters_tests.json | 9 + tests/wpt/tests/wasm/core/js/binary.wast.js | 4 +- tests/wpt/tests/wasm/core/js/global.wast.js | 4 +- .../memory/to-fixed-length-buffer.any.js | 2 +- .../jsapi/memory/to-resizable-buffer.any.js | 10 +- .../audionode-connect-method-chaining.html | 241 +- .../k-rate-audiobuffersource-connections.html | 176 +- .../parallel_execution/__init__.py | 0 .../browsing_context_set_viewport.py | 38 + .../bidi/network/add_intercept/contexts.py | 2 - .../bidi/storage/set_cookie/cookie_expiry.py | 27 +- .../webdriver/tests/classic/add_cookie/add.py | 25 + .../webnn/conformance_tests/add.https.any.js | 11 +- .../arg_min_max.https.any.js | 7 +- .../conformance_tests/concat.https.any.js | 11 +- .../dequantizeLinear.https.any.js | 22 +- .../conformance_tests/equal.https.any.js | 10 +- .../conformance_tests/expand.https.any.js | 8 +- .../conformance_tests/gather.https.any.js | 8 +- .../gatherElements.https.any.js | 8 +- .../conformance_tests/gatherND.https.any.js | 8 +- .../conformance_tests/greater.https.any.js | 10 +- .../greater_or_equal.https.any.js | 10 +- .../conformance_tests/identity.https.any.js | 11 +- .../conformance_tests/lesser.https.any.js | 10 +- .../lesser_or_equal.https.any.js | 10 +- .../logical_and.https.any.js | 2 +- .../logical_not.https.any.js | 10 +- .../conformance_tests/logical_or.https.any.js | 2 +- .../logical_xor.https.any.js | 2 +- .../webnn/conformance_tests/max.https.any.js | 11 +- .../webnn/conformance_tests/min.https.any.js | 11 +- .../webnn/conformance_tests/mul.https.any.js | 11 +- .../conformance_tests/not_equal.https.any.js | 10 +- .../webnn/conformance_tests/pad.https.any.js | 8 +- .../quantizeLinear.https.any.js | 40 +- .../conformance_tests/reduce_l1.https.any.js | 10 +- .../conformance_tests/reduce_l2.https.any.js | 10 +- .../reduce_log_sum.https.any.js | 10 +- .../reduce_log_sum_exp.https.any.js | 10 +- .../conformance_tests/reduce_max.https.any.js | 10 +- .../reduce_mean.https.any.js | 10 +- .../conformance_tests/reduce_min.https.any.js | 10 +- .../reduce_product.https.any.js | 10 +- .../conformance_tests/reduce_sum.https.any.js | 10 +- .../reduce_sum_square.https.any.js | 10 +- .../conformance_tests/resample2d.https.any.js | 30 +- .../conformance_tests/reshape.https.any.js | 3 +- .../conformance_tests/reverse.https.any.js | 3 +- .../scatterElements.https.any.js | 7 +- .../conformance_tests/scatterND.https.any.js | 7 +- .../conformance_tests/slice.https.any.js | 8 +- .../conformance_tests/split.https.any.js | 8 +- .../webnn/conformance_tests/sub.https.any.js | 20 +- .../webnn/conformance_tests/tanh.https.any.js | 10 +- .../webnn/conformance_tests/tile.https.any.js | 8 +- .../conformance_tests/transpose.https.any.js | 8 +- tests/wpt/tests/webnn/resources/utils.js | 158 +- ...CRtpReceiver-track-settings.tentative.html | 57 + .../tests/webstorage/symbol-props.window.js | 6 +- 683 files changed, 13108 insertions(+), 9280 deletions(-) rename tests/wpt/meta/cookies/prefix/{__HostHttp.https.tentative.html.ini => __HostHttp.https.html.ini} (94%) rename tests/wpt/meta/cookies/prefix/{__Http.https.tentative.html.ini => __Http.https.html.ini} (90%) create mode 100644 tests/wpt/meta/css/css-borders/tentative/border-shape/border-shape-overflow-stroke.html.ini create mode 100644 tests/wpt/meta/css/css-borders/tentative/border-shape/border-shape-overflow.html.ini create mode 100644 tests/wpt/meta/css/css-conditional/at-custom-media-parsing.html.ini create mode 100644 tests/wpt/meta/css/css-fonts/font-variation-settings-serialization-002.html.ini create mode 100644 tests/wpt/meta/css/css-gaps/animation/gap-decorations-width-neutral-keyframe-001.html.ini create mode 100644 tests/wpt/meta/css/css-gaps/animation/gap-decorations-width-neutral-keyframe-002.html.ini create mode 100644 tests/wpt/meta/css/css-gaps/animation/row-rule-width-interpolation.html.ini create mode 100644 tests/wpt/meta/css/css-gaps/animation/rule-width-interpolation-multiple-values-001.html.ini create mode 100644 tests/wpt/meta/css/css-gaps/animation/rule-width-interpolation-multiple-values-002.html.ini create mode 100644 tests/wpt/meta/css/css-grid/grid-model/grid-max-content-size-with-max-content-item.html.ini create mode 100644 tests/wpt/meta/css/css-mixins/basic.html.ini create mode 100644 tests/wpt/meta/css/css-mixins/contents-rule.html.ini create mode 100644 tests/wpt/meta/css/css-mixins/cross-stylesheet.html.ini create mode 100644 tests/wpt/meta/css/css-mixins/declarations.html.ini create mode 100644 tests/wpt/meta/css/css-mixins/mixins-including-mixins.html.ini create mode 100644 tests/wpt/meta/css/css-mixins/shadow-dom.html.ini create mode 100644 tests/wpt/meta/css/css-pseudo/relative-box-order-of-pseudo-elements.html.ini create mode 100644 tests/wpt/meta/css/css-sizing/keyword-sizes-for-intrinsic-contributions-002.html.ini create mode 100644 tests/wpt/meta/css/css-values/if-initial-unregistered.html.ini create mode 100644 tests/wpt/meta/css/selectors/invalidation/has-invalidation-first-in-sibling-chain.html.ini delete mode 100644 tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/009.html.ini delete mode 100644 tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html.ini delete mode 100644 tests/wpt/meta/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-font-size-math.html.ini create mode 100644 tests/wpt/meta/html/canvas/element/text/2d.text.measure.width.nullCharacter.html.ini create mode 100644 tests/wpt/meta/html/canvas/offscreen/text/2d.text.measure.width.nullCharacter.worker.js.ini create mode 100644 tests/wpt/meta/html/semantics/document-metadata/the-link-element/link-multiple-load-events.html.ini create mode 100644 tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe-loading-lazy-nav-location-assign.html.ini create mode 100644 tests/wpt/meta/preload/prefetch-time-to-fetch.https.html.ini create mode 100644 tests/wpt/meta/trusted-types/navigate-to-javascript-url-001.html.ini create mode 100644 tests/wpt/meta/trusted-types/navigate-to-javascript-url-002.html.ini create mode 100644 tests/wpt/meta/trusted-types/navigate-to-javascript-url-003.html.ini create mode 100644 tests/wpt/meta/trusted-types/navigate-to-javascript-url-004.html.ini create mode 100644 tests/wpt/meta/trusted-types/navigate-to-javascript-url-005.html.ini create mode 100644 tests/wpt/meta/trusted-types/navigate-to-javascript-url-006.sub.html.ini create mode 100644 tests/wpt/meta/trusted-types/navigate-to-javascript-url-csp-headers.html.ini delete mode 100644 tests/wpt/meta/webmessaging/with-ports/018.html.ini delete mode 100644 tests/wpt/meta/webstorage/symbol-props.window.js.ini rename tests/wpt/tests/bluetooth/{legacy => bidi}/characteristic/characteristicProperties.https.window.js (88%) create mode 100644 tests/wpt/tests/bluetooth/bidi/characteristic/getDescriptor/gen-characteristic-is-removed.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/characteristic/getDescriptor/gen-descriptor-get-same-object.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/characteristic/getDescriptor/gen-service-is-removed.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/characteristic/getDescriptors/gen-characteristic-is-removed-with-uuid.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/characteristic/getDescriptors/gen-characteristic-is-removed.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/characteristic/getDescriptors/gen-descriptor-get-same-object.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/characteristic/getDescriptors/gen-service-is-removed-with-uuid.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/characteristic/getDescriptors/gen-service-is-removed.https.window.js rename tests/wpt/tests/bluetooth/{legacy => bidi}/characteristic/notifications/characteristic-is-removed.https.window.js (85%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/characteristic/notifications/service-is-removed.https.window.js (83%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/characteristic/readValue/add-multiple-event-listeners.https.window.js (90%) rename tests/wpt/tests/bluetooth/{legacy/characteristic/writeValue => bidi/characteristic/readValue}/characteristic-is-removed.https.window.js (75%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/characteristic/readValue/event-is-fired.https.window.js (89%) create mode 100644 tests/wpt/tests/bluetooth/bidi/characteristic/readValue/gen-characteristic-is-removed.https.window.js rename tests/wpt/tests/bluetooth/{legacy => bidi}/characteristic/readValue/read-succeeds.https.window.js (84%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/characteristic/readValue/read-updates-value.https.window.js (85%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/characteristic/readValue/service-is-removed.https.window.js (83%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/characteristic/service-same-from-2-characteristics.https.window.js (83%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/characteristic/service-same-object.https.window.js (79%) create mode 100644 tests/wpt/tests/bluetooth/bidi/characteristic/startNotifications/gen-characteristic-is-removed.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/characteristic/writeValue/gen-characteristic-is-removed.https.window.js rename tests/wpt/tests/bluetooth/{legacy => bidi}/characteristic/writeValueWithResponse/characteristic-is-removed.https.window.js (86%) create mode 100644 tests/wpt/tests/bluetooth/bidi/characteristic/writeValueWithResponse/gen-characteristic-is-removed.https.window.js rename tests/wpt/tests/bluetooth/{legacy => bidi}/characteristic/writeValueWithResponse/service-is-removed.https.window.js (84%) rename tests/wpt/tests/bluetooth/{legacy/characteristic/writeValue => bidi/characteristic/writeValueWithResponse}/write-succeeds.https.window.js (75%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/characteristic/writeValueWithoutResponse/characteristic-is-removed.https.window.js (86%) create mode 100644 tests/wpt/tests/bluetooth/bidi/characteristic/writeValueWithoutResponse/gen-characteristic-is-removed.https.window.js rename tests/wpt/tests/bluetooth/{legacy => bidi}/characteristic/writeValueWithoutResponse/service-is-removed.https.window.js (84%) create mode 100644 tests/wpt/tests/bluetooth/bidi/descriptor/readValue/gen-service-is-removed.https.window.js rename tests/wpt/tests/bluetooth/{legacy => bidi}/descriptor/readValue/read-succeeds.https.window.js (84%) create mode 100644 tests/wpt/tests/bluetooth/bidi/descriptor/writeValue/gen-service-is-removed.https.window.js rename tests/wpt/tests/bluetooth/{legacy => bidi}/device/forget/connect-after-forget.https.window.js (63%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/device/forget/getDevices.https.window.js (78%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/device/gattserverdisconnected-event/disconnected.https.window.js (84%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/device/gattserverdisconnected-event/disconnected_gc.https.window.js (88%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/device/gattserverdisconnected-event/one-event-per-disconnection.https.window.js (90%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.window.js (90%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/generate.py (94%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/generate_test.py (85%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/getDevices/granted-devices-with-services.https.window.js (96%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/getDevices/no-granted-devices.https.window.js (82%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/getDevices/reject_opaque_origin.https.html (100%) rename tests/wpt/tests/bluetooth/{legacy/getAvailability => bidi/getDevices}/reject_opaque_origin.https.html.headers (100%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/getDevices/returns-same-bluetooth-device-object.https.window.js (88%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/idl/idl-Bluetooth.https.window.js (76%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/idl/idl-BluetoothDevice.https.window.js (92%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/idl/idl-BluetoothUUID.window.js (97%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/idl/idl-NavigatorBluetooth.https.window.js (86%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/idl/idl-NavigatorBluetooth.window.js (76%) create mode 100644 tests/wpt/tests/bluetooth/bidi/idl/idlharness.tentative.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/requestDevice/acceptAllDevices/optional-services-missing.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/requestDevice/acceptAllDevices/optional-services-present.https.window.js rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/blocklisted-manufacturer-data-in-filter.https.window.js (89%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/blocklisted-service-in-filter.https.window.js (81%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/blocklisted-service-in-optionalServices.https.window.js (91%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/data-prefix-and-mask-size.https.window.js (87%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/dataPrefix-buffer-is-detached.https.window.js (88%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/device-name-longer-than-29-bytes.https.window.js (83%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/empty-dataPrefix.https.window.js (78%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/empty-exclusion-filter.https.window.js (83%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/empty-exclusion-filters-member.https.window.js (87%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/empty-filter.https.window.js (81%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/empty-filters-member.https.window.js (85%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/empty-manufacturerData-member.https.window.js (90%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/empty-namePrefix.https.window.js (91%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/empty-services-member.https.window.js (86%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/exclusion-filters-require-filters.https.window.js (73%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/filters-xor-acceptAllDevices.https.window.js (90%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/invalid-companyIdentifier.https.window.js (81%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/mask-buffer-is-detached.https.window.js (89%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/max-length-exceeded-name-unicode.https.window.js (88%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/max-length-exceeded-name.https.window.js (87%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix-unicode.https.window.js (89%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix.https.window.js (87%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/max-length-name-unicode.https.window.js (84%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/max-length-name.https.window.js (82%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/max-length-namePrefix-unicode.https.window.js (84%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/max-length-namePrefix.https.window.js (82%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/no-arguments.https.window.js (84%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/same-company-identifier.https.window.js (84%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/unicode-valid-length-name-name.https.window.js (86%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/unicode-valid-length-name-namePrefix.https.window.js (86%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/wrong-service-in-optionalServices-member.https.window.js (92%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/canonicalizeFilter/wrong-service-in-services-member.https.window.js (85%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/cross-origin-iframe.sub.https.window.js (91%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/discovery-succeeds.https.window.js (89%) create mode 100644 tests/wpt/tests/bluetooth/bidi/requestDevice/doesnt-consume-user-gesture.https.window.js rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/filter-matches.https.window.js (95%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/name-empty-device-from-name-empty-filter.https.window.js (80%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/not-processing-user-gesture.https.window.js (87%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/reject_opaque_origin.https.html (100%) rename tests/wpt/tests/bluetooth/{legacy/getDevices => bidi/requestDevice}/reject_opaque_origin.https.html.headers (100%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/same-device.https.window.js (86%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/requestDevice/single-filter-single-service.https.window.js (84%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/script-tests/base_test_js.template (61%) create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/characteristic/characteristic-is-removed.js create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/characteristic/descriptor-get-same-object.js create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/characteristic/service-is-removed.js create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/descriptor/service-is-removed.js create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/server/disconnect-called-before.js create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/server/disconnect-called-during-error.js create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/server/disconnect-called-during-success.js create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/server/disconnect-invalidates-objects.js create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/server/disconnected-device.js create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/server/garbage-collection-ran-during-error.js create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/server/garbage-collection-ran-during-success.js create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/server/get-different-service-after-reconnection.js create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/server/get-same-object.js create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/server/invalid-service-name.js create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/server/service-not-found.js create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/service/blocklisted-characteristic.js create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/service/garbage-collection-ran-during-error.js create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/service/get-same-object.js create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/service/invalid-characteristic-name.js create mode 100644 tests/wpt/tests/bluetooth/bidi/script-tests/service/service-is-removed.js rename tests/wpt/tests/bluetooth/{legacy => bidi}/server/connect/connection-succeeds.https.window.js (80%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/server/connect/garbage-collection-ran-during-success.https.window.js (85%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/server/connect/get-same-gatt-server.https.window.js (87%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/server/device-same-object.https.window.js (82%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/server/disconnect/connect-disconnect-twice.https.window.js (87%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/server/disconnect/disconnect-twice-in-a-row.https.window.js (86%) create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryService/gen-disconnect-called-before.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryService/gen-disconnect-called-during-error.https.window.js rename tests/wpt/tests/bluetooth/{legacy => bidi}/server/getPrimaryService/gen-disconnect-called-during-success.https.window.js (53%) create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryService/gen-disconnect-invalidates-objects.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryService/gen-disconnected-device.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryService/gen-garbage-collection-ran-during-error.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryService/gen-garbage-collection-ran-during-success.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryService/gen-get-different-service-after-reconnection.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryService/gen-get-same-object.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryService/gen-invalid-service-name.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryService/gen-service-not-found.https.window.js rename tests/wpt/tests/bluetooth/{legacy => bidi}/server/getPrimaryService/service-found.https.window.js (90%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/server/getPrimaryServices/blocklisted-services-with-uuid.https.window.js (87%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/server/getPrimaryServices/blocklisted-services.https.window.js (88%) create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryServices/gen-disconnect-called-before.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryServices/gen-disconnect-called-during-error.https.window.js rename tests/wpt/tests/bluetooth/{legacy => bidi}/server/getPrimaryServices/gen-disconnect-called-during-success-with-uuid.https.window.js (53%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/server/getPrimaryServices/gen-disconnect-called-during-success.https.window.js (54%) create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryServices/gen-disconnected-device.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryServices/gen-garbage-collection-ran-during-error-with-uuid.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryServices/gen-garbage-collection-ran-during-error.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryServices/gen-garbage-collection-ran-during-success-with-uuid.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryServices/gen-garbage-collection-ran-during-success.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryServices/gen-get-different-service-after-reconnection-with-uuid.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryServices/gen-get-different-service-after-reconnection.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryServices/gen-get-same-object-with-uuid.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryServices/gen-get-same-object.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryServices/gen-invalid-service-name.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/server/getPrimaryServices/gen-service-not-found-with-uuid.https.window.js rename tests/wpt/tests/bluetooth/{legacy => bidi}/server/getPrimaryServices/services-not-found.https.window.js (83%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/service/device-same-object.https.window.js (81%) rename tests/wpt/tests/bluetooth/{legacy => bidi}/service/getCharacteristic/characteristic-found.https.window.js (89%) create mode 100644 tests/wpt/tests/bluetooth/bidi/service/getCharacteristic/gen-blocklisted-characteristic.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/service/getCharacteristic/gen-garbage-collection-ran-during-error.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/service/getCharacteristic/gen-get-same-object.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/service/getCharacteristic/gen-invalid-characteristic-name.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/service/getCharacteristic/gen-service-is-removed.https.window.js rename tests/wpt/tests/bluetooth/{legacy => bidi}/service/getCharacteristics/blocklisted-characteristics.https.window.js (86%) create mode 100644 tests/wpt/tests/bluetooth/bidi/service/getCharacteristics/gen-blocklisted-characteristic-with-uuid.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/service/getCharacteristics/gen-garbage-collection-ran-during-error-with-uuid.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/service/getCharacteristics/gen-garbage-collection-ran-during-error.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/service/getCharacteristics/gen-get-same-object-with-uuid.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/service/getCharacteristics/gen-get-same-object.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/service/getCharacteristics/gen-invalid-characteristic-name.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/service/getCharacteristics/gen-service-is-removed-with-uuid.https.window.js create mode 100644 tests/wpt/tests/bluetooth/bidi/service/getCharacteristics/gen-service-is-removed.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/adapter/adapter-added-getAvailability.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/adapter/adapter-powered-on-off-on-getAvailability.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/adapter/adapter-removed-getAvailability.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/getDescriptor/detachedIframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/getDescriptor/gen-characteristic-is-removed.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/getDescriptor/gen-descriptor-get-same-object.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/getDescriptor/gen-service-is-removed.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/getDescriptors/detachedIframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/getDescriptors/gen-characteristic-is-removed-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/getDescriptors/gen-characteristic-is-removed.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/getDescriptors/gen-descriptor-get-same-object.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/getDescriptors/gen-service-is-removed-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/getDescriptors/gen-service-is-removed.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/readValue/characteristic-is-removed.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/readValue/detachedIframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/readValue/gen-characteristic-is-removed.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/startNotifications/detachedIframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/startNotifications/gen-characteristic-is-removed.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/stopNotifications/detachedIframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/writeValue/buffer-is-detached.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/writeValue/detachedIframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/writeValue/gen-characteristic-is-removed.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/writeValue/service-is-removed.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/writeValueWithResponse/buffer-is-detached.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/writeValueWithResponse/gen-characteristic-is-removed.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/writeValueWithResponse/write-succeeds.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/writeValueWithoutResponse/buffer-is-detached.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/writeValueWithoutResponse/gen-characteristic-is-removed.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/characteristic/writeValueWithoutResponse/write-succeeds.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/descriptor/readValue/detachedIframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/descriptor/readValue/gen-service-is-removed.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/descriptor/writeValue/buffer-is-detached.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/descriptor/writeValue/detachedIframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/descriptor/writeValue/gen-service-is-removed.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/device/forget/detachedIframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/device/watchAdvertisements/abort-before-watchAdvertisements.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/device/watchAdvertisements/abort-pending-operation.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/device/watchAdvertisements/abort-signal-stops-events.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/device/watchAdvertisements/abort-subsequent-watchAdvertisements-call-stops-events.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/device/watchAdvertisements/advertisementreceived-event-fired.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/device/watchAdvertisements/blocklisted-manufacturer-data-filtered-from-event.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/device/watchAdvertisements/concurrent-watchAdvertisements-calls.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/device/watchAdvertisements/detachedIframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/device/watchAdvertisements/service-and-manufacturer-data-filtered-from-event.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/device/watchAdvertisements/subsequent-watchAdvertisements-call.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/device/watchAdvertisements/watching-two-devices-abort-one-watchAdvertisements.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/device/watchAdvertisements/watching-two-devices.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/getAvailability/reject_opaque_origin.https.html delete mode 100644 tests/wpt/tests/bluetooth/legacy/getAvailability/sandboxed_iframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/getDevices/sandboxed_iframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/idl/idlharness.tentative.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/requestDevice/acceptAllDevices/optional-services-missing.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/requestDevice/acceptAllDevices/optional-services-present.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/requestDevice/doesnt-consume-user-gesture.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/requestDevice/le-not-supported.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/requestDevice/manufacturer-data-filter-matches.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/requestDevice/reject_opaque_origin.https.html.headers delete mode 100644 tests/wpt/tests/bluetooth/legacy/requestDevice/request-from-iframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/requestDevice/request-from-sandboxed-iframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/requestDevice/sandboxed_iframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/requestLEScan/reject_opaque_origin.https.html delete mode 100644 tests/wpt/tests/bluetooth/legacy/requestLEScan/reject_opaque_origin.https.html.headers delete mode 100644 tests/wpt/tests/bluetooth/legacy/requestLEScan/sandboxed_iframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/characteristic/characteristic-is-removed.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/characteristic/descriptor-get-same-object.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/characteristic/service-is-removed.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/descriptor/service-is-removed.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/server/disconnect-called-before.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/server/disconnect-called-during-error.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/server/disconnect-called-during-success.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/server/disconnect-discovery-timeout.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/server/disconnect-invalidates-objects.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/server/disconnected-device.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/server/discovery-complete-no-permission-absent-service.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/server/discovery-complete-service-not-found.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/server/garbage-collection-ran-during-error.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/server/garbage-collection-ran-during-success.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/server/get-different-service-after-reconnection.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/server/get-same-object.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/server/invalid-service-name.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/server/no-permission-absent-service.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/server/no-permission-for-any-service.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/server/no-permission-present-service.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/server/service-not-found.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/service/blocklisted-characteristic.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/service/characteristic-not-found.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/service/garbage-collection-ran-during-error.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/service/get-same-object.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/service/invalid-characteristic-name.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/service/reconnect-during.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/script-tests/service/service-is-removed.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/connect/detachedIframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/disconnect/detach-gc.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/disconnect/detachedIframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/disconnect/gc-detach.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryService/gen-disconnect-called-before.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryService/gen-disconnect-called-during-error.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryService/gen-disconnect-discovery-timeout.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryService/gen-disconnect-invalidates-objects.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryService/gen-disconnected-device.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryService/gen-discovery-complete-no-permission-absent-service.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryService/gen-discovery-complete-service-not-found.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryService/gen-garbage-collection-ran-during-error.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryService/gen-garbage-collection-ran-during-success.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryService/gen-get-different-service-after-reconnection.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryService/gen-get-same-object.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryService/gen-invalid-service-name.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryService/gen-no-permission-absent-service.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryService/gen-no-permission-for-any-service.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryService/gen-no-permission-present-service.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryService/gen-service-not-found.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryService/two-iframes-from-same-origin.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/correct-services.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-disconnect-called-before.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-disconnect-called-during-error.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-disconnect-discovery-timeout-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-disconnect-discovery-timeout.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-disconnected-device.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-discovery-complete-no-permission-absent-service-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-discovery-complete-service-not-found-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-garbage-collection-ran-during-error-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-garbage-collection-ran-during-error.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-garbage-collection-ran-during-success-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-garbage-collection-ran-during-success.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-get-different-service-after-reconnection-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-get-different-service-after-reconnection.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-get-same-object-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-get-same-object.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-invalid-service-name.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-no-permission-for-any-service.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/gen-service-not-found-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/services-found-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/server/getPrimaryServices/services-found.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/detachedIframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/device-same-from-2-services.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristic/detachedIframe.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristic/gen-blocklisted-characteristic.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristic/gen-characteristic-not-found.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristic/gen-garbage-collection-ran-during-error.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristic/gen-get-same-object.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristic/gen-invalid-characteristic-name.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristic/gen-reconnect-during.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristic/gen-service-is-removed.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristics/characteristics-found-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristics/characteristics-found.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristics/characteristics-not-found.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristics/gen-blocklisted-characteristic-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristics/gen-characteristic-not-found-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristics/gen-garbage-collection-ran-during-error-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristics/gen-garbage-collection-ran-during-error.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristics/gen-get-same-object-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristics/gen-get-same-object.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristics/gen-invalid-characteristic-name.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristics/gen-reconnect-during-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristics/gen-reconnect-during.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristics/gen-service-is-removed-with-uuid.https.window.js delete mode 100644 tests/wpt/tests/bluetooth/legacy/service/getCharacteristics/gen-service-is-removed.https.window.js rename tests/wpt/tests/cookies/prefix/{__HostHttp.https.tentative.html => __HostHttp.https.html} (100%) rename tests/wpt/tests/cookies/prefix/{__Http.https.tentative.html => __Http.https.html} (100%) create mode 100644 tests/wpt/tests/css/CSS2/floats/inheritance.html create mode 100644 tests/wpt/tests/css/css-borders/tentative/border-shape/border-shape-overflow-ref.html create mode 100644 tests/wpt/tests/css/css-borders/tentative/border-shape/border-shape-overflow-stroke.html create mode 100644 tests/wpt/tests/css/css-borders/tentative/border-shape/border-shape-overflow.html create mode 100644 tests/wpt/tests/css/css-color/relative-color-with-zoom.html create mode 100644 tests/wpt/tests/css/css-conditional/at-custom-media-parsing.html create mode 100644 tests/wpt/tests/css/css-contain/content-visibility/content-visibility-on-display-contents.html create mode 100644 tests/wpt/tests/css/css-flexbox/flexbox-ignores-first-letter.html create mode 100644 tests/wpt/tests/css/css-flexbox/select-element-multiple-ref.html create mode 100644 tests/wpt/tests/css/css-flexbox/select-element-multiple.html create mode 100644 tests/wpt/tests/css/css-fonts/font-variation-settings-descriptor-01-ref.html create mode 100644 tests/wpt/tests/css/css-fonts/font-variation-settings-descriptor-01.html create mode 100644 tests/wpt/tests/css/css-fonts/font-variation-settings-descriptor-02-ref.html create mode 100644 tests/wpt/tests/css/css-fonts/font-variation-settings-descriptor-02.html create mode 100644 tests/wpt/tests/css/css-fonts/font-variation-settings-descriptor-03-ref.html create mode 100644 tests/wpt/tests/css/css-fonts/font-variation-settings-descriptor-03.html create mode 100644 tests/wpt/tests/css/css-fonts/font-variation-settings-serialization-002.html delete mode 100644 tests/wpt/tests/css/css-fonts/test-synthetic-bold-2-notref.html delete mode 100644 tests/wpt/tests/css/css-fonts/test-synthetic-bold-2.html delete mode 100644 tests/wpt/tests/css/css-fonts/test-synthetic-italic-4-notref.html delete mode 100644 tests/wpt/tests/css/css-fonts/test-synthetic-italic-4.html create mode 100644 tests/wpt/tests/css/css-gaps/animation/gap-decorations-width-neutral-keyframe-001.html create mode 100644 tests/wpt/tests/css/css-gaps/animation/gap-decorations-width-neutral-keyframe-002.html create mode 100644 tests/wpt/tests/css/css-gaps/animation/row-rule-width-interpolation.html create mode 100644 tests/wpt/tests/css/css-gaps/animation/rule-width-interpolation-multiple-values-001.html create mode 100644 tests/wpt/tests/css/css-gaps/animation/rule-width-interpolation-multiple-values-002.html create mode 100644 tests/wpt/tests/css/css-grid/grid-container-as-flex-item-001.html create mode 100644 tests/wpt/tests/css/css-grid/grid-container-as-flex-item-002.html create mode 100644 tests/wpt/tests/css/css-grid/grid-container-as-flex-item-003.html create mode 100644 tests/wpt/tests/css/css-grid/grid-model/grid-max-content-size-with-max-content-item.html create mode 100644 tests/wpt/tests/css/css-mixins/basic.html create mode 100644 tests/wpt/tests/css/css-mixins/contents-rule.html create mode 100644 tests/wpt/tests/css/css-mixins/cross-stylesheet.html create mode 100644 tests/wpt/tests/css/css-mixins/declarations.html create mode 100644 tests/wpt/tests/css/css-mixins/mixins-including-mixins.html create mode 100644 tests/wpt/tests/css/css-mixins/shadow-dom.html create mode 100644 tests/wpt/tests/css/css-pseudo/relative-box-order-of-pseudo-elements-ref.html create mode 100644 tests/wpt/tests/css/css-pseudo/relative-box-order-of-pseudo-elements.html create mode 100644 tests/wpt/tests/css/css-text/zwnj-renders-invisible.html create mode 100644 tests/wpt/tests/css/css-values/if-initial-unregistered.html create mode 100644 tests/wpt/tests/css/css-values/resolution-with-percentage-without-context.html create mode 100644 tests/wpt/tests/css/css-view-transitions/scoped/transform-clip-ref.html create mode 100644 tests/wpt/tests/css/css-view-transitions/scoped/transform-clip.html create mode 100644 tests/wpt/tests/css/css-viewport/zoom/border-ref.html create mode 100644 tests/wpt/tests/css/css-viewport/zoom/border.html create mode 100644 tests/wpt/tests/css/css-viewport/zoom/zoom-precision-ref.html create mode 100644 tests/wpt/tests/css/css-viewport/zoom/zoom-precision.html create mode 100644 tests/wpt/tests/css/filter-effects/feconvolve-region-001.html create mode 100644 tests/wpt/tests/css/filter-effects/feconvolve-region-002.html create mode 100644 tests/wpt/tests/css/filter-effects/filter-with-mix-blend-mode.html create mode 100644 tests/wpt/tests/css/filter-effects/reference/feconvolve-region-ref.html create mode 100644 tests/wpt/tests/css/filter-effects/reference/filter-with-mix-blend-mode-ref.html create mode 100644 tests/wpt/tests/css/selectors/invalidation/has-invalidation-first-in-sibling-chain.html create mode 100644 tests/wpt/tests/fonts/ahem-visible-zwnj.otf create mode 100644 tests/wpt/tests/html/canvas/element/text/2d.text.measure.width.nullCharacter.html delete mode 100644 tests/wpt/tests/html/canvas/element/text/WEB_FEATURES.yml create mode 100644 tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.nullCharacter.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.nullCharacter.worker.js delete mode 100644 tests/wpt/tests/html/canvas/offscreen/text/WEB_FEATURES.yml create mode 100644 tests/wpt/tests/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types-alternate-ref.html create mode 100644 tests/wpt/tests/html/rendering/non-replaced-elements/lists/list-style-position-quirks-mode-ref.html create mode 100644 tests/wpt/tests/html/rendering/non-replaced-elements/lists/list-style-position-quirks-mode.html delete mode 100644 tests/wpt/tests/html/semantics/document-metadata/the-link-element/link-multiple-error-events.html create mode 100644 tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/move-node-local-root-events-still-fire.html create mode 100644 tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/move-node-local-root.html create mode 100644 tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/resources/create-button-with-pointerdown-listener.html create mode 100644 tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/resources/cross-origin-middle-frame-2.html create mode 100644 tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/resources/cross-origin-middle-frame.html create mode 100644 tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-popover-overlay-ref.html create mode 100644 tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-popover-overlay.html create mode 100644 tests/wpt/tests/html/semantics/permission-element/inherited-css-ref.html create mode 100644 tests/wpt/tests/html/semantics/permission-element/inherited-css-tentative.html create mode 100644 tests/wpt/tests/html/semantics/popovers/popover-hidden-appearance.html delete mode 100644 tests/wpt/tests/infrastructure/metadata/infrastructure/testdriver/get_all_cookies.sub.https.html.ini delete mode 100644 tests/wpt/tests/infrastructure/metadata/infrastructure/testdriver/get_named_cookie.sub.https.html.ini create mode 100644 tests/wpt/tests/mediacapture-fromelement/HTMLCanvasElement-captureStream-settings.tentative.html create mode 100644 tests/wpt/tests/notifications/icon-url-encoding-euc-kr.tentative.https.html create mode 100644 tests/wpt/tests/pointerevents/bugs/events_after_lostpointercapture_remove_setcapture_node.html create mode 100644 tests/wpt/tests/pointerevents/pointerevent_pointerrawupdate_changes_pointer_capture.https.html create mode 100644 tests/wpt/tests/pointerevents/pointerevent_target_at_clicking_link_in_image_map.html create mode 100644 tests/wpt/tests/scroll-animations/animation-trigger/parsing/animation-trigger-name-parsing.html create mode 100644 tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-behavior-computed.tentative.html create mode 100644 tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-behavior-valid.tentative.html create mode 100644 tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-end-invalid.tentative.html create mode 100644 tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-end-valid.tentative.html create mode 100644 tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-end.computed.tentative.html create mode 100644 tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-start-computed.tentative.html create mode 100644 tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-start-invalid.tentative.html create mode 100644 tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-start-valid.tentative.html create mode 100644 tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-end-computed.tentative.html create mode 100644 tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-end-invalid.tentative.html create mode 100644 tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-end-valid.tentative.html create mode 100644 tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-start-computed.tentative.html create mode 100644 tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-start-invalid.tentative.html create mode 100644 tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-start-valid.tentative.html create mode 100644 tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-timeline-parsing.tentative.html create mode 100644 tests/wpt/tests/shadow-dom/attachShadow-with-ShadowRoot.html create mode 100644 tests/wpt/tests/soft-navigation-heuristics/lcp/tentative/contracted-image.html create mode 100644 tests/wpt/tests/svg/animations/crashtests/firefox-bug-1974334.html create mode 100644 tests/wpt/tests/svg/coordinate-systems/transform-translate-single-parameter.html create mode 100644 tests/wpt/tests/svg/geometry/reftests/ellipse-005.svg create mode 100644 tests/wpt/tests/svg/geometry/reftests/ellipse-006.svg create mode 100644 tests/wpt/tests/svg/sniffing-content-type.html create mode 100644 tests/wpt/tests/svg/text/reftests/dominant-baseline-central-large-font-size-ref.svg create mode 100644 tests/wpt/tests/svg/text/reftests/dominant-baseline-central-large-font-size.svg create mode 100644 tests/wpt/tests/touch-events/single-tap-when-touchend-listener-use-sync-xhr.html create mode 100644 tests/wpt/tests/trusted-types/navigate-to-javascript-url-001.html create mode 100644 tests/wpt/tests/trusted-types/navigate-to-javascript-url-002.html create mode 100644 tests/wpt/tests/trusted-types/navigate-to-javascript-url-003.html create mode 100644 tests/wpt/tests/trusted-types/navigate-to-javascript-url-004.html create mode 100644 tests/wpt/tests/trusted-types/navigate-to-javascript-url-005.html create mode 100644 tests/wpt/tests/trusted-types/navigate-to-javascript-url-006.sub.html create mode 100644 tests/wpt/tests/trusted-types/navigate-to-javascript-url-007-crash.html create mode 100644 tests/wpt/tests/trusted-types/navigate-to-javascript-url-csp-headers.html create mode 100644 tests/wpt/tests/trusted-types/support/navigate-to-javascript-url-005-iframe.html create mode 100644 tests/wpt/tests/trusted-types/support/navigate-to-javascript-url.html create mode 100644 tests/wpt/tests/webdriver/tests/bidi/integration/parallel_execution/__init__.py create mode 100644 tests/wpt/tests/webdriver/tests/bidi/integration/parallel_execution/browsing_context_set_viewport.py create mode 100644 tests/wpt/tests/webrtc/RTCRtpReceiver-track-settings.tentative.html diff --git a/tests/wpt/meta/MANIFEST.json b/tests/wpt/meta/MANIFEST.json index 00d0e8309de..673680b8654 100644 --- a/tests/wpt/meta/MANIFEST.json +++ b/tests/wpt/meta/MANIFEST.json @@ -10133,6 +10133,13 @@ null, {} ] + ], + "firefox-bug-1974334.html": [ + "fbc108377173d6a227d56be395ae10ab12394052", + [ + null, + {} + ] ] }, "end-of-time-001-crash.html": [ @@ -10405,6 +10412,15 @@ ] ] }, + "trusted-types": { + "navigate-to-javascript-url-007-crash.html": [ + "0ce707a27b04298a5193333dd038eecca9900def", + [ + null, + {} + ] + ] + }, "uievents": { "mouse": { "crashtests": { @@ -139190,6 +139206,64 @@ } ] ], + "border-shape-overflow-stroke.html": [ + "37969a303b395b810bc01c0a5e92ed053d9be3a9", + [ + null, + [ + [ + "/css/css-borders/tentative/border-shape/border-shape-clips-background-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 96 + ], + [ + 0, + 256 + ] + ] + ] + ] + } + ] + ], + "border-shape-overflow.html": [ + "7d733c30d8766068e27550c07860484996fc71c1", + [ + null, + [ + [ + "/css/css-borders/tentative/border-shape/border-shape-overflow-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 96 + ], + [ + 0, + 256 + ] + ] + ] + ] + } + ] + ], "border-shape-stroke.html": [ "d1af4bf39dbe9a068bd61b35be3192e37258d649", [ @@ -163394,6 +163468,19 @@ {} ] ], + "content-visibility-on-display-contents.html": [ + "b7c33fe7e43491d4e6d70fcee5854bd3ee59925e", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], "content-visibility-on-g.html": [ "4ff07892680c64255757915bcc675a97dd67b317", [ @@ -182462,6 +182549,19 @@ {} ] ], + "select-element-multiple.html": [ + "d7f54a61d968ffbd9366b5f8f7807a4d0c0a6e9a", + [ + null, + [ + [ + "/css/css-flexbox/select-element-multiple-ref.html", + "==" + ] + ], + {} + ] + ], "select-element-zero-height-001.html": [ "9e07c8019dce59b3e0d7ceb60d97f39556d0354f", [ @@ -186690,6 +186790,45 @@ {} ] ], + "font-variation-settings-descriptor-01.html": [ + "e5a3fb356287e62b4f792f791192a00d9ebb44cc", + [ + null, + [ + [ + "/css/css-fonts/font-variation-settings-descriptor-01-ref.html", + "==" + ] + ], + {} + ] + ], + "font-variation-settings-descriptor-02.html": [ + "73cdf924f511deff81579bb86b9760d78abf81d4", + [ + null, + [ + [ + "/css/css-fonts/font-variation-settings-descriptor-02-ref.html", + "==" + ] + ], + {} + ] + ], + "font-variation-settings-descriptor-03.html": [ + "ffa3acf49085a23e28dbd87087d41eb86b5406f6", + [ + null, + [ + [ + "/css/css-fonts/font-variation-settings-descriptor-03-ref.html", + "==" + ] + ], + {} + ] + ], "font-weight-bolder-001.xht": [ "60821ab8092c833a9363eec15b0903c2ddda1ec1", [ @@ -187634,19 +187773,6 @@ {} ] ], - "test-synthetic-bold-2.html": [ - "b7930c172c2ad57e370aa576c10befb0ff59b404", - [ - null, - [ - [ - "/css/css-fonts/test-synthetic-bold-2-notref.html", - "!=" - ] - ], - {} - ] - ], "test-synthetic-bold.html": [ "c2337c0a3ce538a573eddec7e75ea191bc394ae0", [ @@ -187686,19 +187812,6 @@ {} ] ], - "test-synthetic-italic-4.html": [ - "fa1f815b4219dbfa355e0f9f67a54382af6a46bc", - [ - null, - [ - [ - "/css/css-fonts/test-synthetic-italic-4-notref.html", - "!=" - ] - ], - {} - ] - ], "test-synthetic-italic.html": [ "3f6764ecfa3696310b1395037afbd6aa9c38b853", [ @@ -193045,6 +193158,45 @@ {} ] ], + "grid-container-as-flex-item-001.html": [ + "1046d6f947eacb666373a7fa557e40c37b38e8a3", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "grid-container-as-flex-item-002.html": [ + "a16f64f30b81e2b1af9478fe4f8cd979ae519679", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "grid-container-as-flex-item-003.html": [ + "8fe458ca2145239464408db5aa30fa5119fa5f7c", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "grid-container-baseline-synthesized-001.html": [ "431b1867f80df8723f9b25e157359d337007fb92", [ @@ -196105,6 +196257,19 @@ {} ] ], + "grid-max-content-size-with-max-content-item.html": [ + "388bf5daabf0d919ef46f45e78a891d8012c2cf1", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], "grid-multicol-001.html": [ "553a33e6a3417557bc6fdb1f34375c4117a2e04f", [ @@ -197419,7 +197584,7 @@ }, "item-placement": { "masonry-item-placement-001.html": [ - "20cd4e8c8c5531f1bc3fa9bff76a6663d4d54b0e", + "58d5eba7c0c9f003bed8e5b404422e8980bc7787", [ null, [ @@ -197432,7 +197597,7 @@ ] ], "masonry-item-placement-002.html": [ - "9d00a1302c5f038ed8b0f399ee520e4b06f66e71", + "422575be1d3cda190e6d1533696216b6974dc548", [ null, [ @@ -197458,7 +197623,7 @@ ] ], "masonry-item-placement-004.html": [ - "04b4c08dc04f2e2973c85fa2fc42ea01a1842b31", + "6f05dec9c6b3ff7988e454890bb26f1ea13b6bdf", [ null, [ @@ -197471,7 +197636,7 @@ ] ], "masonry-item-placement-005.html": [ - "a571f3590986ff7dc51af036add337d0cb4a1ce9", + "3e3a86ac4c0eec0ef54c136eb7b4b3e3be755cdb", [ null, [ @@ -197484,7 +197649,7 @@ ] ], "masonry-item-placement-006.html": [ - "35e5b476892200a070be8451a4c31f9378305e2c", + "ee8fbaf94e8972dc5599f1c3e3b47a6138c31d5b", [ null, [ @@ -239647,6 +239812,19 @@ {} ] ], + "relative-box-order-of-pseudo-elements.html": [ + "5b318be2176c225cbde342cb990e29695f7c2f73", + [ + null, + [ + [ + "/css/css-pseudo/relative-box-order-of-pseudo-elements-ref.html", + "==" + ] + ], + {} + ] + ], "selection-background-color-001.html": [ "a416d31e186606bb6b8c9ee5a8ef987bcce5b844", [ @@ -252760,6 +252938,32 @@ {} ] ], + "intrinsic-fixed-width-with-max-content-height.html": [ + "d062121102a0f70d5176f8bab9378f620494c69a", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "intrinsic-fixed-width-with-min-content-height.html": [ + "f3dab8b5e74837b7186eb81e4a8f10603da9883e", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], "intrinsic-percent-non-replaced-001.html": [ "64f227073d4dbf2846add39d048ebdb427b515f6", [ @@ -253777,6 +253981,19 @@ {} ] ], + "shrink-to-fit-sizing-max-width-min-content.html": [ + "8964a303bc41ac64c352c7a6d0aab400ce9880a8", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], "slice-intrinsic-size.html": [ "05ce6e46304adda6aab773147e8a32d2564680b6", [ @@ -265484,7 +265701,7 @@ ] ], "text-autospace-dynamic-001.html": [ - "db718eca8da2ea4ae5135da1e76dca672213734d", + "96e90d1d8067178f22a62d796c4e9444205043d2", [ null, [ @@ -265501,7 +265718,7 @@ ] ], "text-autospace-dynamic-text-001.html": [ - "32c9c175d97b9877206cc7664cd196145bcc7073", + "c10d844c9305da14c7557d72c66566fb2eb48c43", [ null, [ @@ -265514,7 +265731,7 @@ ] ], "text-autospace-dynamic-text-002.html": [ - "bd0a1107dae498f1f0f01e9e1795bfa061b1cc6c", + "33e1a5cc131e5c0451de1fffdfcba24e67698490", [ null, [ @@ -265527,7 +265744,7 @@ ] ], "text-autospace-dynamic-text-003.html": [ - "d53762233cc6f040d865d20505f2207fa917cd47", + "21a279a172d3b094d749a474ff63902c3986a931", [ null, [ @@ -265540,7 +265757,7 @@ ] ], "text-autospace-dynamic-text-004.html": [ - "4b3854c9608ab16d375833d7da768e2f7025da77", + "8308a879f3c21d7d7cdfcd2b792dd13d7a180371", [ null, [ @@ -265553,7 +265770,7 @@ ] ], "text-autospace-edit-001.html": [ - "80c46f54d20ff9249a49d73e55b331a8368df4e1", + "d6a3fa02fa001c353ded491a4d352ac7180ddeec", [ null, [ @@ -265605,7 +265822,7 @@ ] ], "text-autospace-mixed-001.html": [ - "9e35ce0f7299f28c4dd39b18a930ecfbffbc1d3b", + "c9cbff52e57a8c5ea0908d761dcd831f4d4ccdb5", [ null, [ @@ -265635,7 +265852,7 @@ ] ], "text-autospace-vertical-combine-001.html": [ - "bed306e159774446ac23ae5238fa654511a27067", + "bd433372d28e4347260d2c58552c9f3dc826e643", [ null, [ @@ -265648,7 +265865,7 @@ ] ], "text-autospace-vertical-upright-001.html": [ - "21d454e7133c1d979e7a666249533629562d9662", + "c1f48b52c790d7842b7e4c9fabbe6d7576057624", [ null, [ @@ -265661,7 +265878,7 @@ ] ], "text-autospace-vs-001.html": [ - "31c7bbf6073ffac1f614846c6c033cca7ff7d4b4", + "18e42402c4d1d729df364837dab8a68244ac5a46", [ null, [ @@ -275908,7 +276125,20 @@ {} ] ] - } + }, + "zwnj-renders-invisible.html": [ + "a02932400e1beee4cbc47857158143194cc4bf24", + [ + null, + [ + [ + "/css/reference/blank.html", + "==" + ] + ], + {} + ] + ] }, "css-text-decor": { "decorating-box": { @@ -306187,6 +306417,19 @@ {} ] ], + "resolution-with-percentage-without-context.html": [ + "f33ac20346c4812db92cf8fc12811c5f0df2bb43", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], "rlh-unit-001.html": [ "c435fd99709dd6a61a9ec128e52958653518b882", [ @@ -313910,6 +314153,35 @@ ], {} ] + ], + "transform-clip.html": [ + "413dab5207f274ef8f6e8839c6d63411b217663d", + [ + null, + [ + [ + "/css/css-view-transitions/scoped/transform-clip-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 150 + ], + [ + 0, + 600 + ] + ] + ] + ] + } + ] ] }, "scroller-child-abspos.html": [ @@ -314430,7 +314702,7 @@ ] ], "view-transition-name-is-backdrop-filter-root.html": [ - "c4f4d3831396b6e7491f19061e6b8b72347123e9", + "f583b59b5839813b99d87c7b0a396f3a918e94d2", [ null, [ @@ -314867,6 +315139,19 @@ {} ] ], + "border.html": [ + "89d24f1d7ebfb3ab43f3bea1767a081d1022166e", + [ + null, + [ + [ + "/css/css-viewport/zoom/border-ref.html", + "==" + ] + ], + {} + ] + ], "bottom.html": [ "1ed63382b342c3024de570ddfe3c7bc9d21449b3", [ @@ -315295,6 +315580,19 @@ ], {} ] + ], + "zoom-precision.html": [ + "54a4cad3f3a9d7ca8d233851b5913f26c0bc1476", + [ + null, + [ + [ + "/css/css-viewport/zoom/zoom-precision-ref.html", + "==" + ] + ], + {} + ] ] } }, @@ -331531,7 +331829,7 @@ ] ], "backdrop-filter-backdrop-root-opacity.html": [ - "b3d13af1c23e06daeaf5806b1df39d51dbd82eb2", + "847831c4df79ee2f2a4583cfc21a101bfa9de243", [ null, [ @@ -331828,7 +332126,7 @@ ] ], "backdrop-filter-edge-behavior.html": [ - "29f5dc5146fbed944d6f4b8c74043947322f685f", + "c8735f426782b57d868bc3c65c3c279817730fb9", [ null, [ @@ -333412,6 +333710,64 @@ {} ] ], + "feconvolve-region-001.html": [ + "c5eed7dccf14107cc80afd29e495583ae2b5698b", + [ + null, + [ + [ + "/css/filter-effects/reference/feconvolve-region-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 38 + ], + [ + 0, + 30004 + ] + ] + ] + ] + } + ] + ], + "feconvolve-region-002.html": [ + "85a92eb42aa9918833ec2a9eb8e79dd3697fc1b6", + [ + null, + [ + [ + "/css/filter-effects/reference/feconvolve-region-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 38 + ], + [ + 0, + 30004 + ] + ] + ] + ] + } + ] + ], "feflood-with-filter-reference.html": [ "0a8fede7e611391d32d2fe46948051abf88fd426", [ @@ -334067,6 +334423,19 @@ {} ] ], + "filter-with-mix-blend-mode.html": [ + "bd3710eca89324c338a0b42df602c2226e57c0b5", + [ + null, + [ + [ + "/css/filter-effects/reference/filter-with-mix-blend-mode-ref.html", + "==" + ] + ], + {} + ] + ], "filtered-block-is-container.html": [ "6f99f364e638028098ae10319290e8bf2a9a9457", [ @@ -352571,13 +352940,17 @@ ] ], "marquee-with-trusted-types.html": [ - "f16c58bb85d71b011e4ee524dfb63184a5fca81a", + "d767fffe9bfde115a0751c61cbfd90a6843c080a", [ null, [ [ "/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types-ref.html", "==" + ], + [ + "/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types-alternate-ref.html", + "==" ] ], {} @@ -352904,6 +353277,19 @@ {} ] ], + "list-style-position-quirks-mode.html": [ + "883f7de1a94a4b70b5d79cfd3cd079f229885e12", + [ + null, + [ + [ + "/html/rendering/non-replaced-elements/lists/list-style-position-quirks-mode-ref.html", + "==" + ] + ], + {} + ] + ], "ol-type-supported-xhtml.xhtml": [ "d7b949dab14f1ca61658538a27799974c01a410f", [ @@ -359068,6 +359454,19 @@ {} ] ], + "dialog-popover-overlay.html": [ + "7fa820e76ff0920562dafa09741ab1b418c15d18", + [ + null, + [ + [ + "/html/semantics/interactive-elements/the-dialog-element/dialog-popover-overlay-ref.html", + "==" + ] + ], + {} + ] + ], "dialogs-with-no-backdrop.html": [ "fec4ba85874e898bd5f4ffc698b5881513346217", [ @@ -359614,6 +360013,19 @@ {} ] ], + "inherited-css-tentative.html": [ + "f1a8d3b6f03e1ad09a2fa4e81869636602697f63", + [ + null, + [ + [ + "/html/semantics/permission-element/inherited-css-ref.html", + "==" + ] + ], + {} + ] + ], "invalid-type-reftest.tentative.html": [ "80f3e793e114fb66f968ac979b6dbd189e3b0b85", [ @@ -359969,6 +360381,19 @@ {} ] ], + "popover-hidden-appearance.html": [ + "5cfa8a703540ea4e29c45899f07ac7f1307c3a1a", + [ + null, + [ + [ + "/compat/green-ref.html", + "==" + ] + ], + {} + ] + ], "popover-hidden-display.html": [ "db61802db60adf9d14ec1266e230222116f40b47", [ @@ -368252,6 +368677,32 @@ {} ] ], + "ellipse-005.svg": [ + "c90511707f82e3a2a06da6bf8b93d7a21fa002fd", + [ + null, + [ + [ + "/svg/geometry/reftests/circle-ref.svg", + "==" + ] + ], + {} + ] + ], + "ellipse-006.svg": [ + "d14875fcd392a0afe3504f7f25900430bcb538de", + [ + null, + [ + [ + "/svg/geometry/reftests/circle-ref.svg", + "==" + ] + ], + {} + ] + ], "ellipse-calc-dynamic-viewport.html": [ "d817b78824633d3c6afea42c86912b0de090ab7c", [ @@ -369127,7 +369578,7 @@ ] ], "marker-path-002.svg": [ - "97ad69815bd57833f598cece7140d423dbb55e30", + "9c677c045c9f6430e25646d1e8d77f3a59f7915f", [ null, [ @@ -369147,7 +369598,7 @@ ], [ 0, - 39 + 935 ] ] ] @@ -371754,6 +372205,19 @@ }, "text": { "reftests": { + "dominant-baseline-central-large-font-size.svg": [ + "902a50aff78b4d6ae968e2e2ee6437b09d513a44", + [ + null, + [ + [ + "/svg/text/reftests/dominant-baseline-central-large-font-size-ref.svg", + "==" + ] + ], + {} + ] + ], "dominant-baseline-hanging-small-font-size.svg": [ "aa27ec9c09484634330d04b3a1876640856f10f5", [ @@ -376330,7 +376794,7 @@ [] ], "support-get-all.js": [ - "57cc59e462bfd39275984ed52a3da8ad5adb39a5", + "3bff0528b18ddca62a481225326fc7dc8f2729aa", [] ], "support-promises.js": [ @@ -379124,21 +379588,15 @@ "9b01ed7dae7fa79886cef7f1c4c1b593f6a52b55", [] ], - "legacy": { + "bidi": { "generate.py": [ - "505375d55fede4f613f4c37b938c4f4b9e16e3c9", + "0db430b170b9c4a0035a635f1936b9de78bb4140", [] ], "generate_test.py": [ - "6f46ae913a279b23c8debe1bb2d27e558499f37c", + "026a7b7fd842ec72e7d4db070152d4c51e7fd787", [] ], - "getAvailability": { - "reject_opaque_origin.https.html.headers": [ - "c7e4e7cc5bd3fa25851c1e26c3c04eb95050d94b", - [] - ] - }, "getDevices": { "reject_opaque_origin.https.html.headers": [ "c7e4e7cc5bd3fa25851c1e26c3c04eb95050d94b", @@ -379151,134 +379609,96 @@ [] ] }, - "requestLEScan": { - "reject_opaque_origin.https.html.headers": [ - "c7e4e7cc5bd3fa25851c1e26c3c04eb95050d94b", - [] - ] - }, "script-tests": { "base_test_js.template": [ - "04c7a70ba4f3b84a38a91d1be971f0ec0d4843ff", + "11328e373fe30016f8d449af8b979d89c40727cb", [] ], "characteristic": { "characteristic-is-removed.js": [ - "48aaec3e93015dd656e8c3dac75860875bfcd4cd", + "73a59157adb5a3aa90c8a677a80a191c2491e7bc", [] ], "descriptor-get-same-object.js": [ - "4e6bc3519bc176c293868ab1d92be843e31dea39", + "1a048e29e8a5f254eebb79368c9ac4d62d3dabde", [] ], "service-is-removed.js": [ - "2f5824082b1a9b5166e807e9ec9582aa4a9f3330", + "88b6bb932a752acf15b8dda33a756530d55ef78d", [] ] }, "descriptor": { "service-is-removed.js": [ - "5373364399e9cd30eefbeb04ed3bff3b70b5d155", + "4d871684f809cac98d4cfdc85b89aa3fba55699c", [] ] }, "server": { "disconnect-called-before.js": [ - "57704ee2992689f602cf2990d863129d2dc1bb6e", + "177f29fe65a5df388bc247223a2996be5f7ed695", [] ], "disconnect-called-during-error.js": [ - "edabb07bccb977e8ef9b018c00292579525c9d22", + "adfcd9ec1c43af35b26323c1f87e3089405c994c", [] ], "disconnect-called-during-success.js": [ - "84157a0693b4ebd6c8e1cacf5f3ead53a4ff55d1", - [] - ], - "disconnect-discovery-timeout.js": [ - "718e290950d25e52faf5dfccc56610b8dda868a8", + "b9296cd93a965cd4fbb84fd6e8b0151c2081442f", [] ], "disconnect-invalidates-objects.js": [ - "995fda34411d1534debe9ba1502390fb5cd8a42b", + "76bff1f17b95b2cb0bc418220c1bdfa99141c11e", [] ], "disconnected-device.js": [ - "2b6011642b61c5da786a5819be38f5f14f4fe144", - [] - ], - "discovery-complete-no-permission-absent-service.js": [ - "e9e972359a73edc23da95373156f41c9902d828b", - [] - ], - "discovery-complete-service-not-found.js": [ - "6b745d7e2a8296c54e475d312045d77bac126086", + "27bc04fda4f2ddcdccee17ad7f0dc61802dea2fa", [] ], "garbage-collection-ran-during-error.js": [ - "cf508a928ee72fbd97816d2f2f2b66004de9423c", + "db604a233bd36fe581d06e73e1eb814789f4028a", [] ], "garbage-collection-ran-during-success.js": [ - "bb472fcca4ef2437b03bed6762131ebfefa6c2da", + "5f2c7f5e17b51ffd9378f8284f5e07364b8e057d", [] ], "get-different-service-after-reconnection.js": [ - "e72128a76ff592f08ad888a538fdcecbf95c2c1a", + "3898e6960803f7dcd48fc840b39d421053aae2d5", [] ], "get-same-object.js": [ - "3b3bdd19d201f56addef5fa7a50ca570ec7844ae", + "4d93db9e9107dd4684e1d01858e5601804934cbb", [] ], "invalid-service-name.js": [ - "52cbb24f4a3f45c2e2718a530d8cde8e1b221cc9", - [] - ], - "no-permission-absent-service.js": [ - "200dab3e937e174170b3ec7879998d95a1369b3e", - [] - ], - "no-permission-for-any-service.js": [ - "60e3ef00806bcef4c7b49be36f062d58c13274c6", - [] - ], - "no-permission-present-service.js": [ - "3257410685ee405bad8cc4a9dad96a10434278b5", + "37f6183f386073d485caabdd2f206a0fafad5ba2", [] ], "service-not-found.js": [ - "0fd2dace7871f7edf00251d53532263901ffe86b", + "1b8e5f15d7af4cc479d88c9cc48063c42518695c", [] ] }, "service": { "blocklisted-characteristic.js": [ - "b26f039a70684792e0672b7993aae27fe493fc6c", - [] - ], - "characteristic-not-found.js": [ - "366e046774b6a9cbcd22071a3afa6c1d0857bd1e", + "433b6483bbfa5c215f25089fe54c699ea517d3c6", [] ], "garbage-collection-ran-during-error.js": [ - "7ed4aaa9622313c2479ac7ff9d6a9dd5c0cf6288", + "9f8608217171db0d594516c15a8e3cf6ba65836b", [] ], "get-same-object.js": [ - "db9d740c83cd6bd0796a26338f62eaeee374a2b6", + "1a80c03538a4d3407e23dabdb132b141137f1201", [] ], "invalid-characteristic-name.js": [ - "74cba7ec4314bb4ae002470e7c4f7e591a93ab9b", - [] - ], - "reconnect-during.js": [ - "cc71547ac248e8ecdd5c79c1b3e4816f6525f794", + "2a635d5615abefd3f05121e049257f93ab4ca940", [] ], "service-is-removed.js": [ - "aaf0f14436742c04848749b5acf6d52b7bb2e98c", + "c33711434719546184f3699acb833422dd82b808", [] ] } @@ -379286,7 +379706,7 @@ }, "resources": { "bluetooth-fake-devices.js": [ - "1c8e24f19d1bc90dc05a8cbabd1597022ace1acd", + "c503bf790c4b4a14405eb566383666539dabdda5", [] ], "bluetooth-scanning-helpers.js": [ @@ -379294,7 +379714,7 @@ [] ], "bluetooth-test.js": [ - "05981c07e15c8c89d735bc8985364ebe9377398e", + "7fd69e1e4b0f6d4cb2a9eef9257d41ed8c29f0cb", [] ], "health-thermometer-iframe.html": [ @@ -401170,7 +401590,7 @@ [] ], "cookie-helper.sub.js": [ - "3338cf0e800cba0d59b9a86c8270c262772b3d7b", + "15a191c210587c9ad929bc23c79c7f4844858d26", [] ], "cookie-test.js": [ @@ -421821,6 +422241,10 @@ "a974cfa8906c40079e4a36f2cae385c58245f403", [] ], + "border-shape-overflow-ref.html": [ + "1d746f899aa2b3634394c5201654edfaababde66", + [] + ], "border-shape-stroke-ref.html": [ "bf82df40204c207abc2289174d3f9ceb3d249932", [] @@ -422602,7 +423026,7 @@ [] ], "WEB_FEATURES.yml": [ - "f95848036f0c30e5701c61c45921b14f08628b8d", + "bb33b10c84d563f6a7bfeea999501f6a2e3e89a0", [] ], "all-prop-001-ref.html": [ @@ -428067,6 +428491,10 @@ "552d9fc6da4768424a4e0f01b7017fd321059131", [] ], + "select-element-multiple-ref.html": [ + "83562ea15847184c9d8f8f2977ab194a0a8e5186", + [] + ], "select-element-zero-height-001-ref.html": [ "fab8bf73554143fb8033f2d0130d3378c23ae460", [] @@ -429245,6 +429673,18 @@ "8e71f7e153b6d9c7e9049c81f18b06d0d089746e", [] ], + "font-variation-settings-descriptor-01-ref.html": [ + "801f2fa884f08de2b3faf3430787a70adfd9b731", + [] + ], + "font-variation-settings-descriptor-02-ref.html": [ + "0d1198e08ad139c66334909db2265a091c57994e", + [] + ], + "font-variation-settings-descriptor-03-ref.html": [ + "7cfe77b1973d965e6ac2b15baceba2b6c9710a8f", + [] + ], "font-weight-bolder-001-ref.xht": [ "c90b7dfc23cf0b15d1998dc8650d4325083b0e32", [] @@ -435733,10 +436173,6 @@ "ca072086c415b058264e495c46cb4a692d8a0684", [] ], - "test-synthetic-bold-2-notref.html": [ - "ec5051519d703895e590e14c55b27b84ed164c35", - [] - ], "test-synthetic-bold-notref.html": [ "4a952acb46fb5b0f5681176ee3db32758413c48c", [] @@ -435749,10 +436185,6 @@ "a0721426016c949369ae0114211136f45ce51b27", [] ], - "test-synthetic-italic-4-notref.html": [ - "d6f9050be302c30b7609dd19be3870453219539c", - [] - ], "test-synthetic-italic-notref.html": [ "3684f3ae804aa109f2da5188556cd3b36ffa2fc9", [] @@ -437575,11 +438007,11 @@ }, "item-placement": { "masonry-item-placement-001-ref.html": [ - "e2aea52f083456bff4c2e79cc9bcd84ab9a9ad05", + "aaa81d135a92f940c6efb5d8824ac6179cc5a303", [] ], "masonry-item-placement-002-ref.html": [ - "a02009ec3087e10f94230db015a4b3a020bc776b", + "9723a6c4f5cbd724aa3269866afc7b0803524c08", [] ], "masonry-item-placement-003-ref.html": [ @@ -437587,19 +438019,19 @@ [] ], "masonry-item-placement-004-ref.html": [ - "ba9c72f292553fe9ad54c6c218741b0126ba7bde", + "9658ec4e81ba6f5de8fd91936a776f5441fceef9", [] ], "masonry-item-placement-005-ref.html": [ - "bd5d55262a3c0579fa208b85aab10c74b9a071d1", + "4d2ac508ad8947d44234225728cec0f37470a23c", [] ], "masonry-item-placement-006-ref.html": [ - "a54476a6ba806d5b003b74a8c8fd12dfca1dfc0e", + "948958051147825a37f80817066ad0bc08561b60", [] ], "masonry-item-placement-007-ref.html": [ - "5c1fd18b3d14664e3908d98f2af3fbce0da1b580", + "8e1e3b0bdeab62804c7c70441b0f3c36f8cfebdd", [] ], "masonry-item-placement-008-ref.html": [ @@ -446323,6 +446755,10 @@ [] ] }, + "relative-box-order-of-pseudo-elements-ref.html": [ + "b427c986e37e189ea2b4065c47d6d834a396e7d8", + [] + ], "selection-background-painting-order-ref1.html": [ "ca2b08ccbd0e28128efd9cfa5c8c0a02d4a60fdc", [] @@ -451607,11 +452043,11 @@ [] ], "text-autospace-dynamic-text-001-ref.html": [ - "499f8322fe4b7569b473e411b60955a4fac35a9a", + "19c92b0da97a5ff9691d8ce41d42378d64ce2c75", [] ], "text-autospace-edit-001-ref.html": [ - "ca95e197462730462dbd403871173d6b9873c3b0", + "1d854bd1647a2809eb10311e8307533b5cb264b8", [] ], "text-autospace-first-line-001-ref.html": [ @@ -458801,6 +459237,10 @@ "nested-scope-ref.html": [ "951c0928687dcd6edb32e8e3aa7307bf3d6b3923", [] + ], + "transform-clip-ref.html": [ + "5429d9cb195adb915268cae37f1780d2b33382ae", + [] ] }, "scroller-child-abspos-ref.html": [ @@ -458960,6 +459400,10 @@ "5de90caf7f0c72041334349b7c4b1044d373bc22", [] ], + "border-ref.html": [ + "14a1dab3a1943f1c7dd1f12cde0a6e0f7bad1d46", + [] + ], "canvas-ref.html": [ "d1b9a0d68dd5cf15d035896a6e4deac59b950310", [] @@ -459075,6 +459519,10 @@ "svg-viewBox-ref.html": [ "b58eb47a23c4a0531e6ec6f690cebbd2dfb46afc", [] + ], + "zoom-precision-ref.html": [ + "b24d903e5ba7479158a806506ad75057da827b70", + [] ] } }, @@ -462200,7 +462648,7 @@ [] ], "backdrop-filter-backdrop-root-opacity-ref.html": [ - "76d4854df6c149dd0b59ca900a8e89102a37666f", + "5ed1d74ab648b4a505aab51007f14e3f36aa1a6c", [] ], "backdrop-filter-backdrop-root-ref.html": [ @@ -462762,6 +463210,10 @@ "e4900ad0476a208ec82950a80fb36d1481bd8c09", [] ], + "feconvolve-region-ref.html": [ + "97e2db7b5b955329e53feca499cea44f601b35b0", + [] + ], "filter-effect-remove-unattached-ref.html": [ "5f9f7a76ec71bfa5abe4a0a82bc126af8fa0ad5a", [] @@ -462786,6 +463238,10 @@ "c1aeed8c441e6f72c6faa893d64ae30bdacbec06", [] ], + "filter-with-mix-blend-mode-ref.html": [ + "1059b396b393f6bb5482b1290c0323b1d74efb72", + [] + ], "filters-drop-shadow-001-ref.html": [ "3776a006095dd3ec5b9ea826e3260c91469711b6", [] @@ -471682,6 +472138,10 @@ [] ] }, + "ahem-visible-zwnj.otf": [ + "1e608589e051da271e6c091b70b6f99253ed9208", + [] + ], "ahem.css": [ "02c1554537a60863e0a2bea39c4e18b93cdc7ab9", [] @@ -476831,10 +477291,6 @@ "81259c11b7d9226fe659fc437f69b222093079fd", [] ], - "WEB_FEATURES.yml": [ - "1d9e4bab82191d72c374c7399e666bd6bfe42bc2", - [] - ], "reference": { "direction-default-ref.html": [ "cef6df259c4801e93e7ce8dd1692e6f3157d77bc", @@ -477451,10 +477907,6 @@ "5a4e734505744a2ab50558731d90d41bea4aff8c", [] ], - "WEB_FEATURES.yml": [ - "1d9e4bab82191d72c374c7399e666bd6bfe42bc2", - [] - ], "canvas.2d.fontStretch-ref.html": [ "00ecdccad3743db0d0a1ec99850f80ea7964d512", [] @@ -477662,7 +478114,7 @@ [] ], "text.yaml": [ - "0a8e54135775874c4f390101dce100bfab6716f1", + "325a7744bf0913b565231d12cad9b703255dbfd2", [] ], "the-canvas-state.yaml": [ @@ -479879,34 +480331,18 @@ } }, "images": { - "011.xhtml": [ - "905ce2c4f81241ce45e22c2a84742a4efa85c5bf", - [] - ], "012-1.xhtml": [ "3dc4f80641fc87f54ae2f1e67b1144386176779d", [] ], - "012.xhtml": [ - "d323d0a02eeac84c618bb7d4ed2f00d11f71126e", - [] - ], "013-1.xhtml": [ "7a78528c846a13657f9443e0e8abbfba02b9b44f", [] ], - "013.xhtml": [ - "ffa7f3b74b51e9b3ec960972d40590af4fc400e8", - [] - ], "014-1.xhtml": [ "13d8e43f989c9b2cd0316157f7bd8d0ba58f8c77", [] ], - "014.xhtml": [ - "1acb985a8d5214ed3dde9980b9986983def649b6", - [] - ], "022.xhtml": [ "a85f8c10f11f7473c713d21ff6a341cc483e3ce7", [] @@ -481142,7 +481578,7 @@ [] ], "test-helper.js": [ - "c7c80958fd577b5f3e00d30de0ab7bb1d55fd784", + "a77bce83b506dba55e2aa374da7a90c11de35078", [] ] }, @@ -482975,8 +483411,12 @@ "7a79361fc399301161400ef4ba75c876369329f7", [] ], + "marquee-with-trusted-types-alternate-ref.html": [ + "9b57d520dd02ae8fdf96186803f90b2663b2ac5f", + [] + ], "marquee-with-trusted-types-ref.html": [ - "5042557212e58741859ad6750543540cff563493", + "d13dcf8eaf9e36d837b36eaefe52ae3764b16589", [] ] } @@ -483087,6 +483527,10 @@ "4fbc5aca974bffeade2e97e8fa4d0f183a847464", [] ], + "list-style-position-quirks-mode-ref.html": [ + "eaf2461b43e3fbf4911cdd49b030a7fedcdeebe7", + [] + ], "ol-display-contents-ref.html": [ "f9fce33313801eeab34b092f26ec9504adfb0e0a", [] @@ -484164,7 +484608,7 @@ [] ], "stylesheet.py": [ - "1a4dec2724438e1df66aa8fb286e74979847df02", + "241b5eee9ae8a3129f0ec681f2a8c757b3800af5", [] ] }, @@ -484810,6 +485254,18 @@ [] ], "resources": { + "create-button-with-pointerdown-listener.html": [ + "36aeb7a7e6a2b963da536f6ffd9d4bb3980d2e75", + [] + ], + "cross-origin-middle-frame-2.html": [ + "a426be9342f72ac96310a2273c842ed4183e2963", + [] + ], + "cross-origin-middle-frame.html": [ + "8abe85d31a3c0357161d91da52c1ea1f81942279", + [] + ], "empty.html": [ "763b0739be64c36e62e7aa7d60efa355a4566af7", [] @@ -486107,6 +486563,10 @@ "97141e6c517d62d9c598bed2303696da2cda91ee", [] ], + "dialog-popover-overlay-ref.html": [ + "46581691ffc2e9b69f4902ca9de57b373cc88fc3", + [] + ], "dialogs-with-no-backdrop-ref.html": [ "4b31dc7062e697496f4edfaf98a70c0e794c6245", [] @@ -486354,6 +486814,10 @@ "462f346edf591e8fa76b52191f00bc2bbe3bbfcc", [] ], + "inherited-css-ref.html": [ + "6714e3116a74e4d1339853cce6c10e1692952422", + [] + ], "invalid-type-reftest-ref.html": [ "359872ea61358720c36fe2f0de282009b49f88ac", [] @@ -489843,7 +490307,7 @@ [] ], "structured-clone-battery-of-tests.js": [ - "923ac9dc16491898d3e7724b0087775ca576409c", + "9a1a710d8a57d4e3574cd92a9d905b2ea69242b9", [] ] }, @@ -490965,14 +491429,6 @@ "c733dac7c389f68cdea6d6a94c8884d6075360e9", [] ], - "get_all_cookies.sub.https.html.ini": [ - "ede46b74c64027d7e350664f331c858eeae9a81f", - [] - ], - "get_named_cookie.sub.https.html.ini": [ - "05352bf82a1347bbb966f12fe99a0f30205fc829", - [] - ], "minimize_restore_popup.html.ini": [ "6075b58d09cc51dc5069e446287246df76b1d5e8", [] @@ -491681,7 +492137,7 @@ [] ], "digital-credentials.idl": [ - "885f0f6c0f97169e5e38d7d4aa360eb2dff61109", + "c4d4664b909cccd2aaa7f738f07b5f717520b86a", [] ], "digital-goods.idl": [ @@ -491693,7 +492149,7 @@ [] ], "dom.idl": [ - "d2129285383a34e28ea3b04989273b7e76f6d0dd", + "955569ad68d394ae4246429fcc15712bc062145e", [] ], "edit-context.idl": [ @@ -492461,7 +492917,7 @@ [] ], "webtransport.idl": [ - "7c9878ce5615a8477578d2ffcd501a0afdc9a477", + "380082abd1b489cf0d61584f31cc0b28498e5516", [] ], "webusb.idl": [ @@ -492894,7 +493350,7 @@ } }, "lint.ignore": [ - "3ed39f9c41696f5c60feb8644f375d24fd3a38ee", + "7812e9131c758839983741560d310891330d1b85", [] ], "loading": { @@ -500777,7 +501233,7 @@ [] ], "testharness.js": [ - "6ccede34483b227cc41fcb15235e56aa60d4022e", + "b5847ed406ae5af7f8493df3adbee90e318b8ebc", [] ], "testharness.js.headers": [ @@ -500793,7 +501249,7 @@ [] ], "web-bluetooth-bidi-test.js": [ - "044ad1a43aeccf2ad6762886ce182e8848c89ed8", + "3283fef43fc7d2010e9931091430c9e281cd3f08", [] ], "webidl2": { @@ -500912,7 +501368,7 @@ [] ], "orientation-utils.js": [ - "95383750f16e1a47d39e514627e03f2ba8c3b8ca", + "52d888f176073f24eb536bed4871a5d7086be3a2", [] ], "sandboxed-iframe-locking.html": [ @@ -507250,6 +507706,10 @@ }, "text": { "reftests": { + "dominant-baseline-central-large-font-size-ref.svg": [ + "d25fc40d719df14a639c39d02bf4bf73eb602b84", + [] + ], "first-letter-ref.svg": [ "72f866be1d9b175a675a5e13fb79c83c5c8699e4", [] @@ -507666,7 +508126,7 @@ [] ], "requirements_tc.txt": [ - "1098a385dfd564191b3988331d2dd82aba2e9a08", + "625156c5eaec8165e07d7ac08246a913078e590b", [] ], "run_tc.py": [ @@ -508285,7 +508745,7 @@ [] ], "requirements_tests.txt": [ - "8e0d9abb4089ab911822dbb339694451ee1179e3", + "4b23d0666010f9f276856289fd06c0c6697c5c74", [] ], "runner": { @@ -508356,7 +508816,7 @@ [] ], "test_functional.py": [ - "94bedb60f7e8677ccab7181f6ec8193f0216c2f9", + "4597e3af05a40c2e03316de3007fda29f5751d92", [] ], "test_serve.py": [ @@ -518906,7 +519366,7 @@ ] }, "requirements.txt": [ - "6605de2deda53dff469509875052070c8e81e42e", + "4532ff84e6cbcb849e81e74845a99935cecd683b", [] ], "requirements_chromium.txt": [ @@ -518984,11 +519444,11 @@ [] ], "firefox.py": [ - "475c75dff8bf52e839290136dd0f530f5e220fa1", + "df7b5e414de5ba40171cebe668e1edc6c5e833ec", [] ], "firefox_android.py": [ - "d0cd7411af0e29a14a3d2e7dfb955988f8a875f1", + "050a96477e09d2d1af5c06fe0f79e44ccfa43abe", [] ], "headless_shell.py": [ @@ -519815,7 +520275,7 @@ [] ], "server.py": [ - "ba68339190dd3d5a06203b30cc1fe9c19946a530", + "1b28a6c4e8645196248fcdbe6068a41d11748c3f", [] ], "sslutils": { @@ -520036,7 +520496,7 @@ [] ], "csp-violations.js": [ - "bc38da9e2210c2882cb70f1313e1cfd3b7bda245", + "63cdf02b990610b478e929911e0190c12ce0b2c3", [] ], "event-handler-attributes.mjs": [ @@ -520059,8 +520519,16 @@ "72271293baea3f57deeec54a540235005b3912cc", [] ], + "navigate-to-javascript-url-005-iframe.html": [ + "7d259da35c7e68398b1362a4b98afd19fbe04704", + [] + ], + "navigate-to-javascript-url.html": [ + "ef11ae2e531bbeebaa498b039e47b36f8ddbf4ac", + [] + ], "navigation-report-only-support.html": [ - "d4e4ded7daad113f34d56288ccb9a1bf480e45d2", + "b0fdfcae39488b0cf7f0e0b164391e8720d41d3c", [] ], "navigation-report-only-support.html.headers": [ @@ -520068,7 +520536,7 @@ [] ], "navigation-support.html": [ - "306cc0e84f7dfbf5aacee2c0dadc7b2e08512fa6", + "d4af8fc27770e9abc1d894dae5c832b11f4b7d43", [] ], "navigation-support.html.headers": [ @@ -520076,7 +520544,7 @@ [] ], "navigation-support.js": [ - "8449dd202b6c76d1830dc348fc84ef927baae9f4", + "3f3cb10e8af5ed832e469b7b2805b836b6ad778d", [] ], "passthroughpolicy.js": [ @@ -520972,7 +521440,7 @@ [] ], "setters_tests.json": [ - "6a4017a7804617f4303659affbe2f68f489a19da", + "adf78c6256019b5ac36334033118251f88fac22c", [] ], "toascii.json": [ @@ -521197,7 +521665,7 @@ [] ], "binary.wast.js": [ - "468d0ba0a992a8ec2fb7f7ea370c7df5db93e2db", + "3fcb3cccd3aadb2466161823f703f4f81338292d", [] ], "block.wast.js": [ @@ -521317,7 +521785,7 @@ [] ], "global.wast.js": [ - "9e1b5504839fc89b4294611c5970ddc35a5c7daa", + "f5a931f361b4d7c9f59e6b310e6c69c372fe2e91", [] ], "harness": { @@ -524076,7 +524544,13 @@ "__init__.py": [ "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", [] - ] + ], + "parallel_execution": { + "__init__.py": [ + "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + [] + ] + } }, "log": { "__init__.py": [ @@ -525300,7 +525774,7 @@ }, "resources": { "utils.js": [ - "c562b3028bdecd3cd9cb9afacd658132ca3b1420", + "1e7b5a9ca79f822d67028e5004583934424903e3", [] ], "utils_validation.js": [ @@ -537678,7 +538152,7 @@ ] ], "idbindex_getAll-options.tentative.any.js": [ - "908fcecbd1a4b5715aac459b29626d445d44f4ce", + "eb2174c9b00185d3700f1833b9f1707ae927e1e2", [ "IndexedDB/idbindex_getAll-options.tentative.any.html", { @@ -537825,7 +538299,7 @@ ] ], "idbindex_getAll.any.js": [ - "f817758e60342482daefe0dfa589a60bb41a365f", + "b36bb19b4cd5c25f02e87c1c1416ccae72990f22", [ "IndexedDB/idbindex_getAll.any.html", { @@ -537972,7 +538446,7 @@ ] ], "idbindex_getAllKeys-options.tentative.any.js": [ - "f7f180e16ea601a128798d1967333858cdfc9da3", + "c5069877528d6d2512012657869d96409abb71e0", [ "IndexedDB/idbindex_getAllKeys-options.tentative.any.html", { @@ -538119,7 +538593,7 @@ ] ], "idbindex_getAllKeys.any.js": [ - "34bab09d158d2020a7c6f85ca76f2eaa32946841", + "e0b890f960d85d16bf38f53ee6e362d48433babf", [ "IndexedDB/idbindex_getAllKeys.any.html", { @@ -538266,7 +538740,7 @@ ] ], "idbindex_getAllRecords.tentative.any.js": [ - "b6929854def189ab9602d35100ac337fc67023f2", + "2a6d0836448ccb545588d3bc36e6412c052ee5da", [ "IndexedDB/idbindex_getAllRecords.tentative.any.html", { @@ -540652,7 +541126,7 @@ ] ], "idbobjectstore_getAll-options.tentative.any.js": [ - "21ca6dd1a1f49ea462fd974e3b2d07b8498a8836", + "9538c68eed62a1c69f2e960df9c3088da46d2790", [ "IndexedDB/idbobjectstore_getAll-options.tentative.any.html", { @@ -540799,7 +541273,7 @@ ] ], "idbobjectstore_getAll.any.js": [ - "6082163d3d24100994ce30d22797e72ee63386cf", + "10ff957a7d39882c29c6b3633d6521177ad66864", [ "IndexedDB/idbobjectstore_getAll.any.html", { @@ -540946,7 +541420,7 @@ ] ], "idbobjectstore_getAllKeys-options.tentative.any.js": [ - "7b810efa5989b77f8560fee44ba883b1052d16f6", + "2b52a0bbf3d70b63535995ddad887b1df6248375", [ "IndexedDB/idbobjectstore_getAllKeys-options.tentative.any.html", { @@ -541093,7 +541567,7 @@ ] ], "idbobjectstore_getAllKeys.any.js": [ - "17244f6e49cad5811e860de12e7a17dd0b7a524a", + "0e63d079376e5aa9a86e27198f15b86f8fd83696", [ "IndexedDB/idbobjectstore_getAllKeys.any.html", { @@ -541240,7 +541714,7 @@ ] ], "idbobjectstore_getAllRecords.tentative.any.js": [ - "9ab885689423eab90c9b634e433ddfb6b28319c2", + "f765c1b169dd4eb876a146e58ac86b7e688d216d", [ "IndexedDB/idbobjectstore_getAllRecords.tentative.any.html", { @@ -559748,7 +560222,7 @@ "bidi": { "adapter": { "adapter-absent-getAvailability.https.window.js": [ - "ba58cc83b6ae88912aeeafaf2f6d4257b1769b22", + "457417ee3554d46499661a372d61d37c9433ee09", [ "bluetooth/bidi/adapter/adapter-absent-getAvailability.https.window.html", { @@ -559768,16 +560242,21 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] ], "testdriver_features": [ "bidi" - ] + ], + "timeout": "long" } ] ], "adapter-powered-off-getAvailability.https.window.js": [ - "ce99800cbbdbbeb50052ab2ae54c401b3880c322", + "803119460ce223af7fc34f4cc8c32643cd8c7f93", [ "bluetooth/bidi/adapter/adapter-powered-off-getAvailability.https.window.html", { @@ -559797,16 +560276,21 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] ], "testdriver_features": [ "bidi" - ] + ], + "timeout": "long" } ] ], "adapter-powered-on-getAvailability.https.window.js": [ - "fd91c9fa04b01a6b762a529d917c5cf741406dca", + "7c0ba18f5e755ab1433fda032e0cfcd8e9921118", [ "bluetooth/bidi/adapter/adapter-powered-on-getAvailability.https.window.html", { @@ -559826,16 +560310,21 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] ], "testdriver_features": [ "bidi" - ] + ], + "timeout": "long" } ] ], "cross-origin-iframe-getAvailability.sub.https.window.js": [ - "319aca32b1f76d98a2e393799d7692b059f6f981", + "f2e7df64b93566f222080ec64307b431ac08eeaf", [ "bluetooth/bidi/adapter/cross-origin-iframe-getAvailability.sub.https.window.html", { @@ -559855,80 +560344,25 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] ], "testdriver_features": [ "bidi" - ] + ], + "timeout": "long" } ] ] }, - "requestDevice": { - "acceptAllDevices": { - "device-with-empty-name.https.window.js": [ - "0fa52cd553babc42811de6dd5654cfa27046aaf9", - [ - "bluetooth/bidi/requestDevice/acceptAllDevices/device-with-empty-name.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js?feature=bidi" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ], - "testdriver_features": [ - "bidi" - ] - } - ] - ], - "device-with-name.https.window.js": [ - "537d01f4f388ec2d40e15f1e2b92aabaa376857b", - [ - "bluetooth/bidi/requestDevice/acceptAllDevices/device-with-name.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js?feature=bidi" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ], - "testdriver_features": [ - "bidi" - ] - } - ] - ] - }, - "radio-not-present.https.window.js": [ - "370ededf222a59247de99d8b23d5d7280df0cca5", + "characteristic": { + "characteristicProperties.https.window.js": [ + "1bad95c5d8d02641cdb45c498d9629409978d38c", [ - "bluetooth/bidi/requestDevice/radio-not-present.https.window.html", + "bluetooth/bidi/characteristic/characteristicProperties.https.window.html", { "script_metadata": [ [ @@ -559946,164 +560380,29 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] ], "testdriver_features": [ "bidi" - ] - } - ] - ] - } - }, - "legacy": { - "adapter": { - "adapter-added-getAvailability.https.window.js": [ - "f8e25b2ac2fc48b865ce7f9e3702a7688f89dbc3", - [ - "bluetooth/legacy/adapter/adapter-added-getAvailability.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "adapter-powered-on-off-on-getAvailability.https.window.js": [ - "c4ba9b5f3a9b13eaba51a3d29cfa62405816753e", - [ - "bluetooth/legacy/adapter/adapter-powered-on-off-on-getAvailability.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "adapter-removed-getAvailability.https.window.js": [ - "ca0b51f47dc6807b79a861d85ea5a7f2549e691a", - [ - "bluetooth/legacy/adapter/adapter-removed-getAvailability.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ] - }, - "characteristic": { - "characteristicProperties.https.window.js": [ - "f7a57a9c4b8922249976d4f980c3e07555b05969", - [ - "bluetooth/legacy/characteristic/characteristicProperties.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "timeout": "long" } ] ], "getDescriptor": { - "detachedIframe.https.window.js": [ - "de7d0b0b7ce79ffc4391a1aa476b88beb8be2c27", - [ - "bluetooth/legacy/characteristic/getDescriptor/detachedIframe.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], "gen-characteristic-is-removed.https.window.js": [ - "9e48a7caabc29a610f72fef370cc4ee6571220ea", + "74701c79fb7e4003ac712227213c5b0a4144386e", [ - "bluetooth/legacy/characteristic/getDescriptor/gen-characteristic-is-removed.https.window.html", + "bluetooth/bidi/characteristic/getDescriptor/gen-characteristic-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -560120,20 +560419,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-descriptor-get-same-object.https.window.js": [ - "708f67da6a8c38738c6ddb2d1990b6440426627f", + "9adc7674573919704ef94adf5404087ee2f226f7", [ - "bluetooth/legacy/characteristic/getDescriptor/gen-descriptor-get-same-object.https.window.html", + "bluetooth/bidi/characteristic/getDescriptor/gen-descriptor-get-same-object.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -560150,20 +560457,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-service-is-removed.https.window.js": [ - "c256050b0fc4dfe84ad174d1e62c54a0dfa49686", + "6e2b3af9fdbff90540ad311d385a9162536763c7", [ - "bluetooth/legacy/characteristic/getDescriptor/gen-service-is-removed.https.window.html", + "bluetooth/bidi/characteristic/getDescriptor/gen-service-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -560180,52 +560495,30 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] }, "getDescriptors": { - "detachedIframe.https.window.js": [ - "45dd23752f2fd836b751c4700f910ddb1de26e2c", - [ - "bluetooth/legacy/characteristic/getDescriptors/detachedIframe.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], "gen-characteristic-is-removed-with-uuid.https.window.js": [ - "a0424c01106ac6f9ab921b0cbea3c2b960c8f938", + "a2d233f311990f41141127e074b4d7f27c5fc4b7", [ - "bluetooth/legacy/characteristic/getDescriptors/gen-characteristic-is-removed-with-uuid.https.window.html", + "bluetooth/bidi/characteristic/getDescriptors/gen-characteristic-is-removed-with-uuid.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -560242,20 +560535,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-characteristic-is-removed.https.window.js": [ - "29325c3bb527996a7bbb8b7bdaff17f7dc39e256", + "dd2dc5d9ee8979163ac86d2810f2205bcbdb496d", [ - "bluetooth/legacy/characteristic/getDescriptors/gen-characteristic-is-removed.https.window.html", + "bluetooth/bidi/characteristic/getDescriptors/gen-characteristic-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -560272,20 +560573,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-descriptor-get-same-object.https.window.js": [ - "7f1001f3eee795307dfac2899f4dac78e2f2de23", + "e769bfacb8dff45b13b0904e90ac0d0972fcdbac", [ - "bluetooth/legacy/characteristic/getDescriptors/gen-descriptor-get-same-object.https.window.html", + "bluetooth/bidi/characteristic/getDescriptors/gen-descriptor-get-same-object.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -560302,20 +560611,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-service-is-removed-with-uuid.https.window.js": [ - "b7c4bff32d91b46e2f70c3181d617c8aac5d5480", + "00e1d10a6d56d75779bc0d3c4ee3e7c189eab344", [ - "bluetooth/legacy/characteristic/getDescriptors/gen-service-is-removed-with-uuid.https.window.html", + "bluetooth/bidi/characteristic/getDescriptors/gen-service-is-removed-with-uuid.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -560332,20 +560649,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-service-is-removed.https.window.js": [ - "22dc30f6d825736f0ed6a48e2e794fcb0bca4258", + "798565a9af6f96e879cf09f42d2f490d435cd94b", [ - "bluetooth/legacy/characteristic/getDescriptors/gen-service-is-removed.https.window.html", + "bluetooth/bidi/characteristic/getDescriptors/gen-service-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -560362,102 +560687,30 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] }, "notifications": { "characteristic-is-removed.https.window.js": [ - "9641ad71e970aeb8b4b53b6b7f1415cc28e889e6", + "b537d907a23db35716033c3413c5feb6ce0b894d", [ - "bluetooth/legacy/characteristic/notifications/characteristic-is-removed.https.window.html", + "bluetooth/bidi/characteristic/notifications/characteristic-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "service-is-removed.https.window.js": [ - "a5851fc473323741f9f2a3a6f793287e4b2cd1ab", - [ - "bluetooth/legacy/characteristic/notifications/service-is-removed.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ] - }, - "readValue": { - "add-multiple-event-listeners.https.window.js": [ - "0eeafd0b79ba30fe7325c48727c13c3cf4fc3fab", - [ - "bluetooth/legacy/characteristic/readValue/add-multiple-event-listeners.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "characteristic-is-removed.https.window.js": [ - "76dc206fb9301915df4cefdc1238b0e486820d92", - [ - "bluetooth/legacy/characteristic/readValue/characteristic-is-removed.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -560476,28 +560729,27 @@ "long" ] ], + "testdriver_features": [ + "bidi" + ], "timeout": "long" } ] ], - "detachedIframe.https.window.js": [ - "6e2510b58d6af5117144fb21b2e7049ad9120d02", + "service-is-removed.https.window.js": [ + "c6bf9d5238029ab179f3e1320f18a28d5103aaff", [ - "bluetooth/legacy/characteristic/readValue/detachedIframe.https.window.html", + "bluetooth/bidi/characteristic/notifications/service-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", "/resources/testdriver-vendor.js" ], - [ - "script", - "/common/gc.js" - ], [ "script", "/bluetooth/resources/bluetooth-test.js" @@ -560505,20 +560757,98 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" + } + ] + ] + }, + "readValue": { + "add-multiple-event-listeners.https.window.js": [ + "2e46a4e6169d465cc822c9820dae22f279d7c08d", + [ + "bluetooth/bidi/characteristic/readValue/add-multiple-event-listeners.https.window.html", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js?feature=bidi" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/bluetooth/resources/bluetooth-test.js" + ], + [ + "script", + "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" + ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" + } + ] + ], + "characteristic-is-removed.https.window.js": [ + "fc7bfc70f320dfaa202fda26eeef4fa7b17a5986", + [ + "bluetooth/bidi/characteristic/readValue/characteristic-is-removed.https.window.html", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js?feature=bidi" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/bluetooth/resources/bluetooth-test.js" + ], + [ + "script", + "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" + ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "event-is-fired.https.window.js": [ - "52b70e7a080e870c27bf86d9ba591292f0b273bb", + "f9330ca964d86bbee72171633a91b57501bf960a", [ - "bluetooth/legacy/characteristic/readValue/event-is-fired.https.window.html", + "bluetooth/bidi/characteristic/readValue/event-is-fired.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -560531,20 +560861,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-characteristic-is-removed.https.window.js": [ - "5bee6db1076bdbc57462ab9298c50c2542a0f702", + "76152227dea123a55c6902b7a986dffda7d553a5", [ - "bluetooth/legacy/characteristic/readValue/gen-characteristic-is-removed.https.window.html", + "bluetooth/bidi/characteristic/readValue/gen-characteristic-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -560561,20 +560899,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "read-succeeds.https.window.js": [ - "e5ddfb81696c009743622929d3c490a6469e4c4b", + "11da38664f79c227b3f1b3bb44691c96f9cdabd0", [ - "bluetooth/legacy/characteristic/readValue/read-succeeds.https.window.html", + "bluetooth/bidi/characteristic/readValue/read-succeeds.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -560587,20 +560933,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "read-updates-value.https.window.js": [ - "bb98aeb18f2dcd068735d8d492dc604ead3970e4", + "8eb078578e4a091775b37d156152b5d9b02f4fae", [ - "bluetooth/legacy/characteristic/readValue/read-updates-value.https.window.html", + "bluetooth/bidi/characteristic/readValue/read-updates-value.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -560613,20 +560967,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "service-is-removed.https.window.js": [ - "1f699ca25eebcd35e0dc76be4be735d7dfd801b6", + "e37d3589d93f652b28489186d135aacda547d770", [ - "bluetooth/legacy/characteristic/readValue/service-is-removed.https.window.html", + "bluetooth/bidi/characteristic/readValue/service-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -560639,21 +561001,29 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] }, "service-same-from-2-characteristics.https.window.js": [ - "dafd755fd1d49b48bcd0a2623a07a5f6855a8164", + "c7bc0cd0a5023d3fb73473a98e1edfab01d753eb", [ - "bluetooth/legacy/characteristic/service-same-from-2-characteristics.https.window.html", + "bluetooth/bidi/characteristic/service-same-from-2-characteristics.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -560666,20 +561036,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "service-same-object.https.window.js": [ - "01b3a25e35e4a8c2e8a1626e12de90e625dda0a8", + "ff57ba0908ab4dd964e907f7d99684006b389611", [ - "bluetooth/legacy/characteristic/service-same-object.https.window.html", + "bluetooth/bidi/characteristic/service-same-object.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -560692,51 +561070,29 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "startNotifications": { - "detachedIframe.https.window.js": [ - "f09c52d32822e1dc412e158c18e9cafa0a931e29", - [ - "bluetooth/legacy/characteristic/startNotifications/detachedIframe.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], "gen-characteristic-is-removed.https.window.js": [ - "c2a23d7f44191fc3a64a397aac447801f3c6ce47", + "82a021fe16ed4b8ea261da58cb8bafe9ea44760a", [ - "bluetooth/legacy/characteristic/startNotifications/gen-characteristic-is-removed.https.window.html", + "bluetooth/bidi/characteristic/startNotifications/gen-characteristic-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -560753,136 +561109,30 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ] - }, - "stopNotifications": { - "detachedIframe.https.window.js": [ - "a459a5b15d9fa7f87b27fda23f8edaa547584e71", - [ - "bluetooth/legacy/characteristic/stopNotifications/detachedIframe.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] }, "writeValue": { - "buffer-is-detached.https.window.js": [ - "43c50d763a0973a498d861fcb80a2efc24f92daa", - [ - "bluetooth/legacy/characteristic/writeValue/buffer-is-detached.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "characteristic-is-removed.https.window.js": [ - "6e9da8802c7adf343d0dd9683c2b03afe11d28e2", - [ - "bluetooth/legacy/characteristic/writeValue/characteristic-is-removed.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "detachedIframe.https.window.js": [ - "eb243a3508c3de75d29f3df91060040da231e1a6", - [ - "bluetooth/legacy/characteristic/writeValue/detachedIframe.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], "gen-characteristic-is-removed.https.window.js": [ - "5750cb82c7f848dba7fd4f3783f6a340636a3661", + "df3f6cb75e2aa048464d8e155278b4a1076cb1fc", [ - "bluetooth/legacy/characteristic/writeValue/gen-characteristic-is-removed.https.window.html", + "bluetooth/bidi/characteristic/writeValue/gen-characteristic-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -560899,100 +561149,30 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "service-is-removed.https.window.js": [ - "89c3112475012de82ca637ec09fbd372f76516fc", - [ - "bluetooth/legacy/characteristic/writeValue/service-is-removed.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "write-succeeds.https.window.js": [ - "b57fe941d0a88091b08f1f573c7af06c88dc85a6", - [ - "bluetooth/legacy/characteristic/writeValue/write-succeeds.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] }, "writeValueWithResponse": { - "buffer-is-detached.https.window.js": [ - "5fb4aa23553986791279430b44f8bb50efa5abcd", - [ - "bluetooth/legacy/characteristic/writeValueWithResponse/buffer-is-detached.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], "characteristic-is-removed.https.window.js": [ - "9309cd5a3cd325e5df4d9b38260a2fcd4b47ea2b", + "59b17353b43583d875bd825dfbd37377c0d28d58", [ - "bluetooth/legacy/characteristic/writeValueWithResponse/characteristic-is-removed.https.window.html", + "bluetooth/bidi/characteristic/writeValueWithResponse/characteristic-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -561005,20 +561185,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-characteristic-is-removed.https.window.js": [ - "e202376da7c64fa3a906e6f169a76e61d1e6a916", + "24ed05268f99f36c83c83f2472122e0e23548267", [ - "bluetooth/legacy/characteristic/writeValueWithResponse/gen-characteristic-is-removed.https.window.html", + "bluetooth/bidi/characteristic/writeValueWithResponse/gen-characteristic-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -561035,20 +561223,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "service-is-removed.https.window.js": [ - "81b2dff44e34080b4088f7a6fd5ed9f58feb6eff", + "1ec81013a3980e325ca69327cb78f535a4434c1f", [ - "bluetooth/legacy/characteristic/writeValueWithResponse/service-is-removed.https.window.html", + "bluetooth/bidi/characteristic/writeValueWithResponse/service-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -561061,20 +561257,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "write-succeeds.https.window.js": [ - "c87e7ac6aba26b31319becd030d34657506ba57d", + "1ba0c5af8544f95d26fa24a450b599847da299d1", [ - "bluetooth/legacy/characteristic/writeValueWithResponse/write-succeeds.https.window.html", + "bluetooth/bidi/characteristic/writeValueWithResponse/write-succeeds.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -561087,48 +561291,30 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] }, "writeValueWithoutResponse": { - "buffer-is-detached.https.window.js": [ - "23721380cbdb69c84dce985b26ba92a79f6c4f3e", - [ - "bluetooth/legacy/characteristic/writeValueWithoutResponse/buffer-is-detached.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], "characteristic-is-removed.https.window.js": [ - "8d3ed1f663369bfb11448a3739d3773f55b53c61", + "f53501c30935289fd260ef6685972b4c19d2b04e", [ - "bluetooth/legacy/characteristic/writeValueWithoutResponse/characteristic-is-removed.https.window.html", + "bluetooth/bidi/characteristic/writeValueWithoutResponse/characteristic-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -561141,20 +561327,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-characteristic-is-removed.https.window.js": [ - "b88246aae834f0ea54e72ec9a292c6b93eafb3cc", + "b45d904fb96ad81d36d210ce40b8ad446b964753", [ - "bluetooth/legacy/characteristic/writeValueWithoutResponse/gen-characteristic-is-removed.https.window.html", + "bluetooth/bidi/characteristic/writeValueWithoutResponse/gen-characteristic-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -561171,20 +561365,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "service-is-removed.https.window.js": [ - "feb711c64ea6b46d3401d3888de8d757c9a567b2", + "3fcad12a8daaedbde45dce53aa09e43c06cb9d02", [ - "bluetooth/legacy/characteristic/writeValueWithoutResponse/service-is-removed.https.window.html", + "bluetooth/bidi/characteristic/writeValueWithoutResponse/service-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -561197,34 +561399,16 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "write-succeeds.https.window.js": [ - "0dcf8ad0b196adde1941e0c4e31b36ba08741384", - [ - "bluetooth/legacy/characteristic/writeValueWithoutResponse/write-succeeds.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] @@ -561232,45 +561416,15 @@ }, "descriptor": { "readValue": { - "detachedIframe.https.window.js": [ - "47765a13159b7facc753e7951b94377abc8b54b9", - [ - "bluetooth/legacy/descriptor/readValue/detachedIframe.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], "gen-service-is-removed.https.window.js": [ - "d6c73ba60e6a1e5d8d10c80796729baf039ee702", + "37dab7fff24ace985a957079b207a68e752ab838", [ - "bluetooth/legacy/descriptor/readValue/gen-service-is-removed.https.window.html", + "bluetooth/bidi/descriptor/readValue/gen-service-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -561287,20 +561441,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "read-succeeds.https.window.js": [ - "d81db2f8c0ddb54042a6178677df309a7c6248ef", + "a1b5ac5e6ee8708cae07d08efd3b69a4dd56f3a8", [ - "bluetooth/legacy/descriptor/readValue/read-succeeds.https.window.html", + "bluetooth/bidi/descriptor/readValue/read-succeeds.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -561313,78 +561475,30 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] }, "writeValue": { - "buffer-is-detached.https.window.js": [ - "454b23ea4c2c44e4f011b77520c69dac5d469fb2", - [ - "bluetooth/legacy/descriptor/writeValue/buffer-is-detached.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "detachedIframe.https.window.js": [ - "aa143ca8e53e993273a6887b67566ff3265992d4", - [ - "bluetooth/legacy/descriptor/writeValue/detachedIframe.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], "gen-service-is-removed.https.window.js": [ - "c7f6d6efe3e3a19f5c954a3ca83aa87f0386c98c", + "9379ceff56f60c8f83b8e15ceb765b7e463b7e36", [ - "bluetooth/legacy/descriptor/writeValue/gen-service-is-removed.https.window.html", + "bluetooth/bidi/descriptor/writeValue/gen-service-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -561401,8 +561515,16 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] @@ -561411,14 +561533,14 @@ "device": { "forget": { "connect-after-forget.https.window.js": [ - "0b15b4d060d9ae8e4795b2a4fbb684db53218f69", + "948df9d25032b53bebd70adac0502c8ac370deb5", [ - "bluetooth/legacy/device/forget/connect-after-forget.https.window.html", + "bluetooth/bidi/device/forget/connect-after-forget.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -561431,50 +561553,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "detachedIframe.https.window.js": [ - "f4803542fbb30c2aff401fd0951271e5e39bc999", - [ - "bluetooth/legacy/device/forget/detachedIframe.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "getDevices.https.window.js": [ - "0594a6f03bf377ea19c5856298c03ed136973656", + "1f7f49371d47ea0019d0f263a4b82ade648192d5", [ - "bluetooth/legacy/device/forget/getDevices.https.window.html", + "bluetooth/bidi/device/forget/getDevices.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -561487,22 +561587,30 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] }, "gattserverdisconnected-event": { "disconnected.https.window.js": [ - "43a11a88cbf655ee4aab6ac70215ae3fb5f9a541", + "9d0ce82fdfb00157da9e9ca567ac7295c3b82ffb", [ - "bluetooth/legacy/device/gattserverdisconnected-event/disconnected.https.window.html", + "bluetooth/bidi/device/gattserverdisconnected-event/disconnected.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -561515,20 +561623,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "disconnected_gc.https.window.js": [ - "0cf4973e2167766ece047cbcac8034d089482acc", + "3427cd1d1e6eb2a5fdfbd96b3fd123c4554d7aaa", [ - "bluetooth/legacy/device/gattserverdisconnected-event/disconnected_gc.https.window.html", + "bluetooth/bidi/device/gattserverdisconnected-event/disconnected_gc.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -561545,20 +561661,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "one-event-per-disconnection.https.window.js": [ - "ab273adbc88bcd4d03c9bf5309a34cb30cf3246a", + "178648cdd5dc734205a088001d959bffb4749f44", [ - "bluetooth/legacy/device/gattserverdisconnected-event/one-event-per-disconnection.https.window.html", + "bluetooth/bidi/device/gattserverdisconnected-event/one-event-per-disconnection.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -561571,20 +561695,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "reconnect-during-disconnected-event.https.window.js": [ - "bdaf47c66198ce70f9a1951358f27b38dcfac4ca", + "9399a6c0ef33d83547e60001602e2483de22c641", [ - "bluetooth/legacy/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.window.html", + "bluetooth/bidi/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -561597,376 +561729,31 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ] - }, - "watchAdvertisements": { - "abort-before-watchAdvertisements.https.window.js": [ - "e1ac1fb136902244055e88f859d9d536bc58951c", - [ - "bluetooth/legacy/device/watchAdvertisements/abort-before-watchAdvertisements.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "abort-pending-operation.https.window.js": [ - "c1022ff4a9c1b8c57703a8ce5b8bdfa309b7d985", - [ - "bluetooth/legacy/device/watchAdvertisements/abort-pending-operation.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "abort-signal-stops-events.https.window.js": [ - "21b6883fee433a2a04c689ae82c9a8a30aed5c91", - [ - "bluetooth/legacy/device/watchAdvertisements/abort-signal-stops-events.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "abort-subsequent-watchAdvertisements-call-stops-events.https.window.js": [ - "a5da75012bab1991a762c48f9a76f32906f2db11", - [ - "bluetooth/legacy/device/watchAdvertisements/abort-subsequent-watchAdvertisements-call-stops-events.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "advertisementreceived-event-fired.https.window.js": [ - "fff18bc47eed8434e3b4ff46cd157b5a5e41ea1a", - [ - "bluetooth/legacy/device/watchAdvertisements/advertisementreceived-event-fired.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "blocklisted-manufacturer-data-filtered-from-event.https.window.js": [ - "c73e3dbad1b20dd26a02d6ca4326a53b3f668a92", - [ - "bluetooth/legacy/device/watchAdvertisements/blocklisted-manufacturer-data-filtered-from-event.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "concurrent-watchAdvertisements-calls.https.window.js": [ - "cb6532be68ece2a04f5d70106f7b58869906b086", - [ - "bluetooth/legacy/device/watchAdvertisements/concurrent-watchAdvertisements-calls.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "detachedIframe.https.window.js": [ - "202a8dab7da3efdefc01089695f402cff7bb3309", - [ - "bluetooth/legacy/device/watchAdvertisements/detachedIframe.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "service-and-manufacturer-data-filtered-from-event.https.window.js": [ - "f6b93ffb4bfa0f90310f56b1b6d946acdcceb8f2", - [ - "bluetooth/legacy/device/watchAdvertisements/service-and-manufacturer-data-filtered-from-event.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "subsequent-watchAdvertisements-call.https.window.js": [ - "797bfd1fa0b3ff4375d654895c21ca0d248982ad", - [ - "bluetooth/legacy/device/watchAdvertisements/subsequent-watchAdvertisements-call.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "watching-two-devices-abort-one-watchAdvertisements.https.window.js": [ - "8be02adb349a2010fea7e8f6424bdcb3d1788d93", - [ - "bluetooth/legacy/device/watchAdvertisements/watching-two-devices-abort-one-watchAdvertisements.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "watching-two-devices.https.window.js": [ - "32ec89a1eb0eaecf8b95f7c7b8026ad402438fd4", - [ - "bluetooth/legacy/device/watchAdvertisements/watching-two-devices.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] } }, - "getAvailability": { - "reject_opaque_origin.https.html": [ - "8745fc9551bba2148632563b5f125b21e2d1427c", - [ - null, - {} - ] - ], - "sandboxed_iframe.https.window.js": [ - "0fc520e4aec3648164690de5061b4ce05a0d6c67", - [ - "bluetooth/legacy/getAvailability/sandboxed_iframe.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ] - }, "getDevices": { "granted-devices-with-services.https.window.js": [ - "3228543617decdc9a213883d650ba33ffd9b90c1", + "2d9b546c2072bd4b65e92e07f557e477409ee851", [ - "bluetooth/legacy/getDevices/granted-devices-with-services.https.window.html", + "bluetooth/bidi/getDevices/granted-devices-with-services.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -561979,20 +561766,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "no-granted-devices.https.window.js": [ - "304aa3820d5b80bff80928feabc982b8b156b591", + "642c82ce36c69e449f8db5780e6a642cfc29a9d0", [ - "bluetooth/legacy/getDevices/no-granted-devices.https.window.html", + "bluetooth/bidi/getDevices/no-granted-devices.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562005,8 +561800,16 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], @@ -562018,14 +561821,14 @@ ] ], "returns-same-bluetooth-device-object.https.window.js": [ - "81c0f6a97e947c9a469ca74a180d595f493561e2", + "954d70d0eb9642ad47452b31cd7b0603c1aa235a", [ - "bluetooth/legacy/getDevices/returns-same-bluetooth-device-object.https.window.html", + "bluetooth/bidi/getDevices/returns-same-bluetooth-device-object.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562038,66 +561841,51 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "sandboxed_iframe.https.window.js": [ - "b9b0ac93c27a054433d9853b3dced0fa1e6a9d13", - [ - "bluetooth/legacy/getDevices/sandboxed_iframe.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] }, "idl": { "idl-Bluetooth.https.window.js": [ - "2b40eaff4900f5385b19d27115626fafe386a1cb", + "fda58b21ae5f4ab4bc8ecb3ab33d43104d01a648", [ - "bluetooth/legacy/idl/idl-Bluetooth.https.window.html", + "bluetooth/bidi/idl/idl-Bluetooth.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", "/resources/testdriver-vendor.js" ] + ], + "testdriver_features": [ + "bidi" ] } ] ], "idl-BluetoothDevice.https.window.js": [ - "c715926df3be6615f4b34aa3383b057347325f25", + "4fb7ff67f600719e60299a8478ecd1b54ac2dd03", [ - "bluetooth/legacy/idl/idl-BluetoothDevice.https.window.html", + "bluetooth/bidi/idl/idl-BluetoothDevice.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562110,69 +561898,86 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "idl-BluetoothUUID.window.js": [ - "cf9c14bb2c5c80d2e693401eb916423f9ca33b98", + "145b7b10421d14a5e050044485189ce6d58daa8d", [ - "bluetooth/legacy/idl/idl-BluetoothUUID.window.html", + "bluetooth/bidi/idl/idl-BluetoothUUID.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", "/resources/testdriver-vendor.js" ] + ], + "testdriver_features": [ + "bidi" ] } ] ], "idl-NavigatorBluetooth.https.window.js": [ - "a087d308962074acb52057f229ff4c31bb6f8f42", + "ba92137e494e5fcb03ece14ac122f635c21ac314", [ - "bluetooth/legacy/idl/idl-NavigatorBluetooth.https.window.html", + "bluetooth/bidi/idl/idl-NavigatorBluetooth.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", "/resources/testdriver-vendor.js" ] + ], + "testdriver_features": [ + "bidi" ] } ] ], "idl-NavigatorBluetooth.window.js": [ - "db6bf89f9f3396243a2acfdd68cbdb0cb09d6901", + "8a918d478ecc6e38dc5f0af01c9a903219780ff2", [ - "bluetooth/legacy/idl/idl-NavigatorBluetooth.window.html", + "bluetooth/bidi/idl/idl-NavigatorBluetooth.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", "/resources/testdriver-vendor.js" ] + ], + "testdriver_features": [ + "bidi" ] } ] ], "idlharness.tentative.https.window.js": [ - "a632060e20aefd43a2c6b976e891062ad0c2f7b5", + "1a6113e89947dca9ef09e5a5ecb8d4af09dc61eb", [ - "bluetooth/legacy/idl/idlharness.tentative.https.window.html", + "bluetooth/bidi/idl/idlharness.tentative.https.window.html", { "script_metadata": [ [ @@ -562195,15 +562000,15 @@ }, "requestDevice": { "acceptAllDevices": { - "optional-services-missing.https.window.js": [ - "5226a645a868df080da1a71dcb1305fbbb59158a", + "device-with-empty-name.https.window.js": [ + "3a1bb1aad0881012872d28761b57999e03e4b33c", [ - "bluetooth/legacy/requestDevice/acceptAllDevices/optional-services-missing.https.window.html", + "bluetooth/bidi/requestDevice/acceptAllDevices/device-with-empty-name.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562216,20 +562021,96 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" + } + ] + ], + "device-with-name.https.window.js": [ + "a1d238e3904a1c22e4dac48ad47ed33065a16cc3", + [ + "bluetooth/bidi/requestDevice/acceptAllDevices/device-with-name.https.window.html", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js?feature=bidi" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/bluetooth/resources/bluetooth-test.js" + ], + [ + "script", + "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" + ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" + } + ] + ], + "optional-services-missing.https.window.js": [ + "dc2c17cab3764bef75dbb79567f8c76a1db40c94", + [ + "bluetooth/bidi/requestDevice/acceptAllDevices/optional-services-missing.https.window.html", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js?feature=bidi" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/bluetooth/resources/bluetooth-test.js" + ], + [ + "script", + "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" + ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "optional-services-present.https.window.js": [ - "7c200d03f181e7f4593dabb01f30c485e6cbea27", + "87bf1eed5f58248bccfb537f5b1c6c8f964cc980", [ - "bluetooth/legacy/requestDevice/acceptAllDevices/optional-services-present.https.window.html", + "bluetooth/bidi/requestDevice/acceptAllDevices/optional-services-present.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562242,21 +562123,29 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] }, "blocklisted-manufacturer-data-in-filter.https.window.js": [ - "2dae7f4cc654ab0bb3b6093826bf3e4d643755a1", + "e0f5aeeaf1d805b69c1b4c14da7409cdd4c1da88", [ - "bluetooth/legacy/requestDevice/blocklisted-manufacturer-data-in-filter.https.window.html", + "bluetooth/bidi/requestDevice/blocklisted-manufacturer-data-in-filter.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562269,20 +562158,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "blocklisted-service-in-filter.https.window.js": [ - "80eaf14447fba398897bc4ee1530a8afe3de6d5d", + "3cc2e0d2ca75e11e66e456e44f1031c1ef36a679", [ - "bluetooth/legacy/requestDevice/blocklisted-service-in-filter.https.window.html", + "bluetooth/bidi/requestDevice/blocklisted-service-in-filter.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562295,20 +562192,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "blocklisted-service-in-optionalServices.https.window.js": [ - "4c01974e557b2f359d12e27e68d0949a22111994", + "b19fcd64fdc2544f0b9e59a93d5faabd219a048c", [ - "bluetooth/legacy/requestDevice/blocklisted-service-in-optionalServices.https.window.html", + "bluetooth/bidi/requestDevice/blocklisted-service-in-optionalServices.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562321,21 +562226,29 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "canonicalizeFilter": { "data-prefix-and-mask-size.https.window.js": [ - "fa2645093a6adec4e21da973df84f419a45fca8d", + "dc32e7708b282337cde00a3155b09cb349adc095", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/data-prefix-and-mask-size.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/data-prefix-and-mask-size.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562348,20 +562261,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "dataPrefix-buffer-is-detached.https.window.js": [ - "f4c1a9f6f9b8a3898b8d2fde3136864a9529d165", + "48e8777dff724993fcd04750b4ae0c4fc1e7e868", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/dataPrefix-buffer-is-detached.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/dataPrefix-buffer-is-detached.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562374,20 +562295,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "device-name-longer-than-29-bytes.https.window.js": [ - "20ed383d397046ece557f6698cf29fe15a874e7c", + "11c476d21c5847ba233b882ceb6ac033de38d527", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/device-name-longer-than-29-bytes.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/device-name-longer-than-29-bytes.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562400,20 +562329,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "empty-dataPrefix.https.window.js": [ - "75e12219ccdffa3525342ea4f8fc00384c0ac049", + "8444ef7b23ef7b111a6156b9e1f5485bd8c3efcd", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/empty-dataPrefix.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/empty-dataPrefix.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562426,20 +562363,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "empty-exclusion-filter.https.window.js": [ - "0d4b196cc7d22bb574d7baffa1af68251b299245", + "29773f8773719f79b12ff34105ccedb455a62c56", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/empty-exclusion-filter.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/empty-exclusion-filter.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562452,20 +562397,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "empty-exclusion-filters-member.https.window.js": [ - "d380fa0268efff3f24a351f69b82066614eda7f9", + "82805fb87dfebb7d78b799fff79e5286223356f8", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/empty-exclusion-filters-member.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/empty-exclusion-filters-member.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562478,20 +562431,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "empty-filter.https.window.js": [ - "bfe94f2721d9542bd75cb46b4557fc40db41443d", + "357adce59aeb3117e549d3c302fdc3125e51cbe0", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/empty-filter.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/empty-filter.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562504,20 +562465,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "empty-filters-member.https.window.js": [ - "3265e54fd880bdf900d73332c74499a81f923015", + "68da89855cacf5651798e64f06f7b9286dbda9ca", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/empty-filters-member.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/empty-filters-member.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562530,20 +562499,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "empty-manufacturerData-member.https.window.js": [ - "0996137f517d8ef167e86efcec11d5952a52b187", + "dd57af79b0b5418a5126738051ea123c24ce14d5", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/empty-manufacturerData-member.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/empty-manufacturerData-member.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562556,20 +562533,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "empty-namePrefix.https.window.js": [ - "8ce2e649676ee0161c00c61449ed9e9d8ecceca5", + "f1ae056fcdeb15e08348a6f8d76f15c41fa73470", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/empty-namePrefix.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/empty-namePrefix.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562582,20 +562567,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "empty-services-member.https.window.js": [ - "a24611631d360d6ec6ef65648f25d41f7ba916f2", + "77fdbaadda52d76d3b683f277c51a76577d0e2cb", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/empty-services-member.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/empty-services-member.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562608,20 +562601,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "exclusion-filters-require-filters.https.window.js": [ - "d7db260deeb6500cc8eb4809bf7368a0dc59936b", + "7a5c758b5573acc42e50f81de9bf82bf2667e280", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/exclusion-filters-require-filters.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/exclusion-filters-require-filters.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562634,20 +562635,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "filters-xor-acceptAllDevices.https.window.js": [ - "a6c48f2962a321ccf08c8ad9e3d9bbea2d014f7c", + "53bb6d7b328232b603cb21369d5ab086a4a519fc", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/filters-xor-acceptAllDevices.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/filters-xor-acceptAllDevices.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562660,20 +562669,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "invalid-companyIdentifier.https.window.js": [ - "18cdbb4b4a85fa9fc19146d72e5494161b7dffe6", + "36fa6511bb48f03feebffbac12a361f862847eab", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/invalid-companyIdentifier.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/invalid-companyIdentifier.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562686,20 +562703,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "mask-buffer-is-detached.https.window.js": [ - "ae3f712db58a9e991fd5660679f8d453c2ab33a2", + "0fb44d5e9690d0c3f434e0083a0fdf8a4d260918", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/mask-buffer-is-detached.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/mask-buffer-is-detached.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562712,20 +562737,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "max-length-exceeded-name-unicode.https.window.js": [ - "3458c92b65efa8314a2af6ab00c7084d469a103b", + "b76d35762abca2f063b77e1a35c0f819e43b9f70", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/max-length-exceeded-name-unicode.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/max-length-exceeded-name-unicode.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562738,20 +562771,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "max-length-exceeded-name.https.window.js": [ - "f14f78fe7d7ecc8d68ecbd1175c1719c311c0483", + "cffabedfebeaa5dcf0729092beb818f6c24c29ec", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/max-length-exceeded-name.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/max-length-exceeded-name.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562764,20 +562805,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "max-length-exceeded-namePrefix-unicode.https.window.js": [ - "b2e6668e4b98a9a0e8a23803327a890f86e593ca", + "e341cda5ba3a24643b64c08c65a4c9d7b6de1ab3", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix-unicode.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix-unicode.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562790,20 +562839,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "max-length-exceeded-namePrefix.https.window.js": [ - "5d27629eaa14744e6bb436472b734d3f80cd0a0f", + "f29dbbda2fdab8951c0cfe5a6bec86c01e208eae", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562816,20 +562873,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "max-length-name-unicode.https.window.js": [ - "6a3cf5bead0eefd561064785f3289797cb0a01e3", + "7190cb70cc5770d1699cf57d2d71d7454039d4ad", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/max-length-name-unicode.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/max-length-name-unicode.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562842,20 +562907,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "max-length-name.https.window.js": [ - "7ede93ce72166a177fa8f1db693bd49c1f7ccc2d", + "0bcd7022e87fc36b0c573750175b5127d91e25ad", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/max-length-name.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/max-length-name.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562868,20 +562941,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "max-length-namePrefix-unicode.https.window.js": [ - "2061e9863b4026024a4170fb9794f42692cba0f7", + "70dd71f504e1fe1f0ee44d4c84c7f9a53dc55f62", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/max-length-namePrefix-unicode.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/max-length-namePrefix-unicode.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562894,20 +562975,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "max-length-namePrefix.https.window.js": [ - "f922bb2f0d0579ed5db7012e58d961fccd9dd7c9", + "d3f36d7f9493bb497575efb30f7c0fde35de79e4", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/max-length-namePrefix.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/max-length-namePrefix.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562920,20 +563009,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "no-arguments.https.window.js": [ - "075a97f1a9478a23dc693c169bea9cef9433f8ed", + "c625b9c2ce1026d1618a7170d91c94f058ed622c", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/no-arguments.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/no-arguments.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562946,20 +563043,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "same-company-identifier.https.window.js": [ - "41f851adc5ee046eab4a98be19ff8f4ebea5da27", + "f9b37cec630fb9fae9ff25011bf9e24a6d63a06f", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/same-company-identifier.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/same-company-identifier.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562972,20 +563077,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "unicode-valid-length-name-name.https.window.js": [ - "cd10288ddb72f2cb2989bdf96f640853d29b61ee", + "8ba6e929255c1379daa7c85563dc704654ee3c5b", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/unicode-valid-length-name-name.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/unicode-valid-length-name-name.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -562998,20 +563111,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "unicode-valid-length-name-namePrefix.https.window.js": [ - "494f324ee2480e40d22fe3dc05030955a2f84e83", + "218c76427731c82a78fc665e4548a55405026765", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/unicode-valid-length-name-namePrefix.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/unicode-valid-length-name-namePrefix.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563024,20 +563145,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "wrong-service-in-optionalServices-member.https.window.js": [ - "bfba220f4799db5ac19700df083cd8896d1fa356", + "c86935263d655e39a9491670c3e346f9105d5f52", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/wrong-service-in-optionalServices-member.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/wrong-service-in-optionalServices-member.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563050,20 +563179,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "wrong-service-in-services-member.https.window.js": [ - "352437d0e5a48f56572c78296ef65b7fcc73dc32", + "0c3fe22ed5f86b443cfe38e0c5a1896fe70ecbb7", [ - "bluetooth/legacy/requestDevice/canonicalizeFilter/wrong-service-in-services-member.https.window.html", + "bluetooth/bidi/requestDevice/canonicalizeFilter/wrong-service-in-services-member.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563076,21 +563213,29 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] }, "cross-origin-iframe.sub.https.window.js": [ - "d802a862791e98e5a8694e34bd4fbaf554b9f9b5", + "6fbcfa9b8966e80e9acc7aaf8e1971919853f723", [ - "bluetooth/legacy/requestDevice/cross-origin-iframe.sub.https.window.html", + "bluetooth/bidi/requestDevice/cross-origin-iframe.sub.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563103,20 +563248,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "discovery-succeeds.https.window.js": [ - "4941d185cad0508069184bc19c0ad81871e2a301", + "d49de8b42621951ffda7a6c74b5d125965b26681", [ - "bluetooth/legacy/requestDevice/discovery-succeeds.https.window.html", + "bluetooth/bidi/requestDevice/discovery-succeeds.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563129,20 +563282,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "doesnt-consume-user-gesture.https.window.js": [ - "9c742733e1d793d9becda42d8afd245f7c9b633d", + "9ccccd1f3f3ded1d9e54edb607d8d59c2bbfa738", [ - "bluetooth/legacy/requestDevice/doesnt-consume-user-gesture.https.window.html", + "bluetooth/bidi/requestDevice/doesnt-consume-user-gesture.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563155,20 +563316,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "filter-matches.https.window.js": [ - "1a0f52ac309b1ff116297ae86c27fc3008060cdb", + "c651faf9c2028cdf77ffaa1667a2f39fea5b2386", [ - "bluetooth/legacy/requestDevice/filter-matches.https.window.html", + "bluetooth/bidi/requestDevice/filter-matches.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563181,72 +563350,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "le-not-supported.https.window.js": [ - "c961ab4492c42e0d62c599580b07e87c3f336040", - [ - "bluetooth/legacy/requestDevice/le-not-supported.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "manufacturer-data-filter-matches.https.window.js": [ - "c4c0e805328a5aa52ff21025e0ad56e0517cce7e", - [ - "bluetooth/legacy/requestDevice/manufacturer-data-filter-matches.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "name-empty-device-from-name-empty-filter.https.window.js": [ - "2ff22cb70200809e5cbaf7dc8ac63bbf4f2f3c92", + "01a1ab696fa58371892a92c07c9fac800ff89f1a", [ - "bluetooth/legacy/requestDevice/name-empty-device-from-name-empty-filter.https.window.html", + "bluetooth/bidi/requestDevice/name-empty-device-from-name-empty-filter.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563259,20 +563384,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "not-processing-user-gesture.https.window.js": [ - "a063b61163019336cfe3e776ed14b8dc54aea227", + "342201388274d83c0accacf06866ae20031b771b", [ - "bluetooth/legacy/requestDevice/not-processing-user-gesture.https.window.html", + "bluetooth/bidi/requestDevice/not-processing-user-gesture.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563285,8 +563418,50 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" + } + ] + ], + "radio-not-present.https.window.js": [ + "284d3ec2f94b8310064a929df0c9233707b9dbfb", + [ + "bluetooth/bidi/requestDevice/radio-not-present.https.window.html", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js?feature=bidi" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/bluetooth/resources/bluetooth-test.js" + ], + [ + "script", + "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" + ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], @@ -563297,67 +563472,15 @@ {} ] ], - "request-from-iframe.https.window.js": [ - "d3f3cf897ff6f4eb97253f63843db888824a54fa", - [ - "bluetooth/legacy/requestDevice/request-from-iframe.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "request-from-sandboxed-iframe.https.window.js": [ - "2101cf0d6b747836f60d04c07774e3a100efed1f", - [ - "bluetooth/legacy/requestDevice/request-from-sandboxed-iframe.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], "same-device.https.window.js": [ - "41a42cf4c8fd70c10c096c50733d9a517b77f54b", + "2884f66bddfbcda748b7c6ec4340d5438ee2faa8", [ - "bluetooth/legacy/requestDevice/same-device.https.window.html", + "bluetooth/bidi/requestDevice/same-device.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563370,46 +563493,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "sandboxed_iframe.https.window.js": [ - "e9192a9305b14763d3cabe7c6ddfb3b38f1015da", - [ - "bluetooth/legacy/requestDevice/sandboxed_iframe.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "single-filter-single-service.https.window.js": [ - "67afad0b930c7930614f3ed17a0db78e1aa20d69", + "22390979d9033aabec9ed8ffb63bbb7b7bd47830", [ - "bluetooth/legacy/requestDevice/single-filter-single-service.https.window.html", + "bluetooth/bidi/requestDevice/single-filter-single-service.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563422,43 +563527,16 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ] - }, - "requestLEScan": { - "reject_opaque_origin.https.html": [ - "272c5aa760cf7f5bedc24e2d652d68164ab353d3", - [ - null, - {} - ] - ], - "sandboxed_iframe.https.window.js": [ - "32d1e74b778d9932b5104824b69cf21cf6a3ff6b", - [ - "bluetooth/legacy/requestLEScan/sandboxed_iframe.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] @@ -563466,14 +563544,14 @@ "server": { "connect": { "connection-succeeds.https.window.js": [ - "90b62b9265b1c337f05993f7169c9bd33cf6e962", + "d99c7f504e142b4116e6fbfae1f8b39d330470e1", [ - "bluetooth/legacy/server/connect/connection-succeeds.https.window.html", + "bluetooth/bidi/server/connect/connection-succeeds.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563486,50 +563564,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "detachedIframe.https.window.js": [ - "2332cef7070baddc84573120edb0f0dc1fc83efa", - [ - "bluetooth/legacy/server/connect/detachedIframe.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "garbage-collection-ran-during-success.https.window.js": [ - "2d2211dec30f87a988acf24fc4a283ed174405f8", + "e1b42d91a998f95b28796a889bbae3dac4e06be0", [ - "bluetooth/legacy/server/connect/garbage-collection-ran-during-success.https.window.html", + "bluetooth/bidi/server/connect/garbage-collection-ran-during-success.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563546,20 +563602,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "get-same-gatt-server.https.window.js": [ - "59d7243a65382cd3509f425bcf6db9087c49c74f", + "c4b6755cd6249c48fe6aa35f5af0aff14435c16b", [ - "bluetooth/legacy/server/connect/get-same-gatt-server.https.window.html", + "bluetooth/bidi/server/connect/get-same-gatt-server.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563572,21 +563636,29 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] }, "device-same-object.https.window.js": [ - "f9a66d9b6915cf9b093ffafb6cb7fe11b3febf88", + "795d4e27c8e9eddc6e09de9ceefadbd377f28ad0", [ - "bluetooth/legacy/server/device-same-object.https.window.html", + "bluetooth/bidi/server/device-same-object.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563599,21 +563671,29 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "disconnect": { "connect-disconnect-twice.https.window.js": [ - "5d9908df4c8ac20d5fbea9966ff56b13a3b19de9", + "a7f9a25b7f582b91c8679193da14e17b3eafae78", [ - "bluetooth/legacy/server/disconnect/connect-disconnect-twice.https.window.html", + "bluetooth/bidi/server/disconnect/connect-disconnect-twice.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563626,80 +563706,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "detach-gc.https.window.js": [ - "b934b3797325a255b77e5cf39011ab2803bbb90b", - [ - "bluetooth/legacy/server/disconnect/detach-gc.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "detachedIframe.https.window.js": [ - "04e0ca0117fcc2974e02bde54802ee8d279e234a", - [ - "bluetooth/legacy/server/disconnect/detachedIframe.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "disconnect-twice-in-a-row.https.window.js": [ - "acca9796d5751d2e5c3fa73e2cd32bcd8ba31bda", + "2d578da0ba36076bfa05dc5dba7ca3c9e22b57ca", [ - "bluetooth/legacy/server/disconnect/disconnect-twice-in-a-row.https.window.html", + "bluetooth/bidi/server/disconnect/disconnect-twice-in-a-row.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563712,52 +563740,30 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "gc-detach.https.window.js": [ - "1c062a775903bf0396a33592231851e2da2b7660", - [ - "bluetooth/legacy/server/disconnect/gc-detach.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] }, "getPrimaryService": { "gen-disconnect-called-before.https.window.js": [ - "631545a38542689762605f53af4ed7a7753a9134", + "c0c420f9e4ab1b9ff93d13f430d309814c0361a3", [ - "bluetooth/legacy/server/getPrimaryService/gen-disconnect-called-before.https.window.html", + "bluetooth/bidi/server/getPrimaryService/gen-disconnect-called-before.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563774,20 +563780,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-disconnect-called-during-error.https.window.js": [ - "bcf19665d5fcf2cd720717f3f602f9d9795a6a33", + "2d7a8d20952ca98507bc032a8ecdcae8df09e9c8", [ - "bluetooth/legacy/server/getPrimaryService/gen-disconnect-called-during-error.https.window.html", + "bluetooth/bidi/server/getPrimaryService/gen-disconnect-called-during-error.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563804,20 +563818,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-disconnect-called-during-success.https.window.js": [ - "0d2fc1044a5bbb4c205741db61a3946d5b37c724", + "ae726b21eaea0fff2a0c023ab16e7084f394a838", [ - "bluetooth/legacy/server/getPrimaryService/gen-disconnect-called-during-success.https.window.html", + "bluetooth/bidi/server/getPrimaryService/gen-disconnect-called-during-success.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563834,50 +563856,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "gen-disconnect-discovery-timeout.https.window.js": [ - "03b0c9d0f382c3462beed1ee282321a7d91d94f1", - [ - "bluetooth/legacy/server/getPrimaryService/gen-disconnect-discovery-timeout.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-disconnect-invalidates-objects.https.window.js": [ - "56468b24eabf2d99a3f4a10eef7cdbc0c2594ebc", + "c7d9927fc3525ffda13be18cd2305cc5587a10ae", [ - "bluetooth/legacy/server/getPrimaryService/gen-disconnect-invalidates-objects.https.window.html", + "bluetooth/bidi/server/getPrimaryService/gen-disconnect-invalidates-objects.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563894,20 +563894,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-disconnected-device.https.window.js": [ - "741b2db5ee82e8f268fca71143fd419bda0af87b", + "396822c0bf27574c180fa5bb764d038e335c9405", [ - "bluetooth/legacy/server/getPrimaryService/gen-disconnected-device.https.window.html", + "bluetooth/bidi/server/getPrimaryService/gen-disconnected-device.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -563924,80 +563932,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "gen-discovery-complete-no-permission-absent-service.https.window.js": [ - "e2f5c87630559a7a5fef08bf37b68e84d3356648", - [ - "bluetooth/legacy/server/getPrimaryService/gen-discovery-complete-no-permission-absent-service.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "gen-discovery-complete-service-not-found.https.window.js": [ - "8e9166b41a140832ccc121b6ec63415fccb5bbca", - [ - "bluetooth/legacy/server/getPrimaryService/gen-discovery-complete-service-not-found.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-garbage-collection-ran-during-error.https.window.js": [ - "df182fe8fff6b3001d355fe4c70b67b9b64bdc56", + "13d53492eb6f3f6c3a8fb3529c1f311be256b696", [ - "bluetooth/legacy/server/getPrimaryService/gen-garbage-collection-ran-during-error.https.window.html", + "bluetooth/bidi/server/getPrimaryService/gen-garbage-collection-ran-during-error.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564014,20 +563970,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-garbage-collection-ran-during-success.https.window.js": [ - "8e278af224234f1ab005e52cfff0fafcfe729537", + "00c2708f1eb176d2b05433a402b4a539af7867af", [ - "bluetooth/legacy/server/getPrimaryService/gen-garbage-collection-ran-during-success.https.window.html", + "bluetooth/bidi/server/getPrimaryService/gen-garbage-collection-ran-during-success.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564044,20 +564008,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-get-different-service-after-reconnection.https.window.js": [ - "d4557f67535001a64a0b7347e336f95db547fe6c", + "08eefec5990618e05805f067b05ce0cbf1172223", [ - "bluetooth/legacy/server/getPrimaryService/gen-get-different-service-after-reconnection.https.window.html", + "bluetooth/bidi/server/getPrimaryService/gen-get-different-service-after-reconnection.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564074,20 +564046,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-get-same-object.https.window.js": [ - "b43cefb567f01d0b7cdb8b53bc3da40e785fe007", + "99fd434f1da46dccfac73baf22b8ab374f81b7e4", [ - "bluetooth/legacy/server/getPrimaryService/gen-get-same-object.https.window.html", + "bluetooth/bidi/server/getPrimaryService/gen-get-same-object.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564104,20 +564084,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-invalid-service-name.https.window.js": [ - "cf4ab6c665d6a9605507b01e1e0c3e1a807376ba", + "855133914b0da6fb244f796f79db6eee32cc701d", [ - "bluetooth/legacy/server/getPrimaryService/gen-invalid-service-name.https.window.html", + "bluetooth/bidi/server/getPrimaryService/gen-invalid-service-name.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564134,110 +564122,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "gen-no-permission-absent-service.https.window.js": [ - "3466ded4f9e910d30c3f5a55dd3e1172addeb3d8", - [ - "bluetooth/legacy/server/getPrimaryService/gen-no-permission-absent-service.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "gen-no-permission-for-any-service.https.window.js": [ - "6576ef20a3de120529c4bf2997b13b40d7ce3f26", - [ - "bluetooth/legacy/server/getPrimaryService/gen-no-permission-for-any-service.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "gen-no-permission-present-service.https.window.js": [ - "3d0b460bc33b9e246dfa59d30248edefd7d13d6a", - [ - "bluetooth/legacy/server/getPrimaryService/gen-no-permission-present-service.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-service-not-found.https.window.js": [ - "6e0d2c446ba90199f1bab1158e6147ed632deda6", + "2a6f90c04178b8b1b3ff3e8f772e8d3082d363ae", [ - "bluetooth/legacy/server/getPrimaryService/gen-service-not-found.https.window.html", + "bluetooth/bidi/server/getPrimaryService/gen-service-not-found.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564254,20 +564160,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "service-found.https.window.js": [ - "b8a930d10c79b345f7a0c6c6ec9d89b095dccec4", + "1a26c10c9db21f13d932ad80404dcd2e4eda27f6", [ - "bluetooth/legacy/server/getPrimaryService/service-found.https.window.html", + "bluetooth/bidi/server/getPrimaryService/service-found.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564280,48 +564194,30 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "two-iframes-from-same-origin.https.window.js": [ - "b7f23a14913914d3e3bc2f57b98b2b1cc91a185c", - [ - "bluetooth/legacy/server/getPrimaryService/two-iframes-from-same-origin.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] }, "getPrimaryServices": { "blocklisted-services-with-uuid.https.window.js": [ - "ccc913e5bfdc7df6efe6627dc97899e12f981660", + "e5308972d6bc3a75b2dd84800a40c08e809e992b", [ - "bluetooth/legacy/server/getPrimaryServices/blocklisted-services-with-uuid.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/blocklisted-services-with-uuid.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564334,20 +564230,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "blocklisted-services.https.window.js": [ - "ae6be9099466b725521e54bec72013bcf175762a", + "d84d8b5c34775f44d2a111f2f258cff7e0da698d", [ - "bluetooth/legacy/server/getPrimaryServices/blocklisted-services.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/blocklisted-services.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564360,46 +564264,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "correct-services.https.window.js": [ - "f3d883dd2ef181ca7c7a88999a9620056a42f046", - [ - "bluetooth/legacy/server/getPrimaryServices/correct-services.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-disconnect-called-before-with-uuid.https.window.js": [ - "21b561375dfed914f011a4de18148053087a6c4f", + "eb98c07ea5eacf2097defeb9a8026947aca6e750", [ - "bluetooth/legacy/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564416,20 +564302,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-disconnect-called-before.https.window.js": [ - "8e5fea83ab4e53299ed6f5c78bd5d0322d2cf410", + "8173dc0f1327fb1eae0c1bc2a363a18b0ac99986", [ - "bluetooth/legacy/server/getPrimaryServices/gen-disconnect-called-before.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-disconnect-called-before.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564446,20 +564340,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-disconnect-called-during-error-with-uuid.https.window.js": [ - "5c28716b90bf32e0e25e5e16ac37fc085f50fb9a", + "00c149cf95a54b8aa0a0a2b5752b365da17c4b0d", [ - "bluetooth/legacy/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564476,20 +564378,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-disconnect-called-during-error.https.window.js": [ - "ddc31247911d64f1995cdae41af9da15a11bb890", + "9fb0cede3affc5d38db5ef2e46e03988c9787ffd", [ - "bluetooth/legacy/server/getPrimaryServices/gen-disconnect-called-during-error.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-disconnect-called-during-error.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564506,20 +564416,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-disconnect-called-during-success-with-uuid.https.window.js": [ - "13e3806d313e40ffc1d69503ad9ebb18cf4630ba", + "a18a96dae28a73f52324055eee5a70323f647261", [ - "bluetooth/legacy/server/getPrimaryServices/gen-disconnect-called-during-success-with-uuid.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-disconnect-called-during-success-with-uuid.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564536,20 +564454,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-disconnect-called-during-success.https.window.js": [ - "d6b31936c60a9a17af6a4764ac16b7580b3649a9", + "7c4714c28f1174d0f4e7faef03170f1cceb56979", [ - "bluetooth/legacy/server/getPrimaryServices/gen-disconnect-called-during-success.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-disconnect-called-during-success.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564566,80 +564492,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "gen-disconnect-discovery-timeout-with-uuid.https.window.js": [ - "77f7bc81d99cc2f0b7f72e5a5866d0d89e625dce", - [ - "bluetooth/legacy/server/getPrimaryServices/gen-disconnect-discovery-timeout-with-uuid.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "gen-disconnect-discovery-timeout.https.window.js": [ - "ea55b7b495259c58027ac24be4b918585cb44fed", - [ - "bluetooth/legacy/server/getPrimaryServices/gen-disconnect-discovery-timeout.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-disconnect-invalidates-objects-with-uuid.https.window.js": [ - "8cdb83e3ad7a2fea327c45b67388082c4e58e09e", + "7b1eb36996b527678cc37935073b0e797391fe6a", [ - "bluetooth/legacy/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564656,20 +564530,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-disconnect-invalidates-objects.https.window.js": [ - "9fd536f05161e0582e88ecbf2f5987a92214a4ba", + "df35a63a82c86ab10bfd84e6db269f4ef7802806", [ - "bluetooth/legacy/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564686,20 +564568,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-disconnected-device-with-uuid.https.window.js": [ - "e0393d5e69ca867e09b049576c33efbbc397866d", + "b721eb925eb13b1958ffca5c44d2bd692e1de76d", [ - "bluetooth/legacy/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564716,20 +564606,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-disconnected-device.https.window.js": [ - "87d74c6ab14083fdd6ed32aa74d01e5b1206b53d", + "b7e65d67d67a6e70d5ed2a02e4d909d2fb3fff32", [ - "bluetooth/legacy/server/getPrimaryServices/gen-disconnected-device.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-disconnected-device.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564746,80 +564644,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "gen-discovery-complete-no-permission-absent-service-with-uuid.https.window.js": [ - "6e179dc5d9a373a6a10c17a8083116e464264658", - [ - "bluetooth/legacy/server/getPrimaryServices/gen-discovery-complete-no-permission-absent-service-with-uuid.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "gen-discovery-complete-service-not-found-with-uuid.https.window.js": [ - "66cfb491c078d7ca378cb4418d399a0b33a9d07b", - [ - "bluetooth/legacy/server/getPrimaryServices/gen-discovery-complete-service-not-found-with-uuid.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-garbage-collection-ran-during-error-with-uuid.https.window.js": [ - "a235cf5d189bebdaf2d8e6b04e5796075fb34098", + "ac34280abb2cfbf8f100abd0d5c6370e8d04e9f9", [ - "bluetooth/legacy/server/getPrimaryServices/gen-garbage-collection-ran-during-error-with-uuid.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-garbage-collection-ran-during-error-with-uuid.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564836,20 +564682,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-garbage-collection-ran-during-error.https.window.js": [ - "f174d4aef98dbe1fb3fa148992cab34b8a475263", + "cbf00682e974684884e710f773c3f2ef59d945d4", [ - "bluetooth/legacy/server/getPrimaryServices/gen-garbage-collection-ran-during-error.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-garbage-collection-ran-during-error.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564866,20 +564720,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-garbage-collection-ran-during-success-with-uuid.https.window.js": [ - "cf5dfb246fbd12ef3a4597926cdbf877bae2cc4a", + "700e999b847c6d7113220d8a00abb8890d56f610", [ - "bluetooth/legacy/server/getPrimaryServices/gen-garbage-collection-ran-during-success-with-uuid.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-garbage-collection-ran-during-success-with-uuid.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564896,20 +564758,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-garbage-collection-ran-during-success.https.window.js": [ - "f1c080a9463b79462bab70dbe611ee01ea6880b8", + "335a679702341798faac6e963da02d82b4cf2b68", [ - "bluetooth/legacy/server/getPrimaryServices/gen-garbage-collection-ran-during-success.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-garbage-collection-ran-during-success.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564926,20 +564796,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-get-different-service-after-reconnection-with-uuid.https.window.js": [ - "2e40d580f3399ddccd7b84d60f9ffa87b0fb2d51", + "f9ac30d9c2c2f5a9b6e5e751e760730e3ecfc7a0", [ - "bluetooth/legacy/server/getPrimaryServices/gen-get-different-service-after-reconnection-with-uuid.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-get-different-service-after-reconnection-with-uuid.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564956,20 +564834,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-get-different-service-after-reconnection.https.window.js": [ - "ee1fc971bfa942e4f0c204acb80b055f311dc611", + "1e88218996a0e9efd65ca194b11ff2609d93d0d5", [ - "bluetooth/legacy/server/getPrimaryServices/gen-get-different-service-after-reconnection.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-get-different-service-after-reconnection.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -564986,20 +564872,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-get-same-object-with-uuid.https.window.js": [ - "b589056a23a9e67ad9673713bab2cd2e93c1b8f9", + "731f9cbfb5210b3da9c12f818d582d3a17f8e52e", [ - "bluetooth/legacy/server/getPrimaryServices/gen-get-same-object-with-uuid.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-get-same-object-with-uuid.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -565016,20 +564910,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-get-same-object.https.window.js": [ - "63739add912351f1da86a4cfdcd02d4cfd8567fa", + "16de2a06a0327a067b0e8661e7863bab3b042bdd", [ - "bluetooth/legacy/server/getPrimaryServices/gen-get-same-object.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-get-same-object.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -565046,20 +564948,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-invalid-service-name.https.window.js": [ - "a9b1262e6a181d1017ead79b1972ecd85e942098", + "47f39f2a36503023bbccf813ee60d35837084cc8", [ - "bluetooth/legacy/server/getPrimaryServices/gen-invalid-service-name.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-invalid-service-name.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -565076,140 +564986,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "gen-no-permission-absent-service-with-uuid.https.window.js": [ - "27ad9f008ee0d296dcbcf1c27199ce11a45e6fdd", - [ - "bluetooth/legacy/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "gen-no-permission-for-any-service-with-uuid.https.window.js": [ - "d5f06c23da6660566fbbbdbf8a5dccaaa14904fe", - [ - "bluetooth/legacy/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "gen-no-permission-for-any-service.https.window.js": [ - "8aa730d2ed2d8de1868d705e026a6a8a2376ee27", - [ - "bluetooth/legacy/server/getPrimaryServices/gen-no-permission-for-any-service.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "gen-no-permission-present-service-with-uuid.https.window.js": [ - "a2047a0e8f0e2236cc968b309aa5340ee5b97a90", - [ - "bluetooth/legacy/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-service-not-found-with-uuid.https.window.js": [ - "a2db1edc4b9f30d73b39eb530894983323135090", + "aaf52086f389e517d9a295db8861a77670720642", [ - "bluetooth/legacy/server/getPrimaryServices/gen-service-not-found-with-uuid.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/gen-service-not-found-with-uuid.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -565226,72 +565024,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "services-found-with-uuid.https.window.js": [ - "972e6a75caa3f21935abe9b504d0bccf5249c6a1", - [ - "bluetooth/legacy/server/getPrimaryServices/services-found-with-uuid.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "services-found.https.window.js": [ - "46861175c605d4e2d966df8751d709530f411f02", - [ - "bluetooth/legacy/server/getPrimaryServices/services-found.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "services-not-found.https.window.js": [ - "63503282411b80eba908b91e72ea7a0946945019", + "d7fbf3a124dfd33292a318fe0410d1bfca8a1372", [ - "bluetooth/legacy/server/getPrimaryServices/services-not-found.https.window.html", + "bluetooth/bidi/server/getPrimaryServices/services-not-found.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -565304,79 +565058,31 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] } }, "service": { - "detachedIframe.https.window.js": [ - "f75fc225a791b57bff086fa8acad026521e22ce4", - [ - "bluetooth/legacy/service/detachedIframe.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "device-same-from-2-services.https.window.js": [ - "5b2ba310d356d3eb4f7c0f76ac992bb2f8056034", - [ - "bluetooth/legacy/service/device-same-from-2-services.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], "device-same-object.https.window.js": [ - "97da769a9eac25b55e72ac9e44d6c3cf1442ec3a", + "68f758fd0d207971997300750c5e8a1b7769874f", [ - "bluetooth/legacy/service/device-same-object.https.window.html", + "bluetooth/bidi/service/device-same-object.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -565389,21 +565095,29 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "getCharacteristic": { "characteristic-found.https.window.js": [ - "807852ae133c0f024925faaee88309b9f585ea47", + "74e2be87502d7868009ebd1c8226c9e932ecdca6", [ - "bluetooth/legacy/service/getCharacteristic/characteristic-found.https.window.html", + "bluetooth/bidi/service/getCharacteristic/characteristic-found.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -565416,50 +565130,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "detachedIframe.https.window.js": [ - "ea8c96160ff9dfa2498fd9d51f167ddc80e4aa6a", - [ - "bluetooth/legacy/service/getCharacteristic/detachedIframe.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-blocklisted-characteristic.https.window.js": [ - "cce302d6504f51db4d67553d8f57b915d5ffc645", + "d73996fd4a20928c92d0f8096800e08297cfe476", [ - "bluetooth/legacy/service/getCharacteristic/gen-blocklisted-characteristic.https.window.html", + "bluetooth/bidi/service/getCharacteristic/gen-blocklisted-characteristic.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -565476,50 +565168,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "gen-characteristic-not-found.https.window.js": [ - "2ed48eb5c68798e402193ca195c74c86dbf8909e", - [ - "bluetooth/legacy/service/getCharacteristic/gen-characteristic-not-found.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-garbage-collection-ran-during-error.https.window.js": [ - "1fd70c8fad4b454cb0687d48645117edb801c4de", + "123b8a664fe90fbe4559e831b2194177eceb05b4", [ - "bluetooth/legacy/service/getCharacteristic/gen-garbage-collection-ran-during-error.https.window.html", + "bluetooth/bidi/service/getCharacteristic/gen-garbage-collection-ran-during-error.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -565536,20 +565206,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-get-same-object.https.window.js": [ - "c5176cdc5e0a7a310c60e1d4ed15b07dbeb5e7bb", + "7f2fb0fedfb882e9e35752bde1d1d03ca7c6c143", [ - "bluetooth/legacy/service/getCharacteristic/gen-get-same-object.https.window.html", + "bluetooth/bidi/service/getCharacteristic/gen-get-same-object.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -565566,20 +565244,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-invalid-characteristic-name.https.window.js": [ - "da0f5bda28080f7486e95a3f14ee1f8838c3bc62", + "0a724c071ffbaf066742c0acbd0b0149cd934f20", [ - "bluetooth/legacy/service/getCharacteristic/gen-invalid-characteristic-name.https.window.html", + "bluetooth/bidi/service/getCharacteristic/gen-invalid-characteristic-name.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -565596,50 +565282,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "gen-reconnect-during.https.window.js": [ - "8801c152e931ef3e631cc7ec649c83254c59b3a2", - [ - "bluetooth/legacy/service/getCharacteristic/gen-reconnect-during.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-service-is-removed.https.window.js": [ - "bfeb318c46ea54136137f390adaae0a7322dd827", + "e303066bb273dcfef3cda3a8d09f699265b53599", [ - "bluetooth/legacy/service/getCharacteristic/gen-service-is-removed.https.window.html", + "bluetooth/bidi/service/getCharacteristic/gen-service-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -565656,22 +565320,30 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] }, "getCharacteristics": { "blocklisted-characteristics.https.window.js": [ - "408943585ab86eb3ed73454f82b862820a469aa8", + "9b48b8c4d79b6e6ba9d489bf34343e06fa360afa", [ - "bluetooth/legacy/service/getCharacteristics/blocklisted-characteristics.https.window.html", + "bluetooth/bidi/service/getCharacteristics/blocklisted-characteristics.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -565684,98 +565356,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "characteristics-found-with-uuid.https.window.js": [ - "f11c69c92e7aed8b177c255a071ef9b3af918a4e", - [ - "bluetooth/legacy/service/getCharacteristics/characteristics-found-with-uuid.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "characteristics-found.https.window.js": [ - "3244dd3e173d233b65db3ede450464fbc763a531", - [ - "bluetooth/legacy/service/getCharacteristics/characteristics-found.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "characteristics-not-found.https.window.js": [ - "5b0c1896d64f01b83349a9152cc561ac0b435438", - [ - "bluetooth/legacy/service/getCharacteristics/characteristics-not-found.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-blocklisted-characteristic-with-uuid.https.window.js": [ - "79cd01032b580debd840d885c350d44aa7b5e974", + "9d38a5377ce89ce59c62a46c6281eb1bfbcd9d16", [ - "bluetooth/legacy/service/getCharacteristics/gen-blocklisted-characteristic-with-uuid.https.window.html", + "bluetooth/bidi/service/getCharacteristics/gen-blocklisted-characteristic-with-uuid.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -565792,50 +565394,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "gen-characteristic-not-found-with-uuid.https.window.js": [ - "8a5e2ab4e4ac8e1534f0ccb3666fe5ee71645ec9", - [ - "bluetooth/legacy/service/getCharacteristics/gen-characteristic-not-found-with-uuid.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-garbage-collection-ran-during-error-with-uuid.https.window.js": [ - "683b93e352d0e59fce29c48585d419febd850fb6", + "5874c7058574a0dcce168c1d4ef01cae0f6d45e6", [ - "bluetooth/legacy/service/getCharacteristics/gen-garbage-collection-ran-during-error-with-uuid.https.window.html", + "bluetooth/bidi/service/getCharacteristics/gen-garbage-collection-ran-during-error-with-uuid.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -565852,20 +565432,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-garbage-collection-ran-during-error.https.window.js": [ - "c964781ab44634e0677e5ce46ac5d5b816dff0be", + "3af4ee82d3638bdefb4515c1599e78505ba82bb4", [ - "bluetooth/legacy/service/getCharacteristics/gen-garbage-collection-ran-during-error.https.window.html", + "bluetooth/bidi/service/getCharacteristics/gen-garbage-collection-ran-during-error.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -565882,20 +565470,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-get-same-object-with-uuid.https.window.js": [ - "64b53f4eb31f0740e0f5c8c591c183ded92ffa79", + "e34100cc499e67081f9076a102c253449c05fb8f", [ - "bluetooth/legacy/service/getCharacteristics/gen-get-same-object-with-uuid.https.window.html", + "bluetooth/bidi/service/getCharacteristics/gen-get-same-object-with-uuid.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -565912,20 +565508,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-get-same-object.https.window.js": [ - "6aad17c1e689e7f910698a84f3505226dc77deff", + "15c08bdfee66dc587366cb62bf285f35942ed9c7", [ - "bluetooth/legacy/service/getCharacteristics/gen-get-same-object.https.window.html", + "bluetooth/bidi/service/getCharacteristics/gen-get-same-object.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -565942,20 +565546,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-invalid-characteristic-name.https.window.js": [ - "c7d439e13affcbac37a872023cd76738a922dd13", + "a0c30df3da6d4ce2f63164039122fd64bd06bfd5", [ - "bluetooth/legacy/service/getCharacteristics/gen-invalid-characteristic-name.https.window.html", + "bluetooth/bidi/service/getCharacteristics/gen-invalid-characteristic-name.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -565972,80 +565584,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] - } - ] - ], - "gen-reconnect-during-with-uuid.https.window.js": [ - "db373fbca1581019eada6740e49c0e8fc624ea94", - [ - "bluetooth/legacy/service/getCharacteristics/gen-reconnect-during-with-uuid.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] - } - ] - ], - "gen-reconnect-during.https.window.js": [ - "8b3ba7cc6baa1f6f3a37536aeb51fd066a682da0", - [ - "bluetooth/legacy/service/getCharacteristics/gen-reconnect-during.https.window.html", - { - "script_metadata": [ - [ - "script", - "/resources/testdriver.js" - ], - [ - "script", - "/resources/testdriver-vendor.js" - ], - [ - "script", - "/common/gc.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-test.js" - ], - [ - "script", - "/bluetooth/resources/bluetooth-fake-devices.js" - ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-service-is-removed-with-uuid.https.window.js": [ - "2d4db52822d7e44e50a38876747b989a4b5c5017", + "94bf539bad25bde16610a8c1bcf094472da3caf9", [ - "bluetooth/legacy/service/getCharacteristics/gen-service-is-removed-with-uuid.https.window.html", + "bluetooth/bidi/service/getCharacteristics/gen-service-is-removed-with-uuid.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -566062,20 +565622,28 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ], "gen-service-is-removed.https.window.js": [ - "f922b45cdcca6844772681663fb303f3ba430051", + "fd87fc5c9f0f17bb1f1cdaa318f481c12218f1ea", [ - "bluetooth/legacy/service/getCharacteristics/gen-service-is-removed.https.window.html", + "bluetooth/bidi/service/getCharacteristics/gen-service-is-removed.https.window.html", { "script_metadata": [ [ "script", - "/resources/testdriver.js" + "/resources/testdriver.js?feature=bidi" ], [ "script", @@ -566092,8 +565660,16 @@ [ "script", "/bluetooth/resources/bluetooth-fake-devices.js" + ], + [ + "timeout", + "long" ] - ] + ], + "testdriver_features": [ + "bidi" + ], + "timeout": "long" } ] ] @@ -581240,14 +580816,14 @@ ] }, "prefix": { - "__HostHttp.https.tentative.html": [ + "__HostHttp.https.html": [ "462ae8f19f0c1993c15f20702667e20dfad94d28", [ null, {} ] ], - "__Http.https.tentative.html": [ + "__Http.https.html": [ "4b1ec700721f8da7bad1406f30af96dd8f6c1a01", [ null, @@ -582092,6 +581668,13 @@ {} ] ], + "inheritance.html": [ + "d4c3502e2d2e96d5cf74529d29fcfe6ae9a06a92", + [ + null, + {} + ] + ], "list-item-taller-than-opportunity-001.html": [ "ae8783ce31303024152d3dc91dde3058b3beef0c", [ @@ -586244,7 +585827,7 @@ ] ], "animation-range-end-computed.html": [ - "4c96ee81b17203d6664ca89f8bddb58320b1d1d6", + "cbee55063e340745a23fa6eb2a73f4adec9e3237", [ null, {} @@ -586272,7 +585855,7 @@ ] ], "animation-range-start-computed.html": [ - "044aea2ca67f6758d9699ddb0355de19ecf5248c", + "098d1134f6db3f3a15ca4dccd1a3c24efe1ebc11", [ null, {} @@ -589653,6 +589236,13 @@ ] ] }, + "relative-color-with-zoom.html": [ + "a14be5587ea0a5c7fb19cf9d3f5367c867dcbaeb", + [ + null, + {} + ] + ], "relative-currentcolor-visited-getcomputedstyle.html": [ "443af36888a7091318dbc63b470feed4a5c50a94", [ @@ -589807,6 +589397,13 @@ ] }, "css-conditional": { + "at-custom-media-parsing.html": [ + "1599f6a668587b00462d8d735a5d481924f4870c", + [ + null, + {} + ] + ], "at-supports-whitespace.html": [ "12683ab92bb46af035b5bfa17b466b23736d1c5c", [ @@ -593377,6 +592974,13 @@ {} ] ], + "flexbox-ignores-first-letter.html": [ + "fca625e4645c6cdaf3460b9fd3deddca87411b3d", + [ + null, + {} + ] + ], "flexbox-justify-content-wmvert-002.html": [ "2aaee48596bbb0a17e0dd9e022d7a60e10670979", [ @@ -595124,6 +594728,13 @@ {} ] ], + "font-variation-settings-serialization-002.html": [ + "47a518f18b668852f41a352d7e2bcc4e16e4c058", + [ + null, + {} + ] + ], "font-weight-sign-function.html": [ "d65284fb7a8da07bca74b7c2776da8fb0f4c85d7", [ @@ -595471,7 +595082,7 @@ ] ], "font-style-valid.html": [ - "95c5af3c41649c0935259178d20bcbd90a537153", + "274ee2aca1bf6b74279f91f329934c931c1d0969", [ null, {} @@ -595959,6 +595570,43 @@ } }, "css-gaps": { + "animation": { + "gap-decorations-width-neutral-keyframe-001.html": [ + "9e6557774f9ee8b2a0c1dd6ac35b93005e18cfa0", + [ + null, + {} + ] + ], + "gap-decorations-width-neutral-keyframe-002.html": [ + "e1260a5c48edb3edef506c5361c0a6750168e604", + [ + null, + {} + ] + ], + "row-rule-width-interpolation.html": [ + "edb364fa4b8c23bfe5cbb21622ae5a5a26ce0e99", + [ + null, + {} + ] + ], + "rule-width-interpolation-multiple-values-001.html": [ + "eecf9f2d12e0e2c26520fe56fea390226a484257", + [ + null, + {} + ] + ], + "rule-width-interpolation-multiple-values-002.html": [ + "eecf9f2d12e0e2c26520fe56fea390226a484257", + [ + null, + {} + ] + ] + }, "grid": { "grid-gap-decorations-028.html": [ "125a34ca9668ecfc430f76e26365c62da17e3b4b", @@ -602125,6 +601773,27 @@ {} ] ], + "basic.html": [ + "bc2d3b3e16d6c182f29e85ab8f9afb1c3f671cd4", + [ + null, + {} + ] + ], + "contents-rule.html": [ + "abd380e14e49fcbb2e597fb81d748c4074f3ba6a", + [ + null, + {} + ] + ], + "cross-stylesheet.html": [ + "0c8d9be7fcf5dabbe0ae3bcc22d0970c82231a52", + [ + null, + {} + ] + ], "dashed-function-cycles.html": [ "e711c9ed3678bd3b95eeed589b4f88754940b993", [ @@ -602160,6 +601829,13 @@ {} ] ], + "declarations.html": [ + "900283fd08748aa3bf6519d4005517aeda4b287d", + [ + null, + {} + ] + ], "function-attr.html": [ "69cb69723ff41bcfe6fcd745f0c3d6b74a1ebd81", [ @@ -602272,12 +601948,26 @@ {} ] ], + "mixins-including-mixins.html": [ + "2c9436fd8b6b86c94aa29544ade1f6dc898ba914", + [ + null, + {} + ] + ], "parameter-types.tentative.html": [ "0b6fcf74e5d6795f9572167f9cd341d508e759eb", [ null, {} ] + ], + "shadow-dom.html": [ + "f3f62ba2025d5fe810d0b7b054114d82b987555a", + [ + null, + {} + ] ] }, "css-multicol": { @@ -607290,7 +606980,7 @@ ] ], "overscroll-snap.html": [ - "13437492ca1ce9c094a997b224e5cf3ba497c692", + "c8b17737b4f4575a28ef11e24acabfdde29a84cb", [ null, { @@ -610385,7 +610075,7 @@ ] ], "keyword-sizes-for-intrinsic-contributions-002.html": [ - "a053d88c1eefd0379ff7e612dfd3d1c39e7c581e", + "dc700d73dd18357d1834289c017c20e6e0549836", [ null, {} @@ -611816,7 +611506,7 @@ ] ], "table-quirks.html": [ - "cdebe8768dda04efc62636cf8a18c5bf89f5a086", + "dcf6c084eda46d58b065f54cc05dde59682abbee", [ null, {} @@ -620428,6 +620118,13 @@ {} ] ], + "if-initial-unregistered.html": [ + "9ba58cc8e6edec307cbb0d69772c3f26998a6d56", + [ + null, + {} + ] + ], "if-invalidation.html": [ "feec1e526d17081c08f163ea7676cc06127a6693", [ @@ -620653,7 +620350,7 @@ ] ], "percentage-without-context.html": [ - "8bda69da5435abeb7b76fa31c4236890339e58d4", + "8f905c80a714ac01919559db4bdf7ffe760871e5", [ null, {} @@ -625681,7 +625378,7 @@ ] ], "filter-computed.html": [ - "7ebf7dbc169cef72f63dca73419fad2830138207", + "878743b5fa0b5f181958d4f7b58280bd1f896ddb", [ null, {} @@ -625695,7 +625392,7 @@ ] ], "filter-parsing-valid.html": [ - "7990fb1fa61a51479be322067d3a8a27064a1709", + "32ac8ceaf275ee01f76cc119f7c008907b4f0458", [ null, {} @@ -627521,6 +627218,13 @@ {} ] ], + "has-invalidation-first-in-sibling-chain.html": [ + "d49a02b834e7a72d5998a95cfbdd53b5976e6fe2", + [ + null, + {} + ] + ], "has-invalidation-for-wiping-an-element.html": [ "03fa9a55540b6e698862e86c77d24becaf3fa2c5", [ @@ -629260,7 +628964,7 @@ ] ], "ShadowRoot-init-customElementRegistry.html": [ - "bbf1b414aa0df9ecef458a773d903fd446b5b037", + "29dbb9ba7a7280bbc77b4b62350cebb3765ac62c", [ null, {} @@ -635846,7 +635550,7 @@ ] ], "copy-elements-with-css-vars.tentative.html": [ - "d903d5a0017fefb56d2333cd529e05001b2d6f30", + "9d565deb1d83ebcf4c98cde674ab2f8fa9afc5fa", [ null, { @@ -708005,6 +707709,13 @@ {} ] ], + "2d.text.measure.width.nullCharacter.html": [ + "7f60fc45f6c4a9aa30a77c29e24cf80f2bbea007", + [ + null, + {} + ] + ], "2d.text.measure.width.space.html": [ "10dece4ddb61888d0b7b4f1d9c8e41a616db2bc0", [ @@ -715832,7 +715543,7 @@ ] ], "offscreencanvas.transfer.to.imagebitmap.w.html": [ - "b51ce0efa22cf90f65415e243c747e1fe3ebc8af", + "71e5e3125e6e16f0065fd78202527d183e9bf14e", [ null, {} @@ -715882,7 +715593,7 @@ ] ], "offscreencanvas.transferrable.w.html": [ - "38f981e8f09aab76f0ed5131c83e0ee8882f1788", + "f47dfa006c1f7199fbd1239f429ababc6d27ae75", [ null, {} @@ -722098,6 +721809,20 @@ {} ] ], + "2d.text.measure.width.nullCharacter.html": [ + "843bde697f99fc3109504f5be57b52ed6dd43402", + [ + null, + {} + ] + ], + "2d.text.measure.width.nullCharacter.worker.js": [ + "bb2c1928c258af8b4d7e4af72195c04c793d168a", + [ + "html/canvas/offscreen/text/2d.text.measure.width.nullCharacter.worker.html", + {} + ] + ], "2d.text.measure.width.space.html": [ "23891baf12e84d8044746d9d0e3d2336b3d9f168", [ @@ -729276,7 +729001,7 @@ ] ], "005.html": [ - "047011d071d28b84e4ef3b0ee1b3830bc4a42215", + "f6d3695695215f5ed5a37beb538d9d34f5947daa", [ null, { @@ -729285,7 +729010,7 @@ ] ], "007.html": [ - "d0ff4f64babc5f4ba4d452c82b890d794105a889", + "da32922d413bc676bb9ed5c918bd98f89f32b2ea", [ null, { @@ -729394,7 +729119,7 @@ ] ], "007.html": [ - "2ca3568651ef150ff0e354ad95952e9dc30cfd3f", + "a98d915a41b082c81e3c55332fe5a49f814b8b26", [ null, { @@ -729403,7 +729128,7 @@ ] ], "008.html": [ - "99c242e7c244feaca57d2c119b0adcb3c3da03a1", + "58d0be48c4af3701822a23ff311a5ab192becbf2", [ null, { @@ -729421,7 +729146,43 @@ ] ], "010.html": [ - "4743e1520c8bb405aeeda1be6390006e75489dbf", + "1cf514f5368398143b25d100f7a6679e61145f3e", + [ + null, + { + "testdriver": true + } + ] + ], + "011.xhtml": [ + "c0462a81602bccc38a00888ab1b4ddae7d846cec", + [ + null, + { + "testdriver": true + } + ] + ], + "012.xhtml": [ + "bd4daef4665517a7b9c435a1bdab194e354a244e", + [ + null, + { + "testdriver": true + } + ] + ], + "013.xhtml": [ + "254325ebbe78dcbe658a1d803a46ba7fcf938abe", + [ + null, + { + "testdriver": true + } + ] + ], + "014.xhtml": [ + "137ed0b0bb70d2688af47b873e7e266ff1b7132d", [ null, { @@ -729466,7 +729227,7 @@ ] ], "021.html": [ - "62476c16f54159e79ea1a6f17fe3e50d3379111c", + "2952e7423692fc234dd575240600c10fca2afe5d", [ null, { @@ -733554,15 +733315,8 @@ {} ] ], - "link-multiple-error-events.html": [ - "9d112e88d135c02c2cd539c26154095fe2cd9b33", - [ - null, - {} - ] - ], "link-multiple-load-events.html": [ - "b5550bb382c72dfc5113c5039f876498099efcb3", + "a2dd7c0006588b054fae547ff33480e654c2cd18", [ null, {} @@ -737471,6 +737225,22 @@ {} ] ], + "move-node-local-root-events-still-fire.html": [ + "46be7e828e8c11f21e92484faaf44a5e8f5333ec", + [ + null, + { + "testdriver": true + } + ] + ], + "move-node-local-root.html": [ + "33a247ff1f17fcca4b382f65b03777ea361feb4d", + [ + null, + {} + ] + ], "move_iframe_in_dom_01.html": [ "900d8cd02268dd53f9cb1a8ac2fba16ca4b889d8", [ @@ -740949,7 +740719,7 @@ ] ], "show-picker-disabled-readonly.html": [ - "a5aae6590386014152d03ac459f1e6a66d232405", + "74448f70fb5640ddecc681f719de3da8f11152be", [ null, { @@ -743620,7 +743390,7 @@ ] ], "popover-light-dismiss-scroll-within.html": [ - "053ea03ab3b990a8e857e1a8a21bba13cc46263a", + "6bc280fe43eff476d34bb7d42cb0d87bfc3a66c5", [ null, { @@ -753193,7 +752963,7 @@ ] ], "event-handler-attributes-body-window.html": [ - "e8055d99f357da2baf1f9034d121055338e238e8", + "8c3f3f7633cf1145495ee3f477513ce23bffc62a", [ null, {} @@ -763643,6 +763413,13 @@ ] }, "mediacapture-fromelement": { + "HTMLCanvasElement-captureStream-settings.tentative.html": [ + "d3998539ed091d30d7b2796cecab67ca82a26c8e", + [ + null, + {} + ] + ], "HTMLCanvasElement-getImageData-noframe.html": [ "48d445f897d7f80b013204f78f52670e31da1c1c", [ @@ -770792,6 +770569,15 @@ {} ] ], + "icon-url-encoding-euc-kr.tentative.https.html": [ + "93aeac0721d869fe07e7116626dd66e1ba393205", + [ + null, + { + "testdriver": true + } + ] + ], "idlharness.https.any.js": [ "0f11638e592811dde251b40a5fa67be7e754ec08", [ @@ -776978,6 +776764,17 @@ ] }, "pointerevents": { + "bugs": { + "events_after_lostpointercapture_remove_setcapture_node.html": [ + "ec478a68006fa4e806cf6896d85e5a089690fecd", + [ + null, + { + "testdriver": true + } + ] + ] + }, "capturing_boundary_event_handler_at_ua_shadowdom.html": [ "7500277f2251fa300f9af99d52e1f73a943f237c", [ @@ -777928,7 +777725,7 @@ ] ], "pointerevent_lostpointercapture_remove_setcapture_node.html": [ - "8da1b7d28c45e49f31ba55e05eac3fe6e5a01283", + "c20f62174bd402ecb5e0701f94725ee857c26de4", [ null, { @@ -778238,6 +778035,16 @@ } ] ], + "pointerevent_pointerrawupdate_changes_pointer_capture.https.html": [ + "d4c701ac2b81c573e23aaebda3f508fef8e94bd8", + [ + null, + { + "testdriver": true, + "timeout": "long" + } + ] + ], "pointerevent_pointerrawupdate_flush_pointercapture.https.html": [ "1d444c75097c4adf1f60b7356bb5d09de546c416", [ @@ -778517,6 +778324,21 @@ } ] ], + "pointerevent_target_at_clicking_link_in_image_map.html": [ + "b199956ceb1330936e0b922419e026a6e041b904", + [ + "pointerevents/pointerevent_target_at_clicking_link_in_image_map.html?capture=", + { + "testdriver": true + } + ], + [ + "pointerevents/pointerevent_target_at_clicking_link_in_image_map.html?capture=area", + { + "testdriver": true + } + ] + ], "pointerevent_tiltX_tiltY_to_azimuth_altitude.html": [ "4521c247d157ce7365a6ef27801bdfd9151db6e4", [ @@ -779274,7 +779096,7 @@ ] ], "prefetch-time-to-fetch.https.html": [ - "528cd657f6ac3ae20bc74f75dce5317d259756f7", + "7f0177aebdb5aed70304f1d665025250bc25c122", [ null, { @@ -795846,7 +795668,7 @@ }, "screen-orientation": { "active-lock.html": [ - "72d2d7fc1d4bc98c64c417171c5f852089898316", + "a11ff2ddd62d37ab0779cdb4c3a6aa799e8ee1dc", [ null, { @@ -795864,7 +795686,7 @@ ] ], "fullscreen-interactions.html": [ - "b1ac1c7000f12d0931d0a2044b75b567cdc95596", + "6c18e898a3eafadca7937b896a07e541b3ca0c60", [ null, { @@ -796291,7 +796113,121 @@ null, {} ] - ] + ], + "parsing": { + "animation-trigger-name-parsing.html": [ + "c2a746bc4f946143f67f02abcb00916982b2272b", + [ + null, + {} + ] + ], + "timeline-trigger-behavior-computed.tentative.html": [ + "618ac062d98c70ef860751fd88081bbe94ae3d07", + [ + null, + {} + ] + ], + "timeline-trigger-behavior-valid.tentative.html": [ + "7d710049c6b99c652ea6f3592e27185675963eb0", + [ + null, + {} + ] + ], + "timeline-trigger-exit-range-end-invalid.tentative.html": [ + "dd5fcfa2a0c41aa610ad50fd4197a934bb1254a4", + [ + null, + {} + ] + ], + "timeline-trigger-exit-range-end-valid.tentative.html": [ + "7ee8c9f247ed7e6b6059b8148269b245deb048b5", + [ + null, + {} + ] + ], + "timeline-trigger-exit-range-end.computed.tentative.html": [ + "9033304e399378233ee9960a3ed7c71f6664e981", + [ + null, + {} + ] + ], + "timeline-trigger-exit-range-start-computed.tentative.html": [ + "fd6878a2fd206b22250445d46ddfb7be7ba61577", + [ + null, + {} + ] + ], + "timeline-trigger-exit-range-start-invalid.tentative.html": [ + "931e1ac036a7e7a02f82a6654b26d74e07a1b22d", + [ + null, + {} + ] + ], + "timeline-trigger-exit-range-start-valid.tentative.html": [ + "23700cab713e2066b89ea2d434ef4bc63411f6c8", + [ + null, + {} + ] + ], + "timeline-trigger-range-end-computed.tentative.html": [ + "daa96165cf433eaf4090d3c45c55bd047e16555e", + [ + null, + {} + ] + ], + "timeline-trigger-range-end-invalid.tentative.html": [ + "306112d300218e21a6ef6eb0d6b4a863ace3a958", + [ + null, + {} + ] + ], + "timeline-trigger-range-end-valid.tentative.html": [ + "71d8b7f9f4f00e7c472d56ccccab5bdcbc36578f", + [ + null, + {} + ] + ], + "timeline-trigger-range-start-computed.tentative.html": [ + "7727f0f0a0b2b9fd058f2bfcca2ca16e043b9671", + [ + null, + {} + ] + ], + "timeline-trigger-range-start-invalid.tentative.html": [ + "975b208fb28c00ccc6fa067de8d775ed67e0e763", + [ + null, + {} + ] + ], + "timeline-trigger-range-start-valid.tentative.html": [ + "9f391d1d836270abaec66d847c7fb5c3fb1b9d02", + [ + null, + {} + ] + ], + "timeline-trigger-timeline-parsing.tentative.html": [ + "61bef268f23ee70441008fd2b471c0128fb0160a", + [ + null, + {} + ] + ] + } }, "css": { "animation-duration-auto.tentative.html": [ @@ -802287,6 +802223,15 @@ } ] ], + "attachShadow-with-ShadowRoot.html": [ + "994053822909ff9b1adc077cb7d912ecb54c430b", + [ + null, + { + "testdriver": true + } + ] + ], "capturing-and-bubbling-event-listeners-across-shadow-trees.html": [ "bcb4ee62e0c61c488791f5ac045908eacad79596", [ @@ -805579,6 +805524,15 @@ } ] ], + "contracted-image.html": [ + "dae7793f08c35a496b3458b4b68a78f158f56a4e", + [ + null, + { + "testdriver": true + } + ] + ], "cross-origin-image.sub.html": [ "777dcf706406a228bd9612b51853cc445bac6b44", [ @@ -824512,6 +824466,13 @@ null, {} ] + ], + "transform-translate-single-parameter.html": [ + "880d65e3538f30abf2e7c362b7ad7a1d186e473b", + [ + null, + {} + ] ] }, "embedded": { @@ -825846,6 +825807,13 @@ ] } }, + "sniffing-content-type.html": [ + "4b2d7df8ca64fb9d7ddc2de396fd10cc77bc63eb", + [ + null, + {} + ] + ], "struct": { "UnknownElement": { "interface.svg": [ @@ -826530,7 +826498,7 @@ ] ], "SVGGraphicsElement.getBBox-03.html": [ - "0bb8a11fe7a50c1c1ef2dc55da10f471346e0ec8", + "6ee383c0341b218b541886ce0e441fbe087864a5", [ null, {} @@ -826898,6 +826866,16 @@ } ] ], + "single-tap-when-touchend-listener-use-sync-xhr.html": [ + "f6a9a2ff51c9f4e4f618f1ab545f9ee50fa4aa47", + [ + null, + { + "testdriver": true, + "timeout": "long" + } + ] + ], "single-touch-vertical-rl.html": [ "623e57e8a118a228453a3ecd099d19dbd17fded3", [ @@ -827751,6 +827729,57 @@ {} ] ], + "navigate-to-javascript-url-001.html": [ + "1598cfc25c7e2c97542b36de699fac73e9a1e692", + [ + null, + {} + ] + ], + "navigate-to-javascript-url-002.html": [ + "765ab8d4f08f991b1962391d3474a96d63184339", + [ + null, + {} + ] + ], + "navigate-to-javascript-url-003.html": [ + "31c152c4a68eed95b34192a1516c0ab065c655ff", + [ + null, + {} + ] + ], + "navigate-to-javascript-url-004.html": [ + "8811787613be12aac8779156786eac3289d802cb", + [ + null, + {} + ] + ], + "navigate-to-javascript-url-005.html": [ + "86016023d4ed44fe0aa65061796f2be565de2c7b", + [ + null, + {} + ] + ], + "navigate-to-javascript-url-006.sub.html": [ + "bea4cb5dcf381e7bb6b2a3aa6b405981ced13bf6", + [ + null, + {} + ] + ], + "navigate-to-javascript-url-csp-headers.html": [ + "b891ff83fdd324065cceb8b5f501a58333b4cf5c", + [ + null, + { + "timeout": "long" + } + ] + ], "no-require-trusted-types-for-report-only.html": [ "651bf0a7199beab43e4f00d3c72462ffda1905f2", [ @@ -828048,10 +828077,54 @@ ] ], "trusted-types-navigation.html": [ - "f29405651f11a47d398cde6d01f57ce71afd97b3", + "f41734261295455230ea2b0b0940bd035ffe31b6", [ - null, - {} + "trusted-types/trusted-types-navigation.html?01-05", + { + "timeout": "long" + } + ], + [ + "trusted-types/trusted-types-navigation.html?06-10", + { + "timeout": "long" + } + ], + [ + "trusted-types/trusted-types-navigation.html?11-15", + { + "timeout": "long" + } + ], + [ + "trusted-types/trusted-types-navigation.html?16-20", + { + "timeout": "long" + } + ], + [ + "trusted-types/trusted-types-navigation.html?21-25", + { + "timeout": "long" + } + ], + [ + "trusted-types/trusted-types-navigation.html?26-30", + { + "timeout": "long" + } + ], + [ + "trusted-types/trusted-types-navigation.html?31-35", + { + "timeout": "long" + } + ], + [ + "trusted-types/trusted-types-navigation.html?36-last", + { + "timeout": "long" + } ] ], "trusted-types-report-only.html": [ @@ -839676,7 +839749,7 @@ ] ], "to-fixed-length-buffer.any.js": [ - "196324960eca0670a1957c04dbd70cee39b73644", + "d5e6d65b74782f44956969ef533cba33cfe82962", [ null, { @@ -839774,7 +839847,7 @@ ] ], "to-resizable-buffer.any.js": [ - "270151460eb9235ef067864ed15320a6f6fc62f1", + "1f46fa7f9a7e3b33072c5d93fba4a58189229dbe", [ null, { @@ -846790,7 +846863,7 @@ ] ], "audionode-connect-method-chaining.html": [ - "02caea667bba2de523488174053aa251892eeec2", + "dcda26d7f6b44f68e266a5cac30ccb92f4af8ea2", [ null, {} @@ -846995,7 +847068,7 @@ ] ], "k-rate-audiobuffersource-connections.html": [ - "0b94bd70f9f7c5da26654845ec784d6805f4117e", + "5fa43d7e90372ea0a9b568f94f4882183420d4f2", [ null, {} @@ -859684,7 +859757,7 @@ ] ], "add.https.any.js": [ - "be82df1dc280bbf1a2e880f3adb7a6a8aef60c16", + "5a370de82cc726836ceb5f99075a92b9e24626dd", [ "webnn/conformance_tests/add.https.any.html?cpu", { @@ -859795,7 +859868,7 @@ ] ], "arg_min_max.https.any.js": [ - "f8e4d801056c31a1ec56d4e9686f16e2dd1eff25", + "f0d38cbff82bc89e0fb552583d1ab6d19307b6c3", [ "webnn/conformance_tests/arg_min_max.https.any.html?cpu", { @@ -860944,7 +861017,7 @@ ] ], "concat.https.any.js": [ - "d41921720463d388eeb0e152b30e04d8246b40b0", + "aaecaecc9eb2166658c0e1115265aef9d3d768f5", [ "webnn/conformance_tests/concat.https.any.html?cpu", { @@ -861610,7 +861683,7 @@ ] ], "dequantizeLinear.https.any.js": [ - "7f1ed15cc4a36aba360daebda56a44da32620a5b", + "c741ebddadb48a99fb5c43ed404f14854fbcfec3", [ "webnn/conformance_tests/dequantizeLinear.https.any.html?cpu", { @@ -861943,7 +862016,7 @@ ] ], "equal.https.any.js": [ - "a974ec0004f1b9e7312dd03515dc2f49f7340681", + "33d27cf74b15a84fd672f9793d0c5b53c58d320c", [ "webnn/conformance_tests/equal.https.any.html?cpu", { @@ -862276,7 +862349,7 @@ ] ], "expand.https.any.js": [ - "821c9b83ec269da21586682b005445f0a586bae6", + "f9040f25e47912928035dd9aee525334756b0002", [ "webnn/conformance_tests/expand.https.any.html?cpu", { @@ -862498,7 +862571,7 @@ ] ], "gather.https.any.js": [ - "f0b75e1cf41a7510070343975f7411e2a7e64de6", + "7f3c9c113583fb345c781e93682006c77caf3ecc", [ "webnn/conformance_tests/gather.https.any.html?cpu", { @@ -862609,7 +862682,7 @@ ] ], "gatherElements.https.any.js": [ - "32299529f478f5b261b767b7f2ac9a71f04f01e0", + "2b13f59678055b377ef243f442088abc718c5474", [ "webnn/conformance_tests/gatherElements.https.any.html?cpu", { @@ -862720,7 +862793,7 @@ ] ], "gatherND.https.any.js": [ - "ddf8626f17aef9dbfe6ab9df49c8568300a56c7a", + "41e1bc78790a439dc46efdccfefa32ce4ab4997a", [ "webnn/conformance_tests/gatherND.https.any.html?cpu", { @@ -863164,7 +863237,7 @@ ] ], "greater.https.any.js": [ - "21e8b07bd4788496eb3d5ddb28c9f05301aef44c", + "bf6f884588518cdadc7a656a16246cc574a06eac", [ "webnn/conformance_tests/greater.https.any.html?cpu", { @@ -863275,7 +863348,7 @@ ] ], "greater_or_equal.https.any.js": [ - "f9ab2d668147c4d8b9250dcb67f5b2d132ec1027", + "7dffe0980eaa31c262549e94e7c264f92431c507", [ "webnn/conformance_tests/greater_or_equal.https.any.html?cpu", { @@ -863830,7 +863903,7 @@ ] ], "identity.https.any.js": [ - "214d16e396465b423a4d19e4c6df4bc378458771", + "be645fd8966dae9134f5bbc8282b79a821753012", [ "webnn/conformance_tests/identity.https.any.html?cpu", { @@ -865255,7 +865328,7 @@ ] ], "lesser.https.any.js": [ - "8978435c6e3298b980056c7e498a3ad20737a87a", + "0238a00fca103f571af7c7d296b70ba61f0e1864", [ "webnn/conformance_tests/lesser.https.any.html?cpu", { @@ -865366,7 +865439,7 @@ ] ], "lesser_or_equal.https.any.js": [ - "16aa5888cc275e61869d1f5ab4e7eedc07a321c3", + "e268dd4d762091758e91d3ddfb8f3e80c5927f7a", [ "webnn/conformance_tests/lesser_or_equal.https.any.html?cpu", { @@ -865699,7 +865772,7 @@ ] ], "logical_and.https.any.js": [ - "1a03ef5444de4d5a5005b3de5fc1fb88aee26b29", + "40ba45df42d47d4dfe3f7d174703ba0831aa76f2", [ "webnn/conformance_tests/logical_and.https.any.html?cpu", { @@ -865810,7 +865883,7 @@ ] ], "logical_not.https.any.js": [ - "f8949672cc5623a4f3810f32c3c50173a3623ba3", + "5b0b8da43da233886d73f6c3b21efc382c967162", [ "webnn/conformance_tests/logical_not.https.any.html?cpu", { @@ -865921,7 +865994,7 @@ ] ], "logical_or.https.any.js": [ - "83c261969f62f1c6ab5e78ebc5ac6aebde9fca6b", + "587a56710a73be7810f691a9dcd1737c1f377f6a", [ "webnn/conformance_tests/logical_or.https.any.html?cpu", { @@ -866032,7 +866105,7 @@ ] ], "logical_xor.https.any.js": [ - "7a9446ea2e4c6ab40dbc9976d6be404180e1d99b", + "423d36db2ccedb76ef986ca3ef20e1de5ea26bc7", [ "webnn/conformance_tests/logical_xor.https.any.html?cpu", { @@ -866476,7 +866549,7 @@ ] ], "max.https.any.js": [ - "2da14e1545a5c4c44fe8c94e4688957b1f257ca9", + "bbea2391a3e3a6b2491b6bcc5ba7db79da60e010", [ "webnn/conformance_tests/max.https.any.html?cpu", { @@ -866698,7 +866771,7 @@ ] ], "min.https.any.js": [ - "5e324e412bf291b9973c6a5fb9594015a911c899", + "3abd2e63fbb85fd34fc91415e4b1229317e7525f", [ "webnn/conformance_tests/min.https.any.html?cpu", { @@ -866809,7 +866882,7 @@ ] ], "mul.https.any.js": [ - "277d3e2fa0d5e1005781ba400d4870c6459e6f6e", + "f8606849dd42aa96f5a8c5bf3a28ba05d3634956", [ "webnn/conformance_tests/mul.https.any.html?cpu", { @@ -867031,7 +867104,7 @@ ] ], "not_equal.https.any.js": [ - "5aed1247e06a6f7362bc90ba817c466d91ede332", + "e7440799b6eb8bec1cccd3dd1eece1fbf9a5ab83", [ "webnn/conformance_tests/not_equal.https.any.html?cpu", { @@ -867142,7 +867215,7 @@ ] ], "pad.https.any.js": [ - "c2ba0e45b8f56fd4e4f75f780780c94cc4838df7", + "ad334675a64e284e7c0e073c5a508413e1515e49", [ "webnn/conformance_tests/pad.https.any.html?cpu", { @@ -868345,7 +868418,7 @@ ] ], "quantizeLinear.https.any.js": [ - "af46c8945a3dcbedf573543c58b8299d86e5f2ff", + "112b584848433efecc9b69f2c7ba7d3e5e153b29", [ "webnn/conformance_tests/quantizeLinear.https.any.html?cpu", { @@ -868567,7 +868640,7 @@ ] ], "reduce_l1.https.any.js": [ - "cb09f1cab93e890dd7cb610c90e9afb9938043e2", + "d59909f50c17d38bb4bd77a8fa14208e815d3aa7", [ "webnn/conformance_tests/reduce_l1.https.any.html?cpu", { @@ -868678,7 +868751,7 @@ ] ], "reduce_l2.https.any.js": [ - "0670a1d25c1c6d6abe8c2a585a4fa6421573e9bf", + "9ccd350772d95e26e45ea65b5baf8e022b476545", [ "webnn/conformance_tests/reduce_l2.https.any.html?cpu", { @@ -868789,7 +868862,7 @@ ] ], "reduce_log_sum.https.any.js": [ - "9d30accb2cb39262f70b8dd2756c5ceaeca846e1", + "714ba1c8b5f74f9ca30fb47569294b049851a58c", [ "webnn/conformance_tests/reduce_log_sum.https.any.html?cpu", { @@ -868900,7 +868973,7 @@ ] ], "reduce_log_sum_exp.https.any.js": [ - "e8026435017b67ee118741eac5d17487d46a5e21", + "298e143af9c55133724b8f53fefcc82ac968979e", [ "webnn/conformance_tests/reduce_log_sum_exp.https.any.html?cpu", { @@ -869011,7 +869084,7 @@ ] ], "reduce_max.https.any.js": [ - "784db3101b66104ad8ac1208e2d15b5c4982b5ed", + "659641c5c5f28845ef80b98127d296e131937346", [ "webnn/conformance_tests/reduce_max.https.any.html?cpu", { @@ -869122,7 +869195,7 @@ ] ], "reduce_mean.https.any.js": [ - "63566b011c0bfc6ea0a212bec80db3aaa7c31c96", + "4851e51674c1b5de93cad461386676871bc62f9d", [ "webnn/conformance_tests/reduce_mean.https.any.html?cpu", { @@ -869233,7 +869306,7 @@ ] ], "reduce_min.https.any.js": [ - "64cf8b7ee98cdbe89ff06f7e6c6f11b4eefa2596", + "42fc3e464d27d89229247d0d437828037b5aceac", [ "webnn/conformance_tests/reduce_min.https.any.html?cpu", { @@ -869344,7 +869417,7 @@ ] ], "reduce_product.https.any.js": [ - "6b4c1242d7f8f19c4357a91bec38eeec8e3f8e25", + "17ee27ed0e980db142d61fa4344190c7fa35e4db", [ "webnn/conformance_tests/reduce_product.https.any.html?cpu", { @@ -869455,7 +869528,7 @@ ] ], "reduce_sum.https.any.js": [ - "d333f9fb5ad92b902b17aa55b8a9cb73a0912b7e", + "1d6f944f6166d10ab4aaa5862d46d693f68fcbc1", [ "webnn/conformance_tests/reduce_sum.https.any.html?cpu", { @@ -869566,7 +869639,7 @@ ] ], "reduce_sum_square.https.any.js": [ - "8c0aa9a89a42fc0dc96e07bcc0772b6e142d5be9", + "73762e4b8dc877bf26ef5ff2c4b083a9150a389e", [ "webnn/conformance_tests/reduce_sum_square.https.any.html?cpu", { @@ -869788,7 +869861,7 @@ ] ], "resample2d.https.any.js": [ - "03e462c860a03d590fe3a9ff66567c2832e12b60", + "fe50b8ccb77b20d22b39c0469320861af3ca1910", [ "webnn/conformance_tests/resample2d.https.any.html?cpu", { @@ -869899,7 +869972,7 @@ ] ], "reshape.https.any.js": [ - "8345f09ae92587b9bfa3afab43214ac5567c2ab3", + "e54d0f60be2f9f5542aef1821c17f9ffad132a83", [ "webnn/conformance_tests/reshape.https.any.html?cpu", { @@ -870010,7 +870083,7 @@ ] ], "reverse.https.any.js": [ - "8c76d04b1ee53d5b65de19b17e7d144eaf881a49", + "3b1d8bf7efe0aa573a174e9aead1b31672982c20", [ "webnn/conformance_tests/reverse.https.any.html?cpu", { @@ -870556,7 +870629,7 @@ ] ], "scatterElements.https.any.js": [ - "d988719d84041839fdd6e890999c5e3e62d4e7e2", + "e76494b2f2f6469c33b0319ba13e677cd4fdefa3", [ "webnn/conformance_tests/scatterElements.https.any.html?cpu", { @@ -870667,7 +870740,7 @@ ] ], "scatterND.https.any.js": [ - "8505d143c76e03424af83079fc8339936a2361a7", + "93b5ca52aa2de12850a43590fab77c446a266fc2", [ "webnn/conformance_tests/scatterND.https.any.html?cpu", { @@ -871474,7 +871547,7 @@ ] ], "slice.https.any.js": [ - "6be61a9c253c853dd5aecc14b3dd78ff9f044a8d", + "7603e47c699a7163d740988a9d41f03fc5601b62", [ "webnn/conformance_tests/slice.https.any.html?cpu", { @@ -871918,7 +871991,7 @@ ] ], "split.https.any.js": [ - "c805be252573f1c241b17ba70eed09e7da6f422a", + "925ba6244d03963fd64d14663d6d81fe3e8f3742", [ "webnn/conformance_tests/split.https.any.html?cpu", { @@ -872140,7 +872213,7 @@ ] ], "sub.https.any.js": [ - "85b15f5a00051c0ece94f6202150c0b93b23260f", + "31d5e9fb9f70ff4ffcf0a14dfa8ad883325f1e6a", [ "webnn/conformance_tests/sub.https.any.html?cpu", { @@ -872797,7 +872870,7 @@ ] ], "tanh.https.any.js": [ - "63b8668644a10c0f13ab8b3c19cb9a9edf29be2b", + "88d48e9eb79c8ef2306c262a0c10d1685b97aa54", [ "webnn/conformance_tests/tanh.https.any.html?cpu", { @@ -873391,7 +873464,7 @@ ] ], "tile.https.any.js": [ - "29a24871816e5266eaacae83092ec59013a443d0", + "aa34b082c7e85a254bff471e66d9c73e338d78d3", [ "webnn/conformance_tests/tile.https.any.html?cpu", { @@ -873502,7 +873575,7 @@ ] ], "transpose.https.any.js": [ - "413b159f74379f132a7b584a73b923baa7cc82c6", + "27b7e743e800aae3a022bc7eebc55a948a4bc08a", [ "webnn/conformance_tests/transpose.https.any.html?cpu", { @@ -889991,6 +890064,13 @@ {} ] ], + "RTCRtpReceiver-track-settings.tentative.html": [ + "d10707ce13c5c0c087193349650c1bce1d5626d3", + [ + null, + {} + ] + ], "RTCRtpReceiver-video-anyCodec.html": [ "4a32ce98854c0ab946aab2562554c103b3d21a8c", [ @@ -905301,7 +905381,7 @@ ] ], "symbol-props.window.js": [ - "61dd8f83dc4f5ba36aebe9f61253b2763346d36e", + "8f598d7076909d447684de51b81374bf6e0acb11", [ "webstorage/symbol-props.window.html", {} @@ -934502,29 +934582,6 @@ ] ] }, - "css-sizing": { - "intrinsic-fixed-width-with-max-content-height.html": [ - "13c0743ded92bc486f95351c8a390fc367b6c5eb", - [ - null, - {} - ] - ], - "intrinsic-fixed-width-with-min-content-height.html": [ - "8ee1fb95bb335f9d403809352327208dc2d7871c", - [ - null, - {} - ] - ], - "shrink-to-fit-sizing-max-width-min-content.html": [ - "c50e6269c8bf3bdb010d1bd8e9574b785523f7e7", - [ - null, - {} - ] - ] - }, "css-text": { "text-align": { "text-align-end-018.html": [ @@ -937802,6 +937859,15 @@ {} ] ], + "parallel_execution": { + "browsing_context_set_viewport.py": [ + "4625dad0d712af05c6f1495a73b97ac86278d5b9", + [ + null, + {} + ] + ] + }, "set_viewport_with_preload_script.py": [ "790c0a1d7c30299ad2cf94ebf3b8dc9379d1e3a0", [ @@ -937873,12 +937939,10 @@ ] ], "contexts.py": [ - "dd0c5d100f6db0c9fd171a2fcf1a0f39fd1e4894", + "cc82fa75a7d138cda955f5d9020dceeedb66342a", [ null, - { - "timeout": "long" - } + {} ] ], "invalid.py": [ @@ -938801,7 +938865,7 @@ ] ], "cookie_expiry.py": [ - "f2469f8cedcdc80e16b189b5700f72d6c6bf6662", + "4b8602a84d89696f520dda5d31bf6ac4f45df3a2", [ null, {} @@ -938919,7 +938983,7 @@ }, "add_cookie": { "add.py": [ - "581040f7000a37448160ac0a1e333192b679c822", + "ceefb77111a7208baa85d5cc5824af766aa1f858", [ null, {} diff --git a/tests/wpt/meta/cookies/prefix/__HostHttp.https.tentative.html.ini b/tests/wpt/meta/cookies/prefix/__HostHttp.https.html.ini similarity index 94% rename from tests/wpt/meta/cookies/prefix/__HostHttp.https.tentative.html.ini rename to tests/wpt/meta/cookies/prefix/__HostHttp.https.html.ini index 3b1d3642be9..26733955dae 100644 --- a/tests/wpt/meta/cookies/prefix/__HostHttp.https.tentative.html.ini +++ b/tests/wpt/meta/cookies/prefix/__HostHttp.https.html.ini @@ -1,4 +1,4 @@ -[__HostHttp.https.tentative.html] +[__HostHttp.https.html] [__HostHttp: Does not set via DOM 'Secure; Path=/'] expected: FAIL diff --git a/tests/wpt/meta/cookies/prefix/__Http.https.tentative.html.ini b/tests/wpt/meta/cookies/prefix/__Http.https.html.ini similarity index 90% rename from tests/wpt/meta/cookies/prefix/__Http.https.tentative.html.ini rename to tests/wpt/meta/cookies/prefix/__Http.https.html.ini index 1d72a804839..a32f8518362 100644 --- a/tests/wpt/meta/cookies/prefix/__Http.https.tentative.html.ini +++ b/tests/wpt/meta/cookies/prefix/__Http.https.html.ini @@ -1,4 +1,4 @@ -[__Http.https.tentative.html] +[__Http.https.html] [__Http: Does not set via DOM 'Path=/'] expected: FAIL diff --git a/tests/wpt/meta/css/css-animations/parsing/animation-range-end-computed.html.ini b/tests/wpt/meta/css/css-animations/parsing/animation-range-end-computed.html.ini index 339d7aeea2e..d709393b041 100644 --- a/tests/wpt/meta/css/css-animations/parsing/animation-range-end-computed.html.ini +++ b/tests/wpt/meta/css/css-animations/parsing/animation-range-end-computed.html.ini @@ -79,3 +79,9 @@ [Property animation-range-end value '120px'] expected: FAIL + + [Property animation-range-end value '0%'] + expected: FAIL + + [Property animation-range-end value '100%'] + expected: FAIL diff --git a/tests/wpt/meta/css/css-animations/parsing/animation-range-start-computed.html.ini b/tests/wpt/meta/css/css-animations/parsing/animation-range-start-computed.html.ini index 8d4c6c84e6f..cecbd11d739 100644 --- a/tests/wpt/meta/css/css-animations/parsing/animation-range-start-computed.html.ini +++ b/tests/wpt/meta/css/css-animations/parsing/animation-range-start-computed.html.ini @@ -79,3 +79,9 @@ [Property animation-range-start value '120px'] expected: FAIL + + [Property animation-range-start value '0%'] + expected: FAIL + + [Property animation-range-start value '100%'] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/border-shape/border-shape-overflow-stroke.html.ini b/tests/wpt/meta/css/css-borders/tentative/border-shape/border-shape-overflow-stroke.html.ini new file mode 100644 index 00000000000..291fd85fd0c --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/border-shape/border-shape-overflow-stroke.html.ini @@ -0,0 +1,2 @@ +[border-shape-overflow-stroke.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/border-shape/border-shape-overflow.html.ini b/tests/wpt/meta/css/css-borders/tentative/border-shape/border-shape-overflow.html.ini new file mode 100644 index 00000000000..6c17d81109f --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/border-shape/border-shape-overflow.html.ini @@ -0,0 +1,2 @@ +[border-shape-overflow.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-conditional/at-custom-media-parsing.html.ini b/tests/wpt/meta/css/css-conditional/at-custom-media-parsing.html.ini new file mode 100644 index 00000000000..02d2d08bdb9 --- /dev/null +++ b/tests/wpt/meta/css/css-conditional/at-custom-media-parsing.html.ini @@ -0,0 +1,21 @@ +[at-custom-media-parsing.html] + [@custom-media --query (max-width: 30em) is valid] + expected: FAIL + + [@custom-media --query (color), (hover) is valid] + expected: FAIL + + [@custom-media --query not all and (hover: hover) is valid] + expected: FAIL + + [@custom-media --query true is valid] + expected: FAIL + + [@custom-media --query false is valid] + expected: FAIL + + [@custom-media -- true is valid] + expected: FAIL + + [@custom-media --foo/* */(width > 42px) is valid] + expected: FAIL diff --git a/tests/wpt/meta/css/css-fonts/font-variation-settings-serialization-002.html.ini b/tests/wpt/meta/css/css-fonts/font-variation-settings-serialization-002.html.ini new file mode 100644 index 00000000000..d4cd4f9043b --- /dev/null +++ b/tests/wpt/meta/css/css-fonts/font-variation-settings-serialization-002.html.ini @@ -0,0 +1,3 @@ +[font-variation-settings-serialization-002.html] + [Check if font variation settings serialization is sorted.] + expected: FAIL diff --git a/tests/wpt/meta/css/css-fonts/parsing/font-style-valid.html.ini b/tests/wpt/meta/css/css-fonts/parsing/font-style-valid.html.ini index 30877373762..b086a62d6f9 100644 --- a/tests/wpt/meta/css/css-fonts/parsing/font-style-valid.html.ini +++ b/tests/wpt/meta/css/css-fonts/parsing/font-style-valid.html.ini @@ -1,3 +1,6 @@ [font-style-valid.html] [e.style['font-style'\] = "oblique calc(30deg + (sign(2cqw - 10px) * 5deg))" should set the property value] expected: FAIL + + [e.style['font-style'\] = "oblique 14deg" should set the property value] + expected: FAIL diff --git a/tests/wpt/meta/css/css-gaps/animation/gap-decorations-width-neutral-keyframe-001.html.ini b/tests/wpt/meta/css/css-gaps/animation/gap-decorations-width-neutral-keyframe-001.html.ini new file mode 100644 index 00000000000..0eea26f42b3 --- /dev/null +++ b/tests/wpt/meta/css/css-gaps/animation/gap-decorations-width-neutral-keyframe-001.html.ini @@ -0,0 +1,3 @@ +[gap-decorations-width-neutral-keyframe-001.html] + [gap decorations row-rule-width supports neutral keyframe.] + expected: FAIL diff --git a/tests/wpt/meta/css/css-gaps/animation/gap-decorations-width-neutral-keyframe-002.html.ini b/tests/wpt/meta/css/css-gaps/animation/gap-decorations-width-neutral-keyframe-002.html.ini new file mode 100644 index 00000000000..173c6b7edf2 --- /dev/null +++ b/tests/wpt/meta/css/css-gaps/animation/gap-decorations-width-neutral-keyframe-002.html.ini @@ -0,0 +1,3 @@ +[gap-decorations-width-neutral-keyframe-002.html] + [gap decorations row-rule-width value list supports neutral keyframe.] + expected: FAIL diff --git a/tests/wpt/meta/css/css-gaps/animation/row-rule-width-interpolation.html.ini b/tests/wpt/meta/css/css-gaps/animation/row-rule-width-interpolation.html.ini new file mode 100644 index 00000000000..5092db86237 --- /dev/null +++ b/tests/wpt/meta/css/css-gaps/animation/row-rule-width-interpolation.html.ini @@ -0,0 +1,504 @@ +[row-rule-width-interpolation.html] + [CSS Transitions: property from neutral to [40px\] at (-0.3) should be [1px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (0) should be [10px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (0.3) should be [19px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (0.6) should be [28px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (1) should be [40px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (1.5) should be [55px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (-0.3) should be [1px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (0) should be [10px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (0.3) should be [19px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (0.6) should be [28px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (1) should be [40px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (1.5) should be [55px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (-0.3) should be [1px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (0) should be [10px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (0.3) should be [19px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (0.6) should be [28px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (1) should be [40px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (1.5) should be [55px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (-0.3) should be [1px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (0) should be [10px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (0.3) should be [19px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (0.6) should be [28px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (1) should be [40px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (1.5) should be [55px\]] + expected: FAIL + + [CSS Transitions: property from [initial\] to [40px\] at (-0.3) should be [0px\]] + expected: FAIL + + [CSS Transitions: property from [initial\] to [40px\] at (0) should be [3px\]] + expected: FAIL + + [CSS Transitions: property from [initial\] to [40px\] at (0.3) should be [14px\]] + expected: FAIL + + [CSS Transitions: property from [initial\] to [40px\] at (0.6) should be [25px\]] + expected: FAIL + + [CSS Transitions: property from [initial\] to [40px\] at (1) should be [40px\]] + expected: FAIL + + [CSS Transitions: property from [initial\] to [40px\] at (1.5) should be [58px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [initial\] to [40px\] at (-0.3) should be [0px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [initial\] to [40px\] at (0) should be [3px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [initial\] to [40px\] at (0.3) should be [14px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [initial\] to [40px\] at (0.6) should be [25px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [initial\] to [40px\] at (1) should be [40px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [initial\] to [40px\] at (1.5) should be [58px\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [40px\] at (-0.3) should be [0px\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [40px\] at (0) should be [3px\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [40px\] at (0.3) should be [14px\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [40px\] at (0.6) should be [25px\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [40px\] at (1) should be [40px\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [40px\] at (1.5) should be [58px\]] + expected: FAIL + + [Web Animations: property from [initial\] to [40px\] at (-0.3) should be [0px\]] + expected: FAIL + + [Web Animations: property from [initial\] to [40px\] at (0) should be [3px\]] + expected: FAIL + + [Web Animations: property from [initial\] to [40px\] at (0.3) should be [14px\]] + expected: FAIL + + [Web Animations: property from [initial\] to [40px\] at (0.6) should be [25px\]] + expected: FAIL + + [Web Animations: property from [initial\] to [40px\] at (1) should be [40px\]] + expected: FAIL + + [Web Animations: property from [initial\] to [40px\] at (1.5) should be [58px\]] + expected: FAIL + + [CSS Transitions: property from [inherit\] to [40px\] at (-0.3) should be [105px\]] + expected: FAIL + + [CSS Transitions: property from [inherit\] to [40px\] at (0) should be [90px\]] + expected: FAIL + + [CSS Transitions: property from [inherit\] to [40px\] at (0.3) should be [75px\]] + expected: FAIL + + [CSS Transitions: property from [inherit\] to [40px\] at (0.6) should be [60px\]] + expected: FAIL + + [CSS Transitions: property from [inherit\] to [40px\] at (1) should be [40px\]] + expected: FAIL + + [CSS Transitions: property from [inherit\] to [40px\] at (1.5) should be [15px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inherit\] to [40px\] at (-0.3) should be [105px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inherit\] to [40px\] at (0) should be [90px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inherit\] to [40px\] at (0.3) should be [75px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inherit\] to [40px\] at (0.6) should be [60px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inherit\] to [40px\] at (1) should be [40px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inherit\] to [40px\] at (1.5) should be [15px\]] + expected: FAIL + + [CSS Animations: property from [inherit\] to [40px\] at (-0.3) should be [105px\]] + expected: FAIL + + [CSS Animations: property from [inherit\] to [40px\] at (0) should be [90px\]] + expected: FAIL + + [CSS Animations: property from [inherit\] to [40px\] at (0.3) should be [75px\]] + expected: FAIL + + [CSS Animations: property from [inherit\] to [40px\] at (0.6) should be [60px\]] + expected: FAIL + + [CSS Animations: property from [inherit\] to [40px\] at (1) should be [40px\]] + expected: FAIL + + [CSS Animations: property from [inherit\] to [40px\] at (1.5) should be [15px\]] + expected: FAIL + + [Web Animations: property from [inherit\] to [40px\] at (-0.3) should be [105px\]] + expected: FAIL + + [Web Animations: property from [inherit\] to [40px\] at (0) should be [90px\]] + expected: FAIL + + [Web Animations: property from [inherit\] to [40px\] at (0.3) should be [75px\]] + expected: FAIL + + [Web Animations: property from [inherit\] to [40px\] at (0.6) should be [60px\]] + expected: FAIL + + [Web Animations: property from [inherit\] to [40px\] at (1) should be [40px\]] + expected: FAIL + + [Web Animations: property from [inherit\] to [40px\] at (1.5) should be [15px\]] + expected: FAIL + + [CSS Transitions: property from [unset\] to [40px\] at (-0.3) should be [0px\]] + expected: FAIL + + [CSS Transitions: property from [unset\] to [40px\] at (0) should be [3px\]] + expected: FAIL + + [CSS Transitions: property from [unset\] to [40px\] at (0.3) should be [14px\]] + expected: FAIL + + [CSS Transitions: property from [unset\] to [40px\] at (0.6) should be [25px\]] + expected: FAIL + + [CSS Transitions: property from [unset\] to [40px\] at (1) should be [40px\]] + expected: FAIL + + [CSS Transitions: property from [unset\] to [40px\] at (1.5) should be [58px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [unset\] to [40px\] at (-0.3) should be [0px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [unset\] to [40px\] at (0) should be [3px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [unset\] to [40px\] at (0.3) should be [14px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [unset\] to [40px\] at (0.6) should be [25px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [unset\] to [40px\] at (1) should be [40px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [unset\] to [40px\] at (1.5) should be [58px\]] + expected: FAIL + + [CSS Animations: property from [unset\] to [40px\] at (-0.3) should be [0px\]] + expected: FAIL + + [CSS Animations: property from [unset\] to [40px\] at (0) should be [3px\]] + expected: FAIL + + [CSS Animations: property from [unset\] to [40px\] at (0.3) should be [14px\]] + expected: FAIL + + [CSS Animations: property from [unset\] to [40px\] at (0.6) should be [25px\]] + expected: FAIL + + [CSS Animations: property from [unset\] to [40px\] at (1) should be [40px\]] + expected: FAIL + + [CSS Animations: property from [unset\] to [40px\] at (1.5) should be [58px\]] + expected: FAIL + + [Web Animations: property from [unset\] to [40px\] at (-0.3) should be [0px\]] + expected: FAIL + + [Web Animations: property from [unset\] to [40px\] at (0) should be [3px\]] + expected: FAIL + + [Web Animations: property from [unset\] to [40px\] at (0.3) should be [14px\]] + expected: FAIL + + [Web Animations: property from [unset\] to [40px\] at (0.6) should be [25px\]] + expected: FAIL + + [Web Animations: property from [unset\] to [40px\] at (1) should be [40px\]] + expected: FAIL + + [Web Animations: property from [unset\] to [40px\] at (1.5) should be [58px\]] + expected: FAIL + + [CSS Transitions: property from [0px\] to [100px\] at (-0.3) should be [0\]] + expected: FAIL + + [CSS Transitions: property from [0px\] to [100px\] at (0) should be [0\]] + expected: FAIL + + [CSS Transitions: property from [0px\] to [100px\] at (0.3) should be [30px\]] + expected: FAIL + + [CSS Transitions: property from [0px\] to [100px\] at (0.6) should be [60px\]] + expected: FAIL + + [CSS Transitions: property from [0px\] to [100px\] at (1) should be [100px\]] + expected: FAIL + + [CSS Transitions: property from [0px\] to [100px\] at (1.5) should be [150px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [0px\] to [100px\] at (-0.3) should be [0\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [0px\] to [100px\] at (0) should be [0\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [0px\] to [100px\] at (0.3) should be [30px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [0px\] to [100px\] at (0.6) should be [60px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [0px\] to [100px\] at (1) should be [100px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [0px\] to [100px\] at (1.5) should be [150px\]] + expected: FAIL + + [CSS Animations: property from [0px\] to [100px\] at (-0.3) should be [0\]] + expected: FAIL + + [CSS Animations: property from [0px\] to [100px\] at (0) should be [0\]] + expected: FAIL + + [CSS Animations: property from [0px\] to [100px\] at (0.3) should be [30px\]] + expected: FAIL + + [CSS Animations: property from [0px\] to [100px\] at (0.6) should be [60px\]] + expected: FAIL + + [CSS Animations: property from [0px\] to [100px\] at (1) should be [100px\]] + expected: FAIL + + [CSS Animations: property from [0px\] to [100px\] at (1.5) should be [150px\]] + expected: FAIL + + [Web Animations: property from [0px\] to [100px\] at (-0.3) should be [0\]] + expected: FAIL + + [Web Animations: property from [0px\] to [100px\] at (0) should be [0\]] + expected: FAIL + + [Web Animations: property from [0px\] to [100px\] at (0.3) should be [30px\]] + expected: FAIL + + [Web Animations: property from [0px\] to [100px\] at (0.6) should be [60px\]] + expected: FAIL + + [Web Animations: property from [0px\] to [100px\] at (1) should be [100px\]] + expected: FAIL + + [Web Animations: property from [0px\] to [100px\] at (1.5) should be [150px\]] + expected: FAIL + + [CSS Transitions: property from [thin\] to [11px\] at (-0.3) should be [0\]] + expected: FAIL + + [CSS Transitions: property from [thin\] to [11px\] at (0) should be [1px\]] + expected: FAIL + + [CSS Transitions: property from [thin\] to [11px\] at (0.3) should be [4px\]] + expected: FAIL + + [CSS Transitions: property from [thin\] to [11px\] at (0.6) should be [7px\]] + expected: FAIL + + [CSS Transitions: property from [thin\] to [11px\] at (1) should be [11px\]] + expected: FAIL + + [CSS Transitions: property from [thin\] to [11px\] at (1.5) should be [16px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [thin\] to [11px\] at (-0.3) should be [0\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [thin\] to [11px\] at (0) should be [1px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [thin\] to [11px\] at (0.3) should be [4px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [thin\] to [11px\] at (0.6) should be [7px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [thin\] to [11px\] at (1) should be [11px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [thin\] to [11px\] at (1.5) should be [16px\]] + expected: FAIL + + [CSS Animations: property from [thin\] to [11px\] at (-0.3) should be [0\]] + expected: FAIL + + [CSS Animations: property from [thin\] to [11px\] at (0) should be [1px\]] + expected: FAIL + + [CSS Animations: property from [thin\] to [11px\] at (0.3) should be [4px\]] + expected: FAIL + + [CSS Animations: property from [thin\] to [11px\] at (0.6) should be [7px\]] + expected: FAIL + + [CSS Animations: property from [thin\] to [11px\] at (1) should be [11px\]] + expected: FAIL + + [CSS Animations: property from [thin\] to [11px\] at (1.5) should be [16px\]] + expected: FAIL + + [Web Animations: property from [thin\] to [11px\] at (-0.3) should be [0\]] + expected: FAIL + + [Web Animations: property from [thin\] to [11px\] at (0) should be [1px\]] + expected: FAIL + + [Web Animations: property from [thin\] to [11px\] at (0.3) should be [4px\]] + expected: FAIL + + [Web Animations: property from [thin\] to [11px\] at (0.6) should be [7px\]] + expected: FAIL + + [Web Animations: property from [thin\] to [11px\] at (1) should be [11px\]] + expected: FAIL + + [Web Animations: property from [thin\] to [11px\] at (1.5) should be [16px\]] + expected: FAIL + + [CSS Transitions: property from [thick\] to [15px\] at (-0.3) should be [2px\]] + expected: FAIL + + [CSS Transitions: property from [thick\] to [15px\] at (0) should be [5px\]] + expected: FAIL + + [CSS Transitions: property from [thick\] to [15px\] at (0.3) should be [8px\]] + expected: FAIL + + [CSS Transitions: property from [thick\] to [15px\] at (0.6) should be [11px\]] + expected: FAIL + + [CSS Transitions: property from [thick\] to [15px\] at (1) should be [15px\]] + expected: FAIL + + [CSS Transitions: property from [thick\] to [15px\] at (1.5) should be [20px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [thick\] to [15px\] at (-0.3) should be [2px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [thick\] to [15px\] at (0) should be [5px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [thick\] to [15px\] at (0.3) should be [8px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [thick\] to [15px\] at (0.6) should be [11px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [thick\] to [15px\] at (1) should be [15px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [thick\] to [15px\] at (1.5) should be [20px\]] + expected: FAIL + + [CSS Animations: property from [thick\] to [15px\] at (-0.3) should be [2px\]] + expected: FAIL + + [CSS Animations: property from [thick\] to [15px\] at (0) should be [5px\]] + expected: FAIL + + [CSS Animations: property from [thick\] to [15px\] at (0.3) should be [8px\]] + expected: FAIL + + [CSS Animations: property from [thick\] to [15px\] at (0.6) should be [11px\]] + expected: FAIL + + [CSS Animations: property from [thick\] to [15px\] at (1) should be [15px\]] + expected: FAIL + + [CSS Animations: property from [thick\] to [15px\] at (1.5) should be [20px\]] + expected: FAIL + + [Web Animations: property from [thick\] to [15px\] at (-0.3) should be [2px\]] + expected: FAIL + + [Web Animations: property from [thick\] to [15px\] at (0) should be [5px\]] + expected: FAIL + + [Web Animations: property from [thick\] to [15px\] at (0.3) should be [8px\]] + expected: FAIL + + [Web Animations: property from [thick\] to [15px\] at (0.6) should be [11px\]] + expected: FAIL + + [Web Animations: property from [thick\] to [15px\] at (1) should be [15px\]] + expected: FAIL + + [Web Animations: property from [thick\] to [15px\] at (1.5) should be [20px\]] + expected: FAIL diff --git a/tests/wpt/meta/css/css-gaps/animation/rule-width-interpolation-multiple-values-001.html.ini b/tests/wpt/meta/css/css-gaps/animation/rule-width-interpolation-multiple-values-001.html.ini new file mode 100644 index 00000000000..07f5301783d --- /dev/null +++ b/tests/wpt/meta/css/css-gaps/animation/rule-width-interpolation-multiple-values-001.html.ini @@ -0,0 +1,144 @@ +[rule-width-interpolation-multiple-values-001.html] + [CSS Transitions: property from neutral to [40px\] at (-0.3) should be [1px 1px 1px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (0) should be [10px 10px 10px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (0.3) should be [19px 19px 19px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (0.6) should be [28px 28px 28px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (1) should be [40px 40px 40px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (1.5) should be [55px 55px 55px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (-0.3) should be [1px 1px 1px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (0) should be [10px 10px 10px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (0.3) should be [19px 19px 19px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (0.6) should be [28px 28px 28px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (1) should be [40px 40px 40px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (1.5) should be [55px 55px 55px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (-0.3) should be [1px 1px 1px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (0) should be [10px 10px 10px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (0.3) should be [19px 19px 19px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (0.6) should be [28px 28px 28px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (1) should be [40px 40px 40px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (1.5) should be [55px 55px 55px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (-0.3) should be [1px 1px 1px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (0) should be [10px 10px 10px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (0.3) should be [19px 19px 19px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (0.6) should be [28px 28px 28px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (1) should be [40px 40px 40px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (1.5) should be [55px 55px 55px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (-0.3) should be [1px 7px 14px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (0) should be [10px 15px 20px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (0.3) should be [19px 22px 26px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (0.6) should be [28px 30px 32px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (1) should be [40px 40px 40px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (1.5) should be [55px 52px 50px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (-0.3) should be [1px 7px 14px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (0) should be [10px 15px 20px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (0.3) should be [19px 22px 26px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (0.6) should be [28px 30px 32px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (1) should be [40px 40px 40px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (1.5) should be [55px 52px 50px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (-0.3) should be [1px 7px 14px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (0) should be [10px 15px 20px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (0.3) should be [19px 22px 26px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (0.6) should be [28px 30px 32px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (1) should be [40px 40px 40px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (1.5) should be [55px 52px 50px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (-0.3) should be [1px 7px 14px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (0) should be [10px 15px 20px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (0.3) should be [19px 22px 26px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (0.6) should be [28px 30px 32px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (1) should be [40px 40px 40px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (1.5) should be [55px 52px 50px\]] + expected: FAIL diff --git a/tests/wpt/meta/css/css-gaps/animation/rule-width-interpolation-multiple-values-002.html.ini b/tests/wpt/meta/css/css-gaps/animation/rule-width-interpolation-multiple-values-002.html.ini new file mode 100644 index 00000000000..5dcaa0e9b7a --- /dev/null +++ b/tests/wpt/meta/css/css-gaps/animation/rule-width-interpolation-multiple-values-002.html.ini @@ -0,0 +1,144 @@ +[rule-width-interpolation-multiple-values-002.html] + [CSS Transitions: property from neutral to [40px\] at (-0.3) should be [1px 1px 1px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (0) should be [10px 10px 10px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (0.3) should be [19px 19px 19px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (0.6) should be [28px 28px 28px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (1) should be [40px 40px 40px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (1.5) should be [55px 55px 55px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (-0.3) should be [1px 1px 1px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (0) should be [10px 10px 10px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (0.3) should be [19px 19px 19px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (0.6) should be [28px 28px 28px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (1) should be [40px 40px 40px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (1.5) should be [55px 55px 55px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (-0.3) should be [1px 1px 1px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (0) should be [10px 10px 10px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (0.3) should be [19px 19px 19px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (0.6) should be [28px 28px 28px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (1) should be [40px 40px 40px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (1.5) should be [55px 55px 55px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (-0.3) should be [1px 1px 1px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (0) should be [10px 10px 10px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (0.3) should be [19px 19px 19px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (0.6) should be [28px 28px 28px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (1) should be [40px 40px 40px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (1.5) should be [55px 55px 55px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (-0.3) should be [1px 7px 14px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (0) should be [10px 15px 20px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (0.3) should be [19px 22px 26px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (0.6) should be [28px 30px 32px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (1) should be [40px 40px 40px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [40px\] at (1.5) should be [55px 52px 50px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (-0.3) should be [1px 7px 14px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (0) should be [10px 15px 20px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (0.3) should be [19px 22px 26px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (0.6) should be [28px 30px 32px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (1) should be [40px 40px 40px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [40px\] at (1.5) should be [55px 52px 50px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (-0.3) should be [1px 7px 14px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (0) should be [10px 15px 20px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (0.3) should be [19px 22px 26px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (0.6) should be [28px 30px 32px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (1) should be [40px 40px 40px\]] + expected: FAIL + + [CSS Animations: property from neutral to [40px\] at (1.5) should be [55px 52px 50px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (-0.3) should be [1px 7px 14px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (0) should be [10px 15px 20px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (0.3) should be [19px 22px 26px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (0.6) should be [28px 30px 32px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (1) should be [40px 40px 40px\]] + expected: FAIL + + [Web Animations: property from neutral to [40px\] at (1.5) should be [55px 52px 50px\]] + expected: FAIL diff --git a/tests/wpt/meta/css/css-grid/grid-model/grid-max-content-size-with-max-content-item.html.ini b/tests/wpt/meta/css/css-grid/grid-model/grid-max-content-size-with-max-content-item.html.ini new file mode 100644 index 00000000000..eb7016bbb54 --- /dev/null +++ b/tests/wpt/meta/css/css-grid/grid-model/grid-max-content-size-with-max-content-item.html.ini @@ -0,0 +1,2 @@ +[grid-max-content-size-with-max-content-item.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-mixins/basic.html.ini b/tests/wpt/meta/css/css-mixins/basic.html.ini new file mode 100644 index 00000000000..fb69932f20e --- /dev/null +++ b/tests/wpt/meta/css/css-mixins/basic.html.ini @@ -0,0 +1,3 @@ +[basic.html] + [CSS Mixins: Basic test] + expected: FAIL diff --git a/tests/wpt/meta/css/css-mixins/contents-rule.html.ini b/tests/wpt/meta/css/css-mixins/contents-rule.html.ini new file mode 100644 index 00000000000..fe585237013 --- /dev/null +++ b/tests/wpt/meta/css/css-mixins/contents-rule.html.ini @@ -0,0 +1,15 @@ +[contents-rule.html] + [Simple @contents with no fallback] + expected: FAIL + + [Implicit semicolon after @contents, at end of block] + expected: FAIL + + [Block in @apply overrides fallback] + expected: FAIL + + [Fallback is used if @apply has no block] + expected: FAIL + + [@contents is ignored if there is no @contents parameter] + expected: FAIL diff --git a/tests/wpt/meta/css/css-mixins/cross-stylesheet.html.ini b/tests/wpt/meta/css/css-mixins/cross-stylesheet.html.ini new file mode 100644 index 00000000000..ffba89ef00c --- /dev/null +++ b/tests/wpt/meta/css/css-mixins/cross-stylesheet.html.ini @@ -0,0 +1,3 @@ +[cross-stylesheet.html] + [CSS Mixins: Mixin from another stylesheet] + expected: FAIL diff --git a/tests/wpt/meta/css/css-mixins/declarations.html.ini b/tests/wpt/meta/css/css-mixins/declarations.html.ini new file mode 100644 index 00000000000..ed5af5bfd38 --- /dev/null +++ b/tests/wpt/meta/css/css-mixins/declarations.html.ini @@ -0,0 +1,3 @@ +[declarations.html] + [CSS Mixins: Declarations directly in mixin] + expected: FAIL diff --git a/tests/wpt/meta/css/css-mixins/mixins-including-mixins.html.ini b/tests/wpt/meta/css/css-mixins/mixins-including-mixins.html.ini new file mode 100644 index 00000000000..da77f4df527 --- /dev/null +++ b/tests/wpt/meta/css/css-mixins/mixins-including-mixins.html.ini @@ -0,0 +1,3 @@ +[mixins-including-mixins.html] + [CSS Mixins: Mixins depending on other mixins] + expected: FAIL diff --git a/tests/wpt/meta/css/css-mixins/shadow-dom.html.ini b/tests/wpt/meta/css/css-mixins/shadow-dom.html.ini new file mode 100644 index 00000000000..7e24e842348 --- /dev/null +++ b/tests/wpt/meta/css/css-mixins/shadow-dom.html.ini @@ -0,0 +1,9 @@ +[shadow-dom.html] + [Style in shadow DOM should have access to outside non-adopted mixins] + expected: FAIL + + [Style in shadow DOM should have access to inside mixins] + expected: FAIL + + [Style in shadow DOM should have access to mixins from adopted stylesheets] + expected: FAIL diff --git a/tests/wpt/meta/css/css-pseudo/relative-box-order-of-pseudo-elements.html.ini b/tests/wpt/meta/css/css-pseudo/relative-box-order-of-pseudo-elements.html.ini new file mode 100644 index 00000000000..12f94f40af0 --- /dev/null +++ b/tests/wpt/meta/css/css-pseudo/relative-box-order-of-pseudo-elements.html.ini @@ -0,0 +1,2 @@ +[relative-box-order-of-pseudo-elements.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-sizing/keyword-sizes-for-intrinsic-contributions-002.html.ini b/tests/wpt/meta/css/css-sizing/keyword-sizes-for-intrinsic-contributions-002.html.ini new file mode 100644 index 00000000000..2848f605613 --- /dev/null +++ b/tests/wpt/meta/css/css-sizing/keyword-sizes-for-intrinsic-contributions-002.html.ini @@ -0,0 +1,6 @@ +[keyword-sizes-for-intrinsic-contributions-002.html] + [.test 7] + expected: FAIL + + [.test 8] + expected: FAIL diff --git a/tests/wpt/meta/css/css-tables/tentative/table-quirks.html.ini b/tests/wpt/meta/css/css-tables/tentative/table-quirks.html.ini index 29dac1be5be..c3a28fe22a4 100644 --- a/tests/wpt/meta/css/css-tables/tentative/table-quirks.html.ini +++ b/tests/wpt/meta/css/css-tables/tentative/table-quirks.html.ini @@ -4,3 +4,9 @@ [table 6] expected: FAIL + + [rowspan can't be zero] + expected: FAIL + + [table 7] + expected: FAIL diff --git a/tests/wpt/meta/css/css-values/if-initial-unregistered.html.ini b/tests/wpt/meta/css/css-values/if-initial-unregistered.html.ini new file mode 100644 index 00000000000..e32ceec3860 --- /dev/null +++ b/tests/wpt/meta/css/css-values/if-initial-unregistered.html.ini @@ -0,0 +1,3 @@ +[if-initial-unregistered.html] + [if-testing the initial keyword without any property registrations] + expected: FAIL diff --git a/tests/wpt/meta/css/filter-effects/parsing/filter-computed.html.ini b/tests/wpt/meta/css/filter-effects/parsing/filter-computed.html.ini index 5b56dd43bc6..f704dec30cf 100644 --- a/tests/wpt/meta/css/filter-effects/parsing/filter-computed.html.ini +++ b/tests/wpt/meta/css/filter-effects/parsing/filter-computed.html.ini @@ -1,3 +1,54 @@ [filter-computed.html] [Property filter value 'blur(10px) url("https://www.example.com/picture.svg#f") contrast(20) brightness(30)'] expected: FAIL + + [Property filter value 'blur(calc(100px + (sign(2cqw - 10px) * 50px)))'] + expected: FAIL + + [Property filter value 'brightness(calc(10 + (sign(2cqw - 10px) * 5)))'] + expected: FAIL + + [Property filter value 'brightness(calc(100% + (sign(2cqw - 10px) * 50%)))'] + expected: FAIL + + [Property filter value 'contrast(calc(10 + (sign(2cqw - 10px) * 5)))'] + expected: FAIL + + [Property filter value 'contrast(calc(100% + (sign(2cqw - 10px) * 50%)))'] + expected: FAIL + + [Property filter value 'drop-shadow(rgb(4, 5, 6) calc(10px + (sign(2cqw - 10px) * 5px)) 2px 0px)'] + expected: FAIL + + [Property filter value 'grayscale(calc(10 + (sign(2cqw - 10px) * 5)))'] + expected: FAIL + + [Property filter value 'grayscale(calc(100% + (sign(2cqw - 10px) * 50%)))'] + expected: FAIL + + [Property filter value 'hue-rotate(calc(90deg + (sign(2cqw - 10px) * 45deg)))'] + expected: FAIL + + [Property filter value 'invert(calc(10 + (sign(2cqw - 10px) * 5)))'] + expected: FAIL + + [Property filter value 'invert(calc(100% + (sign(2cqw - 10px) * 50%)))'] + expected: FAIL + + [Property filter value 'opacity(calc(10 + (sign(2cqw - 10px) * 5)))'] + expected: FAIL + + [Property filter value 'opacity(calc(100% + (sign(2cqw - 10px) * 50%)))'] + expected: FAIL + + [Property filter value 'saturate(calc(10 + (sign(2cqw - 10px) * 5)))'] + expected: FAIL + + [Property filter value 'saturate(calc(100% + (sign(2cqw - 10px) * 50%)))'] + expected: FAIL + + [Property filter value 'sepia(calc(10 + (sign(2cqw - 10px) * 5)))'] + expected: FAIL + + [Property filter value 'sepia(calc(100% + (sign(2cqw - 10px) * 50%)))'] + expected: FAIL diff --git a/tests/wpt/meta/css/filter-effects/parsing/filter-parsing-valid.html.ini b/tests/wpt/meta/css/filter-effects/parsing/filter-parsing-valid.html.ini index e7c91036305..494d7b74891 100644 --- a/tests/wpt/meta/css/filter-effects/parsing/filter-parsing-valid.html.ini +++ b/tests/wpt/meta/css/filter-effects/parsing/filter-parsing-valid.html.ini @@ -13,3 +13,75 @@ [e.style['filter'\] = "grayscale(calc(101% * sign(1em - 1px)))" should set the property value] expected: FAIL + + [e.style['filter'\] = "blur(calc(100px + (50px * sign(2cqw - 10px))))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "brightness(calc(10 + (5 * sign(2cqw - 10px))))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "brightness(calc(100% + (50% * sign(2cqw - 10px))))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "contrast(calc(10 + (5 * sign(2cqw - 10px))))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "contrast(calc(100% + (50% * sign(2cqw - 10px))))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "drop-shadow(rgb(4, 5, 6) calc(10px + (5px * sign(2cqw - 10px))) 2px 0px)" should set the property value] + expected: FAIL + + [e.style['filter'\] = "grayscale(calc(3))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "grayscale(calc(10 + (5 * sign(2cqw - 10px))))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "grayscale(calc(100% + (50% * sign(2cqw - 10px))))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "hue-rotate(calc(90deg + (45deg * sign(2cqw - 10px))))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "invert(calc(3))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "invert(calc(300%))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "invert(calc(10 + (5 * sign(2cqw - 10px))))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "invert(calc(100% + (50% * sign(2cqw - 10px))))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "opacity(calc(3))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "opacity(calc(300%))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "opacity(calc(10 + (5 * sign(2cqw - 10px))))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "opacity(calc(100% + (50% * sign(2cqw - 10px))))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "saturate(calc(10 + (5 * sign(2cqw - 10px))))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "saturate(calc(100% + (50% * sign(2cqw - 10px))))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "sepia(calc(3))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "sepia(calc(300%))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "sepia(calc(10 + (5 * sign(2cqw - 10px))))" should set the property value] + expected: FAIL + + [e.style['filter'\] = "sepia(calc(100% + (50% * sign(2cqw - 10px))))" should set the property value] + expected: FAIL diff --git a/tests/wpt/meta/css/selectors/invalidation/has-invalidation-first-in-sibling-chain.html.ini b/tests/wpt/meta/css/selectors/invalidation/has-invalidation-first-in-sibling-chain.html.ini new file mode 100644 index 00000000000..74f48752428 --- /dev/null +++ b/tests/wpt/meta/css/selectors/invalidation/has-invalidation-first-in-sibling-chain.html.ini @@ -0,0 +1,12 @@ +[has-invalidation-first-in-sibling-chain.html] + [#subject1 invalidated after adding first sibling] + expected: FAIL + + [#subject2 invalidated after adding first sibling] + expected: FAIL + + [#subject3 invalidated after adding first sibling] + expected: FAIL + + [#subject4 invalidated after adding first sibling] + expected: FAIL diff --git a/tests/wpt/meta/custom-elements/registries/ShadowRoot-init-customElementRegistry.html.ini b/tests/wpt/meta/custom-elements/registries/ShadowRoot-init-customElementRegistry.html.ini index 816737280ed..4126ca2f7f0 100644 --- a/tests/wpt/meta/custom-elements/registries/ShadowRoot-init-customElementRegistry.html.ini +++ b/tests/wpt/meta/custom-elements/registries/ShadowRoot-init-customElementRegistry.html.ini @@ -13,3 +13,12 @@ [attachShadow() should throw for a null customElementRegistry value] expected: FAIL + + [attachShadow() should use the global registry when customElementRegistry is null] + expected: FAIL + + [attachShadow() should use the shadow host's registry when customElementRegistry is null] + expected: FAIL + + [attachShadow() should use the null registry when the shadow host uses null registry and customElementRegistry is null] + expected: FAIL diff --git a/tests/wpt/meta/fetch/fetch-later/quota/same-origin-iframe/max-payload.tentative.https.window.js.ini b/tests/wpt/meta/fetch/fetch-later/quota/same-origin-iframe/max-payload.tentative.https.window.js.ini index 0e2ee3973ed..18740a98f45 100644 --- a/tests/wpt/meta/fetch/fetch-later/quota/same-origin-iframe/max-payload.tentative.https.window.js.ini +++ b/tests/wpt/meta/fetch/fetch-later/quota/same-origin-iframe/max-payload.tentative.https.window.js.ini @@ -1,5 +1,5 @@ [max-payload.tentative.https.window.html] - expected: ERROR + expected: TIMEOUT [fetchLater() accepts max payload in a POST request body of String in same-origin iframe.] expected: FAIL diff --git a/tests/wpt/meta/fetch/metadata/generated/css-font-face.sub.tentative.html.ini b/tests/wpt/meta/fetch/metadata/generated/css-font-face.sub.tentative.html.ini index 0ca3d822ceb..d55596a6a0d 100644 --- a/tests/wpt/meta/fetch/metadata/generated/css-font-face.sub.tentative.html.ini +++ b/tests/wpt/meta/fetch/metadata/generated/css-font-face.sub.tentative.html.ini @@ -49,3 +49,6 @@ [sec-fetch-storage-access - Not sent to non-trustworthy same-site destination] expected: FAIL + + [sec-fetch-storage-access - Not sent to non-trustworthy cross-site destination] + expected: FAIL diff --git a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/009.html.ini b/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/009.html.ini deleted file mode 100644 index 3fb21c9b2c6..00000000000 --- a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/009.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[009.html] - [Link with onclick form submit to javascript url with document.write and href navigation ] - expected: FAIL diff --git a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini b/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini index 74e31de447e..149bcb4ff8c 100644 --- a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini +++ b/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini @@ -2,9 +2,6 @@ [load & pageshow event do not fire on contentWindow of

- + function onDropCallBack(event) { + let style = window.getComputedStyle(canvas); + let currentColor = "rgba(0, 0, 0, 0)"; + assert_equals(style.getPropertyValue("background-color"), currentColor); + return true; + } + + const div = document.querySelector('div'); + const iframe = document.querySelector('iframe'); + dragDropTest(div, canvas, onDropCallBack, + 'Dragging the div to the bottom iframe should turn it green', /*dragIframe=*/ null, iframe); + } + test(); + diff --git a/tests/wpt/tests/html/editing/dnd/canvas/007.html b/tests/wpt/tests/html/editing/dnd/canvas/007.html index d0ff4f64bab..da32922d413 100644 --- a/tests/wpt/tests/html/editing/dnd/canvas/007.html +++ b/tests/wpt/tests/html/editing/dnd/canvas/007.html @@ -6,37 +6,38 @@ -Drag and drop between iframes: dropping block element onto canvas - + Drag and drop between iframes: dropping block element onto canvas + -

-

Drag green box above to the gray canvas below. Canvas should turn green when you drop green box on it.

-

- + function onDropCallBack(event) { + let style = window.getComputedStyle(canvas); + let currentColor = "rgba(0, 0, 0, 0)"; + assert_equals(style.getPropertyValue("background-color"), currentColor); + return true; + } + + const dragIframe = document.getElementById('drag-iframe'); + const dropIframe = document.getElementById('drop-iframe'); + dragDropTest(div, canvas, onDropCallBack, 'Dragging the iframe to the bottom iframe should turn it green', + dragIframe, dropIframe); + } + test(); + diff --git a/tests/wpt/tests/html/editing/dnd/images/007.html b/tests/wpt/tests/html/editing/dnd/images/007.html index 2ca3568651e..a98d915a41b 100644 --- a/tests/wpt/tests/html/editing/dnd/images/007.html +++ b/tests/wpt/tests/html/editing/dnd/images/007.html @@ -32,7 +32,7 @@ assert_equals(div.querySelector('img').src, img.src); return true; } - dragDropTest(img, div, onDropCallBack, 'Dragging a dataURL image to an iframe should copy it there', iframe); + dragDropTest(img, div, onDropCallBack, 'Dragging a dataURL image to an iframe should copy it there', /*dragIframe=*/null, iframe); } test(); diff --git a/tests/wpt/tests/html/editing/dnd/images/008.html b/tests/wpt/tests/html/editing/dnd/images/008.html index 99c242e7c24..58d0be48c4a 100644 --- a/tests/wpt/tests/html/editing/dnd/images/008.html +++ b/tests/wpt/tests/html/editing/dnd/images/008.html @@ -32,7 +32,7 @@ return true; } dragDropTest(dragIframe, div, onDropCallBack, - 'Dragging a dataURL image within an iframe to another iframe should copy it there', dropIframe); + 'Dragging a dataURL image within an iframe to another iframe should copy it there', dragIframe, dropIframe); } test(); diff --git a/tests/wpt/tests/html/editing/dnd/images/010.html b/tests/wpt/tests/html/editing/dnd/images/010.html index 4743e1520c8..1cf514f5368 100644 --- a/tests/wpt/tests/html/editing/dnd/images/010.html +++ b/tests/wpt/tests/html/editing/dnd/images/010.html @@ -34,7 +34,7 @@ assert_equals(div.querySelector('img').src, img.src); return true; } - dragDropTest(img, div, onDropCallBack, 'Dragging an image to an iframe should copy it there', iframe) + dragDropTest(img, div, onDropCallBack, 'Dragging an image to an iframe should copy it there', /*dragIframe=*/null, iframe) }; test(); diff --git a/tests/wpt/tests/html/editing/dnd/images/011.xhtml b/tests/wpt/tests/html/editing/dnd/images/011.xhtml index 905ce2c4f81..c0462a81602 100644 --- a/tests/wpt/tests/html/editing/dnd/images/011.xhtml +++ b/tests/wpt/tests/html/editing/dnd/images/011.xhtml @@ -1,17 +1,42 @@ -Image drag and drop between iframes - + + + + + + + Image drag and drop between iframes + -

-

Drag circle above to the box below. It should be copied to the box once you drop it there.

-

+

+

Drag circle above to the box below. It should be copied to the box once you drop it there.

+

+ diff --git a/tests/wpt/tests/html/editing/dnd/images/012.xhtml b/tests/wpt/tests/html/editing/dnd/images/012.xhtml index d323d0a02ee..bd4daef4665 100644 --- a/tests/wpt/tests/html/editing/dnd/images/012.xhtml +++ b/tests/wpt/tests/html/editing/dnd/images/012.xhtml @@ -1,10 +1,45 @@ + + + + + + -Drag and drop of dataURL image between frames + Drag and drop of dataURL image between iframes + - - - - + + + + + diff --git a/tests/wpt/tests/html/editing/dnd/images/013.xhtml b/tests/wpt/tests/html/editing/dnd/images/013.xhtml index ffa7f3b74b5..254325ebbe7 100644 --- a/tests/wpt/tests/html/editing/dnd/images/013.xhtml +++ b/tests/wpt/tests/html/editing/dnd/images/013.xhtml @@ -1,10 +1,45 @@ + + + + + + -Drag and drop of image between frames + Drag and drop of image between frames + - - - - + + + + + diff --git a/tests/wpt/tests/html/editing/dnd/images/014.xhtml b/tests/wpt/tests/html/editing/dnd/images/014.xhtml index 1acb985a8d5..137ed0b0bb7 100644 --- a/tests/wpt/tests/html/editing/dnd/images/014.xhtml +++ b/tests/wpt/tests/html/editing/dnd/images/014.xhtml @@ -1,10 +1,45 @@ + + + + + + -Drag and drop of image between two instances of document + Drag and drop of image between two instances of document + - - - - + + + + + diff --git a/tests/wpt/tests/html/editing/dnd/images/021.html b/tests/wpt/tests/html/editing/dnd/images/021.html index 62476c16f54..2952e742369 100644 --- a/tests/wpt/tests/html/editing/dnd/images/021.html +++ b/tests/wpt/tests/html/editing/dnd/images/021.html @@ -41,7 +41,7 @@ async function test(){ return true; } - dragDropTest(img, div, onDropCallBack, 'Dragging the image to the horizontal iframe scrollbar should copy it there', iframe); + dragDropTest(img, div, onDropCallBack, 'Dragging the image to the horizontal iframe scrollbar should copy it there', /*dragIframe=*/null, iframe); } test(); diff --git a/tests/wpt/tests/html/editing/dnd/resources/test-helper.js b/tests/wpt/tests/html/editing/dnd/resources/test-helper.js index c7c80958fd5..a77bce83b50 100644 --- a/tests/wpt/tests/html/editing/dnd/resources/test-helper.js +++ b/tests/wpt/tests/html/editing/dnd/resources/test-helper.js @@ -3,20 +3,22 @@ // This method calculates the center of an element in an iframe in the // coordinate space of the top frame. We need this because TestDriver doesn't // support Actions `{origin}`s across two different frames. -const getElemCenterInIframe = (element, iframe) => { +const getElemCenterInIframe = (element, iframe) => { const elemClientRect = element.getBoundingClientRect(); const frameClientRect = iframe.getBoundingClientRect(); - const centerX = frameClientRect.left + (elemClientRect.left + elemClientRect.right) / 2; - const centerY = frameClientRect.top + (elemClientRect.top + elemClientRect.bottom) / 2; + const centerX = frameClientRect.left + (elemClientRect.left + elemClientRect + .right) / 2; + const centerY = frameClientRect.top + (elemClientRect.top + elemClientRect + .bottom) / 2; return [centerX, centerY]; }; // This method appends a pointer move action to the `actions` argument that // moves the pointer to the center of the `element` and returns it. const movePointerToCenter = (element, iframe, actions) => { -return (iframe == undefined) ? - actions.pointerMove(0, 0, {origin: element}) : - actions.pointerMove(...getElemCenterInIframe(element, iframe)) + return (iframe == undefined) ? actions.pointerMove(0, 0, { + origin: element + }) : actions.pointerMove(...getElemCenterInIframe(element, iframe)) } // The dragDropTest function can be used for tests which require the drag and drop movement. @@ -25,7 +27,8 @@ return (iframe == undefined) ? // test will only pass if this function returns true. Also, if the `dropElement` is inside an // iframe, use the optional `iframe` parameter to specify an iframe element that contains the // `dropElement` to ensure that tests with an iframe pass. -function dragDropTest(dragElement, dropElement, onDropCallBack, testDescription, iframe = undefined) { +function dragDropTest(dragElement, dropElement, onDropCallBack, testDescription, + dragIframe = undefined, dropIframe = undefined) { promise_test((t) => new Promise(async (resolve, reject) => { dropElement.addEventListener('drop', t.step_func((event) => { if (onDropCallBack(event) == true) { @@ -35,11 +38,12 @@ function dragDropTest(dragElement, dropElement, onDropCallBack, testDescription, } })); try { - var actions = new test_driver.Actions() - .pointerMove(0, 0, {origin: dragElement}) + var actions = new test_driver.Actions(); + actions = movePointerToCenter(dragElement, dragIframe, actions) .pointerDown(); - actions = movePointerToCenter(dropElement, iframe, actions); - await actions.pointerUp().send(); + actions = movePointerToCenter(dropElement, dropIframe, actions) + .pointerUp(); + await actions.send(); } catch (e) { reject(e); } diff --git a/tests/wpt/tests/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types-alternate-ref.html b/tests/wpt/tests/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types-alternate-ref.html new file mode 100644 index 00000000000..9b57d520dd0 --- /dev/null +++ b/tests/wpt/tests/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types-alternate-ref.html @@ -0,0 +1,8 @@ + + + + + +
+
+
diff --git a/tests/wpt/tests/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types-ref.html b/tests/wpt/tests/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types-ref.html index 5042557212e..d13dcf8eaf9 100644 --- a/tests/wpt/tests/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types-ref.html +++ b/tests/wpt/tests/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types-ref.html @@ -1,8 +1,8 @@ - - + + + +
- - diff --git a/tests/wpt/tests/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types.html b/tests/wpt/tests/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types.html index f16c58bb85d..d767fffe9bf 100644 --- a/tests/wpt/tests/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types.html +++ b/tests/wpt/tests/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types.html @@ -1,12 +1,10 @@ - - - - - - + + + + +
- - + diff --git a/tests/wpt/tests/html/rendering/non-replaced-elements/lists/list-style-position-quirks-mode-ref.html b/tests/wpt/tests/html/rendering/non-replaced-elements/lists/list-style-position-quirks-mode-ref.html new file mode 100644 index 00000000000..eaf2461b43e --- /dev/null +++ b/tests/wpt/tests/html/rendering/non-replaced-elements/lists/list-style-position-quirks-mode-ref.html @@ -0,0 +1,21 @@ + + +
+
  • unspecified
  • +
  • outside
  • +
  • initial
  • +
  • inherit
  • +
  • unset
  • +
  • revert
  • +
  • revert-layer
  • +
    diff --git a/tests/wpt/tests/html/rendering/non-replaced-elements/lists/list-style-position-quirks-mode.html b/tests/wpt/tests/html/rendering/non-replaced-elements/lists/list-style-position-quirks-mode.html new file mode 100644 index 00000000000..883f7de1a94 --- /dev/null +++ b/tests/wpt/tests/html/rendering/non-replaced-elements/lists/list-style-position-quirks-mode.html @@ -0,0 +1,23 @@ + + + + +
    +
  • unspecified
  • +
  • outside
  • +
  • initial
  • +
  • inherit
  • +
  • unset
  • +
  • revert
  • +
  • revert-layer
  • +
    diff --git a/tests/wpt/tests/html/semantics/document-metadata/the-link-element/link-multiple-error-events.html b/tests/wpt/tests/html/semantics/document-metadata/the-link-element/link-multiple-error-events.html deleted file mode 100644 index 9d112e88d13..00000000000 --- a/tests/wpt/tests/html/semantics/document-metadata/the-link-element/link-multiple-error-events.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/tests/wpt/tests/html/semantics/document-metadata/the-link-element/link-multiple-load-events.html b/tests/wpt/tests/html/semantics/document-metadata/the-link-element/link-multiple-load-events.html index b5550bb382c..a2dd7c00065 100644 --- a/tests/wpt/tests/html/semantics/document-metadata/the-link-element/link-multiple-load-events.html +++ b/tests/wpt/tests/html/semantics/document-metadata/the-link-element/link-multiple-load-events.html @@ -3,19 +3,137 @@ - + + document.head.append(link); + t.add_cleanup(() => { + link.remove(); + }); + + await Promise.race([firstLoadPromise, getTimeoutPromise(t, 'first resource')]); + response = await fetch(`stylesheet.py?id=${id}&count=foo`); + count = await response.text(); + assert_equals(count, '1', "server sees first style sheet request"); + + const secondLoadPromise = new Promise((resolve, reject) => { + link.onload = () => reject('second load event unexpectedly fired'); + }); + const expectedTimeoutPromise = new Promise(resolve => { + t.step_timeout(resolve, 2000); + }); + + link[attribute] = link[attribute]; + await Promise.race([expectedTimeoutPromise, secondLoadPromise]); + response = await fetch(`stylesheet.py?id=${id}&count=foo`); + count = await response.text(); + assert_equals(count, '0', + "server does not see second request to the same style sheet"); + }, ` cannot request the same resource twice by touching the ` + + `'${attribute}' attribute, if its value never changes`); +} + + +promise_test(async t => { + const id = token(); + const link = document.createElement('link'); + link.rel = 'preload'; + link.as = 'style'; + document.head.append(link); + t.add_cleanup(() => { + link.remove(); + }); + + let count = 0; + let response = null; + + link.onerror = t.unreached_func('Sheet should load successfully'); + const firstLoadPromise = new Promise(resolve => { + link.onload = resolve; + }); + + link.href = `stylesheet.py?id=${id}`; + await Promise.race([firstLoadPromise, getTimeoutPromise(t, 'first resource')]); + response = await fetch(`stylesheet.py?id=${id}&count=foo`); + count = await response.text(); + assert_equals(count, '1', "server sees preload request"); + + const secondLoadPromise = new Promise(resolve => { + link.onload = resolve; + }); + + // Switching from `rel=preload` => `rel=stylesheet` triggers the stylesheet + // processing model. The resource loads from the preload cache and never + // touches the network, but the load event does fire again. + link.rel = 'stylesheet'; + await Promise.race([secondLoadPromise, + getTimeoutPromise(t, 'rel=stylesheet using preload cache')]); + response = await fetch(`stylesheet.py?id=${id}&count=foo`); + count = await response.text(); + assert_equals(count, '0', "server does not see second request to the same style sheet"); +}, " load event can fire twice for the same href resource, based on " + + "'rel' attribute mutations"); + +promise_test(async t => { + const link = document.createElement('link'); + link.rel = 'stylesheet'; + document.head.append(link); + t.add_cleanup(() => { + link.remove(); + }); + + link.onerror = t.unreached_func('Sheet should load successfully'); + const firstLoadPromise = new Promise(resolve => { + link.onload = resolve; + }); + + link.href = 'style.css?first'; + await Promise.race([firstLoadPromise, getTimeoutPromise(t, 'first resource')]); + + const secondLoadPromise = new Promise(resolve => { + link.onload = resolve; + }); + + link.href = 'style.css?second'; + await Promise.race([secondLoadPromise, getTimeoutPromise(t, 'second resource')]); + + const thirdLoadPromise = new Promise(resolve => { + link.onload = resolve; + }); + + link.href = 'style.css?third'; + await Promise.race([thirdLoadPromise, getTimeoutPromise(t, 'third resource')]); +}, " load event fires for each DIFFERENT stylesheet it loads"); + diff --git a/tests/wpt/tests/html/semantics/document-metadata/the-link-element/stylesheet.py b/tests/wpt/tests/html/semantics/document-metadata/the-link-element/stylesheet.py index 1a4dec27244..241b5eee9ae 100644 --- a/tests/wpt/tests/html/semantics/document-metadata/the-link-element/stylesheet.py +++ b/tests/wpt/tests/html/semantics/document-metadata/the-link-element/stylesheet.py @@ -3,7 +3,9 @@ def main(request, response): count = int(request.server.stash.take(request.GET[b"id"])) except: count = 0 + if b"count" in request.GET: return str(count) request.server.stash.put(request.GET[b"id"], str(count + 1)) - return u'body { color: red }' + headers = [(b"Content-Type", b"text/css")] + return 200, headers, u'body {color: red;}' diff --git a/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/move-node-local-root-events-still-fire.html b/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/move-node-local-root-events-still-fire.html new file mode 100644 index 00000000000..46be7e828e8 --- /dev/null +++ b/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/move-node-local-root-events-still-fire.html @@ -0,0 +1,68 @@ + +Node moves to another document + + + + + + + + + + + + + diff --git a/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/move-node-local-root.html b/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/move-node-local-root.html new file mode 100644 index 00000000000..33a247ff1f1 --- /dev/null +++ b/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/move-node-local-root.html @@ -0,0 +1,61 @@ + +Node moves to another document + + + + + + + + + + diff --git a/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/resources/create-button-with-pointerdown-listener.html b/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/resources/create-button-with-pointerdown-listener.html new file mode 100644 index 00000000000..36aeb7a7e6a --- /dev/null +++ b/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/resources/create-button-with-pointerdown-listener.html @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/resources/cross-origin-middle-frame-2.html b/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/resources/cross-origin-middle-frame-2.html new file mode 100644 index 00000000000..a426be9342f --- /dev/null +++ b/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/resources/cross-origin-middle-frame-2.html @@ -0,0 +1,21 @@ + + + + + + + diff --git a/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/resources/cross-origin-middle-frame.html b/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/resources/cross-origin-middle-frame.html new file mode 100644 index 00000000000..8abe85d31a3 --- /dev/null +++ b/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/resources/cross-origin-middle-frame.html @@ -0,0 +1,19 @@ + + + + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-input-element/show-picker-disabled-readonly.html b/tests/wpt/tests/html/semantics/forms/the-input-element/show-picker-disabled-readonly.html index a5aae659038..74448f70fb5 100644 --- a/tests/wpt/tests/html/semantics/forms/the-input-element/show-picker-disabled-readonly.html +++ b/tests/wpt/tests/html/semantics/forms/the-input-element/show-picker-disabled-readonly.html @@ -37,10 +37,12 @@ for (const inputType of inputTypes) { const input = document.createElement("input"); input.setAttribute("type", inputType); input.setAttribute("readonly", ""); + document.body.appendChild(input); await test_driver.bless('show picker'); input.showPicker(); input.blur(); + input.remove(); assert_false(navigator.userActivation.isActive, 'User activation is consumed for non-readonly showPicker() call'); }, `input[type=${inputType}] showPicker() doesn't throw when readonly`); diff --git a/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-popover-overlay-ref.html b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-popover-overlay-ref.html new file mode 100644 index 00000000000..46581691ffc --- /dev/null +++ b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-popover-overlay-ref.html @@ -0,0 +1,15 @@ + + +
    + + diff --git a/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-popover-overlay.html b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-popover-overlay.html new file mode 100644 index 00000000000..7fa820e76ff --- /dev/null +++ b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-popover-overlay.html @@ -0,0 +1,33 @@ + + + + + + + +
    + + + + diff --git a/tests/wpt/tests/html/semantics/permission-element/inherited-css-ref.html b/tests/wpt/tests/html/semantics/permission-element/inherited-css-ref.html new file mode 100644 index 00000000000..6714e3116a7 --- /dev/null +++ b/tests/wpt/tests/html/semantics/permission-element/inherited-css-ref.html @@ -0,0 +1,9 @@ + + + + +
    + +
    + + \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/permission-element/inherited-css-tentative.html b/tests/wpt/tests/html/semantics/permission-element/inherited-css-tentative.html new file mode 100644 index 00000000000..f1a8d3b6f03 --- /dev/null +++ b/tests/wpt/tests/html/semantics/permission-element/inherited-css-tentative.html @@ -0,0 +1,19 @@ + + + + + + + +
    + +
    + + \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/popovers/popover-hidden-appearance.html b/tests/wpt/tests/html/semantics/popovers/popover-hidden-appearance.html new file mode 100644 index 00000000000..5cfa8a70354 --- /dev/null +++ b/tests/wpt/tests/html/semantics/popovers/popover-hidden-appearance.html @@ -0,0 +1,36 @@ + + + + + + + +
    +
    + + + + diff --git a/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss-scroll-within.html b/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss-scroll-within.html index 053ea03ab3b..6bc280fe43e 100644 --- a/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss-scroll-within.html +++ b/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss-scroll-within.html @@ -1,5 +1,6 @@ + Popover light dismiss behavior when scrolled within diff --git a/tests/wpt/tests/html/webappapis/scripting/events/event-handler-attributes-body-window.html b/tests/wpt/tests/html/webappapis/scripting/events/event-handler-attributes-body-window.html index e8055d99f35..8c3f3f7633c 100644 --- a/tests/wpt/tests/html/webappapis/scripting/events/event-handler-attributes-body-window.html +++ b/tests/wpt/tests/html/webappapis/scripting/events/event-handler-attributes-body-window.html @@ -1,11 +1,10 @@ HTMLBodyElement event handlers - -
    + + + diff --git a/tests/wpt/tests/notifications/icon-url-encoding-euc-kr.tentative.https.html b/tests/wpt/tests/notifications/icon-url-encoding-euc-kr.tentative.https.html new file mode 100644 index 00000000000..93aeac0721d --- /dev/null +++ b/tests/wpt/tests/notifications/icon-url-encoding-euc-kr.tentative.https.html @@ -0,0 +1,18 @@ + + + + + + + diff --git a/tests/wpt/tests/pointerevents/bugs/events_after_lostpointercapture_remove_setcapture_node.html b/tests/wpt/tests/pointerevents/bugs/events_after_lostpointercapture_remove_setcapture_node.html new file mode 100644 index 00000000000..ec478a68006 --- /dev/null +++ b/tests/wpt/tests/pointerevents/bugs/events_after_lostpointercapture_remove_setcapture_node.html @@ -0,0 +1,73 @@ + + + + Lostpointercapture removing new capture element prevents the new capture + + + + + + + + + + +
    +
    +
    + + + diff --git a/tests/wpt/tests/pointerevents/pointerevent_lostpointercapture_remove_setcapture_node.html b/tests/wpt/tests/pointerevents/pointerevent_lostpointercapture_remove_setcapture_node.html index 8da1b7d28c4..c20f62174bd 100644 --- a/tests/wpt/tests/pointerevents/pointerevent_lostpointercapture_remove_setcapture_node.html +++ b/tests/wpt/tests/pointerevents/pointerevent_lostpointercapture_remove_setcapture_node.html @@ -1,7 +1,7 @@ - Lostpointercapture fires on document when target is removed + Lostpointercapture removing new capture element prevents the new capture @@ -12,46 +12,30 @@ -

    Pointer Events - lostpointercapture removes new capture element


    diff --git a/tests/wpt/tests/pointerevents/pointerevent_pointerrawupdate_changes_pointer_capture.https.html b/tests/wpt/tests/pointerevents/pointerevent_pointerrawupdate_changes_pointer_capture.https.html new file mode 100644 index 00000000000..d4c701ac2b8 --- /dev/null +++ b/tests/wpt/tests/pointerevents/pointerevent_pointerrawupdate_changes_pointer_capture.https.html @@ -0,0 +1,295 @@ + + + + + + +Test for handling of "fire a pointer event named pointerrawupdate" + + + + + + + + + +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/tests/pointerevents/pointerevent_target_at_clicking_link_in_image_map.html b/tests/wpt/tests/pointerevents/pointerevent_target_at_clicking_link_in_image_map.html new file mode 100644 index 00000000000..b199956ceb1 --- /dev/null +++ b/tests/wpt/tests/pointerevents/pointerevent_target_at_clicking_link_in_image_map.html @@ -0,0 +1,76 @@ + + + + + + + +Event targets of clicking a link in an image map + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/preload/prefetch-time-to-fetch.https.html b/tests/wpt/tests/preload/prefetch-time-to-fetch.https.html index 528cd657f6a..7f0177aebdb 100644 --- a/tests/wpt/tests/preload/prefetch-time-to-fetch.https.html +++ b/tests/wpt/tests/preload/prefetch-time-to-fetch.https.html @@ -43,10 +43,10 @@ test_prefetch_change( 'Changing a prefetch href should trigger a fetch'); test_prefetch_change( - {href: `${REMOTE_ORIGIN}/common/square.png?pipe=header(Access-Control-Allow-Origin, *)`}, - {href: `${REMOTE_ORIGIN}/common/square.png?pipe=header(Access-Control-Allow-Origin, *)`, crossorigin: 'anonymous'}, - ['load', 'load'], - 'Changing a prefetch crossorigin attribute should trigger a fetch'); + {href: `${REMOTE_ORIGIN}/common/square.png?pipe=header(Access-Control-Allow-Origin,*)`}, + {href: `${REMOTE_ORIGIN}/common/square.png?pipe=header(Access-Control-Allow-Origin,*)`, crossorigin: 'anonymous'}, + ['load', 'timeout'], + 'Changing a prefetch crossorigin attribute does not trigger a fetch'); - \ No newline at end of file + diff --git a/tests/wpt/tests/resources/testharness.js b/tests/wpt/tests/resources/testharness.js index 6ccede34483..b5847ed406a 100644 --- a/tests/wpt/tests/resources/testharness.js +++ b/tests/wpt/tests/resources/testharness.js @@ -1132,7 +1132,7 @@ * * Typically this function is called implicitly on page load; it's * only necessary for users to call this when either the - * ``explicit_done`` or ``single_page`` properties have been set + * ``explicit_done`` or ``single_test`` properties have been set * via the :js:func:`setup` function. * * For single page tests this marks the test as complete and sets its status. diff --git a/tests/wpt/tests/resources/web-bluetooth-bidi-test.js b/tests/wpt/tests/resources/web-bluetooth-bidi-test.js index 044ad1a43ae..3283fef43fc 100644 --- a/tests/wpt/tests/resources/web-bluetooth-bidi-test.js +++ b/tests/wpt/tests/resources/web-bluetooth-bidi-test.js @@ -6,12 +6,22 @@ function convertToBidiManufacturerData(manufacturerData) { const bidiManufacturerData = []; for (const key in manufacturerData) { - bidiManufacturerData.push( - {key: parseInt(key), data: btoa(manufacturerData[key].buffer)}) + bidiManufacturerData.push({ + key: parseInt(key), + data: btoa(String.fromCharCode(...manufacturerData[key])) + }) } return bidiManufacturerData; } +function ArrayToMojoCharacteristicProperties(arr) { + const struct = {}; + arr.forEach(property => { + struct[property] = true; + }); + return struct; +} + class FakeBluetooth { constructor() { this.fake_central_ = null; @@ -63,7 +73,8 @@ class FakeCentral { address: address, name: name, manufacturerData: convertToBidiManufacturerData(manufacturerData), - knownServiceUuids: knownServiceUUIDs + knownServiceUuids: + knownServiceUUIDs.map(uuid => BluetoothUUID.getService(uuid)) }); return this.fetchOrCreatePeripheral_(address); @@ -84,6 +95,312 @@ class FakePeripheral { constructor(address) { this.address = address; } + + // Adds a fake GATT Service with |uuid| to be discovered when discovering + // the peripheral's GATT Attributes. Returns a FakeRemoteGATTService + // corresponding to this service. |uuid| should be a BluetoothServiceUUIDs + // https://webbluetoothcg.github.io/web-bluetooth/#typedefdef-bluetoothserviceuuid + async addFakeService({uuid}) { + const service_uuid = BluetoothUUID.getService(uuid); + await test_driver.bidi.bluetooth.simulate_service({ + address: this.address, + uuid: service_uuid, + type: 'add', + }); + return new FakeRemoteGATTService(service_uuid, this.address); + } + + // Sets the next GATT Connection request response to |code|. |code| could be + // an HCI Error Code from BT 4.2 Vol 2 Part D 1.3 List Of Error Codes or a + // number outside that range returned by specific platforms e.g. Android + // returns 0x101 to signal a GATT failure + // https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html#GATT_FAILURE + async setNextGATTConnectionResponse({code}) { + const remove_handler = + test_driver.bidi.bluetooth.gatt_connection_attempted.on((event) => { + if (event.address != this.address) { + return; + } + remove_handler(); + test_driver.bidi.bluetooth.simulate_gatt_connection_response({ + address: event.address, + code, + }); + }); + } + + async setNextGATTDiscoveryResponse({code}) { + // No-op for Web Bluetooth Bidi test, it will be removed when migration + // completes. + return Promise.resolve(); + } + + // Simulates a GATT connection response with |code| from the peripheral. + async simulateGATTConnectionResponse(code) { + await test_driver.bidi.bluetooth.simulate_gatt_connection_response( + {address: this.address, code}); + } + + // Simulates a GATT disconnection in the peripheral. + async simulateGATTDisconnection() { + await test_driver.bidi.bluetooth.simulate_gatt_disconnection( + {address: this.address}); + } +} + +class FakeRemoteGATTService { + constructor(service_uuid, peripheral_address) { + this.service_uuid_ = service_uuid; + this.peripheral_address_ = peripheral_address; + } + + // Adds a fake GATT Characteristic with |uuid| and |properties| + // to this fake service. The characteristic will be found when discovering + // the peripheral's GATT Attributes. Returns a FakeRemoteGATTCharacteristic + // corresponding to the added characteristic. + async addFakeCharacteristic({uuid, properties}) { + const characteristic_uuid = BluetoothUUID.getCharacteristic(uuid); + await test_driver.bidi.bluetooth.simulate_characteristic({ + address: this.peripheral_address_, + serviceUuid: this.service_uuid_, + characteristicUuid: characteristic_uuid, + characteristicProperties: ArrayToMojoCharacteristicProperties(properties), + type: 'add' + }); + return new FakeRemoteGATTCharacteristic( + characteristic_uuid, this.service_uuid_, this.peripheral_address_); + } + + // Removes the fake GATT service from its fake peripheral. + async remove() { + await test_driver.bidi.bluetooth.simulate_service({ + address: this.peripheral_address_, + uuid: this.service_uuid_, + type: 'remove' + }); + } +} + +class FakeRemoteGATTCharacteristic { + constructor(characteristic_uuid, service_uuid, peripheral_address) { + this.characteristic_uuid_ = characteristic_uuid; + this.service_uuid_ = service_uuid; + this.peripheral_address_ = peripheral_address; + this.last_written_value_ = {lastValue: null, lastWriteType: 'none'}; + } + + // Adds a fake GATT Descriptor with |uuid| to be discovered when + // discovering the peripheral's GATT Attributes. Returns a + // FakeRemoteGATTDescriptor corresponding to this descriptor. |uuid| should + // be a BluetoothDescriptorUUID + // https://webbluetoothcg.github.io/web-bluetooth/#typedefdef-bluetoothdescriptoruuid + async addFakeDescriptor({uuid}) { + const descriptor_uuid = BluetoothUUID.getDescriptor(uuid); + await test_driver.bidi.bluetooth.simulate_descriptor({ + address: this.peripheral_address_, + serviceUuid: this.service_uuid_, + characteristicUuid: this.characteristic_uuid_, + descriptorUuid: descriptor_uuid, + type: 'add' + }); + return new FakeRemoteGATTDescriptor( + descriptor_uuid, this.characteristic_uuid_, this.service_uuid_, + this.peripheral_address_); + } + + // Simulate a characteristic for operation |type| with response |code| and + // |data|. + async simulateResponse(type, code, data) { + await test_driver.bidi.bluetooth.simulate_characteristic_response({ + address: this.peripheral_address_, + serviceUuid: this.service_uuid_, + characteristicUuid: this.characteristic_uuid_, + type, + code, + data, + }); + } + + // Simulate a characteristic response for read operation with response |code| + // and |data|. + async simulateReadResponse(code, data) { + await this.simulateResponse('read', code, data); + } + + // Simulate a characteristic response for write operation with response + // |code|. + async simulateWriteResponse(code) { + await this.simulateResponse('write', code); + } + + // Sets the next read response for characteristic to |code| and |value|. + // |code| could be a GATT Error Response from + // BT 4.2 Vol 3 Part F 3.4.1.1 Error Response or a number outside that range + // returned by specific platforms e.g. Android returns 0x101 to signal a GATT + // failure. + // https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html#GATT_FAILURE + async setNextReadResponse(gatt_code, value = null) { + if (gatt_code === 0 && value === null) { + throw '|value| can\'t be null if read should success.'; + } + if (gatt_code !== 0 && value !== null) { + throw '|value| must be null if read should fail.'; + } + + const remove_handler = + test_driver.bidi.bluetooth.characteristic_event_generated.on( + (event) => { + if (event.address != this.peripheral_address_) { + return; + } + remove_handler(); + this.simulateReadResponse(gatt_code, value); + }); + } + + // Sets the next write response for this characteristic to |code|. If + // writing to a characteristic that only supports 'write-without-response' + // the set response will be ignored. + // |code| could be a GATT Error Response from + // BT 4.2 Vol 3 Part F 3.4.1.1 Error Response or a number outside that range + // returned by specific platforms e.g. Android returns 0x101 to signal a GATT + // failure. + async setNextWriteResponse(gatt_code) { + const remove_handler = + test_driver.bidi.bluetooth.characteristic_event_generated.on( + (event) => { + if (event.address != this.peripheral_address_) { + return; + } + this.last_written_value_ = { + lastValue: event.data, + lastWriteType: event.type + }; + remove_handler(); + if (event.type == 'write-with-response') { + this.simulateWriteResponse(gatt_code); + } + }); + } + + // Gets the last successfully written value to the characteristic and its + // write type. Write type is one of 'none', 'default-deprecated', + // 'with-response', 'without-response'. Returns {lastValue: null, + // lastWriteType: 'none'} if no value has yet been written to the + // characteristic. + async getLastWrittenValue() { + return this.last_written_value_; + } + + // Removes the fake GATT Characteristic from its fake service. + async remove() { + await test_driver.bidi.bluetooth.simulate_characteristic({ + address: this.peripheral_address_, + serviceUuid: this.service_uuid_, + characteristicUuid: this.characteristic_uuid_, + characteristicProperties: undefined, + type: 'remove' + }); + } +} + +class FakeRemoteGATTDescriptor { + constructor( + descriptor_uuid, characteristic_uuid, service_uuid, peripheral_address) { + this.descriptor_uuid_ = descriptor_uuid; + this.characteristic_uuid_ = characteristic_uuid; + this.service_uuid_ = service_uuid; + this.peripheral_address_ = peripheral_address; + this.last_written_value_ = null; + } + + // Simulate a descriptor for operation |type| with response |code| and + // |data|. + async simulateResponse(type, code, data) { + await test_driver.bidi.bluetooth.simulate_descriptor_response({ + address: this.peripheral_address_, + serviceUuid: this.service_uuid_, + characteristicUuid: this.characteristic_uuid_, + descriptorUuid: this.descriptor_uuid_, + type, + code, + data, + }); + } + + // Simulate a descriptor response for read operation with response |code| and + // |data|. + async simulateReadResponse(code, data) { + await this.simulateResponse('read', code, data); + } + + // Simulate a descriptor response for write operation with response |code|. + async simulateWriteResponse(code) { + await this.simulateResponse('write', code); + } + + // Sets the next read response for descriptor to |code| and |value|. + // |code| could be a GATT Error Response from + // BT 4.2 Vol 3 Part F 3.4.1.1 Error Response or a number outside that range + // returned by specific platforms e.g. Android returns 0x101 to signal a GATT + // failure. + // https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html#GATT_FAILURE + async setNextReadResponse(gatt_code, value = null) { + if (gatt_code === 0 && value === null) { + throw '|value| can\'t be null if read should success.'; + } + if (gatt_code !== 0 && value !== null) { + throw '|value| must be null if read should fail.'; + } + + const remove_handler = + test_driver.bidi.bluetooth.descriptor_event_generated.on((event) => { + if (event.address != this.peripheral_address_) { + return; + } + remove_handler(); + this.simulateReadResponse(gatt_code, value); + }); + } + + // Sets the next write response for this descriptor to |code|. + // |code| could be a GATT Error Response from + // BT 4.2 Vol 3 Part F 3.4.1.1 Error Response or a number outside that range + // returned by specific platforms e.g. Android returns 0x101 to signal a GATT + // failure. + async setNextWriteResponse(gatt_code) { + const remove_handler = + test_driver.bidi.bluetooth.descriptor_event_generated.on((event) => { + if (event.address != this.peripheral_address_) { + return; + } + this.last_written_value_ = { + lastValue: event.data, + lastWriteType: event.type + }; + remove_handler(); + if (event.type == 'write-with-response') { + this.simulateWriteResponse(gatt_code); + } + }); + } + + // Gets the last successfully written value to the descriptor. + // Returns null if no value has yet been written to the descriptor. + async getLastWrittenValue() { + return this.last_written_value_; + } + + // Removes the fake GATT Descriptor from its fake characteristic. + async remove() { + await test_driver.bidi.bluetooth.simulate_descriptor({ + address: this.peripheral_address_, + serviceUuid: this.service_uuid_, + characteristicUuid: this.characteristic_uuid_, + descriptorUuid: this.descriptor_uuid_, + type: 'remove' + }); + } } function initializeBluetoothBidiResources() { diff --git a/tests/wpt/tests/screen-orientation/active-lock.html b/tests/wpt/tests/screen-orientation/active-lock.html index 72d2d7fc1d4..a11ff2ddd62 100644 --- a/tests/wpt/tests/screen-orientation/active-lock.html +++ b/tests/wpt/tests/screen-orientation/active-lock.html @@ -28,7 +28,7 @@ promise_test(async (t) => { const iframe = await attachIframe({ src: "./resources/nav_iframe.html" }); - t.add_cleanup(makeCleanup(iframe)); + t.add_cleanup(makeCleanup({ iframe })); await test_driver.bless("request full screen", null, iframe.contentWindow); await iframe.contentDocument.documentElement.requestFullscreen(); const orientation = getOppositeOrientation(); @@ -40,7 +40,7 @@ promise_test(async (t) => { const iframe = await attachIframe(); - t.add_cleanup(makeCleanup(iframe)); + t.add_cleanup(makeCleanup({ iframe })); await test_driver.bless("request full screen", null, iframe.contentWindow); await iframe.contentDocument.documentElement.requestFullscreen(); const orientation = getOppositeOrientation(); diff --git a/tests/wpt/tests/screen-orientation/fullscreen-interactions.html b/tests/wpt/tests/screen-orientation/fullscreen-interactions.html index b1ac1c7000f..6c18e898a3e 100644 --- a/tests/wpt/tests/screen-orientation/fullscreen-interactions.html +++ b/tests/wpt/tests/screen-orientation/fullscreen-interactions.html @@ -25,7 +25,7 @@ promise_test(async (t) => { const iframe = await attachIframe(); - t.add_cleanup(makeCleanup(iframe)); + t.add_cleanup(makeCleanup({ iframe })); const iframeWindow = iframe.contentWindow; await test_driver.bless("request full screen"); await document.documentElement.requestFullscreen(); diff --git a/tests/wpt/tests/screen-orientation/resources/orientation-utils.js b/tests/wpt/tests/screen-orientation/resources/orientation-utils.js index 95383750f16..52d888f1760 100644 --- a/tests/wpt/tests/screen-orientation/resources/orientation-utils.js +++ b/tests/wpt/tests/screen-orientation/resources/orientation-utils.js @@ -33,10 +33,17 @@ export function getOppositeOrientation() { : "portrait"; } -export function makeCleanup( - initialOrientation = screen.orientation?.type.split(/-/)[0] -) { +export function makeCleanup(options = {}) { + const { + iframe, + initialOrientation = screen.orientation?.type.split(/-/)[0] + } = options; + return async () => { + if (iframe) { + iframe.remove(); + } + if (initialOrientation) { try { await screen.orientation.lock(initialOrientation); diff --git a/tests/wpt/tests/scroll-animations/animation-trigger/parsing/animation-trigger-name-parsing.html b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/animation-trigger-name-parsing.html new file mode 100644 index 00000000000..c2a746bc4f9 --- /dev/null +++ b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/animation-trigger-name-parsing.html @@ -0,0 +1,40 @@ + + + + + + +
    + \ No newline at end of file diff --git a/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-behavior-computed.tentative.html b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-behavior-computed.tentative.html new file mode 100644 index 00000000000..618ac062d98 --- /dev/null +++ b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-behavior-computed.tentative.html @@ -0,0 +1,19 @@ + + + + +CSS Animations: getComputedStyle().animationTriggerBehavior + + + + + + + +
    + + + \ No newline at end of file diff --git a/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-behavior-valid.tentative.html b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-behavior-valid.tentative.html new file mode 100644 index 00000000000..7d710049c6b --- /dev/null +++ b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-behavior-valid.tentative.html @@ -0,0 +1,29 @@ + + + + +CSS Animations: parsing timeline-trigger-behavior with valid values + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-end-invalid.tentative.html b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-end-invalid.tentative.html new file mode 100644 index 00000000000..dd5fcfa2a0c --- /dev/null +++ b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-end-invalid.tentative.html @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file diff --git a/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-end-valid.tentative.html b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-end-valid.tentative.html new file mode 100644 index 00000000000..7ee8c9f247e --- /dev/null +++ b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-end-valid.tentative.html @@ -0,0 +1,33 @@ + + + + + + diff --git a/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-end.computed.tentative.html b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-end.computed.tentative.html new file mode 100644 index 00000000000..9033304e399 --- /dev/null +++ b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-end.computed.tentative.html @@ -0,0 +1,37 @@ + + + + + +
    + \ No newline at end of file diff --git a/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-start-computed.tentative.html b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-start-computed.tentative.html new file mode 100644 index 00000000000..fd6878a2fd2 --- /dev/null +++ b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-start-computed.tentative.html @@ -0,0 +1,36 @@ + + + + + +
    + diff --git a/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-start-invalid.tentative.html b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-start-invalid.tentative.html new file mode 100644 index 00000000000..931e1ac036a --- /dev/null +++ b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-start-invalid.tentative.html @@ -0,0 +1,17 @@ + + + + + + diff --git a/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-start-valid.tentative.html b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-start-valid.tentative.html new file mode 100644 index 00000000000..23700cab713 --- /dev/null +++ b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-exit-range-start-valid.tentative.html @@ -0,0 +1,34 @@ + + + + + + diff --git a/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-end-computed.tentative.html b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-end-computed.tentative.html new file mode 100644 index 00000000000..daa96165cf4 --- /dev/null +++ b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-end-computed.tentative.html @@ -0,0 +1,36 @@ + + + + + +
    + diff --git a/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-end-invalid.tentative.html b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-end-invalid.tentative.html new file mode 100644 index 00000000000..306112d3002 --- /dev/null +++ b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-end-invalid.tentative.html @@ -0,0 +1,20 @@ + + + + + + diff --git a/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-end-valid.tentative.html b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-end-valid.tentative.html new file mode 100644 index 00000000000..71d8b7f9f4f --- /dev/null +++ b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-end-valid.tentative.html @@ -0,0 +1,32 @@ + + + + + +trigger- diff --git a/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-start-computed.tentative.html b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-start-computed.tentative.html new file mode 100644 index 00000000000..7727f0f0a0b --- /dev/null +++ b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-start-computed.tentative.html @@ -0,0 +1,35 @@ + + + + + +
    + diff --git a/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-start-invalid.tentative.html b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-start-invalid.tentative.html new file mode 100644 index 00000000000..975b208fb28 --- /dev/null +++ b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-start-invalid.tentative.html @@ -0,0 +1,16 @@ + + + + + + diff --git a/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-start-valid.tentative.html b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-start-valid.tentative.html new file mode 100644 index 00000000000..9f391d1d836 --- /dev/null +++ b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-range-start-valid.tentative.html @@ -0,0 +1,33 @@ + + + + + + diff --git a/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-timeline-parsing.tentative.html b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-timeline-parsing.tentative.html new file mode 100644 index 00000000000..61bef268f23 --- /dev/null +++ b/tests/wpt/tests/scroll-animations/animation-trigger/parsing/timeline-trigger-timeline-parsing.tentative.html @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/shadow-dom/attachShadow-with-ShadowRoot.html b/tests/wpt/tests/shadow-dom/attachShadow-with-ShadowRoot.html new file mode 100644 index 00000000000..99405382290 --- /dev/null +++ b/tests/wpt/tests/shadow-dom/attachShadow-with-ShadowRoot.html @@ -0,0 +1,69 @@ + + + Shadow DOM: Element.attachShadow with ShadowRoot + + + + + + + + + + + + + +
    + + + +
    + +
    + + + +
    + + + diff --git a/tests/wpt/tests/soft-navigation-heuristics/lcp/tentative/contracted-image.html b/tests/wpt/tests/soft-navigation-heuristics/lcp/tentative/contracted-image.html new file mode 100644 index 00000000000..dae7793f08c --- /dev/null +++ b/tests/wpt/tests/soft-navigation-heuristics/lcp/tentative/contracted-image.html @@ -0,0 +1,78 @@ + + + + + + Largest Contentful Paint: contracted image bounded by display size after soft navigation. + + + + + + + + + + +
    Click!
    + + diff --git a/tests/wpt/tests/svg/animations/crashtests/firefox-bug-1974334.html b/tests/wpt/tests/svg/animations/crashtests/firefox-bug-1974334.html new file mode 100644 index 00000000000..fbc10837717 --- /dev/null +++ b/tests/wpt/tests/svg/animations/crashtests/firefox-bug-1974334.html @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/svg/coordinate-systems/transform-translate-single-parameter.html b/tests/wpt/tests/svg/coordinate-systems/transform-translate-single-parameter.html new file mode 100644 index 00000000000..880d65e3538 --- /dev/null +++ b/tests/wpt/tests/svg/coordinate-systems/transform-translate-single-parameter.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/tests/svg/geometry/reftests/ellipse-005.svg b/tests/wpt/tests/svg/geometry/reftests/ellipse-005.svg new file mode 100644 index 00000000000..c90511707f8 --- /dev/null +++ b/tests/wpt/tests/svg/geometry/reftests/ellipse-005.svg @@ -0,0 +1,6 @@ + + A negative value for rx is invalid and must be ignored + + + + diff --git a/tests/wpt/tests/svg/geometry/reftests/ellipse-006.svg b/tests/wpt/tests/svg/geometry/reftests/ellipse-006.svg new file mode 100644 index 00000000000..d14875fcd39 --- /dev/null +++ b/tests/wpt/tests/svg/geometry/reftests/ellipse-006.svg @@ -0,0 +1,6 @@ + + A negative value for ry is invalid and must be ignored + + + + diff --git a/tests/wpt/tests/svg/painting/reftests/marker-path-002.svg b/tests/wpt/tests/svg/painting/reftests/marker-path-002.svg index 97ad69815bd..9c677c045c9 100644 --- a/tests/wpt/tests/svg/painting/reftests/marker-path-002.svg +++ b/tests/wpt/tests/svg/painting/reftests/marker-path-002.svg @@ -11,7 +11,7 @@ - + diff --git a/tests/wpt/tests/svg/sniffing-content-type.html b/tests/wpt/tests/svg/sniffing-content-type.html new file mode 100644 index 00000000000..4b2d7df8ca6 --- /dev/null +++ b/tests/wpt/tests/svg/sniffing-content-type.html @@ -0,0 +1,28 @@ + + + + SVG Content Sniffing Test + + + + + + + \ No newline at end of file diff --git a/tests/wpt/tests/svg/text/reftests/dominant-baseline-central-large-font-size-ref.svg b/tests/wpt/tests/svg/text/reftests/dominant-baseline-central-large-font-size-ref.svg new file mode 100644 index 00000000000..d25fc40d719 --- /dev/null +++ b/tests/wpt/tests/svg/text/reftests/dominant-baseline-central-large-font-size-ref.svg @@ -0,0 +1,6 @@ + + 'dominant-baseline: central' on <text> with large font-size (and scaling) (reference) + + X + diff --git a/tests/wpt/tests/svg/text/reftests/dominant-baseline-central-large-font-size.svg b/tests/wpt/tests/svg/text/reftests/dominant-baseline-central-large-font-size.svg new file mode 100644 index 00000000000..902a50aff78 --- /dev/null +++ b/tests/wpt/tests/svg/text/reftests/dominant-baseline-central-large-font-size.svg @@ -0,0 +1,11 @@ + + 'dominant-baseline: central' on <text> with large font-size (and scaling) + + + + + + X + + diff --git a/tests/wpt/tests/svg/types/scripted/SVGGraphicsElement.getBBox-03.html b/tests/wpt/tests/svg/types/scripted/SVGGraphicsElement.getBBox-03.html index 0bb8a11fe7a..6ee383c0341 100644 --- a/tests/wpt/tests/svg/types/scripted/SVGGraphicsElement.getBBox-03.html +++ b/tests/wpt/tests/svg/types/scripted/SVGGraphicsElement.getBBox-03.html @@ -34,8 +34,8 @@ function testBBox(id, x, y, width, height) { testBBox('rect1', 1, 2, 0, 20); testBBox('rect2', 1, 2, 10, 0); testBBox('circle', 1, 2, 0, 0); -testBBox('ellipse1', 1, 2, 0, 20); -testBBox('ellipse2', 1, 2, 10, 0); +testBBox('ellipse1', -9, 2, 20, 20); +testBBox('ellipse2', 1, -3, 10, 10); testBBox('image3', 1, 2, 0, 20); testBBox('image4', 1, 2, 10, 0); testBBox('foreign1', 1, 2, 0, 20); diff --git a/tests/wpt/tests/tools/ci/requirements_tc.txt b/tests/wpt/tests/tools/ci/requirements_tc.txt index 1098a385dfd..625156c5eae 100644 --- a/tests/wpt/tests/tools/ci/requirements_tc.txt +++ b/tests/wpt/tests/tools/ci/requirements_tc.txt @@ -3,4 +3,4 @@ pyyaml==6.0.1 types-pyyaml==6.0.12.20241230 requests==2.32.3 types-requests==2.32.0.20241016 -taskcluster==86.0.0 +taskcluster==86.0.2 diff --git a/tests/wpt/tests/tools/requirements_tests.txt b/tests/wpt/tests/tools/requirements_tests.txt index 8e0d9abb408..4b23d066601 100644 --- a/tests/wpt/tests/tools/requirements_tests.txt +++ b/tests/wpt/tests/tools/requirements_tests.txt @@ -3,5 +3,5 @@ json-e==4.7.0 jsonschema==4.17.3 pyyaml==6.0.1 types-pyyaml==6.0.12.20241230 -taskcluster==86.0.0 +taskcluster==86.0.2 mozterm==1.0.0 diff --git a/tests/wpt/tests/tools/serve/test_functional.py b/tests/wpt/tests/tools/serve/test_functional.py index 94bedb60f7e..4597e3af05a 100644 --- a/tests/wpt/tests/tools/serve/test_functional.py +++ b/tests/wpt/tests/tools/serve/test_functional.py @@ -56,8 +56,13 @@ def test_subprocess_exit(server_subprocesses, tempfile_name): # constructor that is also used to create the long-running processes # which are relevant to this functionality. Disable the check so that # the constructor is only used to create relevant processes. + config = { + "browser_host": "localhost", + "alternate_hosts": {"alt": "127.0.0.1"}, + "check_subdomains": False, + } with open(tempfile_name, 'w') as handle: - json.dump({"check_subdomains": False, "bind_address": False}, handle) + json.dump(config, handle) # The `logger` module from the wptserver package uses a singleton # pattern which resists testing. In order to avoid conflicting with diff --git a/tests/wpt/tests/tools/wptrunner/requirements.txt b/tests/wpt/tests/tools/wptrunner/requirements.txt index 6605de2deda..4532ff84e6c 100644 --- a/tests/wpt/tests/tools/wptrunner/requirements.txt +++ b/tests/wpt/tests/tools/wptrunner/requirements.txt @@ -5,7 +5,7 @@ mozlog==8.0.0 mozprocess==1.3.1 packaging==25.0 pillow==10.4.0; python_version < '3.9' -pillow==11.1.0; python_version >= '3.9' +pillow==11.3.0; python_version >= '3.9' requests==2.32.3 types-requests==2.32.0.20241016 six==1.16.0 diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/firefox.py b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/firefox.py index 475c75dff8b..df7b5e414de 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/firefox.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/firefox.py @@ -768,6 +768,9 @@ class ProfileCreator: profile.set_preferences({ "geo.provider.network.url": "https://web-platform.test:8444/webdriver/tests/support/http_handlers/geolocation_override.py" }) + else: + # Except for wdspec dispatch wheel scroll as widget event by default. + profile.set_preferences({"remote.events.async.wheel.enabled": True}) if self.debug_test: profile.set_preferences({"devtools.console.stdout.content": True}) diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/firefox_android.py b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/firefox_android.py index d0cd7411af0..050a96477e0 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/firefox_android.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/firefox_android.py @@ -197,6 +197,12 @@ class ProfileCreator(FirefoxProfileCreator): if self.test_type == "wdspec": profile.set_preferences({"remote.prefs.recommended": True}) + profile.set_preferences({ + "geo.provider.network.url": "https://web-platform.test:8444/webdriver/tests/support/http_handlers/geolocation_override.py" + }) + else: + # Except for wdspec dispatch wheel scroll as widget event by default. + profile.set_preferences({"remote.events.async.wheel.enabled": True}) profile.set_preferences({"fission.autostart": True}) if self.disable_fission: diff --git a/tests/wpt/tests/tools/wptserve/wptserve/server.py b/tests/wpt/tests/tools/wptserve/wptserve/server.py index ba68339190d..1b28a6c4e86 100644 --- a/tests/wpt/tests/tools/wptserve/wptserve/server.py +++ b/tests/wpt/tests/tools/wptserve/wptserve/server.py @@ -3,8 +3,11 @@ import errno import http import http.server +import ipaddress import os +import platform import socket +import socketserver import ssl import sys import threading @@ -227,6 +230,25 @@ class WebTestServer(http.server.ThreadingHTTPServer): do_handshake_on_connect=False, server_side=True) + def server_bind(self): + if platform.system() != "Darwin": + super().server_bind() + else: + # We override this on macOS to workaround gethostbyaddr triggering the local + # network alert even when passed "localhost" (rdar://153097791); this should + # be the same as the superclass implementation except for the addition of + # our check. + socketserver.TCPServer.server_bind(self) + host, port = self.server_address[:2] + if ( + ipaddress.ip_address(host).is_loopback and + ipaddress.ip_address(socket.gethostbyname("localhost")).is_loopback + ): + self.server_name = "localhost" + else: + self.server_name = socket.getfqdn(host) + self.server_port = port + def finish_request(self, request, client_address): if isinstance(self.socket, ssl.SSLSocket): request.do_handshake() diff --git a/tests/wpt/tests/touch-events/single-tap-when-touchend-listener-use-sync-xhr.html b/tests/wpt/tests/touch-events/single-tap-when-touchend-listener-use-sync-xhr.html new file mode 100644 index 00000000000..f6a9a2ff51c --- /dev/null +++ b/tests/wpt/tests/touch-events/single-tap-when-touchend-listener-use-sync-xhr.html @@ -0,0 +1,68 @@ + + + + + +Click event should be fired when touchend opens synchronous XHR + + + + + + + + +
    Tap me!
    + + diff --git a/tests/wpt/tests/trusted-types/navigate-to-javascript-url-001.html b/tests/wpt/tests/trusted-types/navigate-to-javascript-url-001.html new file mode 100644 index 00000000000..1598cfc25c7 --- /dev/null +++ b/tests/wpt/tests/trusted-types/navigate-to-javascript-url-001.html @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/tests/wpt/tests/trusted-types/navigate-to-javascript-url-002.html b/tests/wpt/tests/trusted-types/navigate-to-javascript-url-002.html new file mode 100644 index 00000000000..765ab8d4f08 --- /dev/null +++ b/tests/wpt/tests/trusted-types/navigate-to-javascript-url-002.html @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/tests/wpt/tests/trusted-types/navigate-to-javascript-url-003.html b/tests/wpt/tests/trusted-types/navigate-to-javascript-url-003.html new file mode 100644 index 00000000000..31c152c4a68 --- /dev/null +++ b/tests/wpt/tests/trusted-types/navigate-to-javascript-url-003.html @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/tests/wpt/tests/trusted-types/navigate-to-javascript-url-004.html b/tests/wpt/tests/trusted-types/navigate-to-javascript-url-004.html new file mode 100644 index 00000000000..8811787613b --- /dev/null +++ b/tests/wpt/tests/trusted-types/navigate-to-javascript-url-004.html @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/tests/wpt/tests/trusted-types/navigate-to-javascript-url-005.html b/tests/wpt/tests/trusted-types/navigate-to-javascript-url-005.html new file mode 100644 index 00000000000..86016023d4e --- /dev/null +++ b/tests/wpt/tests/trusted-types/navigate-to-javascript-url-005.html @@ -0,0 +1,20 @@ + + + + + diff --git a/tests/wpt/tests/trusted-types/navigate-to-javascript-url-006.sub.html b/tests/wpt/tests/trusted-types/navigate-to-javascript-url-006.sub.html new file mode 100644 index 00000000000..bea4cb5dcf3 --- /dev/null +++ b/tests/wpt/tests/trusted-types/navigate-to-javascript-url-006.sub.html @@ -0,0 +1,23 @@ + + + + + diff --git a/tests/wpt/tests/trusted-types/navigate-to-javascript-url-007-crash.html b/tests/wpt/tests/trusted-types/navigate-to-javascript-url-007-crash.html new file mode 100644 index 00000000000..0ce707a27b0 --- /dev/null +++ b/tests/wpt/tests/trusted-types/navigate-to-javascript-url-007-crash.html @@ -0,0 +1,20 @@ + + diff --git a/tests/wpt/tests/trusted-types/navigate-to-javascript-url-csp-headers.html b/tests/wpt/tests/trusted-types/navigate-to-javascript-url-csp-headers.html new file mode 100644 index 00000000000..b891ff83fdd --- /dev/null +++ b/tests/wpt/tests/trusted-types/navigate-to-javascript-url-csp-headers.html @@ -0,0 +1,183 @@ + + + + + + + + diff --git a/tests/wpt/tests/trusted-types/support/csp-violations.js b/tests/wpt/tests/trusted-types/support/csp-violations.js index bc38da9e221..63cdf02b990 100644 --- a/tests/wpt/tests/trusted-types/support/csp-violations.js +++ b/tests/wpt/tests/trusted-types/support/csp-violations.js @@ -118,3 +118,18 @@ function trySendingPlainStringToTrustedTypeSink(sinkGroups, cspHeaders) { document.head.appendChild(iframe); }); } + +function tryNavigatingToJavaScriptURLInSubframe(cspHeaders) { + return new Promise(resolve => { + window.addEventListener("message", event => { + resolve(event.data); + }, {once: true}); + let iframe = document.createElement("iframe"); + let url = "/trusted-types/support/navigate-to-javascript-url.html"; + url += "?pipe=header(Content-Security-Policy,connect-src 'none')" + if (cspHeaders) + url += `|${cspHeaders}`; + iframe.src = url; + document.head.appendChild(iframe); + }); +} diff --git a/tests/wpt/tests/trusted-types/support/navigate-to-javascript-url-005-iframe.html b/tests/wpt/tests/trusted-types/support/navigate-to-javascript-url-005-iframe.html new file mode 100644 index 00000000000..7d259da35c7 --- /dev/null +++ b/tests/wpt/tests/trusted-types/support/navigate-to-javascript-url-005-iframe.html @@ -0,0 +1,8 @@ + + + diff --git a/tests/wpt/tests/trusted-types/support/navigate-to-javascript-url.html b/tests/wpt/tests/trusted-types/support/navigate-to-javascript-url.html new file mode 100644 index 00000000000..ef11ae2e531 --- /dev/null +++ b/tests/wpt/tests/trusted-types/support/navigate-to-javascript-url.html @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/tests/trusted-types/support/navigation-report-only-support.html b/tests/wpt/tests/trusted-types/support/navigation-report-only-support.html index d4e4ded7daa..b0fdfcae394 100644 --- a/tests/wpt/tests/trusted-types/support/navigation-report-only-support.html +++ b/tests/wpt/tests/trusted-types/support/navigation-report-only-support.html @@ -6,6 +6,10 @@

    Support page for trusted-types-navigation-report-only.*.html tests.

    link + + + +green square
    diff --git a/tests/wpt/tests/trusted-types/support/navigation-support.html b/tests/wpt/tests/trusted-types/support/navigation-support.html index 306cc0e84f7..d4af8fc2777 100644 --- a/tests/wpt/tests/trusted-types/support/navigation-support.html +++ b/tests/wpt/tests/trusted-types/support/navigation-support.html @@ -6,6 +6,10 @@

    Support page for trusted-types-navigation.*.html tests.

    link + + + +green square
    diff --git a/tests/wpt/tests/trusted-types/support/navigation-support.js b/tests/wpt/tests/trusted-types/support/navigation-support.js index 8449dd202b6..3f3cb10e8af 100644 --- a/tests/wpt/tests/trusted-types/support/navigation-support.js +++ b/tests/wpt/tests/trusted-types/support/navigation-support.js @@ -1,13 +1,110 @@ +// lineNumber +function setWindowLocationToJavaScriptURLCode() { // 2 +// 4567890123456789 columnNumber // 3 + window.location = `javascript:${kJavaScriptURLCode}`; // see csp-violations.js +} + +const kJavaScriptURLCode = `executeJavaScript()${';'.repeat(100)}`; + +function createDefaultPolicy(defaultpolicy) { + if (!defaultpolicy) { + return; + } + trustedTypes.createPolicy("default", { + createScript: s => { + switch (defaultpolicy) { + case "replace": + return s.replace("continue", "defaultpolicywashere"); + case "replace-js-execution": + return s.replace("executeJavaScript", "executeModifiedJavaScript"); + case "throw": + throw new Error("Exception in createScript()"); + case "make-invalid": + return "//make:invalid/"; + } + }, + }); +} + +// Test what happens when setting window.location to a javascript: URL. +// @param defaultpolicy: a string indicating the default policy that will be +// created before setting the location. If not specified then no default +// policy is created. +// - "replace-js-execution": Default policy rewrites the URL. +// - "throw": Default policy throws an exception. +// - "make-invalid": Default policy returns an invalid URL. +// @return an object with the following keys: +// - exception: any exception reported by the operation. +// - javaScriptExecuted whether the original code specified in the javascript +// URL was executed. +// - javaScriptExecuted whether the JavaScript code after modification by the +// default policy was executed (for "replace-js-execution"). +// - violations: an array of reported violations for the operation. +async function setLocationToJavaScriptURL(defaultpolicy) { + window.javaScriptExecuted = false; + window.executeJavaScript = function() { + window.javaScriptExecuted = true; + } + window.modifiedJavaScriptExecuted = false; + window.executeModifiedJavaScript = function() { + window.modifiedJavaScriptExecuted = true; + } + + createDefaultPolicy(defaultpolicy); + + let {violations, exception} = + await trusted_type_violations_and_exception_for(async _ => { + setWindowLocationToJavaScriptURLCode(); + // Wait for the navigation to be attempted before reporting the + // observed violations, otherwise we could miss the corresponding + // pre-navigation check CSP violation. + if (window.requestIdleCallback) { + await new Promise(resolve => requestIdleCallback(resolve)); + } + }); + + return { + exception: exception, + javaScriptExecuted: window.javaScriptExecuted, + modifiedJavaScriptExecuted: window.modifiedJavaScriptExecuted, + // Clone relevant violation fields in an object, so they can be transferred + // via cross-window via postMessage. + violations: violations.map(violation => { + const clonedViolation = {}; + for (const field of ["originalPolicy", + "violatedDirective", + "disposition", + "sample", + "lineNumber", + "columnNumber"]) { + clonedViolation[field] = violation[field]; + } + return clonedViolation; + }), + }; +} + +// Test what happens when navigating current page to a javascript: URL when +// clicking an anchor element, and transmit the information back to the opener. +// @param reportOnly whether the CSP rule for this page is "report-only" rather +// than "enforce" +// The following query strings are considered: +// - "defaultpolicy": a string indicating the default policy that will be +// created before setting the location. +// - "replace": Default policy replaces "continue" with +// "defaultpolicywashere". +// - "throw": Default policy throws an exception. +// - "make-invalid": Default policy returns an invalid URL. +// - "navigationattempted": whether the page was already navigated once. +// - "frame": whether the navigation target is "frame" rather than "_self". +// - "form-submission": navigate via a element rather +// than an element. +// - "area": navigate via an element rather element rather than an +// element. function navigateToJavascriptURL(reportOnly) { const params = new URLSearchParams(location.search); - if (!!params.get("defaultpolicy")) { - trustedTypes.createPolicy("default", { - createScript: s => { - return s.replace("continue", "defaultpolicywashere") - }, - }); - } + createDefaultPolicy(params.get("defaultpolicy")); function bounceEventToOpener(e) { const msg = {}; @@ -62,6 +159,13 @@ function navigateToJavascriptURL(reportOnly) { return submit; } + if (!!params.get("area")) { + const area = document.getElementById("area"); + area.href = javaScriptURL; + area.target = target; + return area; + } + const anchor = document.getElementById("anchor"); anchor.href = javaScriptURL; anchor.target = target; @@ -71,9 +175,28 @@ function navigateToJavascriptURL(reportOnly) { const navigationElement = getAndPreparareNavigationElement(`javascript:${target_script}`); document.addEventListener("DOMContentLoaded", async _ => { let {violations, exception} = - await trusted_type_violations_and_exception_for(_ => navigationElement.click()); + await trusted_type_violations_and_exception_for(async _ => { + navigationElement.click(); + // The timing is tricky here: we must wait for the navigation + // to be attempted before reporting the observed violations + // (otherwise we could miss the corresponding pre-navigation + // check CSP violation) but we must also not wait for too + // long, otherwise we already navigated away from the page + // and cannot report the observed violations anymore. + if (window.requestIdleCallback) { + await new Promise(resolve => { + requestIdleCallback(resolve); + window.addEventListener("beforeunload", resolve); + }); + } + }); + if (exception) { + window.opener.postMessage(`Unexpected exception: ${exception.message}`, "*"); + return; + } violations.forEach(violationEvent => bounceEventToOpener(violationEvent)); - if (!params.get("defaultpolicy") && violations.length == 0) { + if (violations.length == 0 && + [null, "throw", "make-invalid"].includes(params.get("defaultpolicy"))) { window.opener.postMessage("No securitypolicyviolation reported!", "*"); } }); diff --git a/tests/wpt/tests/trusted-types/trusted-types-navigation.html b/tests/wpt/tests/trusted-types/trusted-types-navigation.html index f29405651f1..f4173426129 100644 --- a/tests/wpt/tests/trusted-types/trusted-types-navigation.html +++ b/tests/wpt/tests/trusted-types/trusted-types-navigation.html @@ -1,8 +1,18 @@ + + + + + + + + + + diff --git a/tests/wpt/tests/url/resources/setters_tests.json b/tests/wpt/tests/url/resources/setters_tests.json index 6a4017a7804..adf78c62560 100644 --- a/tests/wpt/tests/url/resources/setters_tests.json +++ b/tests/wpt/tests/url/resources/setters_tests.json @@ -1195,6 +1195,15 @@ "host": "test", "hostname": "test" } + }, + { + "href": "foo://path/to", + "new_value": ":80", + "expected": { + "href": "foo://path/to", + "host": "path", + "port": "" + } } ], "hostname": [ diff --git a/tests/wpt/tests/wasm/core/js/binary.wast.js b/tests/wpt/tests/wasm/core/js/binary.wast.js index 468d0ba0a99..3fcb3cccd3a 100644 --- a/tests/wpt/tests/wasm/core/js/binary.wast.js +++ b/tests/wpt/tests/wasm/core/js/binary.wast.js @@ -264,7 +264,7 @@ assert_malformed("\x00\x61\x73\x6d\x01\x00\x00\x00\x04\x01\x01"); assert_malformed("\x00\x61\x73\x6d\x01\x00\x00\x00\x04\x03\x01\x70\x02"); // binary.wast:813 -assert_malformed("\x00\x61\x73\x6d\x01\x00\x00\x00\x04\x04\x01\x70\x02\x00"); +assert_malformed("\x00\x61\x73\x6d\x01\x00\x00\x00\x04\x04\x01\x70\x08\x00"); // binary.wast:823 assert_malformed("\x00\x61\x73\x6d\x01\x00\x00\x00\x04\x06\x01\x70\x81\x00\x00\x00"); @@ -279,7 +279,7 @@ assert_malformed("\x00\x61\x73\x6d\x01\x00\x00\x00\x05\x01\x01"); assert_malformed("\x00\x61\x73\x6d\x01\x00\x00\x00\x05\x02\x01\x02"); // binary.wast:859 -assert_malformed("\x00\x61\x73\x6d\x01\x00\x00\x00\x05\x03\x01\x02\x00"); +assert_malformed("\x00\x61\x73\x6d\x01\x00\x00\x00\x05\x03\x01\x10\x00"); // binary.wast:868 assert_malformed("\x00\x61\x73\x6d\x01\x00\x00\x00\x05\x05\x01\x81\x00\x00\x00"); diff --git a/tests/wpt/tests/wasm/core/js/global.wast.js b/tests/wpt/tests/wasm/core/js/global.wast.js index 9e1b5504839..f5a931f361b 100644 --- a/tests/wpt/tests/wasm/core/js/global.wast.js +++ b/tests/wpt/tests/wasm/core/js/global.wast.js @@ -247,7 +247,7 @@ assert_invalid("\x00\x61\x73\x6d\x01\x00\x00\x00\x02\x98\x80\x80\x80\x00\x01\x04 let $4 = instance("\x00\x61\x73\x6d\x01\x00\x00\x00\x02\x98\x80\x80\x80\x00\x01\x08\x73\x70\x65\x63\x74\x65\x73\x74\x0a\x67\x6c\x6f\x62\x61\x6c\x5f\x69\x33\x32\x03\x7f\x00"); // global.wast:378 -assert_malformed("\x00\x61\x73\x6d\x01\x00\x00\x00\x02\x98\x80\x80\x80\x00\x01\x08\x73\x70\x65\x63\x74\x65\x73\x74\x0a\x67\x6c\x6f\x62\x61\x6c\x5f\x69\x33\x32\x03\x7f\x02"); +assert_malformed("\x00\x61\x73\x6d\x01\x00\x00\x00\x02\x98\x80\x80\x80\x00\x01\x08\x73\x70\x65\x63\x74\x65\x73\x74\x0a\x67\x6c\x6f\x62\x61\x6c\x5f\x69\x33\x32\x03\x7f\x04"); // global.wast:391 assert_malformed("\x00\x61\x73\x6d\x01\x00\x00\x00\x02\x98\x80\x80\x80\x00\x01\x08\x73\x70\x65\x63\x74\x65\x73\x74\x0a\x67\x6c\x6f\x62\x61\x6c\x5f\x69\x33\x32\x03\x7f\xff"); @@ -256,7 +256,7 @@ assert_malformed("\x00\x61\x73\x6d\x01\x00\x00\x00\x02\x98\x80\x80\x80\x00\x01\x let $5 = instance("\x00\x61\x73\x6d\x01\x00\x00\x00\x06\x86\x80\x80\x80\x00\x01\x7f\x00\x41\x00\x0b"); // global.wast:408 -assert_malformed("\x00\x61\x73\x6d\x01\x00\x00\x00\x06\x86\x80\x80\x80\x00\x01\x7f\x02\x41\x00\x0b"); +assert_malformed("\x00\x61\x73\x6d\x01\x00\x00\x00\x06\x86\x80\x80\x80\x00\x01\x7f\x04\x41\x00\x0b"); // global.wast:420 assert_malformed("\x00\x61\x73\x6d\x01\x00\x00\x00\x06\x86\x80\x80\x80\x00\x01\x7f\xff\x41\x00\x0b"); diff --git a/tests/wpt/tests/wasm/jsapi/memory/to-fixed-length-buffer.any.js b/tests/wpt/tests/wasm/jsapi/memory/to-fixed-length-buffer.any.js index 196324960ec..d5e6d65b747 100644 --- a/tests/wpt/tests/wasm/jsapi/memory/to-fixed-length-buffer.any.js +++ b/tests/wpt/tests/wasm/jsapi/memory/to-fixed-length-buffer.any.js @@ -26,7 +26,7 @@ test(() => { }, "API surface"); test(() => { - const memory = new WebAssembly.Memory({ initial: 0 }); + const memory = new WebAssembly.Memory({ initial: 0, maximum: 1 }); const buffer1 = memory.buffer; assert_false(buffer1.resizable, "By default the AB is initially not resizable"); diff --git a/tests/wpt/tests/wasm/jsapi/memory/to-resizable-buffer.any.js b/tests/wpt/tests/wasm/jsapi/memory/to-resizable-buffer.any.js index 270151460eb..1f46fa7f9a7 100644 --- a/tests/wpt/tests/wasm/jsapi/memory/to-resizable-buffer.any.js +++ b/tests/wpt/tests/wasm/jsapi/memory/to-resizable-buffer.any.js @@ -26,7 +26,7 @@ test(() => { }, "API surface"); test(() => { - const memory = new WebAssembly.Memory({ initial: 0 }); + const memory = new WebAssembly.Memory({ initial: 0, maximum: 1 }); const buffer1 = memory.buffer; assert_false(buffer1.resizable, "By default the AB is initially not resizable"); @@ -50,12 +50,6 @@ test(() => { const buffer = memory.toResizableBuffer(); assert_equals(buffer.maxByteLength, kPageSize * maxNumPages, "Memory maximum is same as maxByteLength"); } - - { - const memory = new WebAssembly.Memory({ initial: 0 }); - const buffer = memory.toResizableBuffer(); - assert_equals(buffer.maxByteLength, kPageSize * kSpecMaxPages, "Default max size is 65536 * 65536"); - } }, "toResizableBuffer max size"); test(() => { @@ -72,7 +66,7 @@ test(() => { }, "Resizing a Memory's resizable buffer"); test(() => { - const memory = new WebAssembly.Memory({ initial: 0 }); + const memory = new WebAssembly.Memory({ initial: 0, maximum: 1 }); const buffer = memory.toResizableBuffer(); assert_throws_js(TypeError, () => buffer.transfer(), "Cannot be detached by JS"); }, "Resizable buffers from Memory cannot be detached by JS"); diff --git a/tests/wpt/tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html b/tests/wpt/tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html index 02caea667bb..dcda26d7f6b 100644 --- a/tests/wpt/tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html +++ b/tests/wpt/tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html @@ -1,165 +1,150 @@ - - audionode-connect-method-chaining.html - + AudioNode.connect() Method Chaining and Validation Tests - - diff --git a/tests/wpt/tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-audiobuffersource-connections.html b/tests/wpt/tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-audiobuffersource-connections.html index 0b94bd70f9f..5fa43d7e903 100644 --- a/tests/wpt/tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-audiobuffersource-connections.html +++ b/tests/wpt/tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-audiobuffersource-connections.html @@ -4,37 +4,34 @@ k-rate AudioParams with inputs for AudioBufferSourceNode - diff --git a/tests/wpt/tests/webdriver/tests/bidi/integration/parallel_execution/__init__.py b/tests/wpt/tests/webdriver/tests/bidi/integration/parallel_execution/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/wpt/tests/webdriver/tests/bidi/integration/parallel_execution/browsing_context_set_viewport.py b/tests/wpt/tests/webdriver/tests/bidi/integration/parallel_execution/browsing_context_set_viewport.py new file mode 100644 index 00000000000..4625dad0d71 --- /dev/null +++ b/tests/wpt/tests/webdriver/tests/bidi/integration/parallel_execution/browsing_context_set_viewport.py @@ -0,0 +1,38 @@ +import asyncio + +import pytest + +from ... import get_viewport_dimensions + + +pytestmark = pytest.mark.asyncio + + +async def test_when_navigation_started( + bidi_session, inline, url, new_tab, wait_for_event, wait_for_future_safe +): + test_viewport = {"width": 499, "height": 599} + + await bidi_session.browsing_context.navigate( + context=new_tab["context"], url=inline("
    Foo"), wait="complete" + ) + + await bidi_session.session.subscribe(events=["browsingContext.navigationStarted"]) + on_navigation_started = wait_for_event("browsingContext.navigationStarted") + + # Save the navigation task and await for it later. + slow_page = url("/webdriver/tests/support/html/default.html?pipe=trickle(d1)") + navigation_future = asyncio.create_task( + bidi_session.browsing_context.navigate( + context=new_tab["context"], url=slow_page, wait="complete" + ) + ) + + await wait_for_future_safe(on_navigation_started) + await bidi_session.browsing_context.set_viewport( + context=new_tab["context"], viewport=test_viewport + ) + + await navigation_future + + assert await get_viewport_dimensions(bidi_session, new_tab) == test_viewport diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/add_intercept/contexts.py b/tests/wpt/tests/webdriver/tests/bidi/network/add_intercept/contexts.py index dd0c5d100f6..cc82fa75a7d 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/network/add_intercept/contexts.py +++ b/tests/wpt/tests/webdriver/tests/bidi/network/add_intercept/contexts.py @@ -1,5 +1,3 @@ -# META: timeout=long - import asyncio import pytest diff --git a/tests/wpt/tests/webdriver/tests/bidi/storage/set_cookie/cookie_expiry.py b/tests/wpt/tests/webdriver/tests/bidi/storage/set_cookie/cookie_expiry.py index f2469f8cedc..4b8602a84d8 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/storage/set_cookie/cookie_expiry.py +++ b/tests/wpt/tests/webdriver/tests/bidi/storage/set_cookie/cookie_expiry.py @@ -1,7 +1,9 @@ -import pytest -from .. import assert_cookie_is_not_set, assert_partition_key, assert_cookie_is_set, create_cookie -from datetime import datetime, timedelta import time +from datetime import datetime, timedelta + +import pytest +from webdriver.bidi.modules.storage import CookieFilter +from .. import assert_cookie_is_not_set, assert_partition_key, assert_cookie_is_set, create_cookie pytestmark = pytest.mark.asyncio @@ -43,3 +45,22 @@ async def test_cookie_expiry_past(bidi_session, set_cookie, domain_value): await assert_partition_key(bidi_session, actual=set_cookie_result["partitionKey"]) await assert_cookie_is_not_set(bidi_session) + + +async def test_cookie_expiry_future_far(bidi_session, set_cookie, domain_value): + five_years = datetime.now() + timedelta(days=5 * 365) + five_years_timestamp = time.mktime(five_years.timetuple()) + + # There is a recommended upper limit of 400 days on the allowed expiry + # value, which user agent can adjust. + set_cookie_result = await set_cookie( + cookie=create_cookie( + domain=domain_value(), + expiry=five_years_timestamp)) + + await assert_partition_key(bidi_session, actual=set_cookie_result["partitionKey"]) + + cookies = await bidi_session.storage.get_cookies(filter=CookieFilter(domain=domain_value())) + assert len(cookies["cookies"]) == 1 + assert cookies["cookies"][0]["expiry"] <= five_years_timestamp + diff --git a/tests/wpt/tests/webdriver/tests/classic/add_cookie/add.py b/tests/wpt/tests/webdriver/tests/classic/add_cookie/add.py index 581040f7000..ceefb77111a 100644 --- a/tests/wpt/tests/webdriver/tests/classic/add_cookie/add.py +++ b/tests/wpt/tests/webdriver/tests/classic/add_cookie/add.py @@ -232,6 +232,31 @@ def test_add_session_cookie_with_leading_dot_character_in_domain(session, url, s cookie["domain"] == ".%s" % server_config["browser_host"] +def test_add_cookie_with_expiry_in_the_future(session, url): + five_years_from_now = int( + (datetime.now(timezone.utc) + timedelta(days=5 * 365) - datetime.fromtimestamp(0, timezone.utc)).total_seconds()) + + new_cookie = { + "name": "hello", + "value": "world", + "expiry": five_years_from_now + } + + session.url = url("/common/blank.html") + clear_all_cookies(session) + + result = add_cookie(session, new_cookie) + assert_success(result) + + cookie = session.cookies("hello") + assert cookie["name"] == "hello" + assert cookie["value"] == "world" + + # There is a recommended upper limit of 400 days on the allowed expiry + # value, which user agent can adjust. + assert cookie["expiry"] <= five_years_from_now + + @pytest.mark.parametrize("same_site", ["None", "Lax", "Strict"]) def test_add_cookie_with_valid_samesite_flag(session, url, same_site): new_cookie = { diff --git a/tests/wpt/tests/webnn/conformance_tests/add.https.any.js b/tests/wpt/tests/webnn/conformance_tests/add.https.any.js index be82df1dc28..5a370de82cc 100644 --- a/tests/wpt/tests/webnn/conformance_tests/add.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/add.https.any.js @@ -12,14 +12,6 @@ // Compute the element-wise binary addition of the two input tensors. // MLOperand add(MLOperand a, MLOperand b); - -const getAddPrecisionTolerance = (graphResources) => { - const toleranceValueDict = {float32: 1, float16: 1}; - const expectedDataType = - getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs); - return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]}; -}; - const addTests = [ { 'name': 'add float32 1D constant tensors', @@ -1008,8 +1000,7 @@ const addTests = [ if (navigator.ml) { addTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getAddPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/arg_min_max.https.any.js b/tests/wpt/tests/webnn/conformance_tests/arg_min_max.https.any.js index f8e4d801056..f0d38cbff82 100644 --- a/tests/wpt/tests/webnn/conformance_tests/arg_min_max.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/arg_min_max.https.any.js @@ -22,10 +22,6 @@ // MLOperand argMax(MLOperand input, [EnforceRange] unsigned long axis, // optional MLArgMinMaxOptions options = {}); -const getArgMinMaxPrecisionTolerance = () => { - return {metricType: 'ULP', value: 0}; -}; - const argMinMaxTests = [ // argMin tests { @@ -1830,8 +1826,7 @@ const argMinMaxTests = [ if (navigator.ml) { argMinMaxTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getArgMinMaxPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/concat.https.any.js b/tests/wpt/tests/webnn/conformance_tests/concat.https.any.js index d4192172046..aaecaecc9eb 100644 --- a/tests/wpt/tests/webnn/conformance_tests/concat.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/concat.https.any.js @@ -14,14 +14,6 @@ // MLOperand concat( // sequence inputs, [EnforceRange] unsigned long axis); - -const getConcatPrecisionTolerance = (graphResources) => { - const toleranceValueDict = {float32: 0, float16: 0}; - const expectedDataType = - getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs); - return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]}; -}; - const concatTests = [ { 'name': 'concat two float32 1D constant tensors of same shape along axis 0', @@ -2383,8 +2375,7 @@ const concatTests = [ if (navigator.ml) { concatTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getConcatPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getZeroULPTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/dequantizeLinear.https.any.js b/tests/wpt/tests/webnn/conformance_tests/dequantizeLinear.https.any.js index 7f1ed15cc4a..c741ebddadb 100644 --- a/tests/wpt/tests/webnn/conformance_tests/dequantizeLinear.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/dequantizeLinear.https.any.js @@ -245,12 +245,12 @@ const dequantizeLinearTests = [ }, 'dequantizeLinearScale': { 'data': [0.2800687253475189, -4.617084980010986], - 'descriptor': {shape: [2, 1], dataType: 'float32'}, + 'descriptor': {shape: [1, 1, 2, 1], dataType: 'float32'}, 'constant': true }, 'dequantizeLinearZeroPoint': { 'data': [12, 12], - 'descriptor': {shape: [2, 1], dataType: 'int8'}, + 'descriptor': {shape: [1, 1, 2, 1], dataType: 'int8'}, 'constant': true } }, @@ -430,12 +430,12 @@ const dequantizeLinearTests = [ 9.343092918395996, -4.617084980010986, ], - 'descriptor': {shape: [2, 1], dataType: 'float32'}, + 'descriptor': {shape: [1, 1, 2, 1], dataType: 'float32'}, 'constant': true }, 'dequantizeLinearZeroPoint': { 'data': [2, 3], - 'descriptor': {shape: [2, 1], dataType: 'uint4'}, + 'descriptor': {shape: [1, 1, 2, 1], dataType: 'uint4'}, 'constant': true } }, @@ -473,12 +473,12 @@ const dequantizeLinearTests = [ 9.343092918395996, -4.617084980010986, ], - 'descriptor': {shape: [1, 2], dataType: 'float32'}, + 'descriptor': {shape: [1, 1, 2], dataType: 'float32'}, 'constant': true }, 'dequantizeLinearZeroPoint': { 'data': [2, 3], - 'descriptor': {shape: [1, 2], dataType: 'uint4'}, + 'descriptor': {shape: [1, 1, 2], dataType: 'uint4'}, 'constant': true } }, @@ -581,7 +581,7 @@ const dequantizeLinearTests = [ 'graph': { 'inputs': { 'dequantizeLinearInput': { - 'data': [0, -1, 10, -15], + 'data': [0, -1, -6, 1], 'descriptor': {shape: [1, 1, 2, 2], dataType: 'int4'}, 'constant': true }, @@ -590,12 +590,12 @@ const dequantizeLinearTests = [ 1.1202747821807861, -4.617084980010986, 6.2405495643615723, 3.841923713684082 ], - 'descriptor': {shape: [2, 2], dataType: 'float32'}, + 'descriptor': {shape: [1, 1, 2, 2], dataType: 'float32'}, 'constant': true }, 'dequantizeLinearZeroPoint': { 'data': [2, -3, -5, 4], - 'descriptor': {shape: [2, 2], dataType: 'int4'}, + 'descriptor': {shape: [1, 1, 2, 2], dataType: 'int4'}, 'constant': true } }, @@ -667,12 +667,12 @@ const dequantizeLinearTests = [ }, 'dequantizeLinearScale': { 'data': [1.1202747821807861, 0.2800687253475189], - 'descriptor': {shape: [2], dataType: 'float32'}, + 'descriptor': {shape: [1, 1, 2], dataType: 'float32'}, 'constant': true }, 'dequantizeLinearZeroPoint': { 'data': [35, -24], - 'descriptor': {shape: [2], dataType: 'int32'}, + 'descriptor': {shape: [1, 1, 2], dataType: 'int32'}, 'constant': true } }, diff --git a/tests/wpt/tests/webnn/conformance_tests/equal.https.any.js b/tests/wpt/tests/webnn/conformance_tests/equal.https.any.js index a974ec0004f..33d27cf74b1 100644 --- a/tests/wpt/tests/webnn/conformance_tests/equal.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/equal.https.any.js @@ -13,14 +13,6 @@ // // MLOperand equal(MLOperand a, MLOperand b); - -const getEqualPrecisionTolerance = (graphResources) => { - const toleranceValueDict = {uint8: 0}; - const expectedDataType = - getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs); - return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]}; -}; - const equalTests = [ { 'name': 'equal float32 0D scalar', @@ -987,7 +979,7 @@ const equalTests = [ if (navigator.ml) { equalTests.forEach((test) => { webnn_conformance_test( - buildAndExecuteGraph, getEqualPrecisionTolerance, test, + buildAndExecuteGraph, getZeroULPTolerance, test, /*cast_to_supported_type=*/true); }); } else { diff --git a/tests/wpt/tests/webnn/conformance_tests/expand.https.any.js b/tests/wpt/tests/webnn/conformance_tests/expand.https.any.js index 821c9b83ec2..f9040f25e47 100644 --- a/tests/wpt/tests/webnn/conformance_tests/expand.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/expand.https.any.js @@ -15,11 +15,6 @@ // MLOperand expand( // MLOperand input, sequence<[EnforceRange] unsigned long> newShape); - -const getExpandPrecisionTolerance = () => { - return {metricType: 'ULP', value: 0}; -}; - const expandTests = [ { 'name': 'expand float32 0D scalar to 1D', @@ -1335,8 +1330,7 @@ const expandTests = [ if (navigator.ml) { expandTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getExpandPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getZeroULPTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/gather.https.any.js b/tests/wpt/tests/webnn/conformance_tests/gather.https.any.js index f0b75e1cf41..7f3c9c11358 100644 --- a/tests/wpt/tests/webnn/conformance_tests/gather.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/gather.https.any.js @@ -19,11 +19,6 @@ // MLOperand input, MLOperand indices, // optional MLGatherOptions options = {}); - -const getGatherPrecisionTolerance = () => { - return {metricType: 'ULP', value: 0}; -}; - const gatherTests = [ { 'name': @@ -1708,8 +1703,7 @@ const gatherTests = [ if (navigator.ml) { gatherTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getGatherPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getZeroULPTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/gatherElements.https.any.js b/tests/wpt/tests/webnn/conformance_tests/gatherElements.https.any.js index 32299529f47..2b13f596780 100644 --- a/tests/wpt/tests/webnn/conformance_tests/gatherElements.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/gatherElements.https.any.js @@ -19,11 +19,6 @@ // MLOperand input, MLOperand indices, // optional MLGatherOptions options = {}); - -const getGatherElementsPrecisionTolerance = () => { - return {metricType: 'ULP', value: 0}; -}; - const gatherElementsTests = [ { 'name': 'gatherElements float32 2D input and uint32 indices options.axis=1', @@ -409,8 +404,7 @@ const gatherElementsTests = [ if (navigator.ml) { gatherElementsTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getGatherElementsPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getZeroULPTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/gatherND.https.any.js b/tests/wpt/tests/webnn/conformance_tests/gatherND.https.any.js index ddf8626f17a..41e1bc78790 100644 --- a/tests/wpt/tests/webnn/conformance_tests/gatherND.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/gatherND.https.any.js @@ -16,11 +16,6 @@ // MLOperand input, MLOperand indices, // optional MLOperatorOptions options = {}); - -const getGatherNDPrecisionTolerance = () => { - return {metricType: 'ULP', value: 0}; -}; - const gatherNDTests = [ { 'name': 'gatherND float32 3D input and 2D indices', @@ -578,8 +573,7 @@ const gatherNDTests = [ if (navigator.ml) { gatherNDTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getGatherNDPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getZeroULPTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/greater.https.any.js b/tests/wpt/tests/webnn/conformance_tests/greater.https.any.js index 21e8b07bd47..bf6f8845885 100644 --- a/tests/wpt/tests/webnn/conformance_tests/greater.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/greater.https.any.js @@ -13,14 +13,6 @@ // // MLOperand greater(MLOperand a, MLOperand b); - -const getGreaterPrecisionTolerance = (graphResources) => { - const toleranceValueDict = {uint8: 0}; - const expectedDataType = - getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs); - return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]}; -}; - const greaterTests = [ { 'name': 'greater float32 0D scalar', @@ -991,7 +983,7 @@ const greaterTests = [ if (navigator.ml) { greaterTests.forEach((test) => { webnn_conformance_test( - buildAndExecuteGraph, getGreaterPrecisionTolerance, test, + buildAndExecuteGraph, getZeroULPTolerance, test, /*cast_to_supported_type=*/true); }); } else { diff --git a/tests/wpt/tests/webnn/conformance_tests/greater_or_equal.https.any.js b/tests/wpt/tests/webnn/conformance_tests/greater_or_equal.https.any.js index f9ab2d66814..7dffe0980ea 100644 --- a/tests/wpt/tests/webnn/conformance_tests/greater_or_equal.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/greater_or_equal.https.any.js @@ -14,14 +14,6 @@ // // MLOperand greaterOrEqual(MLOperand a, MLOperand b); - -const getGreaterOrEqualPrecisionTolerance = (graphResources) => { - const toleranceValueDict = {uint8: 0}; - const expectedDataType = - getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs); - return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]}; -}; - const greaterOrEqualTests = [ { 'name': 'greaterOrEqual float32 0D scalar', @@ -986,7 +978,7 @@ const greaterOrEqualTests = [ if (navigator.ml) { greaterOrEqualTests.forEach((test) => { webnn_conformance_test( - buildAndExecuteGraph, getGreaterOrEqualPrecisionTolerance, test, + buildAndExecuteGraph, getZeroULPTolerance, test, /*cast_to_supported_type=*/true); }); } else { diff --git a/tests/wpt/tests/webnn/conformance_tests/identity.https.any.js b/tests/wpt/tests/webnn/conformance_tests/identity.https.any.js index 214d16e3964..be645fd8966 100644 --- a/tests/wpt/tests/webnn/conformance_tests/identity.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/identity.https.any.js @@ -13,14 +13,6 @@ // // MLOperand identity(MLOperand input); - -const getIdentityPrecisionTolerance = (graphResources) => { - const toleranceValueDict = {float32: 0, float16: 0}; - const expectedDataType = - getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs); - return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]}; -}; - const identityTests = [ { 'name': 'identity float32 0D scalar', @@ -530,8 +522,7 @@ const identityTests = [ if (navigator.ml) { identityTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getIdentityPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getZeroULPTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/lesser.https.any.js b/tests/wpt/tests/webnn/conformance_tests/lesser.https.any.js index 8978435c6e3..0238a00fca1 100644 --- a/tests/wpt/tests/webnn/conformance_tests/lesser.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/lesser.https.any.js @@ -13,14 +13,6 @@ // // MLOperand lesser(MLOperand a, MLOperand b); - -const getLesserPrecisionTolerance = (graphResources) => { - const toleranceValueDict = {uint8: 0}; - const expectedDataType = - getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs); - return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]}; -}; - const lesserTests = [ { 'name': 'lesser float32 0D scalar', @@ -998,7 +990,7 @@ const lesserTests = [ if (navigator.ml) { lesserTests.forEach((test) => { webnn_conformance_test( - buildAndExecuteGraph, getLesserPrecisionTolerance, test, + buildAndExecuteGraph, getZeroULPTolerance, test, /*cast_to_supported_type=*/true); }); } else { diff --git a/tests/wpt/tests/webnn/conformance_tests/lesser_or_equal.https.any.js b/tests/wpt/tests/webnn/conformance_tests/lesser_or_equal.https.any.js index 16aa5888cc2..e268dd4d762 100644 --- a/tests/wpt/tests/webnn/conformance_tests/lesser_or_equal.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/lesser_or_equal.https.any.js @@ -14,14 +14,6 @@ // // MLOperand lesserOrEqual(MLOperand a, MLOperand b); - -const getLesserOrEqualPrecisionTolerance = (graphResources) => { - const toleranceValueDict = {uint8: 0}; - const expectedDataType = - getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs); - return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]}; -}; - const lesserOrEqualTests = [ { 'name': 'lesserOrEqual float32 0D scalar', @@ -1105,7 +1097,7 @@ const lesserOrEqualTests = [ if (navigator.ml) { lesserOrEqualTests.forEach((test) => { webnn_conformance_test( - buildAndExecuteGraph, getLesserOrEqualPrecisionTolerance, test, + buildAndExecuteGraph, getZeroULPTolerance, test, /*cast_to_supported_type=*/true); }); } else { diff --git a/tests/wpt/tests/webnn/conformance_tests/logical_and.https.any.js b/tests/wpt/tests/webnn/conformance_tests/logical_and.https.any.js index 1a03ef5444d..40ba45df42d 100644 --- a/tests/wpt/tests/webnn/conformance_tests/logical_and.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/logical_and.https.any.js @@ -415,7 +415,7 @@ const logicalAndTests = [ if (navigator.ml) { logicalAndTests.forEach((test) => { webnn_conformance_test( - buildAndExecuteGraph, getPrecisionTolerance, test, + buildAndExecuteGraph, getZeroULPTolerance, test, /*cast_to_supported_type=*/true); }); } else { diff --git a/tests/wpt/tests/webnn/conformance_tests/logical_not.https.any.js b/tests/wpt/tests/webnn/conformance_tests/logical_not.https.any.js index f8949672cc5..5b0b8da43da 100644 --- a/tests/wpt/tests/webnn/conformance_tests/logical_not.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/logical_not.https.any.js @@ -13,14 +13,6 @@ // // MLOperand logicalNot(MLOperand a); - -const getLogicalNotPrecisionTolerance = (graphResources) => { - const toleranceValueDict = {uint8: 0}; - const expectedDataType = - getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs); - return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]}; -}; - const logicalNotTests = [ { 'name': 'logicalNot uint8 0D scalar', @@ -214,7 +206,7 @@ const logicalNotTests = [ if (navigator.ml) { logicalNotTests.forEach((test) => { webnn_conformance_test( - buildAndExecuteGraph, getLogicalNotPrecisionTolerance, test, + buildAndExecuteGraph, getZeroULPTolerance, test, /*cast_to_supported_type=*/true); }); } else { diff --git a/tests/wpt/tests/webnn/conformance_tests/logical_or.https.any.js b/tests/wpt/tests/webnn/conformance_tests/logical_or.https.any.js index 83c261969f6..587a56710a7 100644 --- a/tests/wpt/tests/webnn/conformance_tests/logical_or.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/logical_or.https.any.js @@ -415,7 +415,7 @@ const logicalOrTests = [ if (navigator.ml) { logicalOrTests.forEach((test) => { webnn_conformance_test( - buildAndExecuteGraph, getPrecisionTolerance, test, + buildAndExecuteGraph, getZeroULPTolerance, test, /*cast_to_supported_type=*/true); }); } else { diff --git a/tests/wpt/tests/webnn/conformance_tests/logical_xor.https.any.js b/tests/wpt/tests/webnn/conformance_tests/logical_xor.https.any.js index 7a9446ea2e4..423d36db2cc 100644 --- a/tests/wpt/tests/webnn/conformance_tests/logical_xor.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/logical_xor.https.any.js @@ -415,7 +415,7 @@ const logicalXorTests = [ if (navigator.ml) { logicalXorTests.forEach((test) => { webnn_conformance_test( - buildAndExecuteGraph, getPrecisionTolerance, test, + buildAndExecuteGraph, getZeroULPTolerance, test, /*cast_to_supported_type=*/true); }); } else { diff --git a/tests/wpt/tests/webnn/conformance_tests/max.https.any.js b/tests/wpt/tests/webnn/conformance_tests/max.https.any.js index 2da14e1545a..bbea2391a3e 100644 --- a/tests/wpt/tests/webnn/conformance_tests/max.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/max.https.any.js @@ -12,14 +12,6 @@ // Compute the element-wise binary maximum of the two input tensors. // MLOperand max(MLOperand a, MLOperand b); - -const getMaxPrecisionTolerance = (graphResources) => { - const toleranceValueDict = {float32: 1, float16: 1}; - const expectedDataType = - getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs); - return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]}; -}; - const maxTests = [ { 'name': 'max float32 1D constant tensors', @@ -930,8 +922,7 @@ const maxTests = [ if (navigator.ml) { maxTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getMaxPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/min.https.any.js b/tests/wpt/tests/webnn/conformance_tests/min.https.any.js index 5e324e412bf..3abd2e63fbb 100644 --- a/tests/wpt/tests/webnn/conformance_tests/min.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/min.https.any.js @@ -12,14 +12,6 @@ // Compute the element-wise binary minimum of the two input tensors. // MLOperand min(MLOperand a, MLOperand b); - -const getMinPrecisionTolerance = (graphResources) => { - const toleranceValueDict = {float32: 0, float16: 0}; - const expectedDataType = - getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs); - return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]}; -}; - const minTests = [ { 'name': 'min float32 1D constant tensors', @@ -940,8 +932,7 @@ const minTests = [ if (navigator.ml) { minTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getMinPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/mul.https.any.js b/tests/wpt/tests/webnn/conformance_tests/mul.https.any.js index 277d3e2fa0d..f8606849dd4 100644 --- a/tests/wpt/tests/webnn/conformance_tests/mul.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/mul.https.any.js @@ -12,14 +12,6 @@ // Compute the element-wise binary multiplication of the two input tensors. // MLOperand mul(MLOperand a, MLOperand b); - -const getMulPrecisionTolerance = (graphResources) => { - const toleranceValueDict = {float32: 1, float16: 1}; - const expectedDataType = - getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs); - return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]}; -}; - const mulTests = [ { 'name': 'mul float32 1D constant tensors', @@ -924,8 +916,7 @@ const mulTests = [ if (navigator.ml) { mulTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getMulPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/not_equal.https.any.js b/tests/wpt/tests/webnn/conformance_tests/not_equal.https.any.js index 5aed1247e06..e7440799b6e 100644 --- a/tests/wpt/tests/webnn/conformance_tests/not_equal.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/not_equal.https.any.js @@ -13,14 +13,6 @@ // // MLOperand notEqual(MLOperand a, MLOperand b); - -const getNotEqualPrecisionTolerance = (graphResources) => { - const toleranceValueDict = {uint8: 0}; - const expectedDataType = - getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs); - return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]}; -}; - const notEqualTests = [ // float32 tests { @@ -988,7 +980,7 @@ const notEqualTests = [ if (navigator.ml) { notEqualTests.forEach((test) => { webnn_conformance_test( - buildAndExecuteGraph, getNotEqualPrecisionTolerance, test, + buildAndExecuteGraph, getZeroULPTolerance, test, /*cast_to_supported_type=*/true); }); } else { diff --git a/tests/wpt/tests/webnn/conformance_tests/pad.https.any.js b/tests/wpt/tests/webnn/conformance_tests/pad.https.any.js index c2ba0e45b8f..ad334675a64 100644 --- a/tests/wpt/tests/webnn/conformance_tests/pad.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/pad.https.any.js @@ -27,11 +27,6 @@ // sequence<[EnforceRange] unsigned long>endingPadding, // optional MLPadOptions options = {}); - -const getPadPrecisionTolerance = () => { - return {metricType: 'ULP', value: 0}; -}; - const padTests = [ { 'name': 'pad float32 1D constant tensor default options', @@ -1036,8 +1031,7 @@ const padTests = [ if (navigator.ml) { padTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getPadPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getZeroULPTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/quantizeLinear.https.any.js b/tests/wpt/tests/webnn/conformance_tests/quantizeLinear.https.any.js index af46c8945a3..112b5848484 100644 --- a/tests/wpt/tests/webnn/conformance_tests/quantizeLinear.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/quantizeLinear.https.any.js @@ -163,12 +163,12 @@ const quantizeLinearTests = [ }, 'quantizeLinearScale': { 'data': [9.343092918395996], - 'descriptor': {shape: [1], dataType: 'float32'}, + 'descriptor': {shape: [1, 1], dataType: 'float32'}, 'constant': true }, 'quantizeLinearZeroPoint': { 'data': [128], - 'descriptor': {shape: [1], dataType: 'uint8'}, + 'descriptor': {shape: [1, 1], dataType: 'uint8'}, 'constant': true } }, @@ -203,12 +203,12 @@ const quantizeLinearTests = [ }, 'quantizeLinearScale': { 'data': [0.2800687253475189, 4.617084980010986], - 'descriptor': {shape: [2, 1], dataType: 'float32'}, + 'descriptor': {shape: [1, 1, 2, 1], dataType: 'float32'}, 'constant': true }, 'quantizeLinearZeroPoint': { 'data': [128, 128], - 'descriptor': {shape: [2, 1], dataType: 'uint8'}, + 'descriptor': {shape: [1, 1, 2, 1], dataType: 'uint8'}, 'constant': true } }, @@ -245,12 +245,12 @@ const quantizeLinearTests = [ 0.2800687253475189, -4.617084980010986, 0.2800687253475189, -4.617084980010986 ], - 'descriptor': {shape: [2, 2], dataType: 'float32'}, + 'descriptor': {shape: [1, 1, 2, 2], dataType: 'float32'}, 'constant': true }, 'quantizeLinearZeroPoint': { 'data': [128, 128, 128, 128], - 'descriptor': {shape: [2, 2], dataType: 'uint8'}, + 'descriptor': {shape: [1, 1, 2, 2], dataType: 'uint8'}, 'constant': true } }, @@ -285,12 +285,12 @@ const quantizeLinearTests = [ }, 'quantizeLinearScale': { 'data': [0.2800687253475189, -4.617084980010986], - 'descriptor': {shape: [2, 1], dataType: 'float32'}, + 'descriptor': {shape: [1, 2, 1], dataType: 'float32'}, 'constant': true }, 'quantizeLinearZeroPoint': { 'data': [128, 189], - 'descriptor': {shape: [2, 1], dataType: 'uint8'}, + 'descriptor': {shape: [1, 2, 1], dataType: 'uint8'}, 'constant': true } }, @@ -341,7 +341,7 @@ const quantizeLinearTests = [ }], 'expectedOutputs': { 'quantizeLinearOutput': - {'data': [-1], 'descriptor': {shape: [], dataType: 'int4'}} + {'data': [0], 'descriptor': {shape: [], dataType: 'int4'}} } } }, @@ -395,12 +395,12 @@ const quantizeLinearTests = [ }, 'quantizeLinearScale': { 'data': [1.1202747821807861, 2.1202747821807861], - 'descriptor': {shape: [2], dataType: 'float32'}, + 'descriptor': {shape: [1, 2], dataType: 'float32'}, 'constant': true }, 'quantizeLinearZeroPoint': { 'data': [-6, -5], - 'descriptor': {shape: [2], dataType: 'int4'}, + 'descriptor': {shape: [1, 2], dataType: 'int4'}, 'constant': true } }, @@ -414,7 +414,7 @@ const quantizeLinearTests = [ }], 'expectedOutputs': { 'quantizeLinearOutput': { - 'data': [-2, -3, -4, -3, -5, -2], + 'data': [-2, -3, -4, -2, -6, -2], 'descriptor': {shape: [3, 2], dataType: 'int4'} } } @@ -436,12 +436,12 @@ const quantizeLinearTests = [ }, 'quantizeLinearScale': { 'data': [1.1202747821807861, 2.1202747821807861], - 'descriptor': {shape: [2], dataType: 'float32'}, + 'descriptor': {shape: [1, 2], dataType: 'float32'}, 'constant': true }, 'quantizeLinearZeroPoint': { 'data': [-6, -5], - 'descriptor': {shape: [2], dataType: 'int4'}, + 'descriptor': {shape: [1, 2], dataType: 'int4'}, 'constant': true } }, @@ -455,7 +455,7 @@ const quantizeLinearTests = [ }], 'expectedOutputs': { 'quantizeLinearOutput': { - 'data': [-2, -3, -4, -3, -5, 0, -2, -3, -4, -1, -5, -2], + 'data': [-2, -3, -4, -2, -6, 0, -3, -3, -4, -1, -5, -2], 'descriptor': {shape: [3, 4], dataType: 'int4'} } } @@ -476,12 +476,12 @@ const quantizeLinearTests = [ }, 'quantizeLinearScale': { 'data': [1.1202747821807861], - 'descriptor': {shape: [], dataType: 'float32'}, + 'descriptor': {shape: [1], dataType: 'float32'}, 'constant': true }, 'quantizeLinearZeroPoint': { - 'data': [12], - 'descriptor': {shape: [], dataType: 'uint4'}, + 'data': [10], + 'descriptor': {shape: [1], dataType: 'uint4'}, 'constant': true } }, @@ -495,7 +495,7 @@ const quantizeLinearTests = [ }], 'expectedOutputs': { 'quantizeLinearOutput': { - 'data': [16, 14, 13, 12, 15], + 'data': [14, 12, 12, 10, 13], 'descriptor': {shape: [5], dataType: 'uint4'} } } @@ -619,7 +619,7 @@ if (navigator.ml) { quantizeLinearTests.forEach((test) => { webnn_conformance_test( buildAndExecuteGraph, getQuantizeLinearPrecisionTolerance, test, - /*cast_to_supported_type=*/ true); + /*cast_to_supported_type=*/true); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_l1.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_l1.https.any.js index cb09f1cab93..d59909f50c1 100644 --- a/tests/wpt/tests/webnn/conformance_tests/reduce_l1.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/reduce_l1.https.any.js @@ -19,13 +19,6 @@ // // MLOperand reduceL1(MLOperand input, optional MLReduceOptions options = {}); -const getReductionOperatorsPrecisionTolerance = (graphResources) => { - return { - metricType: 'ULP', - value: getReducedElementCount(graphResources), - }; -}; - const reduceL1Tests = [ { 'name': 'reduceL1 float32 0D constant tensor default options', @@ -1195,8 +1188,7 @@ const reduceL1Tests = [ if (navigator.ml) { reduceL1Tests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getReductionOperatorsPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_l2.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_l2.https.any.js index 0670a1d25c1..9ccd350772d 100644 --- a/tests/wpt/tests/webnn/conformance_tests/reduce_l2.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/reduce_l2.https.any.js @@ -19,13 +19,6 @@ // // MLOperand reduceL2(MLOperand input, optional MLReduceOptions options = {}); -const getReductionOperatorsPrecisionTolerance = (graphResources) => { - return { - metricType: 'ULP', - value: getReducedElementCount(graphResources) * 2 + 1, - }; -}; - const reduceL2Tests = [ // reduceL2 tests { @@ -1135,8 +1128,7 @@ const reduceL2Tests = [ if (navigator.ml) { reduceL2Tests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getReductionOperatorsPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_log_sum.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_log_sum.https.any.js index 9d30accb2cb..714ba1c8b5f 100644 --- a/tests/wpt/tests/webnn/conformance_tests/reduce_log_sum.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/reduce_log_sum.https.any.js @@ -20,13 +20,6 @@ // MLOperand reduceLogSum(MLOperand input, optional MLReduceOptions options // = {}); -const getReductionOperatorsPrecisionTolerance = (graphResources) => { - return { - metricType: 'ULP', - value: getReducedElementCount(graphResources) + 18, - }; -}; - const reduceLogSumTests = [ { 'name': 'reduceLogSum float32 0D constant tensor default options', @@ -1082,8 +1075,7 @@ const reduceLogSumTests = [ if (navigator.ml) { reduceLogSumTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getReductionOperatorsPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_log_sum_exp.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_log_sum_exp.https.any.js index e8026435017..298e143af9c 100644 --- a/tests/wpt/tests/webnn/conformance_tests/reduce_log_sum_exp.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/reduce_log_sum_exp.https.any.js @@ -20,13 +20,6 @@ // MLOperand reduceLogSumExp(MLOperand input, optional MLReduceOptions options // = {}); -const getReductionOperatorsPrecisionTolerance = (graphResources) => { - return { - metricType: 'ULP', - value: getReducedElementCount(graphResources) * 2 + 18, - }; -}; - const reduceLogSumExpTests = [ { 'name': 'reduceLogSumExp float32 0D constant tensor default options', @@ -1219,8 +1212,7 @@ const reduceLogSumExpTests = [ if (navigator.ml) { reduceLogSumExpTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getReductionOperatorsPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_max.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_max.https.any.js index 784db3101b6..659641c5c5f 100644 --- a/tests/wpt/tests/webnn/conformance_tests/reduce_max.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/reduce_max.https.any.js @@ -19,13 +19,6 @@ // // MLOperand reduceMax(MLOperand input, optional MLReduceOptions options = {}); -const getReductionOperatorsPrecisionTolerance = (graphResources) => { - return { - metricType: 'ULP', - value: 0, - }; -}; - const reduceMaxTests = [ { 'name': 'reduceMax float32 0D constant tensor default options', @@ -1002,8 +995,7 @@ const reduceMaxTests = [ if (navigator.ml) { reduceMaxTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getReductionOperatorsPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_mean.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_mean.https.any.js index 63566b011c0..4851e51674c 100644 --- a/tests/wpt/tests/webnn/conformance_tests/reduce_mean.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/reduce_mean.https.any.js @@ -19,13 +19,6 @@ // // MLOperand reduceMean(MLOperand input, optional MLReduceOptions options = {}); -const getReductionOperatorsPrecisionTolerance = (graphResources) => { - return { - metricType: 'ULP', - value: getReducedElementCount(graphResources) + 2, - }; -}; - const reduceMeanTests = [ { 'name': 'reduceMean float32 0D constant tensor default options', @@ -1163,8 +1156,7 @@ const reduceMeanTests = [ if (navigator.ml) { reduceMeanTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getReductionOperatorsPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_min.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_min.https.any.js index 64cf8b7ee98..42fc3e464d2 100644 --- a/tests/wpt/tests/webnn/conformance_tests/reduce_min.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/reduce_min.https.any.js @@ -19,13 +19,6 @@ // // MLOperand reduceMin(MLOperand input, optional MLReduceOptions options = {}); -const getReductionOperatorsPrecisionTolerance = (graphResources) => { - return { - metricType: 'ULP', - value: 0, - }; -}; - const reduceMinTests = [ { 'name': 'reduceMin float32 0D constant tensor default options', @@ -1002,8 +995,7 @@ const reduceMinTests = [ if (navigator.ml) { reduceMinTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getReductionOperatorsPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_product.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_product.https.any.js index 6b4c1242d7f..17ee27ed0e9 100644 --- a/tests/wpt/tests/webnn/conformance_tests/reduce_product.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/reduce_product.https.any.js @@ -20,13 +20,6 @@ // MLOperand reduceProduct(MLOperand input, optional MLReduceOptions options // = {}); -const getReductionOperatorsPrecisionTolerance = (graphResources) => { - return { - metricType: 'ULP', - value: getReducedElementCount(graphResources), - }; -}; - const reduceProductTests = [ { 'name': 'reduceProduct float32 0D constant tensor default options', @@ -1042,8 +1035,7 @@ const reduceProductTests = [ if (navigator.ml) { reduceProductTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getReductionOperatorsPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_sum.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_sum.https.any.js index d333f9fb5ad..1d6f944f616 100644 --- a/tests/wpt/tests/webnn/conformance_tests/reduce_sum.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/reduce_sum.https.any.js @@ -19,13 +19,6 @@ // // MLOperand reduceSum(MLOperand input, optional MLReduceOptions options = {}); -const getReductionOperatorsPrecisionTolerance = (graphResources) => { - return { - metricType: 'ULP', - value: getReducedElementCount(graphResources), - }; -}; - const reduceSumTests = [ { 'name': 'reduceSum float32 0D constant tensor default options', @@ -1137,8 +1130,7 @@ const reduceSumTests = [ if (navigator.ml) { reduceSumTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getReductionOperatorsPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_sum_square.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_sum_square.https.any.js index 8c0aa9a89a4..73762e4b8dc 100644 --- a/tests/wpt/tests/webnn/conformance_tests/reduce_sum_square.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/reduce_sum_square.https.any.js @@ -20,13 +20,6 @@ // MLOperand reduceSumSquare(MLOperand input, optional MLReduceOptions options // = {}); -const getReductionOperatorsPrecisionTolerance = (graphResources) => { - return { - metricType: 'ULP', - value: getReducedElementCount(graphResources) * 2, - }; -}; - const reduceSumSquareTests = [ { 'name': 'reduceSumSquare float32 0D constant tensor default options', @@ -1223,8 +1216,7 @@ const reduceSumSquareTests = [ if (navigator.ml) { reduceSumSquareTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getReductionOperatorsPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/resample2d.https.any.js b/tests/wpt/tests/webnn/conformance_tests/resample2d.https.any.js index 03e462c860a..fe50b8ccb77 100644 --- a/tests/wpt/tests/webnn/conformance_tests/resample2d.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/resample2d.https.any.js @@ -27,33 +27,6 @@ // MLOperand resample2d( // MLOperand input, optional MLResample2dOptions options = {}); - -const getResample2dPrecisionTolerance = (graphResources) => { - const args = graphResources.operators[0].arguments; - const options = - args.length === 2 ? {...args[1][Object.keys(args[1])[0]]} : {}; - const expectedOutputs = graphResources.expectedOutputs; - const dataType = - expectedOutputs[Object.keys(expectedOutputs)[0]].descriptor.dataType; - let tolerance; - - if (options.mode && options.mode === 'linear') { - // interpolation mode is linear - if (dataType === 'float32') { - tolerance = 84; - } else if (dataType === 'float16') { - tolerance = 10; - } else { - tolerance = 1; - } - } else { - // interpolation mode is nearest-neighbor - tolerance = 0; - } - - return {metricType: 'ULP', value: tolerance}; -}; - const resample2dTests = [ { 'name': 'resample2d float32 4D tensor default options', @@ -546,8 +519,7 @@ const resample2dTests = [ if (navigator.ml) { resample2dTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getResample2dPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/reshape.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reshape.https.any.js index 8345f09ae92..e54d0f60be2 100644 --- a/tests/wpt/tests/webnn/conformance_tests/reshape.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/reshape.https.any.js @@ -14,7 +14,6 @@ // MLOperand reshape( // MLOperand input, sequence<[EnforceRange] unsigned long> newShape); - const reshapeTests = [ { 'name': 'reshape float32 tensor to a new shape (reorder all dimensions)', @@ -2364,7 +2363,7 @@ const reshapeTests = [ if (navigator.ml) { reshapeTests.forEach((test) => { - webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getZeroULPTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/reverse.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reverse.https.any.js index 8c76d04b1ee..3b1d8bf7efe 100644 --- a/tests/wpt/tests/webnn/conformance_tests/reverse.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/reverse.https.any.js @@ -17,7 +17,6 @@ // // MLOperand reverse(MLOperand input, optional MLReverseOptions options = {}); - const reverseTests = [ { 'name': 'reverse float32 2D input with default options', @@ -265,7 +264,7 @@ const reverseTests = [ if (navigator.ml) { reverseTests.forEach((test) => { - webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getZeroULPTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/scatterElements.https.any.js b/tests/wpt/tests/webnn/conformance_tests/scatterElements.https.any.js index d988719d840..e76494b2f2f 100644 --- a/tests/wpt/tests/webnn/conformance_tests/scatterElements.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/scatterElements.https.any.js @@ -8,10 +8,6 @@ 'use strict'; -const getScatterElementsPrecisionTolerance = () => { - return {metricType: 'ULP', value: 0}; -}; - const scatterElementsTests = [ { 'name': 'scatterElements float32 tensors along axis 0', @@ -287,8 +283,7 @@ const scatterElementsTests = [ if (navigator.ml) { scatterElementsTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getScatterElementsPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getZeroULPTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/scatterND.https.any.js b/tests/wpt/tests/webnn/conformance_tests/scatterND.https.any.js index 8505d143c76..93b5ca52aa2 100644 --- a/tests/wpt/tests/webnn/conformance_tests/scatterND.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/scatterND.https.any.js @@ -8,10 +8,6 @@ 'use strict'; -const getScatterNDPrecisionTolerance = () => { - return {metricType: 'ULP', value: 0}; -}; - const scatterNDTests = [ { 'name': @@ -169,8 +165,7 @@ const scatterNDTests = [ if (navigator.ml) { scatterNDTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getScatterNDPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getZeroULPTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/slice.https.any.js b/tests/wpt/tests/webnn/conformance_tests/slice.https.any.js index 6be61a9c253..7603e47c699 100644 --- a/tests/wpt/tests/webnn/conformance_tests/slice.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/slice.https.any.js @@ -15,11 +15,6 @@ // MLOperand input, sequence<[EnforceRange] unsigned long>starts, // sequence<[EnforceRange] unsigned long>sizes); - -const getSlicePrecisionTolerance = () => { - return {metricType: 'ULP', value: 0}; -}; - const sliceTests = [ { 'name': 'slice float32 1D constant tensor', @@ -632,8 +627,7 @@ const sliceTests = [ if (navigator.ml) { sliceTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getSlicePrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getZeroULPTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/split.https.any.js b/tests/wpt/tests/webnn/conformance_tests/split.https.any.js index c805be25257..925ba6244d0 100644 --- a/tests/wpt/tests/webnn/conformance_tests/split.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/split.https.any.js @@ -20,11 +20,6 @@ // ([EnforceRange] unsigned long or sequence<[EnforceRange] unsigned long>) // splits, optional MLSplitOptions options = {}); - -const getSplitPrecisionTolerance = () => { - return {metricType: 'ULP', value: 0}; -}; - const splitTests = [ { 'name': 'split float32 1D constant tensor number splits default options', @@ -925,8 +920,7 @@ const splitTests = [ if (navigator.ml) { splitTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getSplitPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getZeroULPTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/sub.https.any.js b/tests/wpt/tests/webnn/conformance_tests/sub.https.any.js index 85b15f5a000..31d5e9fb9f7 100644 --- a/tests/wpt/tests/webnn/conformance_tests/sub.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/sub.https.any.js @@ -12,23 +12,6 @@ // Compute the element-wise binary subtraction of the two input tensors. // MLOperand sub(MLOperand a, MLOperand b); - -const getSubPrecisionTolerance = (graphResources) => { - const toleranceValueDict = { - float32: 1, - float16: 1, - int8: 0, - uint8: 0, - int32: 0, - uint32: 0, - int64: 0, - uint64: 0 - }; - const expectedDataType = - getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs); - return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]}; -}; - const subTests = [ { 'name': 'sub float32 1D constant tensors', @@ -1132,8 +1115,7 @@ const subTests = [ if (navigator.ml) { subTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getSubPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/tanh.https.any.js b/tests/wpt/tests/webnn/conformance_tests/tanh.https.any.js index 63b8668644a..88d48e9eb79 100644 --- a/tests/wpt/tests/webnn/conformance_tests/tanh.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/tanh.https.any.js @@ -14,13 +14,6 @@ // // MLOperand tanh(MLOperand input); -const getTanhPrecisionTolerance = (graphResources) => { - const toleranceValueDict = {float32: 1 / 1024, float16: 1 / 512}; - const expectedDataType = - getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs); - return {metricType: 'ATOL', value: toleranceValueDict[expectedDataType]}; -}; - const tanhTests = [ { 'name': 'tanh float32 1D constant tensor', @@ -594,8 +587,7 @@ const tanhTests = [ if (navigator.ml) { tanhTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getTanhPrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/tile.https.any.js b/tests/wpt/tests/webnn/conformance_tests/tile.https.any.js index 29a24871816..aa34b082c7e 100644 --- a/tests/wpt/tests/webnn/conformance_tests/tile.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/tile.https.any.js @@ -16,11 +16,6 @@ // MLOperand input, sequence repetitions, optional // MLOperatorOptions options = {}); - -const getTilePrecisionTolerance = () => { - return {metricType: 'ULP', value: 0}; -}; - const tileTests = [ { 'name': 'tile float32 1D constant tensor', @@ -147,8 +142,7 @@ const tileTests = [ if (navigator.ml) { tileTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getTilePrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getZeroULPTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/conformance_tests/transpose.https.any.js b/tests/wpt/tests/webnn/conformance_tests/transpose.https.any.js index 413b159f743..27b7e743e80 100644 --- a/tests/wpt/tests/webnn/conformance_tests/transpose.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/transpose.https.any.js @@ -19,11 +19,6 @@ // MLOperand transpose( // MLOperand input, optional MLTransposeOptions options = {}); - -const getTransposePrecisionTolerance = () => { - return {metricType: 'ULP', value: 0}; -}; - const transposeTests = [ { 'name': 'transpose float32 0D constant tensor default options', @@ -702,8 +697,7 @@ const transposeTests = [ if (navigator.ml) { transposeTests.forEach((test) => { - webnn_conformance_test( - buildAndExecuteGraph, getTransposePrecisionTolerance, test); + webnn_conformance_test(buildAndExecuteGraph, getZeroULPTolerance, test); }); } else { test(() => assert_implements(navigator.ml, 'missing navigator.ml')); diff --git a/tests/wpt/tests/webnn/resources/utils.js b/tests/wpt/tests/webnn/resources/utils.js index c562b3028bd..1e7b5a9ca79 100644 --- a/tests/wpt/tests/webnn/resources/utils.js +++ b/tests/wpt/tests/webnn/resources/utils.js @@ -1,8 +1,28 @@ 'use strict'; const operatorToleranceDict = { + argMax: {float32: 0, float16: 0}, + argMin: {float32: 0, float16: 0}, batchNormalization: {float32: 6, float16: 6}, clamp: {float32: 0, float16: 0}, + + // Element-wise binary operations + add: {float32: 1, float16: 1}, + sub: { + float32: 1, + float16: 1, + int8: 0, + uint8: 0, + int32: 0, + uint32: 0, + int64: 0, + uint64: 0 + }, + mul: {float32: 1, float16: 1}, + max: {float32: 0, float16: 0}, + min: {float32: 0, float16: 0}, + // Element-wise binary operations + elu: {float32: 18, float16: 18}, gelu: {float32: 18, float16: 18}, hardSigmoid: {float32: 2, float16: 2}, @@ -11,10 +31,25 @@ const operatorToleranceDict = { linear: {float32: 2, float16: 2}, prelu: {float32: 1, float16: 1}, relu: {float32: 0, float16: 0, int8: 0, int32: 0}, - reshape: {float32: 0, float16: 0}, sigmoid: {float32: 34, float16: 10}, softplus: {float32: 18, float16: 18}, softsign: {float32: 3, float16: 3}, + tanh: {float32: 16, float16: 16}, +}; + +const zeroULPToleranceOperatorList = [ + // data movement operators + 'concat', 'expand', 'gather', 'gatherElements', 'gatherND', 'identity', 'pad', + 'reshape', 'reverse', 'scatterElements', 'scatterND', 'slice', 'split', + 'tile', 'transpose', + + // element-wise logical operators + 'equal', 'notEqual', 'greater', 'greaterOrEqual', 'lesser', 'lesserOrEqual', + 'logicalNot', 'logicalAnd', 'logicalOr', 'logicalXor' +]; + +const getZeroULPTolerance = () => { + return {metricType: 'ULP', value: 0}; }; const getSoftmaxPrecisionTolerance = @@ -66,11 +101,34 @@ const getPrecisionTolerance = (graphResources, intermediateOperands) => { op, graphResources, intermediateOperands) .value; break; + case 'reduceL1': + case 'reduceL2': + case 'reduceLogSum': + case 'reduceLogSumExp': + case 'reduceMax': + case 'reduceMean': + case 'reduceMin': + case 'reduceProduct': + case 'reduceSum': + case 'reduceSumSquare': + toleranceValue += getReductionOperatorsPrecisionTolerance( + op, graphResources, intermediateOperands) + .value; + break; + case 'resample2d': + toleranceValue += getResample2dPrecisionTolerance( + op, graphResources, intermediateOperands) + .value; + break; default: - const operatorTolerance = - operatorToleranceDict[op.name]?.[expectedDataType]; - if (operatorTolerance !== undefined) { - toleranceValue += operatorTolerance; + if (zeroULPToleranceOperatorList.includes(op.name)) { + toleranceValue += getZeroULPTolerance().value; + } else { + const operatorTolerance = + operatorToleranceDict[op.name]?.[expectedDataType]; + if (operatorTolerance !== undefined) { + toleranceValue += operatorTolerance; + } } } }); @@ -1070,27 +1128,81 @@ const getExpectedDataTypeOfSingleOutput = (expectedOutput) => { return dataType; }; -const getReducedElementCount = - (graphResources) => { - const args = graphResources.operators[0].arguments; - const inputShape = graphResources.inputs[args[0][Object.keys(args[0])[0]]] - .descriptor.shape; - const rank = inputShape.length; - const options = - args.length === 2 ? {...args[1][Object.keys(args[1])[0]]} : {}; - let sizes; - - if (options && options.axes) { - sizes = options.axes.map( - (axis) => axis < 0 ? inputShape[axis + rank] : inputShape[axis]); +const getReductionOperatorsPrecisionTolerance = + (op, graphResources, intermediateOperands) => { + let tolerance; + const operatorName = op.name; + if (op.name === 'reduceMax' || op.name === 'reduceMin') { + tolerance = 0; } else { - sizes = inputShape; + // other reduction operators + const args = op.arguments; + const {inputs} = graphResources; + let inputShape; + const inputIndex = args[0][Object.keys(args[0])[0]]; + if (inputs[inputIndex]) { + inputShape = inputs[inputIndex].descriptor.shape; + } else { + inputShape = intermediateOperands[inputIndex].shape; + } + + const rank = inputShape.length; + const options = + args.length === 2 ? {...args[1][Object.keys(args[1])[0]]} : {}; + let sizes; + + if (options && options.axes) { + sizes = options.axes.map( + (axis) => axis < 0 ? inputShape[axis + rank] : inputShape[axis]); + } else { + sizes = inputShape; + } + + const elementCount = sizes.reduce( + (accumulator, currentValue) => accumulator * currentValue, 1); + tolerance = elementCount; } - return sizes.length ? - sizes.reduce( - (accumulator, currentValue) => accumulator * currentValue) : - 1; + const toleranceDict = { + reduceL1: tolerance, + reduceL2: tolerance * 2 + 2, + reduceLogSum: tolerance + 18, + reduceLogSumExp: tolerance * 2 + 18, + reduceMax: tolerance, + reduceMean: tolerance + 2, + reduceMin: tolerance, + reduceProduct: tolerance, + reduceSum: tolerance, + reduceSumSquare: tolerance * 2 + }; + return {metricType: 'ULP', value: toleranceDict[operatorName]}; + }; + +const getResample2dPrecisionTolerance = + (op, graphResources, intermediateOperands) => { + const args = op.arguments; + const options = + args.length === 2 ? {...args[1][Object.keys(args[1])[0]]} : {}; + const expectedOutputs = graphResources.expectedOutputs; + const dataType = + expectedOutputs[Object.keys(expectedOutputs)[0]].descriptor.dataType; + let tolerance; + + if (options.mode && options.mode === 'linear') { + // interpolation mode is linear + if (dataType === 'float32') { + tolerance = 84; + } else if (dataType === 'float16') { + tolerance = 10; + } else { + tolerance = 1; + } + } else { + // interpolation mode is nearest-neighbor + tolerance = 0; + } + + return {metricType: 'ULP', value: tolerance}; }; // `cast_to_supported_type` will check if the graph input/output is diff --git a/tests/wpt/tests/webrtc/RTCRtpReceiver-track-settings.tentative.html b/tests/wpt/tests/webrtc/RTCRtpReceiver-track-settings.tentative.html new file mode 100644 index 00000000000..d10707ce13c --- /dev/null +++ b/tests/wpt/tests/webrtc/RTCRtpReceiver-track-settings.tentative.html @@ -0,0 +1,57 @@ + + +RTCRtpReceiver.track.getSettings() + + + + diff --git a/tests/wpt/tests/webstorage/symbol-props.window.js b/tests/wpt/tests/webstorage/symbol-props.window.js index 61dd8f83dc4..8f598d70769 100644 --- a/tests/wpt/tests/webstorage/symbol-props.window.js +++ b/tests/wpt/tests/webstorage/symbol-props.window.js @@ -39,10 +39,10 @@ Object.defineProperty(storage, key, { "value": "test", "configurable": false }); assert_equals(storage[key], "test"); var desc = Object.getOwnPropertyDescriptor(storage, key); - assert_true(desc.configurable, "configurable"); + assert_false(desc.configurable, "configurable"); - assert_true(delete storage[key]); - assert_equals(storage[key], undefined); + assert_false(delete storage[key]); + assert_equals(storage[key], "test"); }, name + ": defineProperty not configurable"); test(function() {