aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini3
-rw-r--r--tests/wpt/metadata/MANIFEST.json1104
-rw-r--r--tests/wpt/metadata/css/css-animations/parsing/animation-delay-computed.html.ini10
-rw-r--r--tests/wpt/metadata/css/css-animations/parsing/animation-duration-computed.html.ini10
-rw-r--r--tests/wpt/metadata/css/css-flexbox/align-content-wrap-001.html.ini13
-rw-r--r--tests/wpt/metadata/css/css-flexbox/align-content-wrap-002.html.ini10
-rw-r--r--tests/wpt/metadata/css/css-flexbox/align-content-wrap-003.html.ini70
-rw-r--r--tests/wpt/metadata/css/css-text/writing-system/writing-system-line-break-002.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/writing-system/writing-system-segment-break-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-transitions/parsing/transition-duration-computed.html.ini10
-rw-r--r--tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini5
-rw-r--r--tests/wpt/metadata/css/filter-effects/backdrop-filter-clip-rect.html.ini2
-rw-r--r--tests/wpt/metadata/css/filter-effects/parsing/backdrop-filter-computed.html.ini85
-rw-r--r--tests/wpt/metadata/css/filter-effects/parsing/filter-computed.html.ini48
-rw-r--r--tests/wpt/metadata/css/geometry/interfaces.html.ini9
-rw-r--r--tests/wpt/metadata/css/geometry/interfaces.worker.js.ini9
-rw-r--r--tests/wpt/metadata/css/selectors/invalidation/is.html.ini19
-rw-r--r--tests/wpt/metadata/css/selectors/is-nested.html.ini7
-rw-r--r--tests/wpt/metadata/css/selectors/is-specificity.html.ini4
-rw-r--r--tests/wpt/metadata/encoding/single-byte-decoder.html.ini34
-rw-r--r--tests/wpt/metadata/fetch/api/headers/headers-no-cors.window.js.ini12
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini10
-rw-r--r--tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-xml.window.js.ini3
-rw-r--r--tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini3
-rw-r--r--tests/wpt/metadata/quirks/unitless-length/limited-quirks.html.ini (renamed from tests/wpt/metadata/quirks/unitless-length/no-quirks.html.ini)2
-rw-r--r--tests/wpt/metadata/quirks/unitless-length/quirks.html.ini283
-rw-r--r--tests/wpt/metadata/wasm/webapi/abort.any.js.ini12
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini1
-rw-r--r--tests/wpt/web-platform-tests/.taskcluster.yml5
-rw-r--r--tests/wpt/web-platform-tests/.travis.yml8
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbcursor_advance_index2.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbcursor_advance_index3.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbcursor_advance_index5.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_index5.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_index6.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_invalid.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_index.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_index2.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_objectstore.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_objectstore2.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbcursor_update_objectstore4.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbdatabase_createObjectStore10-1000ends.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbdatabase_createObjectStore7.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbdatabase_deleteObjectStore4-not_reused.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbdatabase_transaction4.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbfactory_deleteDatabase3.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbfactory_open10.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbfactory_open11.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbfactory_open12.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbindex-multientry-arraykeypath.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbindex-multientry-big.htm4
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbindex-multientry.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbindex_indexNames.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex3-usable-right-away.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex4-deleteIndex-event_order.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex5-emptykeypath.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex6-event_order.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex7-event_order.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex8-valid_keys.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_deleted.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbtransaction-oncomplete.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbtransaction_abort.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbversionchangeevent.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/keygenerator-constrainterror.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/keygenerator-overflow.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/keyorder.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/keypath_maxsize.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/request_bubble-and-capture.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/transaction-lifetime-blocked.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/transaction-lifetime.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/transaction-requestqueue.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/transaction_bubble-and-capture.htm2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/writer-starvation.htm2
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-body.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/reference/box-shadow-body-ref.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-break/line-after-unbreakable-float-after-padding-ref.html7
-rw-r--r--tests/wpt/web-platform-tests/css/css-break/line-after-unbreakable-float-after-padding.html11
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/align-content-wrap-001.html77
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/align-content-wrap-002.html108
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/align-content-wrap-003.html330
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/align-content-wrap-004.html38
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-self-alignment-stretch-input-range-ref.html61
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-self-alignment-stretch-input-range.html58
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-001-ref.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-001.html5
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-lr-001-ref.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-lr-001.html5
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001-ref.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001.html5
-rw-r--r--tests/wpt/web-platform-tests/css/css-logical/logical-values-float-clear-reftest.html68
-rw-r--r--tests/wpt/web-platform-tests/css/css-logical/reference/logical-values-float-clear-reftest-ref.html68
-rw-r--r--tests/wpt/web-platform-tests/css/css-logical/resources/test-logical-values.js22
-rw-r--r--tests/wpt/web-platform-tests/css/css-properties-values-api/var-reference-registered-properties.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-font-001-ref.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-line-break-001-ref.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-line-break-002-ref.html11
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-segment-break-001-ref.html10
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-text-transform-001-ref.html13
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-font-001.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-line-break-001.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-line-break-002.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-segment-break-001.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-text-transform-001.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/animation/resources/interpolation-testcommon.js26
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-basic-background-color.html1
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-basic-opacity.html1
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-basic.html1
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-border-radius.html1
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-clip-rect-ref.html43
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-clip-rect.html43
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-edge-pixels-ref.html25
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-edge-pixels.html24
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-isolation-isolate.html1
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-isolation.html1
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-paint-order-ref.html50
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-paint-order.html49
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/invalidation/is.html (renamed from tests/wpt/web-platform-tests/css/selectors/invalidation/matches.html)22
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/invalidation/where.html2
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/is-nested.html (renamed from tests/wpt/web-platform-tests/css/selectors/matches-nested.html)16
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/is-specificity.html (renamed from tests/wpt/web-platform-tests/css/selectors/matches-specificity.html)8
-rw-r--r--tests/wpt/web-platform-tests/css/support/computed-testcommon.js6
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html43
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html30
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/animation-property-height.js3
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/common.js27
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/camera-report-only.https.html29
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/camera-report-only.https.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/camera-reporting.https.html9
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/document-write-report-only.html26
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/document-write-report-only.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/document-write-reporting.html9
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/encrypted-media-report-only.https.html30
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/encrypted-media-report-only.https.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/encrypted-media-reporting.https.html1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/fullscreen-report-only.html31
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/fullscreen-report-only.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/fullscreen-reporting.html9
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/generic-sensor-report-only.https.html56
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/generic-sensor-report-only.https.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/generic-sensor-reporting.https.html1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/geolocation-report-only.https.html36
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/geolocation-report-only.https.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/geolocation-reporting.https.html8
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/microphone-report-only.https.html29
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/microphone-report-only.https.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/microphone-reporting.https.html9
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/midi-report-only.html34
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/midi-report-only.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/midi-reporting.html9
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/payment-report-only.https.html37
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/payment-report-only.https.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/payment-reporting.https.html9
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-report-only.html40
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-report-only.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-reporting.html1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/sync-xhr-report-only.html28
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/sync-xhr-report-only.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/sync-xhr-reporting.html9
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/unsized-media-reporting.html6
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/usb-report-only.https.html30
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/usb-report-only.https.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/usb-reporting.https.html9
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/vr-report-only.https.html31
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/vr-report-only.https.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/vr-reporting.https.html9
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/xr-report-only.https.html37
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/xr-report-only.https.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html9
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html.headers2
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/headers/headers-no-cors.window.js29
-rw-r--r--tests/wpt/web-platform-tests/fullscreen/rendering/fullscreen-css-transition.html27
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/time-focus-dynamic-value-change.html31
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini4
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/eventOrder.html.ini4
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/testdriver/actions/elementPosition.html2
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/testdriver/actions/eventOrder.html14
-rw-r--r--tests/wpt/web-platform-tests/interfaces/geometry.idl2
-rw-r--r--tests/wpt/web-platform-tests/lint.whitelist1
-rw-r--r--tests/wpt/web-platform-tests/longtask-timing/longtask-attributes.html4
-rw-r--r--tests/wpt/web-platform-tests/longtask-timing/longtask-in-childiframe-crossorigin.html2
-rw-r--r--tests/wpt/web-platform-tests/longtask-timing/longtask-in-childiframe.html2
-rw-r--r--tests/wpt/web-platform-tests/longtask-timing/longtask-in-externalscript.html4
-rw-r--r--tests/wpt/web-platform-tests/longtask-timing/longtask-in-parentiframe.html2
-rw-r--r--tests/wpt/web-platform-tests/longtask-timing/longtask-in-raf.html2
-rw-r--r--tests/wpt/web-platform-tests/longtask-timing/longtask-in-sibling-iframe-crossorigin.html2
-rw-r--r--tests/wpt/web-platform-tests/longtask-timing/longtask-in-sibling-iframe.html2
-rw-r--r--tests/wpt/web-platform-tests/pointerevents/pointerevent_pointermove-manual.html (renamed from tests/wpt/web-platform-tests/pointerevents/pointerevent_pointermove.html)6
-rw-r--r--tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated-uncaught-allow.html48
-rw-r--r--tests/wpt/web-platform-tests/resources/test/tests/functional/worker-uncaught-allow.js17
-rw-r--r--tests/wpt/web-platform-tests/resources/testdriver-actions.js22
-rw-r--r--tests/wpt/web-platform-tests/resources/testdriver.js4
-rw-r--r--tests/wpt/web-platform-tests/resources/testharness.js27
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/clients-get.https.html156
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event.https.html23
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/import-module-scripts.https.html1
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/clients-get-resultingClientId-worker.js64
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-event-test-worker.js11
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/registration-tests-scope.js4
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/registration-tests-security-error.js4
-rw-r--r--tests/wpt/web-platform-tests/svg/geometry/parsing/cx-computed.svg27
-rw-r--r--tests/wpt/web-platform-tests/svg/geometry/parsing/cy-computed.svg27
-rw-r--r--tests/wpt/web-platform-tests/svg/geometry/parsing/r-computed.svg27
-rw-r--r--tests/wpt/web-platform-tests/svg/geometry/parsing/rx-computed.svg29
-rw-r--r--tests/wpt/web-platform-tests/svg/geometry/parsing/ry-computed.svg29
-rw-r--r--tests/wpt/web-platform-tests/svg/geometry/parsing/x-computed.svg27
-rw-r--r--tests/wpt/web-platform-tests/svg/geometry/parsing/y-computed.svg27
-rw-r--r--tests/wpt/web-platform-tests/svg/interact/script-common.html55
-rw-r--r--tests/wpt/web-platform-tests/svg/interact/script-content.svg239
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/scripted/paint-order-computed-value-01.svg62
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/fennec.py3
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py2
-rw-r--r--tests/wpt/web-platform-tests/user-timing/mark-measure-return-null.html46
-rw-r--r--tests/wpt/web-platform-tests/wasm/webapi/abort.any.js13
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/maximize_window/stress.py1
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCConfiguration-rtcpMuxPolicy.html5
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate.html69
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceGatheringState.html5
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onnegotiationneeded.html5
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-rollback.html3
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-offer.html3
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html5
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCQuicStream.https.html127
226 files changed, 4495 insertions, 903 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
index 3a3d15b8406..6a3af4e2ece 100644
--- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
@@ -37,6 +37,3 @@
[Revoke blob URL after creating Request, will fetch]
expected: FAIL
- [Revoke blob URL after calling fetch, fetch should succeed]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index bf86c885749..b7fc9784d75 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -13795,6 +13795,12 @@
{}
]
],
+ "pointerevents/pointerevent_pointermove-manual.html": [
+ [
+ "/pointerevents/pointerevent_pointermove-manual.html",
+ {}
+ ]
+ ],
"pointerevents/pointerevent_pointermove_isprimary_same_as_pointerdown-manual.html": [
[
"/pointerevents/pointerevent_pointermove_isprimary_same_as_pointerdown-manual.html",
@@ -107203,6 +107209,18 @@
{}
]
],
+ "css/css-backgrounds/box-shadow-body.html": [
+ [
+ "/css/css-backgrounds/box-shadow-body.html",
+ [
+ [
+ "/css/css-backgrounds/reference/box-shadow-body-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-backgrounds/box-shadow-inset-spread-without-border-radius.html": [
[
"/css/css-backgrounds/box-shadow-inset-spread-without-border-radius.html",
@@ -107491,6 +107509,18 @@
{}
]
],
+ "css/css-break/line-after-unbreakable-float-after-padding.html": [
+ [
+ "/css/css-break/line-after-unbreakable-float-after-padding.html",
+ [
+ [
+ "/css/css-break/line-after-unbreakable-float-after-padding-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-break/widows-orphans-001.html": [
[
"/css/css-break/widows-orphans-001.html",
@@ -113911,6 +113941,18 @@
{}
]
],
+ "css/css-flexbox/align-content-wrap-004.html": [
+ [
+ "/css/css-flexbox/align-content-wrap-004.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-flexbox/align-items-001.htm": [
[
"/css/css-flexbox/align-items-001.htm",
@@ -121143,6 +121185,18 @@
{}
]
],
+ "css/css-grid/alignment/grid-self-alignment-stretch-input-range.html": [
+ [
+ "/css/css-grid/alignment/grid-self-alignment-stretch-input-range.html",
+ [
+ [
+ "/css/css-grid/alignment/grid-self-alignment-stretch-input-range-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-001.html": [
[
"/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-001.html",
@@ -124527,6 +124581,18 @@
{}
]
],
+ "css/css-logical/logical-values-float-clear-reftest.html": [
+ [
+ "/css/css-logical/logical-values-float-clear-reftest.html",
+ [
+ [
+ "/css/css-logical/reference/logical-values-float-clear-reftest-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-masking/clip-path-svg-content/clip-path-clip-nested-twice.svg": [
[
"/css/css-masking/clip-path-svg-content/clip-path-clip-nested-twice.svg",
@@ -141831,6 +141897,66 @@
{}
]
],
+ "css/css-text/writing-system/writing-system-font-001.html": [
+ [
+ "/css/css-text/writing-system/writing-system-font-001.html",
+ [
+ [
+ "/css/css-text/writing-system/reference/writing-system-font-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/writing-system/writing-system-line-break-001.html": [
+ [
+ "/css/css-text/writing-system/writing-system-line-break-001.html",
+ [
+ [
+ "/css/css-text/writing-system/reference/writing-system-line-break-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/writing-system/writing-system-line-break-002.html": [
+ [
+ "/css/css-text/writing-system/writing-system-line-break-002.html",
+ [
+ [
+ "/css/css-text/writing-system/reference/writing-system-line-break-002-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/writing-system/writing-system-segment-break-001.html": [
+ [
+ "/css/css-text/writing-system/writing-system-segment-break-001.html",
+ [
+ [
+ "/css/css-text/writing-system/reference/writing-system-segment-break-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/writing-system/writing-system-text-transform-001.html": [
+ [
+ "/css/css-text/writing-system/writing-system-text-transform-001.html",
+ [
+ [
+ "/css/css-text/writing-system/reference/writing-system-text-transform-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-transforms/2d-rotate-001.html": [
[
"/css/css-transforms/2d-rotate-001.html",
@@ -167799,6 +167925,30 @@
{}
]
],
+ "css/filter-effects/backdrop-filter-clip-rect.html": [
+ [
+ "/css/filter-effects/backdrop-filter-clip-rect.html",
+ [
+ [
+ "/css/filter-effects/backdrop-filter-paint-order-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/backdrop-filter-edge-pixels.html": [
+ [
+ "/css/filter-effects/backdrop-filter-edge-pixels.html",
+ [
+ [
+ "/css/filter-effects/backdrop-filter-edge-pixels-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/filter-effects/backdrop-filter-isolation-isolate.html": [
[
"/css/filter-effects/backdrop-filter-isolation-isolate.html",
@@ -167823,6 +167973,18 @@
{}
]
],
+ "css/filter-effects/backdrop-filter-paint-order.html": [
+ [
+ "/css/filter-effects/backdrop-filter-paint-order.html",
+ [
+ [
+ "/css/filter-effects/backdrop-filter-paint-order-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/filter-effects/blur-clip-stacking-context-001.html": [
[
"/css/filter-effects/blur-clip-stacking-context-001.html",
@@ -250326,6 +250488,11 @@
{}
]
],
+ "css/css-backgrounds/reference/box-shadow-body-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-backgrounds/reference/box-shadow-inset-spread-without-border-radius.html": [
[
{}
@@ -250826,6 +250993,11 @@
{}
]
],
+ "css/css-break/line-after-unbreakable-float-after-padding-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-break/reference/widows-orphans-001-ref.html": [
[
{}
@@ -261781,6 +261953,11 @@
{}
]
],
+ "css/css-grid/alignment/grid-self-alignment-stretch-input-range-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-grid/alignment/support/100x100-green.png": [
[
{}
@@ -262486,6 +262663,11 @@
{}
]
],
+ "css/css-logical/reference/logical-values-float-clear-reftest-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-logical/resources/test-box-properties.js": [
[
{}
@@ -268841,6 +269023,31 @@
{}
]
],
+ "css/css-text/writing-system/reference/writing-system-font-001-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/css-text/writing-system/reference/writing-system-line-break-001-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/css-text/writing-system/reference/writing-system-line-break-002-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/css-text/writing-system/reference/writing-system-segment-break-001-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/css-text/writing-system/reference/writing-system-text-transform-001-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-transforms/META.yml": [
[
{}
@@ -275521,11 +275728,26 @@
{}
]
],
+ "css/filter-effects/backdrop-filter-clip-rect-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/filter-effects/backdrop-filter-edge-pixels-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/filter-effects/backdrop-filter-isolation-ref.html": [
[
{}
]
],
+ "css/filter-effects/backdrop-filter-paint-order-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/filter-effects/blur-clip-stacking-context-ref.html": [
[
{}
@@ -283736,6 +283958,16 @@
{}
]
],
+ "feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html.headers": [
+ [
+ {}
+ ]
+ ],
+ "feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html.headers": [
+ [
+ {}
+ ]
+ ],
"feature-policy/experimental-features/lazyload/lazyload-disabled-image-tentative.sub.html.headers": [
[
{}
@@ -283751,6 +283983,11 @@
{}
]
],
+ "feature-policy/experimental-features/resources/animation-property-height.js": [
+ [
+ {}
+ ]
+ ],
"feature-policy/experimental-features/resources/async-script.js": [
[
{}
@@ -283941,31 +284178,61 @@
{}
]
],
+ "feature-policy/reporting/camera-report-only.https.html.headers": [
+ [
+ {}
+ ]
+ ],
"feature-policy/reporting/camera-reporting.https.html.headers": [
[
{}
]
],
+ "feature-policy/reporting/document-write-report-only.html.headers": [
+ [
+ {}
+ ]
+ ],
"feature-policy/reporting/document-write-reporting.html.headers": [
[
{}
]
],
+ "feature-policy/reporting/encrypted-media-report-only.https.html.headers": [
+ [
+ {}
+ ]
+ ],
"feature-policy/reporting/encrypted-media-reporting.https.html.headers": [
[
{}
]
],
+ "feature-policy/reporting/fullscreen-report-only.html.headers": [
+ [
+ {}
+ ]
+ ],
"feature-policy/reporting/fullscreen-reporting.html.headers": [
[
{}
]
],
+ "feature-policy/reporting/generic-sensor-report-only.https.html.headers": [
+ [
+ {}
+ ]
+ ],
"feature-policy/reporting/generic-sensor-reporting.https.html.headers": [
[
{}
]
],
+ "feature-policy/reporting/geolocation-report-only.https.html.headers": [
+ [
+ {}
+ ]
+ ],
"feature-policy/reporting/geolocation-reporting.https.html.headers": [
[
{}
@@ -283976,26 +284243,51 @@
{}
]
],
+ "feature-policy/reporting/microphone-report-only.https.html.headers": [
+ [
+ {}
+ ]
+ ],
"feature-policy/reporting/microphone-reporting.https.html.headers": [
[
{}
]
],
+ "feature-policy/reporting/midi-report-only.html.headers": [
+ [
+ {}
+ ]
+ ],
"feature-policy/reporting/midi-reporting.html.headers": [
[
{}
]
],
+ "feature-policy/reporting/payment-report-only.https.html.headers": [
+ [
+ {}
+ ]
+ ],
"feature-policy/reporting/payment-reporting.https.html.headers": [
[
{}
]
],
+ "feature-policy/reporting/picture-in-picture-report-only.html.headers": [
+ [
+ {}
+ ]
+ ],
"feature-policy/reporting/picture-in-picture-reporting.html.headers": [
[
{}
]
],
+ "feature-policy/reporting/sync-xhr-report-only.html.headers": [
+ [
+ {}
+ ]
+ ],
"feature-policy/reporting/sync-xhr-reporting.html.headers": [
[
{}
@@ -284006,16 +284298,31 @@
{}
]
],
+ "feature-policy/reporting/usb-report-only.https.html.headers": [
+ [
+ {}
+ ]
+ ],
"feature-policy/reporting/usb-reporting.https.html.headers": [
[
{}
]
],
+ "feature-policy/reporting/vr-report-only.https.html.headers": [
+ [
+ {}
+ ]
+ ],
"feature-policy/reporting/vr-reporting.https.html.headers": [
[
{}
]
],
+ "feature-policy/reporting/xr-report-only.https.html.headers": [
+ [
+ {}
+ ]
+ ],
"feature-policy/reporting/xr-reporting.https.html.headers": [
[
{}
@@ -303511,6 +303818,11 @@
{}
]
],
+ "resources/test/tests/functional/worker-dedicated-uncaught-allow.html": [
+ [
+ {}
+ ]
+ ],
"resources/test/tests/functional/worker-dedicated-uncaught-single.html": [
[
{}
@@ -303536,6 +303848,11 @@
{}
]
],
+ "resources/test/tests/functional/worker-uncaught-allow.js": [
+ [
+ {}
+ ]
+ ],
"resources/test/tests/functional/worker-uncaught-single.js": [
[
{}
@@ -306256,6 +306573,11 @@
{}
]
],
+ "service-workers/service-worker/resources/clients-get-resultingClientId-worker.js": [
+ [
+ {}
+ ]
+ ],
"service-workers/service-worker/resources/clients-get-worker.js": [
[
{}
@@ -337224,6 +337546,24 @@
{}
]
],
+ "css/css-flexbox/align-content-wrap-001.html": [
+ [
+ "/css/css-flexbox/align-content-wrap-001.html",
+ {}
+ ]
+ ],
+ "css/css-flexbox/align-content-wrap-002.html": [
+ [
+ "/css/css-flexbox/align-content-wrap-002.html",
+ {}
+ ]
+ ],
+ "css/css-flexbox/align-content-wrap-003.html": [
+ [
+ "/css/css-flexbox/align-content-wrap-003.html",
+ {}
+ ]
+ ],
"css/css-flexbox/display_flex_exist.html": [
[
"/css/css-flexbox/display_flex_exist.html",
@@ -348082,9 +348422,9 @@
{}
]
],
- "css/selectors/invalidation/matches.html": [
+ "css/selectors/invalidation/is.html": [
[
- "/css/selectors/invalidation/matches.html",
+ "/css/selectors/invalidation/is.html",
{}
]
],
@@ -348112,15 +348452,15 @@
{}
]
],
- "css/selectors/matches-nested.html": [
+ "css/selectors/is-nested.html": [
[
- "/css/selectors/matches-nested.html",
+ "/css/selectors/is-nested.html",
{}
]
],
- "css/selectors/matches-specificity.html": [
+ "css/selectors/is-specificity.html": [
[
- "/css/selectors/matches-specificity.html",
+ "/css/selectors/is-specificity.html",
{}
]
],
@@ -360184,6 +360524,18 @@
{}
]
],
+ "feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html": [
+ [
+ "/feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html",
+ {}
+ ]
+ ],
+ "feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html": [
+ [
+ "/feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html",
+ {}
+ ]
+ ],
"feature-policy/experimental-features/layout-animations-enabled-tentative.html": [
[
"/feature-policy/experimental-features/layout-animations-enabled-tentative.html",
@@ -360394,60 +360746,128 @@
}
]
],
+ "feature-policy/reporting/camera-report-only.https.html": [
+ [
+ "/feature-policy/reporting/camera-report-only.https.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"feature-policy/reporting/camera-reporting.https.html": [
[
"/feature-policy/reporting/camera-reporting.https.html",
{}
]
],
+ "feature-policy/reporting/document-write-report-only.html": [
+ [
+ "/feature-policy/reporting/document-write-report-only.html",
+ {}
+ ]
+ ],
"feature-policy/reporting/document-write-reporting.html": [
[
"/feature-policy/reporting/document-write-reporting.html",
{}
]
],
+ "feature-policy/reporting/encrypted-media-report-only.https.html": [
+ [
+ "/feature-policy/reporting/encrypted-media-report-only.https.html",
+ {}
+ ]
+ ],
"feature-policy/reporting/encrypted-media-reporting.https.html": [
[
"/feature-policy/reporting/encrypted-media-reporting.https.html",
{}
]
],
+ "feature-policy/reporting/fullscreen-report-only.html": [
+ [
+ "/feature-policy/reporting/fullscreen-report-only.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"feature-policy/reporting/fullscreen-reporting.html": [
[
"/feature-policy/reporting/fullscreen-reporting.html",
{}
]
],
+ "feature-policy/reporting/generic-sensor-report-only.https.html": [
+ [
+ "/feature-policy/reporting/generic-sensor-report-only.https.html",
+ {}
+ ]
+ ],
"feature-policy/reporting/generic-sensor-reporting.https.html": [
[
"/feature-policy/reporting/generic-sensor-reporting.https.html",
{}
]
],
+ "feature-policy/reporting/geolocation-report-only.https.html": [
+ [
+ "/feature-policy/reporting/geolocation-report-only.https.html",
+ {}
+ ]
+ ],
"feature-policy/reporting/geolocation-reporting.https.html": [
[
"/feature-policy/reporting/geolocation-reporting.https.html",
{}
]
],
+ "feature-policy/reporting/microphone-report-only.https.html": [
+ [
+ "/feature-policy/reporting/microphone-report-only.https.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"feature-policy/reporting/microphone-reporting.https.html": [
[
"/feature-policy/reporting/microphone-reporting.https.html",
{}
]
],
+ "feature-policy/reporting/midi-report-only.html": [
+ [
+ "/feature-policy/reporting/midi-report-only.html",
+ {}
+ ]
+ ],
"feature-policy/reporting/midi-reporting.html": [
[
"/feature-policy/reporting/midi-reporting.html",
{}
]
],
+ "feature-policy/reporting/payment-report-only.https.html": [
+ [
+ "/feature-policy/reporting/payment-report-only.https.html",
+ {}
+ ]
+ ],
"feature-policy/reporting/payment-reporting.https.html": [
[
"/feature-policy/reporting/payment-reporting.https.html",
{}
]
],
+ "feature-policy/reporting/picture-in-picture-report-only.html": [
+ [
+ "/feature-policy/reporting/picture-in-picture-report-only.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"feature-policy/reporting/picture-in-picture-reporting.html": [
[
"/feature-policy/reporting/picture-in-picture-reporting.html",
@@ -360456,6 +360876,12 @@
}
]
],
+ "feature-policy/reporting/sync-xhr-report-only.html": [
+ [
+ "/feature-policy/reporting/sync-xhr-report-only.html",
+ {}
+ ]
+ ],
"feature-policy/reporting/sync-xhr-reporting.html": [
[
"/feature-policy/reporting/sync-xhr-reporting.html",
@@ -360468,18 +360894,38 @@
{}
]
],
+ "feature-policy/reporting/usb-report-only.https.html": [
+ [
+ "/feature-policy/reporting/usb-report-only.https.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"feature-policy/reporting/usb-reporting.https.html": [
[
"/feature-policy/reporting/usb-reporting.https.html",
{}
]
],
+ "feature-policy/reporting/vr-report-only.https.html": [
+ [
+ "/feature-policy/reporting/vr-report-only.https.html",
+ {}
+ ]
+ ],
"feature-policy/reporting/vr-reporting.https.html": [
[
"/feature-policy/reporting/vr-reporting.https.html",
{}
]
],
+ "feature-policy/reporting/xr-report-only.https.html": [
+ [
+ "/feature-policy/reporting/xr-report-only.https.html",
+ {}
+ ]
+ ],
"feature-policy/reporting/xr-reporting.https.html": [
[
"/feature-policy/reporting/xr-reporting.https.html",
@@ -362160,6 +362606,14 @@
{}
]
],
+ "fullscreen/rendering/fullscreen-css-transition.html": [
+ [
+ "/fullscreen/rendering/fullscreen-css-transition.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"gamepad/idlharness.window.js": [
[
"/gamepad/idlharness.window.html",
@@ -370206,6 +370660,12 @@
{}
]
],
+ "html/semantics/forms/the-input-element/time-focus-dynamic-value-change.html": [
+ [
+ "/html/semantics/forms/the-input-element/time-focus-dynamic-value-change.html",
+ {}
+ ]
+ ],
"html/semantics/forms/the-input-element/time.html": [
[
"/html/semantics/forms/the-input-element/time.html",
@@ -390964,14 +391424,6 @@
{}
]
],
- "pointerevents/pointerevent_pointermove.html": [
- [
- "/pointerevents/pointerevent_pointermove.html",
- {
- "testdriver": true
- }
- ]
- ],
"pointerevents/pointerevent_touch-action-illegal.html": [
[
"/pointerevents/pointerevent_touch-action-illegal.html",
@@ -404756,6 +405208,12 @@
{}
]
],
+ "svg/geometry/parsing/cx-computed.svg": [
+ [
+ "/svg/geometry/parsing/cx-computed.svg",
+ {}
+ ]
+ ],
"svg/geometry/parsing/cx-invalid.svg": [
[
"/svg/geometry/parsing/cx-invalid.svg",
@@ -404768,6 +405226,12 @@
{}
]
],
+ "svg/geometry/parsing/cy-computed.svg": [
+ [
+ "/svg/geometry/parsing/cy-computed.svg",
+ {}
+ ]
+ ],
"svg/geometry/parsing/cy-invalid.svg": [
[
"/svg/geometry/parsing/cy-invalid.svg",
@@ -404780,6 +405244,12 @@
{}
]
],
+ "svg/geometry/parsing/r-computed.svg": [
+ [
+ "/svg/geometry/parsing/r-computed.svg",
+ {}
+ ]
+ ],
"svg/geometry/parsing/r-invalid.svg": [
[
"/svg/geometry/parsing/r-invalid.svg",
@@ -404792,6 +405262,12 @@
{}
]
],
+ "svg/geometry/parsing/rx-computed.svg": [
+ [
+ "/svg/geometry/parsing/rx-computed.svg",
+ {}
+ ]
+ ],
"svg/geometry/parsing/rx-invalid.svg": [
[
"/svg/geometry/parsing/rx-invalid.svg",
@@ -404804,6 +405280,12 @@
{}
]
],
+ "svg/geometry/parsing/ry-computed.svg": [
+ [
+ "/svg/geometry/parsing/ry-computed.svg",
+ {}
+ ]
+ ],
"svg/geometry/parsing/ry-invalid.svg": [
[
"/svg/geometry/parsing/ry-invalid.svg",
@@ -404816,6 +405298,12 @@
{}
]
],
+ "svg/geometry/parsing/x-computed.svg": [
+ [
+ "/svg/geometry/parsing/x-computed.svg",
+ {}
+ ]
+ ],
"svg/geometry/parsing/x-invalid.svg": [
[
"/svg/geometry/parsing/x-invalid.svg",
@@ -404828,6 +405316,12 @@
{}
]
],
+ "svg/geometry/parsing/y-computed.svg": [
+ [
+ "/svg/geometry/parsing/y-computed.svg",
+ {}
+ ]
+ ],
"svg/geometry/parsing/y-invalid.svg": [
[
"/svg/geometry/parsing/y-invalid.svg",
@@ -404870,6 +405364,18 @@
{}
]
],
+ "svg/interact/script-common.html": [
+ [
+ "/svg/interact/script-common.html",
+ {}
+ ]
+ ],
+ "svg/interact/script-content.svg": [
+ [
+ "/svg/interact/script-content.svg",
+ {}
+ ]
+ ],
"svg/linking/scripted/a-download-click.svg": [
[
"/svg/linking/scripted/a-download-click.svg",
@@ -404936,6 +405442,12 @@
{}
]
],
+ "svg/painting/scripted/paint-order-computed-value-01.svg": [
+ [
+ "/svg/painting/scripted/paint-order-computed-value-01.svg",
+ {}
+ ]
+ ],
"svg/path/error-handling/bounding.svg": [
[
"/svg/path/error-handling/bounding.svg",
@@ -405982,6 +406494,12 @@
{}
]
],
+ "user-timing/mark-measure-return-null.html": [
+ [
+ "/user-timing/mark-measure-return-null.html",
+ {}
+ ]
+ ],
"user-timing/mark.any.js": [
[
"/user-timing/mark.any.html",
@@ -437810,11 +438328,11 @@
"support"
],
".taskcluster.yml": [
- "bcac7f5abbc4b32be599475a5506df9e2e135abd",
+ "35aad403ce7e49616d76258c2d07c574bb066ec4",
"support"
],
".travis.yml": [
- "d89fadae77d2e6d2d6b03c640d715da96c0a7226",
+ "8d4152f0285cd0c2e03a4e7fc411a29f15a0f5f5",
"support"
],
".well-known/README.md": [
@@ -442650,15 +443168,15 @@
"testharness"
],
"IndexedDB/idbcursor_advance_index2.htm": [
- "539c824e61e23a9409f6723c95a73898ce7c2fff",
+ "8df0af0d2335036463bae6d5e4be75e2bc8ee48e",
"testharness"
],
"IndexedDB/idbcursor_advance_index3.htm": [
- "5adf3f077fd9df4ff01d621c438b4879d5e572ba",
+ "ca5e0da8eaef1e0b342fafb4abec0703c01570d6",
"testharness"
],
"IndexedDB/idbcursor_advance_index5.htm": [
- "452c0f142f6496e9147b67372cadb8b092a8303b",
+ "a9b9977d0e680098e46b7c69fcf65ea19d4166e6",
"testharness"
],
"IndexedDB/idbcursor_advance_index6.htm": [
@@ -442714,11 +443232,11 @@
"testharness"
],
"IndexedDB/idbcursor_continue_index5.htm": [
- "abe0e658b018ac00fff9368d8e1a732d2b78ddc2",
+ "20db8d0d8330ca2eed4ba15934b57bde50dba8f6",
"testharness"
],
"IndexedDB/idbcursor_continue_index6.htm": [
- "cf5bd4066e83fd6b2f8c94d3984dacddf1cf168d",
+ "9182b02f1492b17851857bdcbca3d706de46c4f9",
"testharness"
],
"IndexedDB/idbcursor_continue_index7.htm": [
@@ -442730,7 +443248,7 @@
"testharness"
],
"IndexedDB/idbcursor_continue_invalid.htm": [
- "dea07bc911214bd5b58d69a30e3a09d551452daa",
+ "9b4d7b70bb674f75d25c6262b3ff0efe41abf738",
"testharness"
],
"IndexedDB/idbcursor_continue_objectstore.htm": [
@@ -442798,23 +443316,23 @@
"testharness"
],
"IndexedDB/idbcursor_iterating.htm": [
- "d9be6b6ad6a43f68ea6c61e65be50c6a14b93a4a",
+ "f67265aa8556d9647e51d64c92c7bfcf4cb8edd9",
"testharness"
],
"IndexedDB/idbcursor_iterating_index.htm": [
- "559cce6db54f7f5ba126ce206d1535328300d5fb",
+ "4b0fbba0937bd98bc825d2875fa73a3c20b5ef31",
"testharness"
],
"IndexedDB/idbcursor_iterating_index2.htm": [
- "91a8383500c8e88f579041179e801347eb9305c5",
+ "689b891527827e22c1bf2c8d56ac5b420d8bcca6",
"testharness"
],
"IndexedDB/idbcursor_iterating_objectstore.htm": [
- "c4c8d57148de9185403d4c9934dba2efdbc9a773",
+ "8a9dcfa107fa19f3b2ada3c727c04ba03bc00caf",
"testharness"
],
"IndexedDB/idbcursor_iterating_objectstore2.htm": [
- "899b2ac0e6da416d1cdcc3177159a1762d242ef5",
+ "992d0ea425658ee29cc429ed572eec15d8563fc0",
"testharness"
],
"IndexedDB/idbcursor_update_index.htm": [
@@ -442862,7 +443380,7 @@
"testharness"
],
"IndexedDB/idbcursor_update_objectstore4.htm": [
- "cbd0b1f92a66a0a2cfd0b544ffd9a676edc86a9a",
+ "cb35b103509833079e706cf0aaf81f2bcdda2f86",
"testharness"
],
"IndexedDB/idbcursor_update_objectstore5.htm": [
@@ -442914,7 +443432,7 @@
"testharness"
],
"IndexedDB/idbdatabase_createObjectStore10-1000ends.htm": [
- "d6e4a48ed1c95ae3ef65048f9a2e788b3390dc91",
+ "747a655ecb76ed2f2ee8179e038c971ea846dfd4",
"testharness"
],
"IndexedDB/idbdatabase_createObjectStore10-emptyname.htm": [
@@ -442946,7 +443464,7 @@
"testharness"
],
"IndexedDB/idbdatabase_createObjectStore7.htm": [
- "358baeeecabb260d19f206753c72902f1b72417a",
+ "9833c5336961a874c8b0dfdeda396650c1689ac5",
"testharness"
],
"IndexedDB/idbdatabase_createObjectStore8-parameters.htm": [
@@ -442970,7 +443488,7 @@
"testharness"
],
"IndexedDB/idbdatabase_deleteObjectStore4-not_reused.htm": [
- "1cb6ff1ace474c8adf7508b91cce4ea8b99f2f13",
+ "5332205db7ce030c8f4dc17f34e3033983c17653",
"testharness"
],
"IndexedDB/idbdatabase_transaction.htm": [
@@ -442986,7 +443504,7 @@
"testharness"
],
"IndexedDB/idbdatabase_transaction4.htm": [
- "515c499b0c8be787c3b43a94d932fa2c9168409a",
+ "2ba36feee7087f897a9061e605e9ba3a59906519",
"testharness"
],
"IndexedDB/idbdatabase_transaction5.htm": [
@@ -443042,7 +443560,7 @@
"testharness"
],
"IndexedDB/idbfactory_deleteDatabase3.htm": [
- "e1cab41a5c123c50d7f0ff1a7178ce867f50c536",
+ "7299bfb5673558ca19fa61113cdfa4796d8bed91",
"testharness"
],
"IndexedDB/idbfactory_deleteDatabase4.htm": [
@@ -443054,15 +443572,15 @@
"testharness"
],
"IndexedDB/idbfactory_open10.htm": [
- "c0ac71ae8576f7ab632d9be12c6d7db56c2e39da",
+ "0a9a12d8dfd9ac1d2a0a24f55579e124ef1631cd",
"testharness"
],
"IndexedDB/idbfactory_open11.htm": [
- "88c59bd9f65c5d2886c723ca32d9010e7c560318",
+ "6a77b13b0883e3b0c98ada994f31dd1ba172ad1d",
"testharness"
],
"IndexedDB/idbfactory_open12.htm": [
- "763c4805155d5dfebb0284f09f0e128448d04d9a",
+ "f6a13104341bf80025a0f2d6d0d4a72ce4174cc4",
"testharness"
],
"IndexedDB/idbfactory_open2.htm": [
@@ -443106,15 +443624,15 @@
"testharness"
],
"IndexedDB/idbindex-multientry-arraykeypath.htm": [
- "3e584a6c4e22e49e03d0b06b79003efe0353ca64",
+ "31ae61cfc42794d014ee2ec4aad3059db28f9e6a",
"testharness"
],
"IndexedDB/idbindex-multientry-big.htm": [
- "4f9df36e2044e525332fdd43308a4a660aeff7eb",
+ "f0743866910556cb9e22f87cf2cc7be79ddf342c",
"testharness"
],
"IndexedDB/idbindex-multientry.htm": [
- "5077f48469bc012ebfc034f15ed31471e9e6f794",
+ "6b5b06cf807c7cc205b08413f381441a180196ad",
"testharness"
],
"IndexedDB/idbindex-objectStore-SameObject.html": [
@@ -443230,7 +443748,7 @@
"testharness"
],
"IndexedDB/idbindex_indexNames.htm": [
- "3099b45e91f9e5bb662d9b259499c3081911b947",
+ "023903f19f72dbf099ac3232e672bfaca73bf8e1",
"testharness"
],
"IndexedDB/idbindex_openCursor.htm": [
@@ -443454,27 +443972,27 @@
"testharness"
],
"IndexedDB/idbobjectstore_createIndex3-usable-right-away.htm": [
- "f4b9b984f05c94311d1913d02b3caae627342d81",
+ "5156e61e65f89af830bff2814aec023abc695f7e",
"testharness"
],
"IndexedDB/idbobjectstore_createIndex4-deleteIndex-event_order.htm": [
- "228dfc457c2fb4a9c6e8420872bf68225b84ba15",
+ "937ae58c3b3f7176a1217f80f19d54b2a3a14d7f",
"testharness"
],
"IndexedDB/idbobjectstore_createIndex5-emptykeypath.htm": [
- "29fadc00e3f91b8faa416c9defb5a388b974649b",
+ "14ddb924ffee36919cfcb59ca95a7fb264bc3620",
"testharness"
],
"IndexedDB/idbobjectstore_createIndex6-event_order.htm": [
- "3dcb7330a8a25a2ef8f1d895a2c4bcf23784533e",
+ "a636226968e5d55bd730bec47fd30d9d49746f24",
"testharness"
],
"IndexedDB/idbobjectstore_createIndex7-event_order.htm": [
- "682307c90184163e44c8d74bc29b2f03e12d02d6",
+ "8d2725a9f0e3310b003d4fad24ae33588e4b9775",
"testharness"
],
"IndexedDB/idbobjectstore_createIndex8-valid_keys.htm": [
- "6174523e4786cd81d1c72f65f7d64db77b7a514d",
+ "ea90f50dde1e9d3b734328065076ab4e7a3b1d31",
"testharness"
],
"IndexedDB/idbobjectstore_createIndex9-emptyname.htm": [
@@ -443514,7 +444032,7 @@
"testharness"
],
"IndexedDB/idbobjectstore_deleted.htm": [
- "74934636a1b60536f34d3693bfb1f8331f71aa8e",
+ "c26145c1d5cea51197e827f8f94ed66b2bd3d023",
"testharness"
],
"IndexedDB/idbobjectstore_get.htm": [
@@ -443662,7 +444180,7 @@
"testharness"
],
"IndexedDB/idbtransaction-oncomplete.htm": [
- "7c295c7c15045e3aa8bd39319589189aae6c173f",
+ "e2cad729397ddf89bf80537e93d3bffcc6ce5ccb",
"testharness"
],
"IndexedDB/idbtransaction.htm": [
@@ -443670,7 +444188,7 @@
"testharness"
],
"IndexedDB/idbtransaction_abort.htm": [
- "1f37bb40101caa1c689c4898bfb53a56796d797a",
+ "4300e2f01c80ee81df79b3d181ab673e3c9b130c",
"testharness"
],
"IndexedDB/idbtransaction_objectStoreNames.html": [
@@ -443678,7 +444196,7 @@
"testharness"
],
"IndexedDB/idbversionchangeevent.htm": [
- "36b997f2f639cd9c981964104868953455960098",
+ "e776f14c629942c7e7e527efe41d89fcb61e18df",
"testharness"
],
"IndexedDB/idbworker.js": [
@@ -443738,7 +444256,7 @@
"testharness"
],
"IndexedDB/keygenerator-constrainterror.htm": [
- "ee2e24799e3ff42cb34387859eec34397ef8b76d",
+ "205785f3bd739465cbbad8e657802ef015f35936",
"testharness"
],
"IndexedDB/keygenerator-explicit.html": [
@@ -443750,7 +444268,7 @@
"testharness"
],
"IndexedDB/keygenerator-overflow.htm": [
- "d069f0a2b5fb19d16ce6cc733587632c0cd59560",
+ "a7bc09fc8d50c57d82f9db6663bf640a2be70d9b",
"testharness"
],
"IndexedDB/keygenerator.htm": [
@@ -443758,7 +444276,7 @@
"testharness"
],
"IndexedDB/keyorder.htm": [
- "1896333f93640e9ff51e4f038d5d5c3afcdeab97",
+ "7f073ddb9a24e141bc26d9342caf38255b60041d",
"testharness"
],
"IndexedDB/keypath-exceptions.htm": [
@@ -443778,7 +444296,7 @@
"testharness"
],
"IndexedDB/keypath_maxsize.htm": [
- "835b7a33b44ee99d016b3b5e4dd7a2b2504674ec",
+ "83bd9cc3138e4cc3a637adfebc45e26bda912e81",
"testharness"
],
"IndexedDB/large-requests-abort.html": [
@@ -443830,7 +444348,7 @@
"testharness"
],
"IndexedDB/request_bubble-and-capture.htm": [
- "319f228c8351d0761d41814254ef08891fa587c4",
+ "f43fd10a34fa31c9910598dd6678c0654129cc77",
"testharness"
],
"IndexedDB/string-list-ordering.htm": [
@@ -443874,7 +444392,7 @@
"testharness"
],
"IndexedDB/transaction-lifetime-blocked.htm": [
- "b0c91ec845792be6a465b448704a67d544e74816",
+ "a6ef34b19cb304a873b72837ff7d8a1fbda958a1",
"testharness"
],
"IndexedDB/transaction-lifetime-empty.html": [
@@ -443882,15 +444400,15 @@
"testharness"
],
"IndexedDB/transaction-lifetime.htm": [
- "c646286f43adb57d4b43ab076938f19a87bfdb18",
+ "9c66c54c40fc3c9ab8c2b12008bcbf630dac6d15",
"testharness"
],
"IndexedDB/transaction-requestqueue.htm": [
- "b5706fe81d7ce97aa2d708a1dc49d9580f96d412",
+ "081ea2e19a1b23344922a88fe1479cc5f238d8d8",
"testharness"
],
"IndexedDB/transaction_bubble-and-capture.htm": [
- "f4b5ec0ae58427d4a57bb4f878c423101fd3b4c7",
+ "ff48fb48234bfe93a5254cdb48f6c6ba18b7835c",
"testharness"
],
"IndexedDB/upgrade-transaction-deactivation-timing.html": [
@@ -443918,7 +444436,7 @@
"testharness"
],
"IndexedDB/writer-starvation.htm": [
- "412308387fcea53499ca7c57d0c38cfeebc1007e",
+ "cdc7b1e8774f8e4d486d220f5c4ee1996ab7a901",
"testharness"
],
"LICENSE": [
@@ -535053,6 +535571,10 @@
"705ced279d30e6113eed68b819b287f7e48219cd",
"reftest"
],
+ "css/css-backgrounds/box-shadow-body.html": [
+ "88d888a7710c7bdd2831a4908a30108b3a34670a",
+ "reftest"
+ ],
"css/css-backgrounds/box-shadow-inset-spread-without-border-radius.html": [
"0e74fbf5b64581d3940bd6c374a7972b9a6e7b76",
"reftest"
@@ -535481,6 +536003,10 @@
"81a5cbf6b8e06f6435bc133287f128ed6af8ed62",
"support"
],
+ "css/css-backgrounds/reference/box-shadow-body-ref.html": [
+ "d2ae1ebd84b7ed80bcee9e0b457a41c0b8f17cf9",
+ "support"
+ ],
"css/css-backgrounds/reference/box-shadow-inset-spread-without-border-radius.html": [
"5e9cf0d34ec1510d8f8c879baf88720b861a75a5",
"support"
@@ -536041,6 +536567,14 @@
"e0be119e4002b1d637ebdfc464d87ef88ab83106",
"testharness"
],
+ "css/css-break/line-after-unbreakable-float-after-padding-ref.html": [
+ "9a329b2446849d8f13b9d88cb5f73934536c3767",
+ "support"
+ ],
+ "css/css-break/line-after-unbreakable-float-after-padding.html": [
+ "d3a4018cd809fc09eb68c1b25f4dda4736e64131",
+ "reftest"
+ ],
"css/css-break/reference/widows-orphans-001-ref.html": [
"06108ac800c19c68841f2a0e8867fb05e868c1ab",
"support"
@@ -540201,6 +540735,22 @@
"88156a2f32f9a9ced2802ef7cdbb59b8187bf65a",
"reftest"
],
+ "css/css-flexbox/align-content-wrap-001.html": [
+ "1e0ce42c75f462aea952113582e743bf8bda4dd8",
+ "testharness"
+ ],
+ "css/css-flexbox/align-content-wrap-002.html": [
+ "a15f7ea844d112ab696a03d994cb17ed1fe47074",
+ "testharness"
+ ],
+ "css/css-flexbox/align-content-wrap-003.html": [
+ "3e07338745b0aaaf9315eed7159f5db2ff0f4e7f",
+ "testharness"
+ ],
+ "css/css-flexbox/align-content-wrap-004.html": [
+ "161832190a2a3088ab3b9ad198d4e3083a291551",
+ "reftest"
+ ],
"css/css-flexbox/align-content_center.html": [
"3bd0dc415f94539126a8848cf82ff0bb8932ba58",
"visual"
@@ -552169,6 +552719,14 @@
"723b348d01048e280a4cf709b13f41fb1fd9b5d0",
"testharness"
],
+ "css/css-grid/alignment/grid-self-alignment-stretch-input-range-ref.html": [
+ "ad71302aef9bcf50fbfb3cedf84db670a9aec4b4",
+ "support"
+ ],
+ "css/css-grid/alignment/grid-self-alignment-stretch-input-range.html": [
+ "fb17f3a4a8b25503a61e786bde78e0726105a74e",
+ "reftest"
+ ],
"css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-001.html": [
"66686fd6589a3573c831ea6b895cf59ea4ac47db",
"testharness"
@@ -553006,27 +553564,27 @@
"testharness"
],
"css/css-grid/grid-model/grid-container-scrollbar-001-ref.html": [
- "31a9ef3db8e08d76b218a4f2bf1ea5cde5d889b3",
+ "f304cedfeaba12968d075784f87fbb28c73851d4",
"support"
],
"css/css-grid/grid-model/grid-container-scrollbar-001.html": [
- "1b3c6eef691d9959b4bc899b3d88c9c7e3f57e28",
+ "b4ecd188db70e404d1738a0bfc56df1b8e25e681",
"reftest"
],
"css/css-grid/grid-model/grid-container-scrollbar-vertical-lr-001-ref.html": [
- "512fb8a81d57788eb06e004982de9c897df3dd0f",
+ "e6640cc749e945b0fb78026b7b984d3c72c4c0f0",
"support"
],
"css/css-grid/grid-model/grid-container-scrollbar-vertical-lr-001.html": [
- "ecdc7b768406922628b1bcf2e17b6ba7ee6b162b",
+ "6733759cf00b264f4920ef9bca51a0e4a3f4dc63",
"reftest"
],
"css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001-ref.html": [
- "d8eeedfa07d572d5150e2e480b572769273fc1f3",
+ "2b1bbaebb46e937d9f915d2907564e3061c1cd83",
"support"
],
"css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001.html": [
- "f2ab39ff505401436e23947feea4bffbff12629c",
+ "a3de9386a81af4058246842200d889a603d98fd2",
"reftest"
],
"css/css-grid/grid-model/grid-display-grid-001.html": [
@@ -554433,6 +554991,10 @@
"f90346b839c07a457aeb2be4b085cbf0a27606e9",
"testharness"
],
+ "css/css-logical/logical-values-float-clear-reftest.html": [
+ "c0fe9a52bc4acc02f7a1df96d2af9c526d3e4430",
+ "reftest"
+ ],
"css/css-logical/logical-values-float-clear.html": [
"e82765809f4834d0b1d061c9b936d409852b9ba0",
"testharness"
@@ -554461,12 +555023,16 @@
"3e133db880cd32d963d701bb184d28faae959aa5",
"testharness"
],
+ "css/css-logical/reference/logical-values-float-clear-reftest-ref.html": [
+ "28c275ebb307a3db20c019daebe140e3fa591971",
+ "support"
+ ],
"css/css-logical/resources/test-box-properties.js": [
"1f17ff296ff2c3dcf81db1a112bda24ef04eb126",
"support"
],
"css/css-logical/resources/test-logical-values.js": [
- "c34b4ee9f913013720a2ad0083cb3ed63a9c71b6",
+ "7a039379cbddcbd3df0bf793636b932fe2fafbbc",
"support"
],
"css/css-logical/resources/test-shared.js": [
@@ -558090,7 +558656,7 @@
"testharness"
],
"css/css-properties-values-api/var-reference-registered-properties.html": [
- "5de6d20f11b1aec41c7b54653ef482db6c7d8c93",
+ "166754574faa025807847209f1ab157111a4a6d8",
"testharness"
],
"css/css-pseudo/META.yml": [
@@ -568013,6 +568579,46 @@
"e1a67bb1dc7d157d4bf57e1af40c039d67001923",
"reftest"
],
+ "css/css-text/writing-system/reference/writing-system-font-001-ref.html": [
+ "f0bd7fe2629f3461f22c6290e1468a85800c02c5",
+ "support"
+ ],
+ "css/css-text/writing-system/reference/writing-system-line-break-001-ref.html": [
+ "6ff3ef1e64627c25d14b6eefa6c31dfcdcd9f2c7",
+ "support"
+ ],
+ "css/css-text/writing-system/reference/writing-system-line-break-002-ref.html": [
+ "2855797d355113ce051e2552f7760978702f6a21",
+ "support"
+ ],
+ "css/css-text/writing-system/reference/writing-system-segment-break-001-ref.html": [
+ "f451a74a51d74fff950aa2675059e9eb6024ae4e",
+ "support"
+ ],
+ "css/css-text/writing-system/reference/writing-system-text-transform-001-ref.html": [
+ "9b50fb133122f718ba828617833203c8ff96f558",
+ "support"
+ ],
+ "css/css-text/writing-system/writing-system-font-001.html": [
+ "a8d4549279b16ad82d814a2ee4105573b857b046",
+ "reftest"
+ ],
+ "css/css-text/writing-system/writing-system-line-break-001.html": [
+ "4ecb5ae7734a7a131fedd9a6bd8191ee6f14f519",
+ "reftest"
+ ],
+ "css/css-text/writing-system/writing-system-line-break-002.html": [
+ "a973560a6e2717449578ad83fc3aca49c0e3a0e2",
+ "reftest"
+ ],
+ "css/css-text/writing-system/writing-system-segment-break-001.html": [
+ "1d560d9f497cbfdefd69ad59220a19bb8b84d397",
+ "reftest"
+ ],
+ "css/css-text/writing-system/writing-system-text-transform-001.html": [
+ "209d56c95144e10c649cad32ec1b5a5a5e5ea300",
+ "reftest"
+ ],
"css/css-timing/frames-timing-functions-output.html": [
"40e03286e71f7126bfbbdd50bc74e25c191a4d30",
"testharness"
@@ -568050,7 +568656,7 @@
"testharness"
],
"css/css-transforms/animation/resources/interpolation-testcommon.js": [
- "3791b0af9db63fe7c8ef6baad4cc566e4a3e950a",
+ "73ce9ceefb38654c480bf41b8ce542efcc3701c3",
"support"
],
"css/css-transforms/animation/rotate-interpolation.html": [
@@ -586506,7 +587112,7 @@
"support"
],
"css/filter-effects/backdrop-filter-basic-background-color.html": [
- "c8d1a3ede5d58bc3179c2d66183957540778c5d2",
+ "39febb17d2df21456b8f8ea4a42407e799a6eb2b",
"reftest"
],
"css/filter-effects/backdrop-filter-basic-opacity-ref.html": [
@@ -586514,7 +587120,7 @@
"support"
],
"css/filter-effects/backdrop-filter-basic-opacity.html": [
- "23e40a7ccdd7b78fbc7847797d4c40cad8c3ad5d",
+ "e3ad8a20afafce2d03e64668a3bdee9c3f3c1446",
"reftest"
],
"css/filter-effects/backdrop-filter-basic-ref.html": [
@@ -586522,7 +587128,7 @@
"support"
],
"css/filter-effects/backdrop-filter-basic.html": [
- "8f24c9b44a484a19d0169c632665c2facece6a64",
+ "711064e4de375df9f2fa819b4fff209b87721f8d",
"reftest"
],
"css/filter-effects/backdrop-filter-border-radius-ref.html": [
@@ -586530,11 +587136,27 @@
"support"
],
"css/filter-effects/backdrop-filter-border-radius.html": [
- "d6d1f4b813011cc7a4a814c9f4382425087eaf00",
+ "fc212501ad52ca7cd1e0a2fd35b7654c8233eea2",
+ "reftest"
+ ],
+ "css/filter-effects/backdrop-filter-clip-rect-ref.html": [
+ "a51d81f85193257d28f7e9b096d6cec06dd704d0",
+ "support"
+ ],
+ "css/filter-effects/backdrop-filter-clip-rect.html": [
+ "8b5d9f4e34f8f4fd04c988f99f03685c3fbf58c9",
+ "reftest"
+ ],
+ "css/filter-effects/backdrop-filter-edge-pixels-ref.html": [
+ "1960435775c24f7b7464e1f42cd9da15766c2b5e",
+ "support"
+ ],
+ "css/filter-effects/backdrop-filter-edge-pixels.html": [
+ "1e29d725ebcd8d78350ba2a2fcff50b3b239f88a",
"reftest"
],
"css/filter-effects/backdrop-filter-isolation-isolate.html": [
- "dba157c87c76b74ec75015be92ce0eea2348219f",
+ "99fa69d03fa6fac067a375a951ccb292183dc8df",
"reftest"
],
"css/filter-effects/backdrop-filter-isolation-ref.html": [
@@ -586542,7 +587164,15 @@
"support"
],
"css/filter-effects/backdrop-filter-isolation.html": [
- "dc7bd107c32a6032d9dd751d2e2d580abd520fc2",
+ "e41772578e5d2ccea955bb9f65cfa77771a36027",
+ "reftest"
+ ],
+ "css/filter-effects/backdrop-filter-paint-order-ref.html": [
+ "bd82e520f0e70b75e45c687cb46f957a579e2358",
+ "support"
+ ],
+ "css/filter-effects/backdrop-filter-paint-order.html": [
+ "88531532fc33296e8c8eca5452da04d5d612662d",
"reftest"
],
"css/filter-effects/blur-clip-stacking-context-001.html": [
@@ -588013,8 +588643,8 @@
"9792fd0ebe1c77307ec1cfb6f572fc5d8e139e6a",
"testharness"
],
- "css/selectors/invalidation/matches.html": [
- "634ded3c7d760f6dccb2c14e87cf67f1c1320da5",
+ "css/selectors/invalidation/is.html": [
+ "0d905dcd4f6c4796095b06d24a8e9e11a01782bc",
"testharness"
],
"css/selectors/invalidation/quirks-mode-stylesheet-dynamic-add-001.html": [
@@ -588038,15 +588668,15 @@
"reftest"
],
"css/selectors/invalidation/where.html": [
- "1c6432f46eb4f2b424fdd3ca9c453925a23710ed",
+ "170398300f0b4359139c597937f84e69e774a71e",
"testharness"
],
- "css/selectors/matches-nested.html": [
- "b82d43d09017955af2904f6362e858929a6d4399",
+ "css/selectors/is-nested.html": [
+ "7c3973ae058edfcead691242479777aab1f5d35a",
"testharness"
],
- "css/selectors/matches-specificity.html": [
- "41d7251a3d74efbdf69407889418797a80289316",
+ "css/selectors/is-specificity.html": [
+ "bf3dbc6bb9fc105d87a63ddbef65ade931f223f0",
"testharness"
],
"css/selectors/missing-right-token.html": [
@@ -589534,7 +590164,7 @@
"support"
],
"css/support/computed-testcommon.js": [
- "0999418e748162bcee4d062b010bca45bd7cfdfe",
+ "2cc19c176fa4147f3a30c8fcb251450938a3213b",
"support"
],
"css/support/green.ico": [
@@ -604097,6 +604727,22 @@
"7c441bbba555d9da8c2cfc34de2ddaf2a52074f4",
"support"
],
+ "feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html": [
+ "b45d8c3d4483ae309f87d6a26552636efa44e407",
+ "testharness"
+ ],
+ "feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html.headers": [
+ "7c441bbba555d9da8c2cfc34de2ddaf2a52074f4",
+ "support"
+ ],
+ "feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html": [
+ "0701c50f6cac4cef768cf94ce8cd1764a885a14e",
+ "testharness"
+ ],
+ "feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html.headers": [
+ "7c441bbba555d9da8c2cfc34de2ddaf2a52074f4",
+ "support"
+ ],
"feature-policy/experimental-features/layout-animations-enabled-tentative.html": [
"cf396e9022344f059223421808dd36c7e67b3a54",
"testharness"
@@ -604133,12 +604779,16 @@
"6111e691c82be97a0a040053b673d663cb404eb7",
"testharness"
],
+ "feature-policy/experimental-features/resources/animation-property-height.js": [
+ "79316cb488fade6e877c690f90c74961ff944f52",
+ "support"
+ ],
"feature-policy/experimental-features/resources/async-script.js": [
"3c0ee6d02343891b0234f31c0fb229929ae1b24b",
"support"
],
"feature-policy/experimental-features/resources/common.js": [
- "64cfca59d6c801e59dfe2a5684b99780413a8ba6",
+ "42790b8a2e79cc03b27b646deaf542635e19d439",
"support"
],
"feature-policy/experimental-features/resources/defer-script.js": [
@@ -604409,48 +605059,96 @@
"1759381fdc4141302f1b95868550ead76d9f5ca7",
"support"
],
+ "feature-policy/reporting/camera-report-only.https.html": [
+ "26488687e6fc75247356d716fa32134dc695fadf",
+ "testharness"
+ ],
+ "feature-policy/reporting/camera-report-only.https.html.headers": [
+ "46b84811f55556b8dc4cbc87c174e1175b73e47b",
+ "support"
+ ],
"feature-policy/reporting/camera-reporting.https.html": [
- "14b2ed1d37c6d79c9e011a35b9fece0cddc0ac76",
+ "ced585139b3ee3f706599f15581349e5608cf74a",
"testharness"
],
"feature-policy/reporting/camera-reporting.https.html.headers": [
"2adc5e237fcec874767ff8f5ab38e3456c02cbf0",
"support"
],
+ "feature-policy/reporting/document-write-report-only.html": [
+ "ab0bb827166327228e825f9f9c5a0447666d17e1",
+ "testharness"
+ ],
+ "feature-policy/reporting/document-write-report-only.html.headers": [
+ "63e43f1d719302760ccdd902439c32913bda375c",
+ "support"
+ ],
"feature-policy/reporting/document-write-reporting.html": [
- "cb08b8d72d1851ca02c51abf5713519d52f1ecf4",
+ "93672fac35b6cfa06f3102d859a15ae6333a1bae",
"testharness"
],
"feature-policy/reporting/document-write-reporting.html.headers": [
"57102d5ee7c072e433fa44c0c13521573b32f469",
"support"
],
+ "feature-policy/reporting/encrypted-media-report-only.https.html": [
+ "20e44b2fd5db2ac6f54b67c909f6d31099edfaa3",
+ "testharness"
+ ],
+ "feature-policy/reporting/encrypted-media-report-only.https.html.headers": [
+ "a2c8fbb44259448cadc9290aad6853051a28aba6",
+ "support"
+ ],
"feature-policy/reporting/encrypted-media-reporting.https.html": [
- "d309d5390f1ec5f6f3edd00327e9a36b54926499",
+ "c3b63936b3a8310f873c748947f0fc0633928a9b",
"testharness"
],
"feature-policy/reporting/encrypted-media-reporting.https.html.headers": [
"73753a2e41d10b0a0398831350b1f17e586ab847",
"support"
],
+ "feature-policy/reporting/fullscreen-report-only.html": [
+ "a6b3d5adeed5654942aba43dc65d627fa7c35ae0",
+ "testharness"
+ ],
+ "feature-policy/reporting/fullscreen-report-only.html.headers": [
+ "33defa88f6ef9842e4b388dc853ff88c2947e81d",
+ "support"
+ ],
"feature-policy/reporting/fullscreen-reporting.html": [
- "83d97c91fab60e593cf3bf0cceff4db80552ef02",
+ "4190fdd19260cd60317e8789553f49f39f9ebae5",
"testharness"
],
"feature-policy/reporting/fullscreen-reporting.html.headers": [
"d35e48ba40dc65a3b043a3e41a11332c42bfdba9",
"support"
],
+ "feature-policy/reporting/generic-sensor-report-only.https.html": [
+ "deb6adeb73679e3e456787c23ee1a9acad1b8901",
+ "testharness"
+ ],
+ "feature-policy/reporting/generic-sensor-report-only.https.html.headers": [
+ "26605eb0fa6c46f9991071f32f9ca35adf00acb2",
+ "support"
+ ],
"feature-policy/reporting/generic-sensor-reporting.https.html": [
- "c60e3e81a1dddbdc000d799c19719c48ad55376c",
+ "517c7f6872146a66b02982c0d9e895b60f6d89af",
"testharness"
],
"feature-policy/reporting/generic-sensor-reporting.https.html.headers": [
"80cc02753044a3730695bce65bc2b4c22d7a8a6b",
"support"
],
+ "feature-policy/reporting/geolocation-report-only.https.html": [
+ "cf2a75b766c3e60b988a0e6e70f65d13b2b79fcf",
+ "testharness"
+ ],
+ "feature-policy/reporting/geolocation-report-only.https.html.headers": [
+ "fc9859000f566801a83d89f1b1371017847c9eb6",
+ "support"
+ ],
"feature-policy/reporting/geolocation-reporting.https.html": [
- "22e258563b799c7d48db2452f15eb6124d1f2d0e",
+ "05445fc1f1c04c39e39e9f6d06cdcd5022e9ba1a",
"testharness"
],
"feature-policy/reporting/geolocation-reporting.https.html.headers": [
@@ -604461,40 +605159,80 @@
"c059b96d97fc3701ce4325165b79948f69189135",
"support"
],
+ "feature-policy/reporting/microphone-report-only.https.html": [
+ "2d7b4d960d8b5f1c16be272f39c22947370a2611",
+ "testharness"
+ ],
+ "feature-policy/reporting/microphone-report-only.https.html.headers": [
+ "7673d05b9485d7d2aba2e1d952b65797fdbb0827",
+ "support"
+ ],
"feature-policy/reporting/microphone-reporting.https.html": [
- "7347a2332bc8184b2437a965e95b54ff5fcac22f",
+ "246484fd6cfe879d6cff1867c3161325f077745c",
"testharness"
],
"feature-policy/reporting/microphone-reporting.https.html.headers": [
"a86e0a077851a84f704e2aa4df1d526ecd9a55b2",
"support"
],
+ "feature-policy/reporting/midi-report-only.html": [
+ "e466ce0dc412e14296755c2608dc9b4ac1bdc4f6",
+ "testharness"
+ ],
+ "feature-policy/reporting/midi-report-only.html.headers": [
+ "3c6a2d4fbb320425b3850eaea2eceaf038b0ba62",
+ "support"
+ ],
"feature-policy/reporting/midi-reporting.html": [
- "8303b7adce4de654e3a846bbbe1cba035ac9a284",
+ "c5627e5a2136277bf9fce812d2a4a9b66c17e7b6",
"testharness"
],
"feature-policy/reporting/midi-reporting.html.headers": [
"0e145978a014f08fb5faff42750e9338da0f9ede",
"support"
],
+ "feature-policy/reporting/payment-report-only.https.html": [
+ "6a7678b51e759eef7c90e924a596bbf5c1364e15",
+ "testharness"
+ ],
+ "feature-policy/reporting/payment-report-only.https.html.headers": [
+ "6411478e4ca37bd2eab26a35b5ae0e6e39ddf066",
+ "support"
+ ],
"feature-policy/reporting/payment-reporting.https.html": [
- "03eaebea58fb603f5121f6836c85c2c6773c3a5d",
+ "828054a6caff34136817b3e0e55290b97c2c6b76",
"testharness"
],
"feature-policy/reporting/payment-reporting.https.html.headers": [
"a2836778bc5389fdb65e9f6d5f83c7967200866f",
"support"
],
+ "feature-policy/reporting/picture-in-picture-report-only.html": [
+ "157670f2cab802bf3f07343eab6649152b08c126",
+ "testharness"
+ ],
+ "feature-policy/reporting/picture-in-picture-report-only.html.headers": [
+ "0df90a3e94a3f4997b97dccac3b18aa2830045e8",
+ "support"
+ ],
"feature-policy/reporting/picture-in-picture-reporting.html": [
- "e3cbf1036871a40163a67aab22930fb7dcde8338",
+ "f15f47c549d9f03c6b2c49d4e00112900491174d",
"testharness"
],
"feature-policy/reporting/picture-in-picture-reporting.html.headers": [
"1759381fdc4141302f1b95868550ead76d9f5ca7",
"support"
],
+ "feature-policy/reporting/sync-xhr-report-only.html": [
+ "f841f63d6ed3503e7370d11a5305cd95588b1ff9",
+ "testharness"
+ ],
+ "feature-policy/reporting/sync-xhr-report-only.html.headers": [
+ "79a82cfb6351efe60fca8945e11d8ec58719dc8d",
+ "support"
+ ],
"feature-policy/reporting/sync-xhr-reporting.html": [
- "2c76390847be29c5bb2f3ec8605d1cb746c33e00",
+ "82200cdfbccc420568713808509855342c6c2bab",
"testharness"
],
"feature-policy/reporting/sync-xhr-reporting.html.headers": [
@@ -604502,35 +605240,59 @@
"support"
],
"feature-policy/reporting/unsized-media-reporting.html": [
- "8bd793189501a94564044a3c2fa3757a69f13085",
+ "00a15587d440641986fd55e9af90fd2210f2166e",
"testharness"
],
"feature-policy/reporting/unsized-media-reporting.html.headers": [
"db2dcbc1929b9e1264855e9b80f77dfbda5d4f38",
"support"
],
+ "feature-policy/reporting/usb-report-only.https.html": [
+ "e44c6c528fd4fc9b1d7d96ea65d68a922748bc47",
+ "testharness"
+ ],
+ "feature-policy/reporting/usb-report-only.https.html.headers": [
+ "bd2e3c6fe5085b0faa97c2439920d39175497acb",
+ "support"
+ ],
"feature-policy/reporting/usb-reporting.https.html": [
- "f90c602e449bd00e1d773edbce01e4fab63341e2",
+ "0ddff455537c7ad1ae077d8ac8b15e24f3fc64a3",
"testharness"
],
"feature-policy/reporting/usb-reporting.https.html.headers": [
"4fd1e269362c43d282ca8e3c5c35a5d648f0666b",
"support"
],
+ "feature-policy/reporting/vr-report-only.https.html": [
+ "91016d388532c5528f02e31b308178573191e2ef",
+ "testharness"
+ ],
+ "feature-policy/reporting/vr-report-only.https.html.headers": [
+ "b54cad2af941d68b2d395e7d0b9f0af3931bbd01",
+ "support"
+ ],
"feature-policy/reporting/vr-reporting.https.html": [
- "12cae052a167b47d020dcb8ec7887e5578ce48c5",
+ "e0bb63531171ff596cbb5aa1a71e757f0239e4ad",
"testharness"
],
"feature-policy/reporting/vr-reporting.https.html.headers": [
"d021af75636de273c868412cd98dfff50576151d",
"support"
],
+ "feature-policy/reporting/xr-report-only.https.html": [
+ "5d4fb062c1ea2b49fff4068f33926f5afdf8c446",
+ "testharness"
+ ],
+ "feature-policy/reporting/xr-report-only.https.html.headers": [
+ "b54cad2af941d68b2d395e7d0b9f0af3931bbd01",
+ "support"
+ ],
"feature-policy/reporting/xr-reporting.https.html": [
- "a7a122237bb0bdef6d35954697c5a80dbebb8b0f",
+ "0844860ad79efe76abcda1a41561a7ef28130ec0",
"testharness"
],
"feature-policy/reporting/xr-reporting.https.html.headers": [
- "d021af75636de273c868412cd98dfff50576151d",
+ "ea8722131ce0d9ca4a05390500d03b8f94394401",
"support"
],
"feature-policy/resources/autoplay.js": [
@@ -604846,7 +605608,7 @@
"testharness"
],
"fetch/api/headers/headers-no-cors.window.js": [
- "aa6562b7d377f4ad74456a87d7e37bf0bd18cb2b",
+ "ebf0142e280c668ac2adf5205e7e26712598e203",
"testharness"
],
"fetch/api/headers/headers-normalize.html": [
@@ -606861,6 +607623,10 @@
"ba92037b9c015aabde265746b9c4404281cb5394",
"manual"
],
+ "fullscreen/rendering/fullscreen-css-transition.html": [
+ "1d50502ee3bdb9b58eab3b516f1f743fa4e3a2f2",
+ "testharness"
+ ],
"fullscreen/rendering/fullscreen-pseudo-class-manual.html": [
"0c06ba3c6df7d23a7c47de24411279d6401a1307",
"manual"
@@ -620809,6 +621575,10 @@
"0ffec33bf531a55c9b878d2b7e5db7fa69043863",
"testharness"
],
+ "html/semantics/forms/the-input-element/time-focus-dynamic-value-change.html": [
+ "95ccb1ff69ba9b86f47ad4fdf7468aa1d83f3eb6",
+ "testharness"
+ ],
"html/semantics/forms/the-input-element/time.html": [
"ad4e38cbc74f50dc764fc958b8cf68f4dd790cbe",
"testharness"
@@ -626274,7 +627044,7 @@
"support"
],
"infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini": [
- "8edb44d4148739d5fccfe61460f298e642285d7c",
+ "6644d52d1ff5f9faa1101c539afd35e6e94be182",
"support"
],
"infrastructure/metadata/infrastructure/testdriver/actions/elementTiming.html.ini": [
@@ -626282,7 +627052,7 @@
"support"
],
"infrastructure/metadata/infrastructure/testdriver/actions/eventOrder.html.ini": [
- "8c60a97ad955a8f02e45657d36b2ffa4f6a476a0",
+ "bfb5c0ae4bd5350c6a540fa48a5d2896d5be9503",
"support"
],
"infrastructure/metadata/infrastructure/testdriver/actions/multiDevice.html.ini": [
@@ -626430,7 +627200,7 @@
"testharness"
],
"infrastructure/testdriver/actions/elementPosition.html": [
- "ab9fb31ad093b129b2d1c0f4b471d4c6c5000866",
+ "145852e7b51bd0cdc9e7b4ef5ebddcbf1c0235c5",
"testharness"
],
"infrastructure/testdriver/actions/elementTiming.html": [
@@ -626438,7 +627208,7 @@
"testharness"
],
"infrastructure/testdriver/actions/eventOrder.html": [
- "bd7fef41e9af2909fa8e375867240a552f13d715",
+ "c85b861c7fd9b199ce7baa5c9eac49525db4754b",
"testharness"
],
"infrastructure/testdriver/actions/multiDevice.html": [
@@ -626738,7 +627508,7 @@
"support"
],
"interfaces/geometry.idl": [
- "733a111e38bb62eb94d1c508a9109e68ecab32bb",
+ "b5b56e780542ec0e623b47fc6a8b76dd0c3bb6f1",
"support"
],
"interfaces/gyroscope.idl": [
@@ -627366,7 +628136,7 @@
"support"
],
"lint.whitelist": [
- "99b1d6a2be10de0f35b571431310a05dd7ff99c2",
+ "dd90081c83eb6f575b510d9768c55a030bc0b60c",
"support"
],
"longtask-timing/META.yml": [
@@ -627378,35 +628148,35 @@
"testharness"
],
"longtask-timing/longtask-attributes.html": [
- "6af90cd9eef7ca4433c5a330e167678c39bfcfb7",
+ "b5d44b0db5d33ee44abf2690b27a233088491ab8",
"testharness"
],
"longtask-timing/longtask-in-childiframe-crossorigin.html": [
- "17b0fd2412b16ba30f23c9d89cf16d7014470eb3",
+ "aaabce5d79da192b2319d8ab4baa2c7056185373",
"testharness"
],
"longtask-timing/longtask-in-childiframe.html": [
- "b7137043ad01de4ee10b1a2a7424e1c2e12370e3",
+ "34b802cb69676e16648879a46178fb472e8f5d42",
"testharness"
],
"longtask-timing/longtask-in-externalscript.html": [
- "51c58afff0558ce3870aeeaf8d5cbed5eff7ed57",
+ "076f0f2291400aaa0a2c0608f204844b7b13a1f4",
"testharness"
],
"longtask-timing/longtask-in-parentiframe.html": [
- "2e7a9990dd059b6b4142636c58c884431b74f878",
+ "778edc1000ffce314c064d2f2bc83e2e2a2b33f6",
"testharness"
],
"longtask-timing/longtask-in-raf.html": [
- "8a5a7290ac9f5a4a0517f77a825700c8081e4dc0",
+ "2d30ac36b96339238d18f596379b0784d9dcd79f",
"testharness"
],
"longtask-timing/longtask-in-sibling-iframe-crossorigin.html": [
- "cfcc1895a190a613a67cbd4674b7fb7379abafaa",
+ "b73112e3abf8c88567964690c18e797f10d15ad2",
"testharness"
],
"longtask-timing/longtask-in-sibling-iframe.html": [
- "e6041e48a665d5df4bbd03d11f30c0c59dfa35aa",
+ "b8a4270163a1ef4de3a0dfd4aaf82f9404497882",
"testharness"
],
"longtask-timing/longtask-tojson.html": [
@@ -639501,9 +640271,9 @@
"bb6dcc4236b0cc5183855275d85208db6460a5cb",
"manual"
],
- "pointerevents/pointerevent_pointermove.html": [
- "4b168439a4ee1455e5a5960b48a0c3192e767edf",
- "testharness"
+ "pointerevents/pointerevent_pointermove-manual.html": [
+ "cf1a1ee4ee852e94cef7010fd2f2351e974d23b9",
+ "manual"
],
"pointerevents/pointerevent_pointermove_isprimary_same_as_pointerdown-manual.html": [
"b43d59f4f6e822f3d03d25b17015cd50d332ed7b",
@@ -649193,6 +649963,10 @@
"b6d30eab0f0ca1fa4024b8576e7cbfb8a4c7bad3",
"support"
],
+ "resources/test/tests/functional/worker-dedicated-uncaught-allow.html": [
+ "33543d0b4e70e64a0dc664707bb3912046b963d4",
+ "support"
+ ],
"resources/test/tests/functional/worker-dedicated-uncaught-single.html": [
"760151832e81f8ef61d510b252d0cd1d7d843495",
"support"
@@ -649213,6 +649987,10 @@
"5d098de9105fbaba3c17a4576af8f1b687c1b597",
"support"
],
+ "resources/test/tests/functional/worker-uncaught-allow.js": [
+ "957131a890e007bd8ad1e111064849d1e65dd90e",
+ "support"
+ ],
"resources/test/tests/functional/worker-uncaught-single.js": [
"d7f00382c0b92ff29bd8bcb7fceebec727df4ef7",
"support"
@@ -649310,7 +650088,7 @@
"support"
],
"resources/testdriver-actions.js": [
- "82cac85347bfa6f65a3757fa8e3c76d113ce06be",
+ "46c68858e4574646ad3efaa5a6dba10127b27a29",
"support"
],
"resources/testdriver-vendor.js": [
@@ -649322,7 +650100,7 @@
"support"
],
"resources/testdriver.js": [
- "8ffd765072c4e7351e95f221b447a9d8ecde5152",
+ "e0741e8d61d4d67c99ccbfc860f65e796c44c78a",
"support"
],
"resources/testdriver.js.headers": [
@@ -649334,7 +650112,7 @@
"support"
],
"resources/testharness.js": [
- "18a6f70beab26b474b0f684842a5735def02610a",
+ "2e14c30730d2efaf8fab98328f0a07d270627802",
"support"
],
"resources/testharness.js.headers": [
@@ -651666,7 +652444,7 @@
"testharness"
],
"service-workers/service-worker/clients-get.https.html": [
- "68c6d7f7ac02a316856a405f6579eb191e738924",
+ "b05274039082a8b25384a87dceb46a005f95fd89",
"testharness"
],
"service-workers/service-worker/clients-matchall-client-types.https.html": [
@@ -651846,7 +652624,7 @@
"testharness"
],
"service-workers/service-worker/fetch-event.https.html": [
- "78e099b8b553ea150f170acfa99d9191c39e3326",
+ "169a0b17d6230335fb0c83988039875c815d99e1",
"testharness"
],
"service-workers/service-worker/fetch-frame-resource.https.html": [
@@ -651938,7 +652716,7 @@
"testharness"
],
"service-workers/service-worker/import-module-scripts.https.html": [
- "e82911a1bd002d1039ba5a5ae31b51a3a90e1905",
+ "7bca8de64f5bc9664911bd1c5dc883567681afb8",
"testharness"
],
"service-workers/service-worker/import-scripts-mime-types.https.html": [
@@ -652433,6 +653211,10 @@
"6342fe04f404e36e2fd7c8f91960ded2ae1c91ee",
"support"
],
+ "service-workers/service-worker/resources/clients-get-resultingClientId-worker.js": [
+ "153a8e3f5b94059e643daa30b1eb4a821ef886f3",
+ "support"
+ ],
"service-workers/service-worker/resources/clients-get-worker.js": [
"87368ae7617575da4281aff678c27c2d37118966",
"support"
@@ -652654,7 +653436,7 @@
"support"
],
"service-workers/service-worker/resources/fetch-event-test-worker.js": [
- "d503a6609d695821e207217811b53f957027d118",
+ "0a52a8201ea96d50d3fa6ee302f6aa90b4435da6",
"support"
],
"service-workers/service-worker/resources/fetch-event-within-sw-worker.js": [
@@ -653166,7 +653948,7 @@
"support"
],
"service-workers/service-worker/resources/registration-tests-scope.js": [
- "51b0ab4ad51a3c0a2a7b683413ca6aeba7ec6191",
+ "6c097ad8d1f8b8f9a4fe95f7c6ebd04edb5cfd9c",
"support"
],
"service-workers/service-worker/resources/registration-tests-script-url.js": [
@@ -653178,7 +653960,7 @@
"support"
],
"service-workers/service-worker/resources/registration-tests-security-error.js": [
- "c84bb66e042e1354165de3efd291f2aa2b97b9c5",
+ "a72d3bac291c6f42acf264926b858a0f3964ed42",
"support"
],
"service-workers/service-worker/resources/registration-worker.js": [
@@ -656041,6 +656823,10 @@
"760328ac31818d86a9410fd7c412d803e30416a2",
"testharness"
],
+ "svg/geometry/parsing/cx-computed.svg": [
+ "5a408ba4d28f1acf36f2bde6767b65bc5401cf48",
+ "testharness"
+ ],
"svg/geometry/parsing/cx-invalid.svg": [
"4b1b90158fcc7c1747f8b1ab382cd78f394f142c",
"testharness"
@@ -656049,6 +656835,10 @@
"e7f627ac721fcc90597314ef0c97765566c343b3",
"testharness"
],
+ "svg/geometry/parsing/cy-computed.svg": [
+ "97a41aed9c1621c8da0f5318cf1a08339867d03f",
+ "testharness"
+ ],
"svg/geometry/parsing/cy-invalid.svg": [
"528eed02ceadb26ff53a42c9950bf508170c2c83",
"testharness"
@@ -656057,6 +656847,10 @@
"4372c36ea225328926030830e895f64858e73784",
"testharness"
],
+ "svg/geometry/parsing/r-computed.svg": [
+ "fc8ea983ff00e82e61fbc8b974657c1956391f8e",
+ "testharness"
+ ],
"svg/geometry/parsing/r-invalid.svg": [
"a14c52266ce2b7b66847a18327cab0346d083115",
"testharness"
@@ -656065,6 +656859,10 @@
"70cd5503b795cef3f5db7eb4db1034d63b3e63fc",
"testharness"
],
+ "svg/geometry/parsing/rx-computed.svg": [
+ "7e4c42d29304a1f03e712149960356c5e0c7464b",
+ "testharness"
+ ],
"svg/geometry/parsing/rx-invalid.svg": [
"9ce0603bea13ceb2cf06c7da8ba0ac2b4ccb04a1",
"testharness"
@@ -656073,6 +656871,10 @@
"e2b628f1de4bd8e2a3fec98fda1aa76b6af79b87",
"testharness"
],
+ "svg/geometry/parsing/ry-computed.svg": [
+ "390d63dc7e5aa9802edea9ad2193695e1dbdb688",
+ "testharness"
+ ],
"svg/geometry/parsing/ry-invalid.svg": [
"7a25a1ec0e61e4a36e65b7884d9667bb1614adfa",
"testharness"
@@ -656081,6 +656883,10 @@
"4ce5bec4084cf0e6cf1e6744701b756cc18e2f91",
"testharness"
],
+ "svg/geometry/parsing/x-computed.svg": [
+ "f7da0ed9564380250bff469f388bf1a88d31a43a",
+ "testharness"
+ ],
"svg/geometry/parsing/x-invalid.svg": [
"31ad29524e11dc5fe95c970506691953f0e611d0",
"testharness"
@@ -656089,6 +656895,10 @@
"5ff2fbd831d7373faee706538f08528dc4ac8a99",
"testharness"
],
+ "svg/geometry/parsing/y-computed.svg": [
+ "83ef887da671eb532661c00e113118d6daa2e4b4",
+ "testharness"
+ ],
"svg/geometry/parsing/y-invalid.svg": [
"d6ea944dbd649d1ec73da75e162f2ac3a3dfa818",
"testharness"
@@ -658317,6 +659127,14 @@
"643ddba1664fd5d2155aec05af8518188fdc354c",
"testharness"
],
+ "svg/interact/script-common.html": [
+ "fc2ae3ba01a0ac512f4a4c180890f03260442bc6",
+ "testharness"
+ ],
+ "svg/interact/script-content.svg": [
+ "94836f7c0331cb8a1caebacef02a75018b2b4ddb",
+ "testharness"
+ ],
"svg/linking/reftests/href-a-element-attr-change.html": [
"c74b2e015613a09d1cecb5a0c3136d26f07e2a5b",
"reftest"
@@ -658525,6 +659343,10 @@
"c8d60bd5bf68d0dc5f56fb360acdd2bac5aa1aa2",
"reftest"
],
+ "svg/painting/scripted/paint-order-computed-value-01.svg": [
+ "7ea669f1508283f498e9b38030022deac3b091a0",
+ "testharness"
+ ],
"svg/path/bearing/absolute-ref.svg": [
"85b20271a1179500e145ef48260888978dea484a",
"support"
@@ -664446,7 +665268,7 @@
"support"
],
"tools/wptrunner/wptrunner/browsers/fennec.py": [
- "15396fba22c2a39a9ccfce439cf7e477dc5e1378",
+ "01fed66d0e909a7491d8003850a2f425781a4ff1",
"support"
],
"tools/wptrunner/wptrunner/browsers/firefox.py": [
@@ -665122,7 +665944,7 @@
"support"
],
"tools/wptserve/wptserve/server.py": [
- "848fbb74c7b952a825ecbcda30cc1c4808e441fc",
+ "d57a36b133844b1146c4ab44ae411ea94222cc6d",
"support"
],
"tools/wptserve/wptserve/sslutils/__init__.py": [
@@ -666077,6 +666899,10 @@
"e47a3ba7a981e978cdf015f8fc6bfbae6762dba9",
"testharness"
],
+ "user-timing/mark-measure-return-null.html": [
+ "5afd9633f24751eb40e3bd5e1d73c47922639f0c",
+ "testharness"
+ ],
"user-timing/mark.any.js": [
"781bbcbfca6cc042b7ef4d493f46215cf7a0d7df",
"testharness"
@@ -667626,7 +668452,7 @@
"testharness"
],
"wasm/webapi/abort.any.js": [
- "cc0f5d9f34ff0cc43df0b0dff097869502da448d",
+ "839de16108ef255855b365b43dfdfce927543be9",
"testharness"
],
"wasm/webapi/body.any.js": [
@@ -669850,7 +670676,7 @@
"wdspec"
],
"webdriver/tests/maximize_window/stress.py": [
- "daa8a911928f42fabdde73c3749d96691f039167",
+ "4527c64a28844b009f33b8051194a6f624899ba5",
"wdspec"
],
"webdriver/tests/maximize_window/user_prompts.py": [
@@ -670806,7 +671632,7 @@
"testharness"
],
"webrtc/RTCConfiguration-rtcpMuxPolicy.html": [
- "1d99aa29d85a5dabddf21bc4d758c6cdf96ff9c2",
+ "7d0c81f5eabfddd5fbe66a2eab60ebb6fcec33f5",
"testharness"
],
"webrtc/RTCDTMFSender-helper.js": [
@@ -670866,7 +671692,7 @@
"testharness"
],
"webrtc/RTCPeerConnection-addIceCandidate.html": [
- "1dd1350acd25ea865631c45f7345cb3d06822f3b",
+ "2283c6835e1401f3416d79a6281f25c09f1b3022",
"testharness"
],
"webrtc/RTCPeerConnection-addTrack.https.html": [
@@ -670926,7 +671752,7 @@
"testharness"
],
"webrtc/RTCPeerConnection-iceGatheringState.html": [
- "fb9e514194b98062acc3fdd33111a2d740bb9d52",
+ "e6d8d062701a795a289ad011fa4cfae143a342e9",
"testharness"
],
"webrtc/RTCPeerConnection-ondatachannel.html": [
@@ -670934,7 +671760,7 @@
"testharness"
],
"webrtc/RTCPeerConnection-onnegotiationneeded.html": [
- "8f9ea2be7806efc18b7511d27634d4c1f5dacf0c",
+ "7e55ac3fadd046f8805174c3d9b1de92f704ca12",
"testharness"
],
"webrtc/RTCPeerConnection-ontrack.https.html": [
@@ -670966,7 +671792,7 @@
"testharness"
],
"webrtc/RTCPeerConnection-setLocalDescription-rollback.html": [
- "0147b3185cce20c7345fe640dd6e466209d0e3ca",
+ "630f84faa47f2d8589989674a2cb6d39797520ac",
"testharness"
],
"webrtc/RTCPeerConnection-setLocalDescription.html": [
@@ -670978,7 +671804,7 @@
"testharness"
],
"webrtc/RTCPeerConnection-setRemoteDescription-offer.html": [
- "565fddc59be02c409835749aac090db1af7a38af",
+ "cae62b24b6c180c06be87dd48ffac364427624db",
"testharness"
],
"webrtc/RTCPeerConnection-setRemoteDescription-pranswer.html": [
@@ -670990,7 +671816,7 @@
"testharness"
],
"webrtc/RTCPeerConnection-setRemoteDescription-rollback.html": [
- "ec90e561cbcf76559356dcd46c77547fb8262dcb",
+ "c317f3e1ae690a3e0101a5c596f0108ff23e822a",
"testharness"
],
"webrtc/RTCPeerConnection-setRemoteDescription-tracks.https.html": [
@@ -671018,7 +671844,7 @@
"support"
],
"webrtc/RTCQuicStream.https.html": [
- "b147414794ecc208c918834110f5513e5075172d",
+ "eed7cffc37fe76cee939b78c612505c31c4f17b1",
"testharness"
],
"webrtc/RTCQuicTransport-helper.js": [
diff --git a/tests/wpt/metadata/css/css-animations/parsing/animation-delay-computed.html.ini b/tests/wpt/metadata/css/css-animations/parsing/animation-delay-computed.html.ini
deleted file mode 100644
index f0e5fb9fccf..00000000000
--- a/tests/wpt/metadata/css/css-animations/parsing/animation-delay-computed.html.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[animation-delay-computed.html]
- [Property animation-delay value '20s, 10s' computes to '20s, 10s']
- expected: FAIL
-
- [Property animation-delay value 'calc(2 * 3s)' computes to '6s']
- expected: FAIL
-
- [Property animation-delay value '-500ms' computes to '-0.5s']
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/css-animations/parsing/animation-duration-computed.html.ini b/tests/wpt/metadata/css/css-animations/parsing/animation-duration-computed.html.ini
deleted file mode 100644
index 210014a5890..00000000000
--- a/tests/wpt/metadata/css/css-animations/parsing/animation-duration-computed.html.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[animation-duration-computed.html]
- [Property animation-duration value '20s, 10s' computes to '20s, 10s']
- expected: FAIL
-
- [Property animation-duration value 'calc(2 * 3s)' computes to '6s']
- expected: FAIL
-
- [Property animation-duration value '500ms' computes to '0.5s']
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/css-flexbox/align-content-wrap-001.html.ini b/tests/wpt/metadata/css/css-flexbox/align-content-wrap-001.html.ini
new file mode 100644
index 00000000000..12e0f627837
--- /dev/null
+++ b/tests/wpt/metadata/css/css-flexbox/align-content-wrap-001.html.ini
@@ -0,0 +1,13 @@
+[align-content-wrap-001.html]
+ [.default, .verticalWriting 10]
+ expected: FAIL
+
+ [.default, .verticalWriting 12]
+ expected: FAIL
+
+ [.default, .verticalWriting 9]
+ expected: FAIL
+
+ [.default, .verticalWriting 6]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-flexbox/align-content-wrap-002.html.ini b/tests/wpt/metadata/css/css-flexbox/align-content-wrap-002.html.ini
new file mode 100644
index 00000000000..512db4fcf03
--- /dev/null
+++ b/tests/wpt/metadata/css/css-flexbox/align-content-wrap-002.html.ini
@@ -0,0 +1,10 @@
+[align-content-wrap-002.html]
+ [.flex-horizontal, .flex-vertical 1]
+ expected: FAIL
+
+ [.flex-horizontal, .flex-vertical 5]
+ expected: FAIL
+
+ [.flex-horizontal, .flex-vertical 6]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-flexbox/align-content-wrap-003.html.ini b/tests/wpt/metadata/css/css-flexbox/align-content-wrap-003.html.ini
new file mode 100644
index 00000000000..8ae79171efe
--- /dev/null
+++ b/tests/wpt/metadata/css/css-flexbox/align-content-wrap-003.html.ini
@@ -0,0 +1,70 @@
+[align-content-wrap-003.html]
+ [.flexbox 6]
+ expected: FAIL
+
+ [.flexbox 33]
+ expected: FAIL
+
+ [.flexbox 12]
+ expected: FAIL
+
+ [.flexbox 13]
+ expected: FAIL
+
+ [.flexbox 11]
+ expected: FAIL
+
+ [.flexbox 34]
+ expected: FAIL
+
+ [.flexbox 35]
+ expected: FAIL
+
+ [.flexbox 36]
+ expected: FAIL
+
+ [.flexbox 32]
+ expected: FAIL
+
+ [.flexbox 30]
+ expected: FAIL
+
+ [.flexbox 31]
+ expected: FAIL
+
+ [.flexbox 29]
+ expected: FAIL
+
+ [.flexbox 28]
+ expected: FAIL
+
+ [.flexbox 27]
+ expected: FAIL
+
+ [.flexbox 26]
+ expected: FAIL
+
+ [.flexbox 25]
+ expected: FAIL
+
+ [.flexbox 24]
+ expected: FAIL
+
+ [.flexbox 23]
+ expected: FAIL
+
+ [.flexbox 21]
+ expected: FAIL
+
+ [.flexbox 44]
+ expected: FAIL
+
+ [.flexbox 41]
+ expected: FAIL
+
+ [.flexbox 43]
+ expected: FAIL
+
+ [.flexbox 42]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/writing-system/writing-system-line-break-002.html.ini b/tests/wpt/metadata/css/css-text/writing-system/writing-system-line-break-002.html.ini
new file mode 100644
index 00000000000..447719ca0bd
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/writing-system/writing-system-line-break-002.html.ini
@@ -0,0 +1,2 @@
+[writing-system-line-break-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/writing-system/writing-system-segment-break-001.html.ini b/tests/wpt/metadata/css/css-text/writing-system/writing-system-segment-break-001.html.ini
new file mode 100644
index 00000000000..7a96cf71dd7
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/writing-system/writing-system-segment-break-001.html.ini
@@ -0,0 +1,2 @@
+[writing-system-segment-break-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transitions/parsing/transition-duration-computed.html.ini b/tests/wpt/metadata/css/css-transitions/parsing/transition-duration-computed.html.ini
deleted file mode 100644
index da05b3d994a..00000000000
--- a/tests/wpt/metadata/css/css-transitions/parsing/transition-duration-computed.html.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[transition-duration-computed.html]
- [Property transition-duration value '500ms' computes to '0.5s']
- expected: FAIL
-
- [Property transition-duration value 'calc(2 * 3s)' computes to '6s']
- expected: FAIL
-
- [Property transition-duration value '20s, 10s' computes to '20s, 10s']
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini
index 08392616318..8850ec200da 100644
--- a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini
@@ -71,9 +71,6 @@
[text-indent intermediate]
expected: FAIL
- [border-top-width end]
- expected: FAIL
-
- [border-bottom-width end]
+ [opacity end]
expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/backdrop-filter-clip-rect.html.ini b/tests/wpt/metadata/css/filter-effects/backdrop-filter-clip-rect.html.ini
new file mode 100644
index 00000000000..3a98309a68b
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/backdrop-filter-clip-rect.html.ini
@@ -0,0 +1,2 @@
+[backdrop-filter-clip-rect.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/parsing/backdrop-filter-computed.html.ini b/tests/wpt/metadata/css/filter-effects/parsing/backdrop-filter-computed.html.ini
deleted file mode 100644
index b89270eb2c2..00000000000
--- a/tests/wpt/metadata/css/filter-effects/parsing/backdrop-filter-computed.html.ini
+++ /dev/null
@@ -1,85 +0,0 @@
-[backdrop-filter-computed.html]
- [Property backdrop-filter value 'blur(10px) url("https://www.example.com/picture.svg#f") contrast(20) brightness(30)' computes to 'blur(10px) url("https://www.example.com/picture.svg#f") contrast(20) brightness(30)']
- expected: FAIL
-
- [Property backdrop-filter value 'contrast()' computes to 'contrast(1)']
- expected: FAIL
-
- [Property backdrop-filter value 'grayscale(50%)' computes to 'grayscale(0.5)']
- expected: FAIL
-
- [Property backdrop-filter value 'opacity(100%)' computes to 'opacity(1)']
- expected: FAIL
-
- [Property backdrop-filter value 'invert()' computes to 'invert(0)']
- expected: FAIL
-
- [Property backdrop-filter value 'saturate(0)' computes to 'saturate(0)']
- expected: FAIL
-
- [Property backdrop-filter value 'invert(0)' computes to 'invert(0)']
- expected: FAIL
-
- [Property backdrop-filter value 'hue-rotate()' computes to 'hue-rotate(0deg)']
- expected: FAIL
-
- [Property backdrop-filter value 'drop-shadow(1px 2px)' computes to 'drop-shadow(rgb(0, 255, 0) 1px 2px 0px)']
- expected: FAIL
-
- [Property backdrop-filter value 'brightness(0)' computes to 'brightness(0)']
- expected: FAIL
-
- [Property backdrop-filter value 'opacity()' computes to 'opacity(1)']
- expected: FAIL
-
- [Property backdrop-filter value 'brightness(300%)' computes to 'brightness(3)']
- expected: FAIL
-
- [Property backdrop-filter value 'blur()' computes to 'blur(0px)']
- expected: FAIL
-
- [Property backdrop-filter value 'sepia()' computes to 'sepia(1)']
- expected: FAIL
-
- [Property backdrop-filter value 'grayscale()' computes to 'grayscale(1)']
- expected: FAIL
-
- [Property backdrop-filter value 'sepia(100%)' computes to 'sepia(1)']
- expected: FAIL
-
- [Property backdrop-filter value 'sepia(0)' computes to 'sepia(0)']
- expected: FAIL
-
- [Property backdrop-filter value 'brightness()' computes to 'brightness(0)']
- expected: FAIL
-
- [Property backdrop-filter value 'invert(100%)' computes to 'invert(1)']
- expected: FAIL
-
- [Property backdrop-filter value 'saturate(300%)' computes to 'saturate(3)']
- expected: FAIL
-
- [Property backdrop-filter value 'hue-rotate(90deg)' computes to 'hue-rotate(90deg)']
- expected: FAIL
-
- [Property backdrop-filter value 'contrast(0)' computes to 'contrast(0)']
- expected: FAIL
-
- [Property backdrop-filter value 'none' computes to 'none']
- expected: FAIL
-
- [Property backdrop-filter value 'contrast(300%)' computes to 'contrast(3)']
- expected: FAIL
-
- [Property backdrop-filter value 'drop-shadow(rgb(4, 5, 6) 1px 2px 0px)' computes to 'drop-shadow(rgb(4, 5, 6) 1px 2px 0px)']
- expected: FAIL
-
- [Property backdrop-filter value 'opacity(0)' computes to 'opacity(0)']
- expected: FAIL
-
- [Property backdrop-filter value 'saturate()' computes to 'saturate(1)']
- expected: FAIL
-
- [Property backdrop-filter value 'blur(100px)' computes to 'blur(100px)']
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/filter-effects/parsing/filter-computed.html.ini b/tests/wpt/metadata/css/filter-effects/parsing/filter-computed.html.ini
index 06721ce5928..cf8a1a8765b 100644
--- a/tests/wpt/metadata/css/filter-effects/parsing/filter-computed.html.ini
+++ b/tests/wpt/metadata/css/filter-effects/parsing/filter-computed.html.ini
@@ -1,79 +1,31 @@
[filter-computed.html]
- [Property filter value 'invert(0)' computes to 'invert(0)']
- expected: FAIL
-
- [Property filter value 'brightness(0)' computes to 'brightness(0)']
- expected: FAIL
-
- [Property filter value 'invert(100%)' computes to 'invert(1)']
- expected: FAIL
-
- [Property filter value 'sepia(0)' computes to 'sepia(0)']
- expected: FAIL
-
- [Property filter value 'saturate(0)' computes to 'saturate(0)']
- expected: FAIL
-
- [Property filter value 'contrast(0)' computes to 'contrast(0)']
- expected: FAIL
-
- [Property filter value 'hue-rotate(90deg)' computes to 'hue-rotate(90deg)']
- expected: FAIL
-
[Property filter value 'brightness()' computes to 'brightness(0)']
expected: FAIL
- [Property filter value 'blur(100px)' computes to 'blur(100px)']
- expected: FAIL
-
[Property filter value 'sepia()' computes to 'sepia(1)']
expected: FAIL
- [Property filter value 'grayscale(50%)' computes to 'grayscale(0.5)']
- expected: FAIL
-
[Property filter value 'saturate()' computes to 'saturate(1)']
expected: FAIL
[Property filter value 'grayscale()' computes to 'grayscale(1)']
expected: FAIL
- [Property filter value 'contrast(300%)' computes to 'contrast(3)']
- expected: FAIL
-
- [Property filter value 'none' computes to 'none']
- expected: FAIL
-
- [Property filter value 'brightness(300%)' computes to 'brightness(3)']
- expected: FAIL
-
[Property filter value 'invert()' computes to 'invert(0)']
expected: FAIL
[Property filter value 'hue-rotate()' computes to 'hue-rotate(0deg)']
expected: FAIL
- [Property filter value 'opacity(0)' computes to 'opacity(0)']
- expected: FAIL
-
- [Property filter value 'opacity(100%)' computes to 'opacity(1)']
- expected: FAIL
-
[Property filter value 'drop-shadow(1px 2px)' computes to 'drop-shadow(rgb(0, 255, 0) 1px 2px 0px)']
expected: FAIL
- [Property filter value 'sepia(100%)' computes to 'sepia(1)']
- expected: FAIL
-
[Property filter value 'blur()' computes to 'blur(0px)']
expected: FAIL
[Property filter value 'drop-shadow(rgb(4, 5, 6) 1px 2px 0px)' computes to 'drop-shadow(rgb(4, 5, 6) 1px 2px 0px)']
expected: FAIL
- [Property filter value 'saturate(300%)' computes to 'saturate(3)']
- expected: FAIL
-
[Property filter value 'blur(10px) url("https://www.example.com/picture.svg#f") contrast(20) brightness(30)' computes to 'blur(10px) url("https://www.example.com/picture.svg#f") contrast(20) brightness(30)']
expected: FAIL
diff --git a/tests/wpt/metadata/css/geometry/interfaces.html.ini b/tests/wpt/metadata/css/geometry/interfaces.html.ini
index fc7bf385e0f..01d6a39eb03 100644
--- a/tests/wpt/metadata/css/geometry/interfaces.html.ini
+++ b/tests/wpt/metadata/css/geometry/interfaces.html.ini
@@ -375,3 +375,12 @@
[Geometry APIs interface IDL tests]
expected: FAIL
+ [DOMMatrixReadOnly interface: calling scaleNonUniform(unrestricted double, unrestricted double) on new DOMMatrixReadOnly() with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [DOMMatrixReadOnly interface: new DOMMatrixReadOnly() must inherit property "scaleNonUniform(unrestricted double, unrestricted double)" with the proper type]
+ expected: FAIL
+
+ [DOMMatrixReadOnly interface: operation scaleNonUniform(unrestricted double, unrestricted double)]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/geometry/interfaces.worker.js.ini b/tests/wpt/metadata/css/geometry/interfaces.worker.js.ini
index 994ddcf717a..3d74ff822d0 100644
--- a/tests/wpt/metadata/css/geometry/interfaces.worker.js.ini
+++ b/tests/wpt/metadata/css/geometry/interfaces.worker.js.ini
@@ -98,3 +98,12 @@
[interfaces]
expected: FAIL
+ [DOMMatrixReadOnly interface: calling scaleNonUniform(unrestricted double, unrestricted double) on new DOMMatrixReadOnly() with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [DOMMatrixReadOnly interface: new DOMMatrixReadOnly() must inherit property "scaleNonUniform(unrestricted double, unrestricted double)" with the proper type]
+ expected: FAIL
+
+ [DOMMatrixReadOnly interface: operation scaleNonUniform(unrestricted double, unrestricted double)]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/selectors/invalidation/is.html.ini b/tests/wpt/metadata/css/selectors/invalidation/is.html.ini
new file mode 100644
index 00000000000..6afc2497a09
--- /dev/null
+++ b/tests/wpt/metadata/css/selectors/invalidation/is.html.ini
@@ -0,0 +1,19 @@
+[is.html]
+ [Invalidate :is() for compound selector arguments.]
+ expected: FAIL
+
+ [Preconditions.]
+ expected: FAIL
+
+ [Test specificity of :is().]
+ expected: FAIL
+
+ [Invalidate :is() for complex selector arguments.]
+ expected: FAIL
+
+ [Invalidate :is() for simple selector arguments.]
+ expected: FAIL
+
+ [Invalidate nested :is().]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/selectors/is-nested.html.ini b/tests/wpt/metadata/css/selectors/is-nested.html.ini
new file mode 100644
index 00000000000..d18898442a3
--- /dev/null
+++ b/tests/wpt/metadata/css/selectors/is-nested.html.ini
@@ -0,0 +1,7 @@
+[is-nested.html]
+ [Test nested :is() chooses highest specificity for class outside :is().]
+ expected: FAIL
+
+ [Test nested :is() specificity for class within arguments.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/selectors/is-specificity.html.ini b/tests/wpt/metadata/css/selectors/is-specificity.html.ini
new file mode 100644
index 00000000000..96a4e2ad64d
--- /dev/null
+++ b/tests/wpt/metadata/css/selectors/is-specificity.html.ini
@@ -0,0 +1,4 @@
+[is-specificity.html]
+ [Test :is() uses highest possible specificity]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
index 59aab785e91..0f798a6df5b 100644
--- a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
+++ b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
@@ -509,7 +509,7 @@
[single-byte-decoder.html?XMLHttpRequest]
- expected: CRASH
+ expected: TIMEOUT
[ISO-8859-2: iso_8859-2:1987 (XMLHttpRequest)]
expected: FAIL
@@ -532,7 +532,7 @@
expected: FAIL
[windows-1252: iso_8859-1:1987 (XMLHttpRequest)]
- expected: FAIL
+ expected: TIMEOUT
[windows-1254: iso_8859-9:1989 (XMLHttpRequest)]
expected: TIMEOUT
@@ -606,5 +606,35 @@
[windows-1256: windows-1256 (XMLHttpRequest)]
expected: TIMEOUT
+ [windows-1253: x-cp1253 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1252: latin1 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1254: cp1254 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1253: windows-1253 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1253: cp1253 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1254: l5 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1252: x-cp1252 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1252: l1 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1252: windows-1252 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1252: us-ascii (XMLHttpRequest)]
+ expected: TIMEOUT
+
[single-byte-decoder.html?TextDecoder]
diff --git a/tests/wpt/metadata/fetch/api/headers/headers-no-cors.window.js.ini b/tests/wpt/metadata/fetch/api/headers/headers-no-cors.window.js.ini
index c303da569b9..6c1059dbd29 100644
--- a/tests/wpt/metadata/fetch/api/headers/headers-no-cors.window.js.ini
+++ b/tests/wpt/metadata/fetch/api/headers/headers-no-cors.window.js.ini
@@ -20,3 +20,15 @@
["no-cors" Headers object cannot have accept/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 as header]
expected: FAIL
+ ["no-cors" Headers object cannot have content-type set to text/plain;ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, text/plain]
+ expected: FAIL
+
+ ["no-cors" Headers object cannot have accept set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
+ expected: FAIL
+
+ ["no-cors" Headers object cannot have accept-language set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
+ expected: FAIL
+
+ ["no-cors" Headers object cannot have content-language set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
deleted file mode 100644
index dc2e45516de..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_5.html]
- [Multiple history traversals, last would be aborted]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
deleted file mode 100644
index 8cc42056d34..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[non-active-document.html]
- [DOMParser]
- expected: FAIL
-
- [createHTMLDocument]
- expected: FAIL
-
- [<template>]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-xml.window.js.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-xml.window.js.ini
index 25f0d603b3d..2314441517b 100644
--- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-xml.window.js.ini
+++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-xml.window.js.ini
@@ -9,3 +9,6 @@
[document.open should throw an InvalidStateError with XML document even when the ignore-opens-during-unload counter is greater than 0 (during pagehide event)]
expected: FAIL
+ [document.open should throw an InvalidStateError with XML document even when there is an active parser executing script]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
index 99a24216c88..7725b118e9d 100644
--- a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
+++ b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
@@ -12,3 +12,6 @@
[Verifies the resolution of entry.startTime is at least 5 microseconds.]
expected: TIMEOUT
+ [Verifies the resolution of performance.now() is at least 5 microseconds.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/quirks/unitless-length/no-quirks.html.ini b/tests/wpt/metadata/quirks/unitless-length/limited-quirks.html.ini
index 818a429ed39..c7e9c7434f5 100644
--- a/tests/wpt/metadata/quirks/unitless-length/no-quirks.html.ini
+++ b/tests/wpt/metadata/quirks/unitless-length/limited-quirks.html.ini
@@ -1,4 +1,4 @@
-[no-quirks.html]
+[limited-quirks.html]
[top: -\\31 .5]
expected: FAIL
diff --git a/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini b/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini
deleted file mode 100644
index 2ed601c6ff4..00000000000
--- a/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini
+++ /dev/null
@@ -1,283 +0,0 @@
-[quirks.html]
- [top: -\\31 .5]
- expected: FAIL
-
- [bottom: -1A]
- expected: FAIL
-
- [bottom: -1a]
- expected: FAIL
-
- [top: @1]
- expected: FAIL
-
- [top: "1a"]
- expected: FAIL
-
- [top: @a]
- expected: FAIL
-
- [bottom: "1"]
- expected: FAIL
-
- [bottom: -/**/1]
- expected: FAIL
-
- [top: +/**/1]
- expected: FAIL
-
- [bottom: @1a]
- expected: FAIL
-
- [top: 1\\31 ]
- expected: FAIL
-
- [top: url('1')]
- expected: FAIL
-
- [bottom: -\\31 ]
- expected: FAIL
-
- [top: calc(1)]
- expected: FAIL
-
- [top: \\31 ]
- expected: FAIL
-
- [bottom: +1\\31 ]
- expected: FAIL
-
- [bottom: 1\\31 .5]
- expected: FAIL
-
- [bottom: #0001]
- expected: FAIL
-
- [top: calc(2 * 2px)]
- expected: FAIL
-
- [bottom: 1a]
- expected: FAIL
-
- [bottom: A]
- expected: FAIL
-
- [bottom: #01]
- expected: FAIL
-
- [top: +\\31 .5]
- expected: FAIL
-
- [bottom: #1]
- expected: FAIL
-
- [top: -/**/1]
- expected: FAIL
-
- [bottom: +\\31 .5]
- expected: FAIL
-
- [bottom: \\31 ]
- expected: FAIL
-
- [bottom: calc(1)]
- expected: FAIL
-
- [top: #001]
- expected: FAIL
-
- [top: +\\31 ]
- expected: FAIL
-
- [bottom: +\\31 ]
- expected: FAIL
-
- [top: +1.5]
- expected: FAIL
-
- [top: +1\\31 ]
- expected: FAIL
-
- [bottom: @a]
- expected: FAIL
-
- [bottom: @1]
- expected: FAIL
-
- [top: #1]
- expected: FAIL
-
- [top: 1a]
- expected: FAIL
-
- [bottom: +1a]
- expected: FAIL
-
- [bottom: +1A]
- expected: FAIL
-
- [bottom: "a"]
- expected: FAIL
-
- [top: #00001]
- expected: FAIL
-
- [bottom: -1\\31 .5]
- expected: FAIL
-
- [top: "1"]
- expected: FAIL
-
- [bottom: 1.5]
- expected: FAIL
-
- [bottom: -\\31 .5]
- expected: FAIL
-
- [bottom: url('1')]
- expected: FAIL
-
- [bottom: -1.5]
- expected: FAIL
-
- [top: \\31 .5]
- expected: FAIL
-
- [bottom: "1a"]
- expected: FAIL
-
- [bottom: calc(2 * 2px)]
- expected: FAIL
-
- [bottom: +1\\31 .5]
- expected: FAIL
-
- [bottom: 1\\31 ]
- expected: FAIL
-
- [bottom: +/**/1]
- expected: FAIL
-
- [bottom: #00001]
- expected: FAIL
-
- [top: url(1)]
- expected: FAIL
-
- [bottom: #001]
- expected: FAIL
-
- [top: +1\\31 .5]
- expected: FAIL
-
- [top: -1a]
- expected: FAIL
-
- [top: -1A]
- expected: FAIL
-
- [bottom: url(1)]
- expected: FAIL
-
- [top: a]
- expected: FAIL
-
- [top: A]
- expected: FAIL
-
- [top: #000001]
- expected: FAIL
-
- [top: 1]
- expected: FAIL
-
- [top: 1\\31 .5]
- expected: FAIL
-
- [bottom: a]
- expected: FAIL
-
- [bottom: 1]
- expected: FAIL
-
- [bottom: +1]
- expected: FAIL
-
- [bottom: #000001]
- expected: FAIL
-
- [bottom: +a]
- expected: FAIL
-
- [bottom: +A]
- expected: FAIL
-
- [top: 1.5]
- expected: FAIL
-
- [top: +A]
- expected: FAIL
-
- [top: +a]
- expected: FAIL
-
- [top: +1]
- expected: FAIL
-
- [top: -1.5]
- expected: FAIL
-
- [top: -1\\31 .5]
- expected: FAIL
-
- [top: +1a]
- expected: FAIL
-
- [top: +1A]
- expected: FAIL
-
- [top: @1a]
- expected: FAIL
-
- [bottom: \\31 .5]
- expected: FAIL
-
- [top: "a"]
- expected: FAIL
-
- [top: #01]
- expected: FAIL
-
- [bottom: +1.5]
- expected: FAIL
-
- [bottom: -A]
- expected: FAIL
-
- [bottom: -a]
- expected: FAIL
-
- [bottom: -1\\31 ]
- expected: FAIL
-
- [top: #0001]
- expected: FAIL
-
- [bottom: -1]
- expected: FAIL
-
- [top: -\\31 ]
- expected: FAIL
-
- [top: -A]
- expected: FAIL
-
- [top: -a]
- expected: FAIL
-
- [top: -1]
- expected: FAIL
-
- [top: -1\\31 ]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/wasm/webapi/abort.any.js.ini b/tests/wpt/metadata/wasm/webapi/abort.any.js.ini
index 0c0f8773158..87102ca31d1 100644
--- a/tests/wpt/metadata/wasm/webapi/abort.any.js.ini
+++ b/tests/wpt/metadata/wasm/webapi/abort.any.js.ini
@@ -11,6 +11,12 @@
[compileStreaming() synchronously followed by abort should reject with AbortError]
expected: FAIL
+ [compileStreaming() asynchronously racing with abort should succeed or reject with AbortError]
+ expected: FAIL
+
+ [instantiateStreaming() asynchronously racing with abort should succeed or reject with AbortError]
+ expected: FAIL
+
[abort.any.html]
[instantiateStreaming() on an already-aborted request should reject with AbortError]
@@ -25,3 +31,9 @@
[compileStreaming() synchronously followed by abort should reject with AbortError]
expected: FAIL
+ [compileStreaming() asynchronously racing with abort should succeed or reject with AbortError]
+ expected: FAIL
+
+ [instantiateStreaming() asynchronously racing with abort should succeed or reject with AbortError]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
index a56bad443a2..66bd350083b 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
@@ -1,5 +1,4 @@
[realtimeanalyser-fft-scaling.html]
- expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL
diff --git a/tests/wpt/web-platform-tests/.taskcluster.yml b/tests/wpt/web-platform-tests/.taskcluster.yml
index bcac7f5abbc..35aad403ce7 100644
--- a/tests/wpt/web-platform-tests/.taskcluster.yml
+++ b/tests/wpt/web-platform-tests/.taskcluster.yml
@@ -149,12 +149,9 @@ tasks:
${browser.name}
${browser.channel};
cd ~/web-platform-tests;
- result=0;
./tools/ci/taskcluster-run.py
--commit-range HEAD^
${browser.name}
--
--channel=${browser.channel}
- ${operation.extra_args} || result=$?;
- echo $result > ../artifacts/run-return-code.txt;
- echo "Command exited with code $result (failures are allowed while this task is being vetted)."
+ ${operation.extra_args};
diff --git a/tests/wpt/web-platform-tests/.travis.yml b/tests/wpt/web-platform-tests/.travis.yml
index d89fadae77d..8d4152f0285 100644
--- a/tests/wpt/web-platform-tests/.travis.yml
+++ b/tests/wpt/web-platform-tests/.travis.yml
@@ -51,8 +51,7 @@ matrix:
apt:
packages:
- libnss3-tools
- env:
- - JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=firefox:nightly
+ env: JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=firefox:nightly
- name: "stability (Chrome Dev)"
if: type = pull_request
os: linux
@@ -62,8 +61,7 @@ matrix:
packages:
- libappindicator1
- fonts-liberation
- env:
- - JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=chrome:dev
+ env: JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=chrome:dev
- name: "tools/ unittests (Python 2)"
if: type = pull_request
os: linux
@@ -103,6 +101,8 @@ matrix:
- env: # exclude empty env from the top-level above
allow_failures:
- env: JOB=build_css SCRIPT=css/build-css-testsuites.sh
+ - env: JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=firefox:nightly
+ - env: JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=chrome:dev
script:
- ./tools/ci/run.sh
cache:
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_advance_index2.htm b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_advance_index2.htm
index 539c824e61e..8df0af0d233 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_advance_index2.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_advance_index2.htm
@@ -10,7 +10,7 @@
<script>
var db,
- t = async_test(document.title, {timeout: 10000}),
+ t = async_test(document.title),
records = [ { pKey: "primaryKey_0", iKey: "indexKey_0" },
{ pKey: "primaryKey_1", iKey: "indexKey_1" } ];
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_advance_index3.htm b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_advance_index3.htm
index 5adf3f077fd..ca5e0da8eae 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_advance_index3.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_advance_index3.htm
@@ -10,7 +10,7 @@
<script type="text/javascript">
var db,
- t = async_test(document.title, {timeout: 10000}),
+ t = async_test(document.title),
records = [ { pKey: "primaryKey_0", iKey: "indexKey_0" },
{ pKey: "primaryKey_1", iKey: "indexKey_1" } ];
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_advance_index5.htm b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_advance_index5.htm
index 452c0f142f6..a9b9977d0e6 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_advance_index5.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_advance_index5.htm
@@ -11,7 +11,7 @@
<script>
var db,
count = 0,
- t = async_test(document.title, {timeout: 10000}),
+ t = async_test(document.title),
records = [ { pKey: "primaryKey_0", iKey: "indexKey_0" },
{ pKey: "primaryKey_1", iKey: "indexKey_1" },
{ pKey: "primaryKey_1-2", iKey: "indexKey_1" } ],
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_index5.htm b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_index5.htm
index abe0e658b01..20db8d0d833 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_index5.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_index5.htm
@@ -11,7 +11,7 @@
<script>
var db,
- t = async_test(document.title, {timeout: 10000}),
+ t = async_test(document.title),
records = [ { pKey: "primaryKey_0", iKey: "indexKey_0" },
{ pKey: "primaryKey_1", iKey: "indexKey_1" },
{ pKey: "primaryKey_1-2", iKey: "indexKey_1" },
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_index6.htm b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_index6.htm
index cf5bd4066e8..9182b02f149 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_index6.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_index6.htm
@@ -11,7 +11,7 @@
<script>
var db,
- t = async_test(document.title, {timeout: 10000}),
+ t = async_test(document.title),
records = [ { pKey: "primaryKey_0", iKey: "indexKey_0" },
{ pKey: "primaryKey_1", iKey: "indexKey_1" },
{ pKey: "primaryKey_1-2", iKey: "indexKey_1" },
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_invalid.htm b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_invalid.htm
index dea07bc9112..9b4d7b70bb6 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_invalid.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_invalid.htm
@@ -8,7 +8,7 @@
<script>
var db,
- t = async_test(document.title, {timeout: 10000});
+ t = async_test(document.title);
var open_rq = createdb(t);
open_rq.onupgradeneeded = function(e) {
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating.htm b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating.htm
index d9be6b6ad6a..f67265aa855 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating.htm
@@ -8,7 +8,7 @@
<script>
var db,
count = 0,
- t = async_test(document.title, {timeout: 10000});
+ t = async_test(document.title);
var open_rq = createdb(t);
open_rq.onupgradeneeded = function(e) {
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_index.htm b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_index.htm
index 559cce6db54..4b0fbba0937 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_index.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_index.htm
@@ -8,7 +8,7 @@
<script>
var db,
count = 0,
- t = async_test(document.title, {timeout: 10000}),
+ t = async_test(document.title),
records = [ { pKey: "primaryKey_0", obj: { iKey: "iKey_0" }},
{ pKey: "primaryKey_1", obj: { iKey: "iKey_1" }},
{ pKey: "primaryKey_2", obj: { iKey: "iKey_2" }} ],
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_index2.htm b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_index2.htm
index 91a8383500c..689b8915278 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_index2.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_index2.htm
@@ -8,7 +8,7 @@
<script>
var db,
count = 0,
- t = async_test(document.title, {timeout: 10000}),
+ t = async_test(document.title),
records = [ { pKey: "primaryKey_0", obj: { iKey: "iKey_0" }},
{ pKey: "primaryKey_2", obj: { iKey: "iKey_2" }} ],
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_objectstore.htm b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_objectstore.htm
index c4c8d57148d..8a9dcfa107f 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_objectstore.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_objectstore.htm
@@ -8,7 +8,7 @@
<script>
var db,
count = 0,
- t = async_test(document.title, {timeout: 10000}),
+ t = async_test(document.title),
records = [ { pKey: "primaryKey_0" },
{ pKey: "primaryKey_1" },
{ pKey: "primaryKey_2" } ],
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_objectstore2.htm b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_objectstore2.htm
index 899b2ac0e6d..992d0ea4256 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_objectstore2.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_iterating_objectstore2.htm
@@ -8,7 +8,7 @@
<script>
var db,
count = 0,
- t = async_test(document.title, {timeout: 10000}),
+ t = async_test(document.title),
records = [ { pKey: "primaryKey_0" },
{ pKey: "primaryKey_2" } ],
expected_records = [ { pKey: "primaryKey_0" },
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_update_objectstore4.htm b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_update_objectstore4.htm
index cbd0b1f92a6..cb35b103509 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_update_objectstore4.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_update_objectstore4.htm
@@ -8,7 +8,7 @@
<script>
var db,
- t = async_test(document.title, {timeout: 10000})
+ t = async_test(document.title)
var open_rq = createdb(t);
open_rq.onupgradeneeded = function(e) {
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbdatabase_createObjectStore10-1000ends.htm b/tests/wpt/web-platform-tests/IndexedDB/idbdatabase_createObjectStore10-1000ends.htm
index d6e4a48ed1c..747a655ecb7 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbdatabase_createObjectStore10-1000ends.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbdatabase_createObjectStore10-1000ends.htm
@@ -7,7 +7,7 @@
<script>
var db,
- t = async_test(document.title, {timeout: 600000}),
+ t = async_test(document.title),
open_rq = createdb(t)
open_rq.onupgradeneeded = function(e) {
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbdatabase_createObjectStore7.htm b/tests/wpt/web-platform-tests/IndexedDB/idbdatabase_createObjectStore7.htm
index 358baeeecab..9833c533696 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbdatabase_createObjectStore7.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbdatabase_createObjectStore7.htm
@@ -7,7 +7,7 @@
<script>
-var t = async_test(document.title, {timeout: 10000}),
+var t = async_test(document.title),
open_rq = createdb(t)
open_rq.onupgradeneeded = function(e) {
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbdatabase_deleteObjectStore4-not_reused.htm b/tests/wpt/web-platform-tests/IndexedDB/idbdatabase_deleteObjectStore4-not_reused.htm
index 1cb6ff1ace4..5332205db7c 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbdatabase_deleteObjectStore4-not_reused.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbdatabase_deleteObjectStore4-not_reused.htm
@@ -8,7 +8,7 @@
<script>
-var t = async_test(document.title, {timeout: 10000}),
+var t = async_test(document.title),
keys = [],
open_rq = createdb(t)
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbdatabase_transaction4.htm b/tests/wpt/web-platform-tests/IndexedDB/idbdatabase_transaction4.htm
index 515c499b0c8..2ba36feee70 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbdatabase_transaction4.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbdatabase_transaction4.htm
@@ -7,7 +7,7 @@
<script>
var db,
- t = async_test(document.title, {timeout: 10000}),
+ t = async_test(document.title),
open_rq = createdb(t);
open_rq.onupgradeneeded = function(e) {
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbfactory_deleteDatabase3.htm b/tests/wpt/web-platform-tests/IndexedDB/idbfactory_deleteDatabase3.htm
index e1cab41a5c1..7299bfb5673 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbfactory_deleteDatabase3.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbfactory_deleteDatabase3.htm
@@ -9,7 +9,7 @@
<script>
var db
- var open_rq = createdb(async_test(document.title, {timeout: 10000}), undefined, 9)
+ var open_rq = createdb(async_test(document.title), undefined, 9)
open_rq.onupgradeneeded = function(e) {
db = e.target.result
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbfactory_open10.htm b/tests/wpt/web-platform-tests/IndexedDB/idbfactory_open10.htm
index c0ac71ae857..0a9a12d8dfd 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbfactory_open10.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbfactory_open10.htm
@@ -7,7 +7,7 @@
<script>
var db, db2;
- var open_rq = createdb(async_test(document.title, {timeout: 10000}), undefined, 9);
+ var open_rq = createdb(async_test(document.title), undefined, 9);
open_rq.onupgradeneeded = function(e) {
db = e.target.result;
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbfactory_open11.htm b/tests/wpt/web-platform-tests/IndexedDB/idbfactory_open11.htm
index 88c59bd9f65..6a77b13b088 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbfactory_open11.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbfactory_open11.htm
@@ -8,7 +8,7 @@
<script>
var db;
var count_done = 0;
- var open_rq = createdb(async_test(document.title, {timeout: 10000}));
+ var open_rq = createdb(async_test(document.title));
open_rq.onupgradeneeded = function(e) {
db = e.target.result;
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbfactory_open12.htm b/tests/wpt/web-platform-tests/IndexedDB/idbfactory_open12.htm
index 763c4805155..f6a13104341 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbfactory_open12.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbfactory_open12.htm
@@ -7,7 +7,7 @@
<script>
var db;
- var open_rq = createdb(async_test(document.title, {timeout: 10000}), undefined, 9);
+ var open_rq = createdb(async_test(document.title), undefined, 9);
var open2_t = async_test(document.title + " - second upgrade");
open_rq.onupgradeneeded = function(e) {
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbindex-multientry-arraykeypath.htm b/tests/wpt/web-platform-tests/IndexedDB/idbindex-multientry-arraykeypath.htm
index 3e584a6c4e2..31ae61cfc42 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbindex-multientry-arraykeypath.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbindex-multientry-arraykeypath.htm
@@ -9,7 +9,7 @@
<script src="support.js"></script>
<script>
- createdb(async_test(document.title, {timeout: 10000})).onupgradeneeded = function(e) {
+ createdb(async_test(document.title)).onupgradeneeded = function(e) {
var store = e.target.result.createObjectStore("store");
assert_throws('InvalidAccessError', function() {
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbindex-multientry-big.htm b/tests/wpt/web-platform-tests/IndexedDB/idbindex-multientry-big.htm
index 4f9df36e204..f0743866910 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbindex-multientry-big.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbindex-multientry-big.htm
@@ -10,8 +10,8 @@
<script>
var db,
- t_add = async_test("Adding one item with 1000 multiEntry keys", { timeout: 10000 }),
- t_get = async_test("Getting the one item by 1000 indeced keys ", { timeout: 10000 });
+ t_add = async_test("Adding one item with 1000 multiEntry keys"),
+ t_get = async_test("Getting the one item by 1000 indeced keys ");
var open_rq = createdb(t_add);
var obj = { test: 'yo', idxkeys: [] };
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbindex-multientry.htm b/tests/wpt/web-platform-tests/IndexedDB/idbindex-multientry.htm
index 5077f48469b..6b5b06cf807 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbindex-multientry.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbindex-multientry.htm
@@ -12,7 +12,7 @@
var db,
expected_keys = [1, 2, 2, 3, 3];
- var open_rq = createdb(async_test(document.title, {timeout: 10000}))
+ var open_rq = createdb(async_test(document.title))
open_rq.onupgradeneeded = function(e) {
db = e.target.result;
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbindex_indexNames.htm b/tests/wpt/web-platform-tests/IndexedDB/idbindex_indexNames.htm
index 3099b45e91f..023903f19f7 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbindex_indexNames.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbindex_indexNames.htm
@@ -8,7 +8,7 @@
<script>
var db,
- t = async_test(document.title, {timeout: 10000});
+ t = async_test(document.title);
var open_rq = createdb(t);
open_rq.onupgradeneeded = function(e) {
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex3-usable-right-away.htm b/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex3-usable-right-away.htm
index f4b9b984f05..5156e61e65f 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex3-usable-right-away.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex3-usable-right-away.htm
@@ -9,7 +9,7 @@
<script>
var db, aborted,
- t = async_test(document.title, {timeout:19000})
+ t = async_test(document.title)
var open_rq = createdb(t);
open_rq.onupgradeneeded = function(e) {
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex4-deleteIndex-event_order.htm b/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex4-deleteIndex-event_order.htm
index 228dfc457c2..937ae58c3b3 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex4-deleteIndex-event_order.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex4-deleteIndex-event_order.htm
@@ -9,7 +9,7 @@
<script>
var db,
events = [],
- t = async_test(document.title, {timeout: 10000})
+ t = async_test(document.title)
var open_rq = createdb(t);
open_rq.onupgradeneeded = function(e) {
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex5-emptykeypath.htm b/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex5-emptykeypath.htm
index 29fadc00e3f..14ddb924ffe 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex5-emptykeypath.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex5-emptykeypath.htm
@@ -8,7 +8,7 @@
<script>
var db, aborted,
- t = async_test(document.title, {timeout: 10000})
+ t = async_test(document.title)
var open_rq = createdb(t);
open_rq.onupgradeneeded = function(e) {
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex6-event_order.htm b/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex6-event_order.htm
index 3dcb7330a8a..a636226968e 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex6-event_order.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex6-event_order.htm
@@ -16,7 +16,7 @@
var db,
events = [],
- t = async_test(document.title, {timeout: 10000})
+ t = async_test(document.title)
var open_rq = createdb(t);
open_rq.onupgradeneeded = function(e) {
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex7-event_order.htm b/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex7-event_order.htm
index 682307c9018..8d2725a9f0e 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex7-event_order.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex7-event_order.htm
@@ -18,7 +18,7 @@
var db,
events = [],
- t = async_test(document.title, {timeout: 10000})
+ t = async_test(document.title)
var open_rq = createdb(t);
open_rq.onupgradeneeded = function(e) {
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex8-valid_keys.htm b/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex8-valid_keys.htm
index 6174523e478..ea90f50dde1 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex8-valid_keys.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_createIndex8-valid_keys.htm
@@ -9,7 +9,7 @@
<script>
var db,
- t = async_test(document.title, {timeout:19000}),
+ t = async_test(document.title),
now = new Date(),
mar18 = new Date(1111111111111),
ar = ["Yay", 2, -Infinity],
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_deleted.htm b/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_deleted.htm
index 74934636a1b..c26145c1d5c 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_deleted.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_deleted.htm
@@ -11,7 +11,7 @@
<script>
var db,
add_success = false,
- t = async_test(document.title, {timeout: 10000})
+ t = async_test(document.title)
var open_rq = createdb(t);
open_rq.onupgradeneeded = function(e) {
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbtransaction-oncomplete.htm b/tests/wpt/web-platform-tests/IndexedDB/idbtransaction-oncomplete.htm
index 7c295c7c150..e2cad729397 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbtransaction-oncomplete.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbtransaction-oncomplete.htm
@@ -7,7 +7,7 @@
<script>
var db, store,
- t = async_test(document.title, {timeout: 10000}),
+ t = async_test(document.title),
open_rq = createdb(t),
stages = [];
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbtransaction_abort.htm b/tests/wpt/web-platform-tests/IndexedDB/idbtransaction_abort.htm
index 1f37bb40101..4300e2f01c8 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbtransaction_abort.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbtransaction_abort.htm
@@ -8,7 +8,7 @@
<script>
var db, aborted,
- t = async_test(document.title, {timeout: 10000}),
+ t = async_test(document.title),
record = { indexedProperty: "bar" };
var open_rq = createdb(t);
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbversionchangeevent.htm b/tests/wpt/web-platform-tests/IndexedDB/idbversionchangeevent.htm
index 36b997f2f63..e776f14c629 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbversionchangeevent.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbversionchangeevent.htm
@@ -13,7 +13,7 @@
<script>
var db,
- t = async_test(document.title, {timeout: 10000});
+ t = async_test(document.title);
t.step(function() {
var openrq = indexedDB.open('db', 3);
diff --git a/tests/wpt/web-platform-tests/IndexedDB/keygenerator-constrainterror.htm b/tests/wpt/web-platform-tests/IndexedDB/keygenerator-constrainterror.htm
index ee2e24799e3..205785f3bd7 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/keygenerator-constrainterror.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/keygenerator-constrainterror.htm
@@ -9,7 +9,7 @@
<script>
var db,
- t = async_test(document.title, {timeout: 10000}),
+ t = async_test(document.title),
objects = [1, null, {id: 2}, null, 2.00001, 5, null, {id: 6} ],
expected = [1, 2, 2.00001, 3, 5, 6],
errors = 0;
diff --git a/tests/wpt/web-platform-tests/IndexedDB/keygenerator-overflow.htm b/tests/wpt/web-platform-tests/IndexedDB/keygenerator-overflow.htm
index d069f0a2b5f..a7bc09fc8d5 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/keygenerator-overflow.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/keygenerator-overflow.htm
@@ -11,7 +11,7 @@
<script>
var db,
- t = async_test(document.title, {timeout: 10000}),
+ t = async_test(document.title),
overflow_error_fired = false,
objects = [9007199254740991, null, "error", 2, "error" ],
expected_keys = [2, 9007199254740991, 9007199254740992];
diff --git a/tests/wpt/web-platform-tests/IndexedDB/keyorder.htm b/tests/wpt/web-platform-tests/IndexedDB/keyorder.htm
index 1896333f936..7f073ddb9a2 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/keyorder.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/keyorder.htm
@@ -22,7 +22,7 @@
function keysort(desc, unsorted, expected) {
var db,
- t = async_test("Database readback sort - " + desc, { timeout: 10000 }),
+ t = async_test("Database readback sort - " + desc),
store_name = 'store-' + Date.now() + Math.random();
// The database test
diff --git a/tests/wpt/web-platform-tests/IndexedDB/keypath_maxsize.htm b/tests/wpt/web-platform-tests/IndexedDB/keypath_maxsize.htm
index 835b7a33b44..83bd9cc3138 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/keypath_maxsize.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/keypath_maxsize.htm
@@ -11,7 +11,7 @@
<script>
function keypath(keypath, objects, expected_keys, desc) {
var db,
- t = async_test(document.title + " - " + (desc ? desc : keypath), { timeout: 10000 }),
+ t = async_test(document.title + " - " + (desc ? desc : keypath)),
open_rq = createdb(t);
open_rq.onupgradeneeded = function(e) {
diff --git a/tests/wpt/web-platform-tests/IndexedDB/request_bubble-and-capture.htm b/tests/wpt/web-platform-tests/IndexedDB/request_bubble-and-capture.htm
index 319f228c835..f43fd10a34f 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/request_bubble-and-capture.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/request_bubble-and-capture.htm
@@ -9,7 +9,7 @@
<script>
var events = [];
- var open_rq = createdb(async_test(document.title, {timeout: 10000}));
+ var open_rq = createdb(async_test(document.title));
open_rq.onupgradeneeded = function(e) {
var db = e.target.result;
var txn = e.target.transaction;
diff --git a/tests/wpt/web-platform-tests/IndexedDB/transaction-lifetime-blocked.htm b/tests/wpt/web-platform-tests/IndexedDB/transaction-lifetime-blocked.htm
index b0c91ec8457..a6ef34b19cb 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/transaction-lifetime-blocked.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/transaction-lifetime-blocked.htm
@@ -11,7 +11,7 @@
var db, db_got_versionchange, db2,
events = [],
- t = async_test(document.title, {timeout: 10000});
+ t = async_test(document.title);
t.step(function() {
var openrq = indexedDB.open('db', 3);
diff --git a/tests/wpt/web-platform-tests/IndexedDB/transaction-lifetime.htm b/tests/wpt/web-platform-tests/IndexedDB/transaction-lifetime.htm
index c646286f43a..9c66c54c40f 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/transaction-lifetime.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/transaction-lifetime.htm
@@ -11,7 +11,7 @@
var db, db_got_versionchange, db2,
events = [],
- t = async_test(document.title, {timeout: 10000});
+ t = async_test(document.title);
t.step(function() {
var openrq = indexedDB.open('db', 3);
diff --git a/tests/wpt/web-platform-tests/IndexedDB/transaction-requestqueue.htm b/tests/wpt/web-platform-tests/IndexedDB/transaction-requestqueue.htm
index b5706fe81d7..081ea2e19a1 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/transaction-requestqueue.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/transaction-requestqueue.htm
@@ -8,7 +8,7 @@
<script>
-var db, t = async_test(document.title, {timeout: 10000}),
+var db, t = async_test(document.title),
keys = { txn: [], txn2: [] },
open_rq = createdb(t)
diff --git a/tests/wpt/web-platform-tests/IndexedDB/transaction_bubble-and-capture.htm b/tests/wpt/web-platform-tests/IndexedDB/transaction_bubble-and-capture.htm
index f4b5ec0ae58..ff48fb48234 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/transaction_bubble-and-capture.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/transaction_bubble-and-capture.htm
@@ -9,7 +9,7 @@
<script>
var events = [];
- var open_rq = createdb(async_test(document.title, {timeout: 10000}));
+ var open_rq = createdb(async_test(document.title));
open_rq.onupgradeneeded = function(e) {
var db = e.target.result;
var txn = e.target.transaction;
diff --git a/tests/wpt/web-platform-tests/IndexedDB/writer-starvation.htm b/tests/wpt/web-platform-tests/IndexedDB/writer-starvation.htm
index 412308387fc..cdc7b1e8774 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/writer-starvation.htm
+++ b/tests/wpt/web-platform-tests/IndexedDB/writer-starvation.htm
@@ -12,7 +12,7 @@
var write_request_count = 0, write_success_count = 0;
var RQ_COUNT = 25;
- var open_rq = createdb(async_test(undefined, {timeout: 20000}));
+ var open_rq = createdb(async_test(undefined));
open_rq.onupgradeneeded = function(e) {
db = e.target.result;
db.createObjectStore("s")
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-body.html b/tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-body.html
new file mode 100644
index 00000000000..88d888a7710
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-body.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>CSS box-shadow Test: &lt;body&gt; shadow should look the same regardless of background color</title>
+ <link rel="author" title="fmalita" href="mailto:fmalita@chromium.org">
+ <link rel="help" href="https://www.w3.org/TR/css-backgrounds-3/#the-box-shadow">
+ <link rel="match" href="reference/box-shadow-body-ref.html">
+ <style type="text/css">
+ body {
+ position: relative;
+ box-shadow: 0 0 0 4px red;
+ height: 300px;
+ width: 600px;
+ margin: 20px auto;
+ background-color: white;
+ }
+ </style>
+</head>
+<body></body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/reference/box-shadow-body-ref.html b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/box-shadow-body-ref.html
new file mode 100644
index 00000000000..d2ae1ebd84b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/box-shadow-body-ref.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>CSS box-shadow Test Reference</title>
+ <link rel="author" title="fmalita" href="mailto:fmalita@chromium.org">
+ <style type="text/css">
+ html {
+ background-color: white;
+ }
+ body {
+ position: relative;
+ box-shadow: 0 0 0 4px red;
+ height: 300px;
+ width: 600px;
+ margin: 20px auto;
+ }
+ </style>
+</head>
+<body></body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-break/line-after-unbreakable-float-after-padding-ref.html b/tests/wpt/web-platform-tests/css/css-break/line-after-unbreakable-float-after-padding-ref.html
new file mode 100644
index 00000000000..9a329b24468
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-break/line-after-unbreakable-float-after-padding-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mstensho@chromium.org">
+<p>The word "PASS" should be seen below.</p>
+<div style="margin-left:2ch; font-family:monospace; line-height:50px;">
+ <div style="float:left;">PA</div>
+ <div style="float:left;">SS</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-break/line-after-unbreakable-float-after-padding.html b/tests/wpt/web-platform-tests/css/css-break/line-after-unbreakable-float-after-padding.html
new file mode 100644
index 00000000000..d3a4018cd80
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-break/line-after-unbreakable-float-after-padding.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#unforced-breaks">
+<link rel="match" href="line-after-unbreakable-float-after-padding-ref.html">
+<p>The word "PASS" should be seen below.</p>
+<div style="columns:3; column-gap:0; column-fill:auto; font-family:monospace; line-height:50px; width:6ch; height:101px; orphans:1; widows:1;">
+ <div style="padding-top:100px;">
+ <div style="float:left; break-inside:avoid; width:100%; height:75px;">PA</div>
+ SS
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/align-content-wrap-001.html b/tests/wpt/web-platform-tests/css/css-flexbox/align-content-wrap-001.html
new file mode 100644
index 00000000000..1e0ce42c75f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/align-content-wrap-001.html
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#propdef-align-content" />
+<title>css-flexbox: Tests align-content with single-line flex-wrap: wrap</title>
+<style>
+.default {
+ display: flex;
+ flex-wrap: wrap;
+ position: relative;
+ height: 70px;
+ border: 1px solid red;
+ margin: 5px;
+}
+
+.default > div {
+ height: 20px;
+}
+
+.verticalWriting {
+ display: flex;
+ flex-wrap: wrap;
+ position: relative;
+ width: 70px;
+ border: 1px solid red;
+ margin: 5px;
+ writing-mode: vertical-lr;
+}
+
+.verticalWriting > div {
+ width: 20px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+</head>
+<body onload="checkLayout('.default, .verticalWriting'); ">
+<div id=log></div>
+<p>Test that we honor align-content even in single-line flex containers</p>
+<div class="default" style="align-content: flex-start">
+<div data-offset-y="0">This text should be at the top of its container</div>
+</div>
+<div class="default" style="align-content: flex-end">
+<div data-offset-y="50">This text should be at the bottom of its container</div>
+</div>
+<div class="default" style="align-content: center">
+<div data-offset-y="25">This text should be centered in its container</div>
+</div>
+<div class="default" style="align-content: space-between">
+<div data-offset-y="0">This text should be at the top of its container</div>
+</div>
+<div class="default" style="align-content: space-around">
+<div data-offset-y="25">This text should be centered in its container</div>
+</div>
+<div class="default" style="align-content: space-evenly">
+<div data-offset-y="25">This text should be centered in its container</div>
+</div>
+<div class="default" style="align-content: stretch">
+<div data-offset-y="0">This text should be at the top of its container</div>
+</div>
+<div class="verticalWriting" style="align-content: flex-start">
+<div data-offset-x="0">This text should be at the left of its container</div>
+</div>
+<div class="verticalWriting" style="align-content: flex-end">
+<div data-offset-x="50">This text should be at the right of its container</div>
+</div>
+<div class="verticalWriting" style="align-content: center">
+<div data-offset-x="25">This text should be centered in its container</div>
+</div>
+<div class="verticalWriting" style="align-content: space-between">
+<div data-offset-x="0">This text should be at the left of its container</div>
+</div>
+<div class="verticalWriting" style="align-content: space-around">
+<div data-offset-x="25">This text should be centered in its container</div>
+</div>
+<div class="verticalWriting" style="align-content: stretch">
+<div data-offset-x="0">This text should be at the left of its container</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/align-content-wrap-002.html b/tests/wpt/web-platform-tests/css/css-flexbox/align-content-wrap-002.html
new file mode 100644
index 00000000000..a15f7ea844d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/align-content-wrap-002.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#propdef-align-content" />
+<title>css-flexbox: Tests align-content with flex-wrap: wrap</title>
+<style>
+.flex-horizontal {
+ width:600px;
+ display:flex;
+ height:100px;
+ background:gray;
+ margin-bottom:100px;
+}
+.flex-vertical {
+ width:100px;
+ display:flex;
+ flex-direction: column;
+ height:600px;
+ background:gray;
+ margin-top:200px;
+ margin-bottom:100px;
+}
+.item-horizontal {
+ width:150px;
+ background:yellow;
+ margin:10px;
+ flex:none;
+}
+.item-vertical {
+ height:150px;
+ background:yellow;
+ margin:10px;
+ flex:none;
+}
+.content1-horizontal {
+ width:100px;
+ height:150px;
+ background:red;
+}
+.content2-horizontal {
+ width:100px;
+ height:100px;
+ background:red;
+}
+.content3-horizontal {
+ width:100px;
+ height:50px;
+ background:red;
+}
+.content1-vertical {
+ width:150px;
+ height:100px;
+ background:red;
+}
+.content2-vertical {
+ width:100px;
+ height:100px;
+ background:red;
+}
+.content3-vertical {
+ width:50px;
+ height:100px;
+ background:red;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<body onload="checkLayout('.flex-horizontal, .flex-vertical');">
+<div id=log></div>
+<p>Test for crbug.com/362848: Flex box word-wrap is not adhering to spec</p>
+<div class="flex-horizontal">
+ <div class="item-horizontal" data-expected-height="80"><div class="content1-horizontal"></div></div>
+ <div class="item-horizontal" data-expected-height="80"><div class="content2-horizontal"></div></div>
+ <div class="item-horizontal" data-expected-height="80"><div class="content3-horizontal"></div></div>
+</div>
+
+<div class="flex-horizontal" style="flex-wrap:wrap;">
+ <div class="item-horizontal" data-expected-height="150"><div class="content1-horizontal"></div></div>
+ <div class="item-horizontal" data-expected-height="150"><div class="content2-horizontal"></div></div>
+ <div class="item-horizontal" data-expected-height="150"><div class="content3-horizontal"></div></div>
+</div>
+
+<div class="flex-horizontal" style="flex-wrap:wrap;">
+ <div class="item-horizontal" data-expected-height="150"><div class="content1-horizontal"></div></div>
+ <div class="item-horizontal" data-expected-height="150"><div class="content2-horizontal"></div></div>
+ <div class="item-horizontal" data-expected-height="150"><div class="content3-horizontal"></div></div>
+ <div class="item-horizontal" data-expected-height="150"><div class="content1-horizontal"></div></div>
+ <div class="item-horizontal" data-expected-height="150"><div class="content2-horizontal"></div></div>
+</div>
+
+<div class="flex-vertical">
+ <div class="item-vertical" data-expected-width="80"><div class="content1-vertical"></div></div>
+ <div class="item-vertical" data-expected-width="80"><div class="content2-vertical"></div></div>
+ <div class="item-vertical" data-expected-width="80"><div class="content3-vertical"></div></div>
+</div>
+
+<div class="flex-vertical" style="flex-wrap:wrap;">
+ <div class="item-vertical" data-expected-width="150"><div class="content1-vertical"></div></div>
+ <div class="item-vertical" data-expected-width="150"><div class="content2-vertical"></div></div>
+ <div class="item-vertical" data-expected-width="150"><div class="content3-vertical"></div></div>
+</div>
+
+<div class="flex-vertical" style="flex-wrap:wrap;">
+ <div class="item-vertical" data-expected-width="150"><div class="content1-vertical"></div></div>
+ <div class="item-vertical" data-expected-width="150"><div class="content2-vertical"></div></div>
+ <div class="item-vertical" data-expected-width="150"><div class="content3-vertical"></div></div>
+ <div class="item-vertical" data-expected-width="150"><div class="content1-vertical"></div></div>
+ <div class="item-vertical" data-expected-width="150"><div class="content2-vertical"></div></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/align-content-wrap-003.html b/tests/wpt/web-platform-tests/css/css-flexbox/align-content-wrap-003.html
new file mode 100644
index 00000000000..3e07338745b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/align-content-wrap-003.html
@@ -0,0 +1,330 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#propdef-align-content" />
+<title>css-flexbox: Tests align-content with flex-wrap: wrap</title>
+<style>
+.flexbox {
+ display: flex;
+ background-color: #aaa;
+ position: relative;
+ flex-wrap: wrap;
+}
+
+.horizontal {
+ width: 200px;
+ height: 120px;
+}
+.horizontal > div {
+ min-height: 20px;
+}
+.horizontal > :nth-child(1) {
+ width: 100px;
+ min-height: 10px;
+}
+.horizontal > :nth-child(2) {
+ width: 100px;
+}
+.horizontal > :nth-child(3) {
+ width: 200px;
+}
+.horizontal > :nth-child(4) {
+ width: 50px;
+}
+
+.vertical-rl {
+ writing-mode: vertical-rl;
+ width: 120px;
+ height: 20px;
+}
+.vertical-rl > div {
+ min-width: 20px;
+}
+.vertical-rl > :nth-child(1) {
+ height: 10px;
+ min-width: 10px;
+}
+.vertical-rl > :nth-child(2) {
+ height: 10px;
+}
+.vertical-rl > :nth-child(3) {
+ height: 20px;
+}
+.vertical-rl > :nth-child(4) {
+ height: 5px;
+}
+
+.flexbox :nth-child(1) {
+ background-color: lightblue;
+}
+.flexbox :nth-child(2) {
+ background-color: lightgreen;
+}
+.flexbox :nth-child(3) {
+ background-color: pink;
+}
+.flexbox :nth-child(4) {
+ background-color: yellow;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<body onload="checkLayout('.flexbox')">
+<div id=log></div>
+<p>Test to make sure that align-content works properly.</p>
+
+<div data-expected-height="120" class="flexbox horizontal">
+ <div data-offset-x="0" data-offset-y="0" data-expected-height="40"></div>
+ <div data-offset-x="100" data-offset-y="0" data-expected-height="40"></div>
+ <div data-offset-x="0" data-offset-y="40" data-expected-height="40"></div>
+ <div data-offset-x="0" data-offset-y="80" data-expected-height="40"></div>
+</div>
+
+<div data-expected-height="120" class="flexbox horizontal" style="align-content: flex-start">
+ <div data-offset-x="0" data-offset-y="0" data-expected-height="20"></div>
+ <div data-offset-x="100" data-offset-y="0" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="20" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="40" data-expected-height="20"></div>
+</div>
+
+<div data-expected-height="120" class="flexbox horizontal" style="align-content: flex-end">
+ <div data-offset-x="0" data-offset-y="60" data-expected-height="20"></div>
+ <div data-offset-x="100" data-offset-y="60" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="80" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="100" data-expected-height="20"></div>
+</div>
+
+<div data-expected-height="120" class="flexbox horizontal" style="align-content: center">
+ <div data-offset-x="0" data-offset-y="30" data-expected-height="20"></div>
+ <div data-offset-x="100" data-offset-y="30" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="50" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="70" data-expected-height="20"></div>
+</div>
+
+<div data-expected-height="120" class="flexbox horizontal" style="align-content: space-between">
+ <div data-offset-x="0" data-offset-y="0" data-expected-height="20"></div>
+ <div data-offset-x="100" data-offset-y="0" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="50" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="100" data-expected-height="20"></div>
+</div>
+
+<div data-expected-height="120" class="flexbox horizontal" style="align-content: space-evenly">
+ <div data-offset-x="0" data-offset-y="15" data-expected-height="20"></div>
+ <div data-offset-x="100" data-offset-y="15" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="50" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="85" data-expected-height="20"></div>
+</div>
+
+<div data-expected-height="120" class="flexbox horizontal" style="align-content: space-around">
+ <div data-offset-x="0" data-offset-y="10" data-expected-height="20"></div>
+ <div data-offset-x="100" data-offset-y="10" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="50" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="90" data-expected-height="20"></div>
+</div>
+
+<div data-expected-height="120" class="flexbox horizontal" style="align-content: stretch">
+ <div data-offset-x="0" data-offset-y="0" data-expected-height="40"></div>
+ <div data-offset-x="100" data-offset-y="0" data-expected-height="40"></div>
+ <div data-offset-x="0" data-offset-y="40" data-expected-height="40"></div>
+ <div data-offset-x="0" data-offset-y="80" data-expected-height="40"></div>
+</div>
+
+<!-- Negative overflow goes out the top. -->
+<div data-expected-height="30" class="flexbox horizontal" style="align-content: flex-end; height: 30px">
+ <div data-offset-x="0" data-offset-y="-30" data-expected-height="20"></div>
+ <div data-offset-x="100" data-offset-y="-30" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="-10" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="10" data-expected-height="20"></div>
+</div>
+
+<!-- If we overflow, we should true center. -->
+<div data-expected-height="30" class="flexbox horizontal" style="align-content: center; height: 30px">
+ <div data-offset-x="0" data-offset-y="-15" data-expected-height="20"></div>
+ <div data-offset-x="100" data-offset-y="-15" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="5" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="25" data-expected-height="20"></div>
+</div>
+
+<!-- If we overflow, we should be the same as flex-start. -->
+<div data-expected-height="30" class="flexbox horizontal" style="align-content: space-between; height: 30px">
+ <div data-offset-x="0" data-offset-y="0" data-expected-height="20"></div>
+ <div data-offset-x="100" data-offset-y="0" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="20" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="40" data-expected-height="20"></div>
+</div>
+
+<!-- If we overflow, we should true center. -->
+<div data-expected-height="30" class="flexbox horizontal" style="align-content: space-around; height: 30px">
+ <div data-offset-x="0" data-offset-y="-15" data-expected-height="20"></div>
+ <div data-offset-x="100" data-offset-y="-15" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="5" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="25" data-expected-height="20"></div>
+</div>
+
+<!-- If we overflow, we should true center. -->
+<div data-expected-height="30" class="flexbox horizontal" style="align-content: space-evenly; height: 30px">
+ <div data-offset-x="0" data-offset-y="-15" data-expected-height="20"></div>
+ <div data-offset-x="100" data-offset-y="-15" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="5" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="25" data-expected-height="20"></div>
+</div>
+
+<!-- Stretch should only grow, not shrink. -->
+<div data-expected-height="30" class="flexbox horizontal" style="align-content: stretch; height: 30px">
+ <div data-offset-x="0" data-offset-y="0" data-expected-height="20"></div>
+ <div data-offset-x="100" data-offset-y="0" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="20" data-expected-height="20"></div>
+ <div data-offset-x="0" data-offset-y="40" data-expected-height="20"></div>
+</div>
+
+<!-- 0 lines should not crash. -->
+<div data-expected-height="30" class="flexbox horizontal" style="align-content: space-between; height: 30px">
+</div>
+<div data-expected-height="30" class="flexbox horizontal" style="align-content: space-around; height: 30px">
+</div>
+<div data-expected-height="30" class="flexbox horizontal" style="align-content: space-evenly; height: 30px">
+</div>
+<div data-expected-height="30" class="flexbox horizontal" style="align-content: stretch; height: 30px">
+</div>
+
+<!-- 1 line should not crash. -->
+<div data-expected-height="30" class="flexbox horizontal" style="align-content: space-between; height: 30px">
+ <div data-offset-x="0" data-offset-y="0" data-expected-height="10"></div>
+</div>
+<div data-expected-height="30" class="flexbox horizontal" style="align-content: space-around; height: 30px">
+ <div data-offset-x="0" data-offset-y="10" data-expected-height="10"></div>
+</div>
+<div data-expected-height="30" class="flexbox horizontal" style="align-content: space-evenly; height: 30px">
+ <div data-offset-x="0" data-offset-y="10" data-expected-height="10"></div>
+</div>
+<div data-expected-height="30" class="flexbox horizontal" style="align-content: stretch; height: 30px">
+ <div data-offset-x="0" data-offset-y="0" data-expected-height="30"></div>
+</div>
+
+
+<div data-expected-width="120" class="flexbox vertical-rl">
+ <div data-offset-x="80" data-offset-y="0" data-expected-width="40"></div>
+ <div data-offset-x="80" data-offset-y="10" data-expected-width="40"></div>
+ <div data-offset-x="40" data-offset-y="0" data-expected-width="40"></div>
+ <div data-offset-x="0" data-offset-y="0" data-expected-width="40"></div>
+</div>
+
+<div data-expected-width="120" class="flexbox vertical-rl" style="align-content: flex-start">
+ <div data-offset-x="100" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="100" data-offset-y="10" data-expected-width="20"></div>
+ <div data-offset-x="80" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="60" data-offset-y="0" data-expected-width="20"></div>
+</div>
+
+<div data-expected-width="120" class="flexbox vertical-rl" style="align-content: flex-end">
+ <div data-offset-x="40" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="40" data-offset-y="10" data-expected-width="20"></div>
+ <div data-offset-x="20" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="0" data-offset-y="0" data-expected-width="20"></div>
+</div>
+
+<div data-expected-width="120" class="flexbox vertical-rl" style="align-content: center">
+ <div data-offset-x="70" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="70" data-offset-y="10" data-expected-width="20"></div>
+ <div data-offset-x="50" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="30" data-offset-y="0" data-expected-width="20"></div>
+</div>
+
+<div data-expected-width="120" class="flexbox vertical-rl" style="align-content: space-between">
+ <div data-offset-x="100" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="100" data-offset-y="10" data-expected-width="20"></div>
+ <div data-offset-x="50" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="0" data-offset-y="0" data-expected-width="20"></div>
+</div>
+
+<div data-expected-width="120" class="flexbox vertical-rl" style="align-content: space-around">
+ <div data-offset-x="90" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="90" data-offset-y="10" data-expected-width="20"></div>
+ <div data-offset-x="50" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="10" data-offset-y="0" data-expected-width="20"></div>
+</div>
+
+<div data-expected-width="120" class="flexbox vertical-rl" style="align-content: space-evenly">
+ <div data-offset-x="85" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="85" data-offset-y="10" data-expected-width="20"></div>
+ <div data-offset-x="50" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="15" data-offset-y="0" data-expected-width="20"></div>
+</div>
+
+<div data-expected-width="120" class="flexbox vertical-rl" style="align-content: stretch">
+ <div data-offset-x="80" data-offset-y="0" data-expected-width="40"></div>
+ <div data-offset-x="80" data-offset-y="10" data-expected-width="40"></div>
+ <div data-offset-x="40" data-offset-y="0" data-expected-width="40"></div>
+ <div data-offset-x="0" data-offset-y="0" data-expected-width="40"></div>
+</div>
+
+<!-- Negative overflow goes out the right. -->
+<div data-expected-width="30" class="flexbox vertical-rl" style="align-content: flex-end; width: 30px;">
+ <div data-offset-x="40" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="40" data-offset-y="10" data-expected-width="20"></div>
+ <div data-offset-x="20" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="0" data-offset-y="0" data-expected-width="20"></div>
+</div>
+
+<!-- If we overflow, we should true center. -->
+<div data-expected-width="30" class="flexbox vertical-rl" style="align-content: center; width: 30px;">
+ <div data-offset-x="25" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="25" data-offset-y="10" data-expected-width="20"></div>
+ <div data-offset-x="5" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="-15" data-offset-y="0" data-expected-width="20"></div>
+</div>
+
+<!-- If we overflow, we should be the same as flex-start. -->
+<div data-expected-width="30" class="flexbox vertical-rl" style="align-content: space-between; width: 30px;">
+ <div data-offset-x="10" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="10" data-offset-y="10" data-expected-width="20"></div>
+ <div data-offset-x="-10" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="-30" data-offset-y="0" data-expected-width="20"></div>
+</div>
+
+<!-- If we overflow, we should true center. -->
+<div data-expected-width="30" class="flexbox vertical-rl" style="align-content: space-around; width: 30px;">
+ <div data-offset-x="25" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="25" data-offset-y="10" data-expected-width="20"></div>
+ <div data-offset-x="5" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="-15" data-offset-y="0" data-expected-width="20"></div>
+</div>
+
+<!-- If we overflow, we should true center. -->
+<div data-expected-width="30" class="flexbox vertical-rl" style="align-content: space-evenly; width: 30px;">
+ <div data-offset-x="25" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="25" data-offset-y="10" data-expected-width="20"></div>
+ <div data-offset-x="5" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="-15" data-offset-y="0" data-expected-width="20"></div>
+</div>
+
+<!-- Stretch should only grow, not shrink. -->
+<div data-expected-width="30" class="flexbox vertical-rl" style="align-content: stretch; width: 30px;">
+ <div data-offset-x="10" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="10" data-offset-y="10" data-expected-width="20"></div>
+ <div data-offset-x="-10" data-offset-y="0" data-expected-width="20"></div>
+ <div data-offset-x="-30" data-offset-y="0" data-expected-width="20"></div>
+</div>
+
+<!-- 0 lines should not crash. -->
+<div data-expected-width="30" class="flexbox vertical-rl" style="align-content: space-between; width: 30px">
+</div>
+<div data-expected-width="30" class="flexbox vertical-rl" style="align-content: space-around; width: 30px">
+</div>
+<div data-expected-width="30" class="flexbox vertical-rl" style="align-content: space-evenly; width: 30px">
+</div>
+<div data-expected-width="30" class="flexbox vertical-rl" style="align-content: stretch; width: 30px">
+</div>
+
+<!-- 1 line should not crash. -->
+<div data-expected-width="30" class="flexbox vertical-rl" style="align-content: space-between; width: 30px">
+ <div data-offset-x="20" data-offset-y="0" data-expected-width="10"></div>
+</div>
+<div data-expected-width="30" class="flexbox vertical-rl" style="align-content: space-around; width: 30px">
+ <div data-offset-x="10" data-offset-y="0" data-expected-width="10"></div>
+</div>
+<div data-expected-width="30" class="flexbox vertical-rl" style="align-content: space-evenly; width: 30px">
+ <div data-offset-x="10" data-offset-y="0" data-expected-width="10"></div>
+</div>
+<div data-expected-width="30" class="flexbox vertical-rl" style="align-content: stretch; width: 30px">
+ <div data-offset-x="0" data-offset-y="0" data-expected-width="30"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/align-content-wrap-004.html b/tests/wpt/web-platform-tests/css/css-flexbox/align-content-wrap-004.html
new file mode 100644
index 00000000000..161832190a2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/align-content-wrap-004.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<link rel="author" title="Google LLC" href="http://www.google.com" />
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#cross-sizing" />
+<title>css-flexbox: Tests that we size items in a wrapping column flexbox as fit-content</title>
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht" />
+
+<style>
+.flex {
+ display: flex;
+ flex-wrap: wrap;
+ align-content: center;
+ flex-direction: column;
+ align-items: flex-start;
+ width: 100px;
+ line-height: 1;
+}
+.flex > div {
+ min-height: 0;
+ background: green;
+}
+.flex * {
+ vertical-align: top;
+}
+</style>
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+
+<div class="flex">
+ <div style="align-self: stretch;">
+ <div style="display: inline-block; width: 20px; height: 40px;"></div>
+ </div>
+ <div style="height: 60px;">
+ <div style="display: inline-block; height: 15px; width: 20px;"></div>
+ <div style="display: inline-block; height: 15px; width: 100px;"></div>
+ <div style="display: inline-block; height: 15px; width: 100px;"></div>
+ <div style="display: inline-block; height: 15px; width: 100px;"></div>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-self-alignment-stretch-input-range-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-self-alignment-stretch-input-range-ref.html
new file mode 100644
index 00000000000..ad71302aef9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-self-alignment-stretch-input-range-ref.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html><head>
+ <meta charset="utf-8">
+ <title>CSS Grid Reference: align/justify-self on range INPUT items</title>
+ <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=">
+ <style>
+html,body {
+ color:black; background-color:white; font:16px/1 monospace;
+}
+
+input {
+ margin:0;
+ padding:0;
+ border:none; /* NOTE: On Windows, GetWidgetBorder returns 1px on all sides,
+ so we need the next declaration for the width/height to match: */
+ box-sizing: border-box;
+ width:300px;
+ height:80px;
+}
+
+.grid {
+ display: inline-grid;
+ grid: 80px / 300px;
+ place-items: stretch;
+ border:1px solid;
+}
+
+.zero { grid:0/0; }
+.zero input { width:0; height:0; }
+
+.none input { -webkit-appearance:none; }
+
+ </style>
+</head>
+<body>
+
+<div class="grid"><input type=range></div>
+<br>
+<div class="grid zero"><input type=range></div>
+<br>
+<div class="grid"><input type=range style="place-self:normal"></div>
+<br>
+<div class="grid zero"><input type=range style="place-self:normal"></div>
+<br>
+
+<div class="none">
+<div class="grid"><input type=range></div>
+<br>
+<div class="grid zero"><input type=range></div>
+<br>
+<div class="grid"><input type=range style="place-self:normal"></div>
+<br>
+<div class="grid zero"><input type=range style="place-self:normal"></div>
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-self-alignment-stretch-input-range.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-self-alignment-stretch-input-range.html
new file mode 100644
index 00000000000..fb17f3a4a8b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-self-alignment-stretch-input-range.html
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html><head>
+ <meta charset="utf-8">
+ <title>CSS Grid Test: align/justify-self on range INPUT items</title>
+ <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=">
+ <link rel="help" href="https://drafts.csswg.org/css-align-3/#align-self-property">
+ <link rel="match" href="grid-self-alignment-stretch-input-range-ref.html">
+ <style>
+html,body {
+ color:black; background-color:white; font:16px/1 monospace;
+}
+
+input {
+ margin:0;
+ padding:0;
+ border:none;
+}
+
+.grid {
+ display: inline-grid;
+ grid: 80px / 300px;
+ place-items: stretch;
+ border:1px solid;
+}
+
+.zero { grid:0/0; }
+
+.none input { -webkit-appearance:none; }
+
+ </style>
+</head>
+<body>
+
+<div class="grid"><input type=range></div>
+<br>
+<div class="grid zero"><input type=range></div>
+<br>
+<div class="grid"><input type=range style="place-self:normal"></div>
+<br>
+<div class="grid zero"><input type=range style="place-self:normal"></div>
+<br>
+
+<div class="none">
+<div class="grid"><input type=range></div>
+<br>
+<div class="grid zero"><input type=range></div>
+<br>
+<div class="grid"><input type=range style="place-self:normal"></div>
+<br>
+<div class="grid zero"><input type=range style="place-self:normal"></div>
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-001-ref.html b/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-001-ref.html
index 31a9ef3db8e..f304cedfeab 100644
--- a/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-001-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-001-ref.html
@@ -4,6 +4,7 @@
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<style>
.container {
+ font: 10px/1 Ahem;
margin: 10px;
background: grey;
}
@@ -32,7 +33,7 @@
}
</style>
-<p>The test passes if it has the same output than the reference.</p>
+<p>The test passes if it has the same output as the reference.</p>
<div style="float: left; width: 350px;">
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-001.html b/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-001.html
index 1b3c6eef691..b4ecd188db7 100644
--- a/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-001.html
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-001.html
@@ -4,10 +4,11 @@
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-grid/#grid-model">
<link rel="match" href="grid-container-scrollbar-001-ref.html">
-<meta name="assert" content="This test verifes that scrollbars are properly painted on grid containers, and are shown in the expected position depending on the direction.">
+<meta name="assert" content="This test verifies that scrollbars are properly painted on grid containers, and are shown in the expected position depending on the direction.">
<link href="support/grid.css" rel="stylesheet">
<style>
.grid {
+ font: 10px/1 Ahem;
margin: 10px;
}
@@ -29,7 +30,7 @@
}
</style>
-<p>The test passes if it has the same output than the reference.</p>
+<p>The test passes if it has the same output as the reference.</p>
<div style="float: left; width: 350px;">
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-lr-001-ref.html b/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-lr-001-ref.html
index 512fb8a81d5..e6640cc749e 100644
--- a/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-lr-001-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-lr-001-ref.html
@@ -4,6 +4,7 @@
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<style>
.container {
+ font: 10px/1 Ahem;
margin: 10px;
background: grey;
writing-mode: vertical-lr;
@@ -33,7 +34,7 @@
}
</style>
-<p>The test passes if it has the same output than the reference.</p>
+<p>The test passes if it has the same output as the reference.</p>
<div style="float: left; width: 350px;">
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-lr-001.html b/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-lr-001.html
index ecdc7b76840..6733759cf00 100644
--- a/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-lr-001.html
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-lr-001.html
@@ -4,10 +4,11 @@
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-grid/#grid-model">
<link rel="match" href="grid-container-scrollbar-vertical-lr-001-ref.html">
-<meta name="assert" content="This test verifes that scrollbars are properly painted on grid containers, and are shown in the expected position depending on the direction.">
+<meta name="assert" content="This test verifies that scrollbars are properly painted on grid containers, and are shown in the expected position depending on the direction.">
<link href="support/grid.css" rel="stylesheet">
<style>
.grid {
+ font: 10px/1 Ahem;
margin: 10px;
writing-mode: vertical-lr;
}
@@ -30,7 +31,7 @@
}
</style>
-<p>The test passes if it has the same output than the reference.</p>
+<p>The test passes if it has the same output as the reference.</p>
<div style="float: left; width: 350px;">
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001-ref.html b/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001-ref.html
index d8eeedfa07d..2b1bbaebb46 100644
--- a/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001-ref.html
@@ -4,6 +4,7 @@
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<style>
.container {
+ font: 10px/1 Ahem;
margin: 10px;
background: grey;
writing-mode: vertical-rl;
@@ -33,7 +34,7 @@
}
</style>
-<p>The test passes if it has the same output than the reference.</p>
+<p>The test passes if it has the same output as the reference.</p>
<div style="float: left; width: 350px;">
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001.html b/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001.html
index f2ab39ff505..a3de9386a81 100644
--- a/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001.html
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001.html
@@ -4,10 +4,11 @@
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-grid/#grid-model">
<link rel="match" href="grid-container-scrollbar-vertical-rl-001-ref.html">
-<meta name="assert" content="This test verifes that scrollbars are properly painted on grid containers, and are shown in the expected position depending on the direction.">
+<meta name="assert" content="This test verifies that scrollbars are properly painted on grid containers, and are shown in the expected position depending on the direction.">
<link href="support/grid.css" rel="stylesheet">
<style>
.grid {
+ font: 10px/1 Ahem;
margin: 10px;
writing-mode: vertical-rl;
}
@@ -30,7 +31,7 @@
}
</style>
-<p>The test passes if it has the same output than the reference.</p>
+<p>The test passes if it has the same output as the reference.</p>
<div style="float: left; width: 350px;">
diff --git a/tests/wpt/web-platform-tests/css/css-logical/logical-values-float-clear-reftest.html b/tests/wpt/web-platform-tests/css/css-logical/logical-values-float-clear-reftest.html
new file mode 100644
index 00000000000..c0fe9a52bc4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-logical/logical-values-float-clear-reftest.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<meta charset="utf-8" />
+<title>CSS Logical Values: Flow-Relative Values for the 'float' property</title>
+<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com" />
+<link rel="help" href="https://drafts.csswg.org/css-logical/#float-clear">
+<meta name="assert" content="This test checks that the 'inline-start' and 'inline-end' values of the 'float' and 'clear' properties map to the correct physical value." />
+<link rel="match" href="reference/logical-values-float-clear-reftest-ref.html">
+<style>
+.test {
+ display: block;
+ overflow: hidden;
+ width: 300px;
+}
+.inline {
+ display: inline;
+}
+.float, .clear {
+ display: block;
+ overflow: hidden;
+ height: 3px;
+ width: 100px;
+ background: #f0f;
+}
+.clear {
+ background: #0ff;
+}
+</style>
+<body>
+<script>
+const sides = ["inline-start", "inline-end"];
+const directions = ["ltr", "rtl"];
+for (const floatSide of sides) {
+ for (const clearSide of sides) {
+ for (const containerDirection of directions) {
+ for (const inlineParentDirection of [null, ...directions]) {
+ for (const floatDirection of directions) {
+ for (const clearDirection of directions) {
+ const containerEl = document.createElement("div");
+ containerEl.className = "test";
+ containerEl.style.direction = containerDirection;
+ const floatEl = document.createElement("div");
+ floatEl.className = "float";
+ floatEl.style.direction = floatDirection;
+ floatEl.style.float = floatSide;
+ const clearEl = document.createElement("div");
+ clearEl.className = "clear";
+ clearEl.style.direction = floatDirection;
+ clearEl.style.clear = clearSide;
+ if (inlineParentDirection) {
+ const inlineParent = document.createElement("div");
+ inlineParent.className = "inline";
+ inlineParent.style.direction = inlineParentDirection;
+ inlineParent.appendChild(floatEl);
+ inlineParent.appendChild(clearEl);
+ containerEl.appendChild(inlineParent);
+ } else {
+ containerEl.appendChild(floatEl);
+ containerEl.appendChild(clearEl);
+ }
+ document.body.appendChild(containerEl);
+ }
+ }
+ }
+ }
+ }
+}
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-logical/reference/logical-values-float-clear-reftest-ref.html b/tests/wpt/web-platform-tests/css/css-logical/reference/logical-values-float-clear-reftest-ref.html
new file mode 100644
index 00000000000..28c275ebb30
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-logical/reference/logical-values-float-clear-reftest-ref.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<meta charset="utf-8" />
+<title>CSS Reftest Reference</title>
+<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com" />
+<style>
+.test {
+ display: block;
+ overflow: hidden;
+ width: 300px;
+}
+.inline {
+ display: inline;
+}
+.float, .clear {
+ display: block;
+ overflow: hidden;
+ height: 3px;
+ width: 100px;
+ background: #f0f;
+}
+.clear {
+ background: #0ff;
+}
+</style>
+<body>
+<script>
+function physicalValue(value, containerDirection) {
+ return ((value === "inline-start") === (containerDirection === "ltr")) ? "left" : "right";
+}
+const sides = ["inline-start", "inline-end"];
+const directions = ["ltr", "rtl"];
+for (const floatSide of sides) {
+ for (const clearSide of sides) {
+ for (const containerDirection of directions) {
+ for (const inlineParentDirection of [null, ...directions]) {
+ for (const floatDirection of directions) {
+ for (const clearDirection of directions) {
+ const containerEl = document.createElement("div");
+ containerEl.className = "test";
+ containerEl.style.direction = containerDirection;
+ const floatEl = document.createElement("div");
+ floatEl.className = "float";
+ floatEl.style.direction = floatDirection;
+ floatEl.style.float = physicalValue(floatSide, containerDirection);
+ const clearEl = document.createElement("div");
+ clearEl.className = "clear";
+ clearEl.style.direction = floatDirection;
+ clearEl.style.clear = physicalValue(clearSide, containerDirection);
+ if (inlineParentDirection) {
+ const inlineParent = document.createElement("div");
+ inlineParent.className = "inline";
+ inlineParent.style.direction = inlineParentDirection;
+ inlineParent.appendChild(floatEl);
+ inlineParent.appendChild(clearEl);
+ containerEl.appendChild(inlineParent);
+ } else {
+ containerEl.appendChild(floatEl);
+ containerEl.appendChild(clearEl);
+ }
+ document.body.appendChild(containerEl);
+ }
+ }
+ }
+ }
+ }
+}
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-logical/resources/test-logical-values.js b/tests/wpt/web-platform-tests/css/css-logical/resources/test-logical-values.js
index c34b4ee9f91..7a039379cbd 100644
--- a/tests/wpt/web-platform-tests/css/css-logical/resources/test-logical-values.js
+++ b/tests/wpt/web-platform-tests/css/css-logical/resources/test-logical-values.js
@@ -21,27 +21,7 @@ export function runTests(property, values) {
style.cssText = "";
style.setProperty(property, value);
testCSSValues("logical values in inline style", style, [[property, value]]);
+ testComputedValues("logical values in computed style", style, [[property, value]]);
}, `Test that '${property}: ${value}' is supported.`);
-
- const camelCase = value.replace(/-(.)/g, (match, $1) => $1.toUpperCase());
- for (const writingMode of writingModes) {
- for (const style of writingMode.styles) {
- const writingModeDecl = makeDeclaration(style);
- test(function() {
- const physicalSide = writingMode[camelCase];
- let expected;
- if (physicalSide === writingMode.lineLeft) {
- expected = "left";
- } else if (physicalSide === writingMode.lineRight) {
- expected = "right";
- } else {
- expected = physicalSide;
- }
- testComputedValues(`computed value`,
- `.test { ${writingModeDecl} }`,
- [[property, expected]]);
- }, `Test '${property}: ${value}' with '${writingModeDecl}'.`);
- }
- }
}
}
diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/var-reference-registered-properties.html b/tests/wpt/web-platform-tests/css/css-properties-values-api/var-reference-registered-properties.html
index 5de6d20f11b..166754574fa 100644
--- a/tests/wpt/web-platform-tests/css/css-properties-values-api/var-reference-registered-properties.html
+++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/var-reference-registered-properties.html
@@ -2,6 +2,7 @@
<link rel="help" href="https://drafts.css-houdini.org/css-properties-values-api/#dom-css-registerproperty" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
+<script src="./resources/utils.js"></script>
<style>
div {
--registered-length-1: 10px;
@@ -135,4 +136,38 @@ test(function(){
element.style = '';
}, 'Lists with relative units are absolutized when substituting');
+function test_valid_fallback(syntax, value, fallback) {
+ test(function(){
+ let name = generate_property(syntax);
+ try {
+ element.style = `${name}: ${value}; --x:var(${name},${fallback})`;
+ let computedStyle = getComputedStyle(element);
+ assert_equals(computedStyle.getPropertyValue('--x'), value);
+ } finally {
+ element.style = '';
+ }
+ }, `Valid fallback does not invalidate var()-reference [${syntax}, ${fallback}]`);
+}
+
+function test_invalid_fallback(syntax, value, fallback) {
+ test(function(){
+ let name = generate_property(syntax);
+ try {
+ element.style = `${name}: ${value}; --x:var(${name},${fallback})`;
+ let computedStyle = getComputedStyle(element);
+ assert_equals(computedStyle.getPropertyValue('--x'), '');
+ } finally {
+ element.style = '';
+ }
+ }, `Invalid fallback invalidates var()-reference [${syntax}, ${fallback}]`);
+}
+
+test_valid_fallback('<length>', '40px', '10px');
+test_valid_fallback('<length> | <color>', '40px', 'red');
+test_valid_fallback('<length> | none', '40px', 'none');
+
+test_invalid_fallback('<length>', '40px', 'red');
+test_invalid_fallback('<length> | none', '40px', 'nolength');
+test_invalid_fallback('<length>', '40px', 'var(--novar)');
+
</script>
diff --git a/tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-font-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-font-001-ref.html
new file mode 100644
index 00000000000..f0bd7fe2629
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-font-001-ref.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<html lang=en>
+<meta charset=utf-8>
+<title>CSS test reference</title>
+<link rel=author title="Ambrose Li" href="http://port.ambroseli.ca/">
+<link rel=author title="Florian Rivoal" href="https://florian.rivoal.net">
+
+<p>The test passes if the word pairs below are all displayed in the same font.
+
+<table>
+ <tr>
+ <td>ping4 on1
+ <td>salaam
+ <td>shalom
+ <tr>
+ <td>ping4 on1
+ <td>salaam
+ <td>shalom
+</table>
+
diff --git a/tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-line-break-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-line-break-001-ref.html
new file mode 100644
index 00000000000..6ff3ef1e646
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-line-break-001-ref.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<html lang=en>
+<meta charset=utf-8>
+<title>CSS test reference</title>
+<link rel=author title="Florian Rivoal" href="https://florian.rivoal.net">
+<style>
+div {
+ font-family: monospace;
+}
+</style>
+
+<p>The test passes if the first line below ends with a hyphen.
+
+<div lang=ja-Latn>Fushimi&#x2010;<br>ku</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-line-break-002-ref.html b/tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-line-break-002-ref.html
new file mode 100644
index 00000000000..2855797d355
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-line-break-002-ref.html
@@ -0,0 +1,11 @@
+<!doctype html>
+<html lang=en>
+<meta charset=utf-8>
+<title>CSS test reference</title>
+<link rel=author title="Florian Rivoal" href="https://florian.rivoal.net">
+<style>
+</style>
+
+<p>The test passes if the question mark in the phrase below is alone on the second line.
+
+<div lang=en-Hrkt>ハロー、ハウアーユー<br>?</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-segment-break-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-segment-break-001-ref.html
new file mode 100644
index 00000000000..f451a74a51d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-segment-break-001-ref.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<html lang=en>
+<meta charset=utf-8>
+<title>CSS test reference</title>
+<link rel=author title="Florian Rivoal" href="https://florian.rivoal.net">
+
+<p>The test passes if the both lines are identical, including the spacing of the characters.
+
+<div lang=ain-Kana>“アイヌイタㇰ”</div>
+<div lang=ain-Kana>“アイヌイタㇰ”</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-text-transform-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-text-transform-001-ref.html
new file mode 100644
index 00000000000..9b50fb13312
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/writing-system/reference/writing-system-text-transform-001-ref.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html lang=en>
+<meta charset=utf-8>
+<title>CSS test reference</title>
+<link rel=author title="Florian Rivoal" href="https://florian.rivoal.net">
+<style>
+div {
+ font-size: 3em;
+}
+</style>
+<p>Test passes if the two words below are identical: there must be a dot on the “i” letter at the beginning of the word.
+<div lang=tr-Cyrl>iстанбул</div>
+<div lang=tr-Cyrl>iстанбул</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-font-001.html b/tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-font-001.html
new file mode 100644
index 00000000000..a8d4549279b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-font-001.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang=en>
+<meta charset=utf-8>
+<title>CSS test: font selection and writing sytem</title>
+<link rel=author title="Ambrose Li" href="http://port.ambroseli.ca/">
+<link rel=author title="Florian Rivoal" href="https://florian.rivoal.net">
+<link rel=help href="https://drafts.csswg.org/css-text-3/#languages">
+<link rel=help href="https://drafts.csswg.org/css-text-3/#script-tagging">
+<link rel=help href="https://drafts.csswg.org/css-fonts-4/#language-specific-support">
+<link rel=match href="reference/writing-system-font-001-ref.html">
+<meta name=assert content="An explicit writing system takes precedence over the content language for font selection">
+
+<p>The test passes if the word pairs below are all displayed in the same font.
+
+<table>
+ <tr>
+ <td>ping4 on1
+ <td>salaam
+ <td>shalom
+ <tr>
+ <td><span lang=zh-yue-latn>ping4 on1</span>
+ <td><span lang=ar-latn>salaam</span>
+ <td><span lang=he-latn>shalom</span>
+</table>
+
diff --git a/tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-line-break-001.html b/tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-line-break-001.html
new file mode 100644
index 00000000000..4ecb5ae7734
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-line-break-001.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<html lang=en>
+<meta charset=utf-8>
+<title>CSS test: writing system and line breaking</title>
+<link rel=author title="Florian Rivoal" href="https://florian.rivoal.net">
+<link rel=help href="https://drafts.csswg.org/css-text-3/#languages">
+<link rel=help href="https://drafts.csswg.org/css-text-3/#script-tagging">
+<link rel=help href="https://drafts.csswg.org/css-text-3/#propdef-line-break">
+<link rel=match href="reference/writing-system-line-break-001-ref.html">
+<meta name=assert content="breaks before hyphens when line-break is loose are allowed if the content language is Japanese,
+but not when the writing system is Latin.">
+<style>
+div {
+ font-family: monospace;
+ width: 7ch;
+ line-break: loose;
+}
+</style>
+
+<p>The test passes if the first line below ends with a hyphen.
+
+<div lang=ja-Latn>Fushimi&#x2010;ku</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-line-break-002.html b/tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-line-break-002.html
new file mode 100644
index 00000000000..a973560a6e2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-line-break-002.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<html lang=en>
+<meta charset=utf-8>
+<title>CSS test: writing system and line breaking</title>
+<link rel=author title="Florian Rivoal" href="https://florian.rivoal.net">
+<link rel=help href="https://drafts.csswg.org/css-text-3/#languages">
+<link rel=help href="https://drafts.csswg.org/css-text-3/#script-tagging">
+<link rel=help href="https://drafts.csswg.org/css-text-3/#propdef-line-break">
+<link rel=match href="reference/writing-system-line-break-002-ref.html">
+<meta name=assert content="breaks before U+FF1F when line-break is loose are allowed
+if the writing system is Japanese (which includes Hrkt),
+but even when the language not Japanese.">
+<style>
+div {
+ width: 10em;
+ line-break: loose;
+}
+</style>
+
+<p>The test passes if the question mark in the phrase below is alone on the second line.
+
+<div lang=en-Hrkt>ハロー、ハウアーユー?</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-segment-break-001.html b/tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-segment-break-001.html
new file mode 100644
index 00000000000..1d560d9f497
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-segment-break-001.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang=en>
+<meta charset=utf-8>
+<title>CSS test: writing system and segment break transformation</title>
+<link rel=author title="Florian Rivoal" href="https://florian.rivoal.net">
+<link rel=help href="https://drafts.csswg.org/css-text-3/#languages">
+<link rel=help href="https://drafts.csswg.org/css-text-3/#script-tagging">
+<link rel=help href="https://drafts.csswg.org/css-text-3/#line-break-transform">
+<link rel=match href="reference/writing-system-segment-break-001-ref.html">
+<meta name=assert content="If the writing system of the segment break is Chinese, Japanese, or Yi,
+and the character before or after the segment break is punctuation or a symbol (Unicode general category P* or S*)
+and has an East Asian Width property of A or is Emoji,
+and the character on the other side of the segment break is F, W, or H, and not Hangul or Emoji,
+then the segment break is removed.">
+<!--
+In this case, checking with “ and ” which are punctuation with East Asian Width of A,
+next to Katakana letters (which are W),
+while the writing system is Katakana, which is classified as Japanese,
+despite a non Japanese content language (Ainu).
+-->
+
+<p>The test passes if the both lines are identical, including the spacing of the characters.
+
+<div lang=ain-Kana>“
+アイヌイタㇰ
+”</div>
+<div lang=ain-Kana>“アイヌイタㇰ”</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-text-transform-001.html b/tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-text-transform-001.html
new file mode 100644
index 00000000000..209d56c9514
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/writing-system/writing-system-text-transform-001.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<html lang=en>
+<meta charset=utf-8>
+<title>CSS test: text-transform and writing systems</title>
+<link rel=author title="Florian Rivoal" href="https://florian.rivoal.net">
+<link rel=help href="https://drafts.csswg.org/css-text-3/#languages">
+<link rel=help href="https://drafts.csswg.org/css-text-3/#script-tagging">
+<link rel=help href="https://drafts.csswg.org/css-text-3/#propdef-text-transform">
+<link rel=match href="reference/writing-system-text-transform-001-ref.html">
+<meta name=assert content="text transform rules that depend on the language are overriden by a contradicting explicit script tag.">
+<style>
+div {
+ text-transform: lowercase;
+ font-size: 3em;
+}
+</style>
+<p>Test passes if the two words below are identical: there must be a dot on the “i” letter at the beginning of the word.
+<div lang=tr-Cyrl>IСТАНБУЛ</div>
+<div lang=tr-Cyrl>iстанбул</div>
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/resources/interpolation-testcommon.js b/tests/wpt/web-platform-tests/css/css-transforms/animation/resources/interpolation-testcommon.js
index 3791b0af9db..73ce9ceefb3 100644
--- a/tests/wpt/web-platform-tests/css/css-transforms/animation/resources/interpolation-testcommon.js
+++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/resources/interpolation-testcommon.js
@@ -11,6 +11,28 @@ function test_interpolation(settings, expectations, name) {
return 'cubic-bezier(0, ' + y + ', 1, ' + y + ')';
}
+ function RoundMatrix(style) {
+ var matrixMatch = style.match(/^(matrix(3d)?)\(.+\)$/);
+ if (!!matrixMatch) {
+ var matrixType = matrixMatch[1];
+ var matrixArgs = style.substr(matrixType.length);
+ var extractmatrix = function(matrixStr) {
+ var list = [];
+ var regex = /[+\-]?[0-9]+[.]?[0-9]*(e[+/-][0-9]+)?/g;
+ var match = undefined;
+ do {
+ match = regex.exec(matrixStr);
+ if (match) {
+ list.push(parseFloat(parseFloat(match[0]).toFixed(6)));
+ }
+ } while (match);
+ return list;
+ }
+ return matrixType + '(' + extractmatrix(matrixArgs).join(', ') + ')';
+ }
+ return style;
+ }
+
test(function(){
assert_true(CSS.supports(settings.property, settings.from), 'Value "' + settings.from + '" is supported by ' + settings.property);
assert_true(CSS.supports(settings.property, settings.to), 'Value "' + settings.to + '" is supported by ' + settings.property);
@@ -49,7 +71,9 @@ function test_interpolation(settings, expectations, name) {
document.body.appendChild(reference);
reference.style = '';
- assert_equals(getComputedStyle(target)[settings.property], getComputedStyle(reference)[settings.property]);
+ var observed = RoundMatrix(getComputedStyle(target)[settings.property]);
+ var expected = RoundMatrix(getComputedStyle(reference)[settings.property]);
+ assert_equals(observed, expected);
}, message_prefix + 'Animation between "' + settings.from + '" and "' + settings.to + '" at progress ' + progress);
}
}
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-basic-background-color.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-basic-background-color.html
index c8d1a3ede5d..39febb17d2d 100644
--- a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-basic-background-color.html
+++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-basic-background-color.html
@@ -28,7 +28,6 @@
height: 100px;
left: 50px;
top: 50px;
- -webkit-backdrop-filter: invert(1);
backdrop-filter: invert(1);
opacity: 0.5;
background: blue;
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-basic-opacity.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-basic-opacity.html
index 23e40a7ccdd..e3ad8a20afa 100644
--- a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-basic-opacity.html
+++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-basic-opacity.html
@@ -28,7 +28,6 @@
height: 100px;
left: 50px;
top: 50px;
- -webkit-backdrop-filter: invert(1);
backdrop-filter: invert(1);
opacity: 0.5;
}
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-basic.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-basic.html
index 8f24c9b44a4..711064e4de3 100644
--- a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-basic.html
+++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-basic.html
@@ -28,7 +28,6 @@
height: 100px;
left: 50px;
top: 50px;
- -webkit-backdrop-filter: invert(1);
backdrop-filter: invert(1);
opacity: 1.0;
}
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-border-radius.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-border-radius.html
index d6d1f4b8130..fc212501ad5 100644
--- a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-border-radius.html
+++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-border-radius.html
@@ -29,7 +29,6 @@ div {
}
.filter {
opacity: 0.7;
- -webkit-backdrop-filter: invert(1);
backdrop-filter: invert(1);
}
</style>
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-clip-rect-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-clip-rect-ref.html
new file mode 100644
index 00000000000..a51d81f8519
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-clip-rect-ref.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>backdrop-filter: Clip the filter at border box of element</title>
+<link rel="author" title="Mason Freed" href="mailto:masonfreed@chromium.org">
+
+
+
+<div>
+ <p>Expected: A green box, blurred inside the short, wide white box with a<br>
+ blue border, and not blurred anywhere else. In particular, there should be<br>
+ no blurring inside the tall, narrow white box, or anywhere outside that.</p>
+</div>
+<div class="box"></div>
+<div class="navbar"></div>
+<div class="menu"></div>
+
+<style>
+div {
+ position: absolute;
+}
+.box {
+ width: 200px;
+ height: 200px;
+ top: 100px;
+ left: 100px;
+ background: green;
+}
+.navbar {
+ width: 300px;
+ height: 50px;
+ top: 150px;
+ left: 50px;
+ border: 1px solid blue;
+ backdrop-filter: blur(20px);
+}
+.menu {
+ width: 100px;
+ height: 150px;
+ top: 201px;
+ left: 146px;
+ border: 1px solid blue;
+}
+</style>
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-clip-rect.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-clip-rect.html
new file mode 100644
index 00000000000..8b5d9f4e34f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-clip-rect.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>backdrop-filter: Clip the filter at border box of element</title>
+<link rel="author" title="Mason Freed" href="mailto:masonfreed@chromium.org">
+<link rel="help" href="https://drafts.fxtf.org/filter-effects-2/#BackdropFilterProperty">
+<link rel="match" href="backdrop-filter-paint-order-ref.html">
+
+<div>
+ <p>Expected: A green box, blurred inside the short, wide white box with a<br>
+ blue border, and not blurred anywhere else. In particular, there should be<br>
+ no blurring inside the tall, narrow white box, or anywhere outside that.</p>
+</div>
+<div class="box"></div>
+<div class="navbar">
+ <div class="menu"></div>
+</div>
+<style>
+div {
+ position: absolute;
+}
+.box {
+ width: 200px;
+ height: 200px;
+ top: 100px;
+ left: 100px;
+ background: green;
+}
+.navbar {
+ width: 300px;
+ height: 50px;
+ top: 150px;
+ left: 50px;
+ border: 1px solid blue;
+ backdrop-filter: blur(20px);
+}
+.menu {
+ width: 100px;
+ height: 150px;
+ top: 50px;
+ left: 95px;
+ border: 1px solid blue;
+}
+</style>
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-edge-pixels-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-edge-pixels-ref.html
new file mode 100644
index 00000000000..1960435775c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-edge-pixels-ref.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>backdrop-filter: Edge pixels shouldn't get filtered</title>
+<link rel="author" title="Mason Freed" href="mailto:masonfreed@chromium.org">
+
+
+
+<div class="box"></div>
+<div style="position:absolute;top:100px;">
+ <p>Expected above: A pure white box with a blue border.<br>
+ No dark/black should be observed within the white box.</p>
+</div>
+
+<style>
+.box {
+ position: absolute;
+ width: 100px;
+ height: 100px;
+ top: 0px;
+ left: 0px;
+ border: 1px solid blue;
+
+
+}
+</style>
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-edge-pixels.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-edge-pixels.html
new file mode 100644
index 00000000000..1e29d725ebc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-edge-pixels.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>backdrop-filter: Edge pixels shouldn't get filtered</title>
+<link rel="author" title="Mason Freed" href="mailto:masonfreed@chromium.org">
+<link rel="help" href="https://drafts.fxtf.org/filter-effects-2/#BackdropFilterProperty">
+<link rel="match" href="backdrop-filter-edge-pixels-ref.html">
+
+<div class="box"></div>
+<div style="position:absolute;top:100px;">
+ <p>Expected above: A pure white box with a blue border.<br>
+ No dark/black should be observed within the white box.</p>
+</div>
+
+<style>
+.box {
+ position: absolute;
+ width: 100px;
+ height: 100px;
+ top: 0px;
+ left: 0px;
+ border: 1px solid blue;
+ backdrop-filter: blur(30px);
+}
+</style>
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-isolation-isolate.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-isolation-isolate.html
index dba157c87c7..99fa69d03fa 100644
--- a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-isolation-isolate.html
+++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-isolation-isolate.html
@@ -35,7 +35,6 @@ div {
top: 30px;
left: -90px;
opacity: 0.3;
- -webkit-backdrop-filter: invert(1);
backdrop-filter: invert(1);
background: yellow;
}
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-isolation.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-isolation.html
index dc7bd107c32..e41772578e5 100644
--- a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-isolation.html
+++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-isolation.html
@@ -35,7 +35,6 @@ div {
top: 30px;
left: -90px;
opacity: 0.3;
- -webkit-backdrop-filter: invert(1);
backdrop-filter: invert(1);
background: yellow;
}
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-paint-order-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-paint-order-ref.html
new file mode 100644
index 00000000000..bd82e520f0e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-paint-order-ref.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>backdrop-filter: Only filter objects painted before</title>
+<link rel="author" title="Mason Freed" href="mailto:masonfreed@chromium.org">
+
+
+
+<div>
+ <p>Expected: A pure white box with a blue border, surrounded by green.<br>
+ No green should be observed within the white box.<br>
+ No dark/black should be observed within the white box either.</p>
+</div>
+
+<div class="filterbox"></div>
+<div class="greenbox top"></div>
+<div class="greenbox right"></div>
+<div class="greenbox bottom"></div>
+<style>
+.filterbox {
+ position: absolute;
+ width: 100px;
+ height: 100px;
+ top: 150px;
+ left: 0px;
+ border: 1px solid blue;
+
+
+}
+.greenbox {
+ position:absolute;
+ width: 150px;
+ height: 50px;
+ background: green;
+}
+.top {
+ top:100px;
+ left: 10px;
+}
+.right {
+ top:130px;
+ left: 102px;
+ width: 58px;
+ height: 150px;
+}
+.bottom {
+ top:252px;
+ left: 10px;
+}
+</style>
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-paint-order.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-paint-order.html
new file mode 100644
index 00000000000..88531532fc3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-paint-order.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>backdrop-filter: Only filter objects painted before</title>
+<link rel="author" title="Mason Freed" href="mailto:masonfreed@chromium.org">
+<link rel="help" href="https://drafts.fxtf.org/filter-effects-2/#BackdropFilterProperty">
+<link rel="match" href="backdrop-filter-paint-order-ref.html">
+
+<div>
+ <p>Expected: A pure white box with a blue border, surrounded by green.<br>
+ No green should be observed within the white box.<br>
+ No dark/black should be observed within the white box either.</p>
+</div>
+
+<div class="filterbox"></div>
+<div class="greenbox top"></div>
+<div class="greenbox right"></div>
+<div class="greenbox bottom"></div>
+<style>
+.filterbox {
+ position: absolute;
+ width: 100px;
+ height: 100px;
+ top: 150px;
+ left: 0px;
+ border: 1px solid blue;
+ backdrop-filter: blur(20px);
+}
+.greenbox {
+ position:absolute;
+ width: 150px;
+ height: 50px;
+ background: green;
+}
+.top {
+ top:100px;
+ left: 10px;
+}
+.right {
+ top:130px;
+ left: 102px;
+ width: 58px;
+ height: 150px;
+}
+.bottom {
+ top:252px;
+ left: 10px;
+}
+</style>
+
diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/matches.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/is.html
index 634ded3c7d7..0d905dcd4f6 100644
--- a/tests/wpt/web-platform-tests/css/selectors/invalidation/matches.html
+++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/is.html
@@ -1,10 +1,10 @@
<!DOCTYPE html>
<html>
<head>
- <title>CSS Selectors Invalidation: :matches()</title>
+ <title>CSS Selectors Invalidation: :is()</title>
<link rel="author" title="Victoria Su" href="mailto:victoriaytsu@google.com">
<link rel="help" href="https://drafts.csswg.org/selectors-4/#matches">
- <meta name="assert" content="This tests that the :matches() selector is effective">
+ <meta name="assert" content="This tests that the :is() selector is effective">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
@@ -12,18 +12,18 @@
color: yellow;
}
/*Simple selector arguments */
- .a :matches(.b, .c) {
+ .a :is(.b, .c) {
color: red;
}
/*Compound selector arguments */
- .a :matches(.c#d, .e) {
+ .a :is(.c#d, .e) {
color: green;
}
/* Complex selector arguments */
.a .g>.b {
color: black;
}
- .a :matches(.e+.f, .g>.b, .h) {
+ .a :is(.e+.f, .g>.b, .h) {
color: blue;
}
.g>.b {
@@ -39,7 +39,7 @@
.c>.a+.e {
color: black;
}
- .a+:matches(.b+.f, :matches(.c>.e, .g)) {
+ .a+:is(.b+.f, :is(.c>.e, .g)) {
color: red;
}
.c>.e {
@@ -108,32 +108,32 @@
assert_equals(getComputedStyle(b1).color, red);
assert_equals(getComputedStyle(b3).color, red);
assert_equals(getComputedStyle(c1).color, red);
- }, "Invalidate :matches() for simple selector arguments.");
+ }, "Invalidate :is() for simple selector arguments.");
test(() => {
a1.className = "a";
assert_equals(getComputedStyle(d).color, green);
- }, "Invalidate :matches() for compound selector arguments.");
+ }, "Invalidate :is() for compound selector arguments.");
test(() => {
a1.className = "a";
assert_equals(getComputedStyle(b2).color, blue);
assert_equals(getComputedStyle(b3).color, red);
assert_equals(getComputedStyle(f1).color, blue);
- }, "Invalidate :matches() for complex selector arguments.");
+ }, "Invalidate :is() for complex selector arguments.");
test(() => {
a1.className = "a";
assert_equals(getComputedStyle(e2).color, black);
a2.className = "a";
assert_equals(getComputedStyle(e2).color, red);
- }, "Invalidate nested :matches().");
+ }, "Invalidate nested :is().");
test(() => {
a1.className = "a";
assert_equals(getComputedStyle(b2).color, blue);
assert_equals(getComputedStyle(h1).color, black);
- }, "Test specificity of :matches().");
+ }, "Test specificity of :is().");
</script>
</body>
</html> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/where.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/where.html
index 1c6432f46eb..170398300f0 100644
--- a/tests/wpt/web-platform-tests/css/selectors/invalidation/where.html
+++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/where.html
@@ -33,7 +33,7 @@
:where(.a>:where(.g+.h, .b)~.i) {
color: blue;
}
- :where(:matches(.a~.h)) {
+ :where(:is(.a~.h)) {
color: yellow;
}
</style>
diff --git a/tests/wpt/web-platform-tests/css/selectors/matches-nested.html b/tests/wpt/web-platform-tests/css/selectors/is-nested.html
index b82d43d0901..7c3973ae058 100644
--- a/tests/wpt/web-platform-tests/css/selectors/matches-nested.html
+++ b/tests/wpt/web-platform-tests/css/selectors/is-nested.html
@@ -1,31 +1,31 @@
<!DOCTYPE html>
<html>
<head>
- <title>CSS Selectors: :matches()</title>
+ <title>CSS Selectors: :is()</title>
<link rel="author" title="Victoria Su" href="mailto:victoriaytsu@google.com">
<link rel="help" href="https://drafts.csswg.org/selectors-4/#matches">
- <meta name="assert" content="This tests that the :matches() selector is effective when nested">
+ <meta name="assert" content="This tests that the :is() selector is effective when nested">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
- /* Testing that highest specificity is chosen for class outside of :matches() */
+ /* Testing that highest specificity is chosen for class outside of :is() */
.a+.b+.c>.e+.d {
color: black;
font-size: 10px;
width: 10px;
}
- .a+:matches(.b+.f, .b+:matches(*, .c>.e, .g, *))+.d {
+ .a+:is(.b+.f, .b+:is(*, .c>.e, .g, *))+.d {
color: red;
font-size: 20px;
}
.a+.b+.c>.e+.d {
color: yellow;
}
- /* Testing specificty of a class within :matches() */
+ /* Testing specificty of a class within :is() */
.a+.c>.e {
color: black;
}
- .a+:matches(.b+.f, :matches(.c>.e, .g)) {
+ .a+:is(.b+.f, :is(.c>.e, .g)) {
color: red;
}
.c>.e {
@@ -61,11 +61,11 @@
assert_equals(getComputedStyle(d1).color, yellow);
assert_equals(getComputedStyle(d1).fontSize, "20px");
assert_equals(getComputedStyle(d1).width, "10px");
- }, "Test nested :matches() chooses highest specificity for class outside :matches().");
+ }, "Test nested :is() chooses highest specificity for class outside :is().");
test(() => {
assert_equals(getComputedStyle(e1).color, red);
- }, "Test nested :matches() specificity for class within arguments.");
+ }, "Test nested :is() specificity for class within arguments.");
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/css/selectors/matches-specificity.html b/tests/wpt/web-platform-tests/css/selectors/is-specificity.html
index 41d7251a3d7..bf3dbc6bb9f 100644
--- a/tests/wpt/web-platform-tests/css/selectors/matches-specificity.html
+++ b/tests/wpt/web-platform-tests/css/selectors/is-specificity.html
@@ -1,10 +1,10 @@
<!DOCTYPE html>
<html>
<head>
- <title>CSS Selectors: :matches()</title>
+ <title>CSS Selectors: :is()</title>
<link rel="author" title="Victoria Su" href="mailto:victoriaytsu@google.com">
<link rel="help" href="https://drafts.csswg.org/selectors-4/#matches">
- <meta name="assert" content="This tests that the :matches() selector chooses the correct specificity">
+ <meta name="assert" content="This tests that the :is() selector chooses the correct specificity">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
@@ -13,7 +13,7 @@
height: 10px;
width: 10px;
}
- :matches(.a, .b.c + .d, .e) + :matches(* + .p, .q.r + .s, * + .t) + #target {
+ :is(.a, .b.c + .d, .e) + :is(* + .p, .q.r + .s, * + .t) + #target {
height: 20px;
width: 20px;
}
@@ -34,7 +34,7 @@
assert_equals(getComputedStyle(target).width, "30px");
assert_equals(getComputedStyle(target).height, "20px");
assert_equals(getComputedStyle(target).fontSize, "10px");
- }, "Test :matches() uses highest possible specificity");
+ }, "Test :is() uses highest possible specificity");
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/css/support/computed-testcommon.js b/tests/wpt/web-platform-tests/css/support/computed-testcommon.js
index 0999418e748..2cc19c176fa 100644
--- a/tests/wpt/web-platform-tests/css/support/computed-testcommon.js
+++ b/tests/wpt/web-platform-tests/css/support/computed-testcommon.js
@@ -13,10 +13,16 @@ function test_computed_value(property, specified, computed) {
if (!computed)
computed = specified;
test(() => {
+ const target = document.getElementById('target');
if (!getComputedStyle(target)[property])
return;
target.style[property] = '';
target.style[property] = specified;
assert_equals(getComputedStyle(target)[property], computed);
+ if (computed !== specified) {
+ target.style[property] = '';
+ target.style[property] = computed;
+ assert_equals(getComputedStyle(target)[property], computed, 'computed value should round-trip');
+ }
}, "Property " + property + " value '" + specified + "' computes to '" + computed + "'");
}
diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html b/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html
new file mode 100644
index 00000000000..b45d8c3d448
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/feature-policy/experimental-features/resources/common.js"></script>
+<title> 'layout-animations' Policy : violation reports from javascript
+</title>
+<body>
+<script>
+ test(() => {
+ document.policy.allowedFeatures().forEach((enabled_feature) => {
+ assert_not_equals(enabled_feature, "layout-animations");
+ });
+ },
+ "Verify 'layout-animations' is not in document's feature list.");
+
+ promise_test(async () => {
+ let promise = wait_for_violation_in_file(
+ "layout-animations",
+ "animation-property-height.js");
+ let script = document.createElement("script");
+ script.src = "/feature-policy/experimental-features/resources/" +
+ "animation-property-height.js";
+ document.body.appendChild(script);
+ await promise;
+ },
+ "Verify that when 'layout-animations' is disabled, an 'element.animate' " +
+ "API including a keyframe that uses a blocked property generates violation " +
+ "report (linked scripts).");
+
+ promise_test(async () => {
+ let promise = wait_for_violation_in_file(
+ "layout-animations",
+ "layout-animations-disabled-violation-report-js-tentative.html");
+ let div = document.createElement("div");
+ document.body.appendChild(div);
+ div.animate([{width: "100px"}, {width: "200px"}]);
+ await promise;
+ },
+ "Verify that when 'layout-animations' is disabled, an 'element.animate' " +
+ "API including a keyframe that uses a blocked property generates violation " +
+ "report (inline scripts).");
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html.headers b/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html.headers
new file mode 100644
index 00000000000..7c441bbba55
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html.headers
@@ -0,0 +1 @@
+Feature-Policy: layout-animations 'none'
diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html b/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html
new file mode 100644
index 00000000000..0701c50f6ca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/feature-policy/experimental-features/resources/common.js"></script>
+<title> 'layout-animations' Policy : violation reports from CSS keyframes
+</title>
+<body>
+<script>
+ test(() => {
+ document.policy.allowedFeatures().forEach((enabled_feature) => {
+ assert_not_equals(enabled_feature, "layout-animations");
+ });
+ },
+ "Sanity-check: 'layout-animations' is not in document's feature list.");
+
+ promise_test(async () => {
+ let promise = wait_for_violation_in_file(
+ "layout-animations", null /* source not specified */);
+ let style = document.createElement("style");
+ style.innerHTML = `@keyframes animation_property_top {
+ from { top: 0px }
+ to { top: 100px }
+ }`;
+ document.body.appendChild(style);
+ await promise;
+ },
+ "Verify that when 'layout-animations' is disabled, a keyframes which " +
+ "includes a blocked property generates violation report.");
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html.headers b/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html.headers
new file mode 100644
index 00000000000..7c441bbba55
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html.headers
@@ -0,0 +1 @@
+Feature-Policy: layout-animations 'none'
diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/animation-property-height.js b/tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/animation-property-height.js
new file mode 100644
index 00000000000..79316cb488f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/animation-property-height.js
@@ -0,0 +1,3 @@
+let div = document.createElement("div");
+document.body.appendChild(div);
+div.animate([{"height": "0px"}, {"height": "100px"}]);
diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/common.js b/tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/common.js
index 64cfca59d6c..42790b8a2e7 100644
--- a/tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/common.js
+++ b/tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/common.js
@@ -64,4 +64,29 @@ function wait_for_load(e) {
return new Promise((resolve) => {
e.addEventListener("load", resolve);
});
-} \ No newline at end of file
+}
+
+window.reporting_observer_instance = new ReportingObserver((reports, observer) => {
+ if (window.reporting_observer_callback) {
+ reports.forEach(window.reporting_observer_callback);
+ }
+}, {types: ["feature-policy"]});
+window.reporting_observer_instance.observe();
+window.reporting_observer_callback = null;
+
+// Waits for a violation in |feature| and source file containing |file_name|.
+function wait_for_violation_in_file(feature, file_name) {
+ return new Promise( (resolve) => {
+ assert_equals(null, window.reporting_observer_callback);
+ window.reporting_observer_callback = (report) => {
+ var feature_match = (feature === report.body.feature);
+ var file_name_match =
+ !file_name ||
+ (report.body.sourceFile.indexOf(file_name) !== -1);
+ if (feature_match && file_name_match) {
+ window.reporting_observer_callback = null;
+ resolve(report);
+ }
+ };
+ });
+}
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/camera-report-only.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/camera-report-only.https.html
new file mode 100644
index 00000000000..26488687e6f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/camera-report-only.https.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <script src='/resources/testharness.js'></script>
+ <script src='/resources/testharnessreport.js'></script>
+ <script src='/resources/testdriver.js'></script>
+ <script src="/resources/testdriver-vendor.js"></script>
+ </head>
+ <body>
+ <script>
+var check_report_format = ([reports, observer]) => {
+ let report = reports[0];
+ assert_equals(report.type, "feature-policy");
+ assert_equals(report.body.feature, "camera");
+ assert_equals(report.body.disposition, "report");
+};
+
+promise_test(async t => {
+ const report = new Promise(resolve => {
+ new ReportingObserver((reports, observer) => resolve([reports, observer]),
+ {types: ['feature-policy']}).observe();
+ });
+ await test_driver.bless('Activate document for user media');
+ await navigator.mediaDevices.getUserMedia({video: true});
+ check_report_format(await report);
+}, "Camera report only mode");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/camera-report-only.https.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/camera-report-only.https.html.headers
new file mode 100644
index 00000000000..46b84811f55
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/camera-report-only.https.html.headers
@@ -0,0 +1 @@
+Feature-Policy: camera-report-only 'none'
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/camera-reporting.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/camera-reporting.https.html
index 14b2ed1d37c..ced585139b3 100644
--- a/tests/wpt/web-platform-tests/feature-policy/reporting/camera-reporting.https.html
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/camera-reporting.https.html
@@ -10,17 +10,18 @@ var t = async_test("Camera Report Format");
var check_report_format = (reports, observer) => {
let report = reports[0];
- assert_equals(report.type, "feature-policy");
+ assert_equals(report.type, "feature-policy-violation");
assert_equals(report.url, document.location.href);
- assert_equals(report.body.feature, "camera");
+ assert_equals(report.body.featureId, "camera");
+ assert_equals(report.body.disposition, "enforce");
assert_equals(report.body.sourceFile, document.location.href);
- assert_equals(typeof report.body.message, "string");
assert_equals(typeof report.body.lineNumber, "number");
assert_equals(typeof report.body.columnNumber, "number");
+ assert_equals(report.body.disposition, "enforce");
};
new ReportingObserver(t.step_func_done(check_report_format),
- {types: ['feature-policy']}).observe();
+ {types: ['feature-policy-violation']}).observe();
navigator.mediaDevices.getUserMedia({video: true}).then(
t.unreached_func("UserMedia camera access should not be allowed in this document.")
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/document-write-report-only.html b/tests/wpt/web-platform-tests/feature-policy/reporting/document-write-report-only.html
new file mode 100644
index 00000000000..ab0bb827166
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/document-write-report-only.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <script src='/resources/testharness.js'></script>
+ <script src='/resources/testharnessreport.js'></script>
+ </head>
+ <body>
+ <script>
+var check_report_format = ([reports, observer]) => {
+ let report = reports[0];
+ assert_equals(report.type, "feature-policy");
+ assert_equals(report.body.feature, "document-write");
+ assert_equals(report.body.disposition, "report");
+};
+
+promise_test(async t => {
+ const report = new Promise(resolve => {
+ new ReportingObserver((reports, observer) => resolve([reports, observer]),
+ {types: ['feature-policy']}).observe();
+ });
+ document.write("This should be written into the document");
+ check_report_format(await report);
+}, "Document-write report only mode");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/document-write-report-only.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/document-write-report-only.html.headers
new file mode 100644
index 00000000000..63e43f1d719
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/document-write-report-only.html.headers
@@ -0,0 +1 @@
+Feature-Policy: document-write-report-only 'none'
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/document-write-reporting.html b/tests/wpt/web-platform-tests/feature-policy/reporting/document-write-reporting.html
index cb08b8d72d1..93672fac35b 100644
--- a/tests/wpt/web-platform-tests/feature-policy/reporting/document-write-reporting.html
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/document-write-reporting.html
@@ -10,17 +10,18 @@ var t = async_test("Document-write Report Format");
var check_report_format = (reports, observer) => {
let report = reports[0];
- assert_equals(report.type, "feature-policy");
+ assert_equals(report.type, "feature-policy-violation");
assert_equals(report.url, document.location.href);
- assert_equals(report.body.feature, "document-write");
+ assert_equals(report.body.featureId, "document-write");
+ assert_equals(report.body.disposition, "enforce");
assert_equals(report.body.sourceFile, document.location.href);
- assert_equals(typeof report.body.message, "string");
assert_equals(typeof report.body.lineNumber, "number");
assert_equals(typeof report.body.columnNumber, "number");
+ assert_equals(report.body.disposition, "enforce");
};
new ReportingObserver(t.step_func_done(check_report_format),
- {types: ['feature-policy']}).observe();
+ {types: ['feature-policy-violation']}).observe();
t.step_func(() => {
assert_throws('NotAllowedError',
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/encrypted-media-report-only.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/encrypted-media-report-only.https.html
new file mode 100644
index 00000000000..20e44b2fd5d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/encrypted-media-report-only.https.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <script src='/resources/testharness.js'></script>
+ <script src='/resources/testharnessreport.js'></script>
+ </head>
+ <body>
+ <script>
+var check_report_format = ([reports, observer]) => {
+ let report = reports[0];
+ assert_equals(report.type, "feature-policy");
+ assert_equals(report.body.feature, "encrypted-media");
+ assert_equals(report.body.disposition, "report");
+};
+
+promise_test(async t => {
+ const report = new Promise(resolve => {
+ new ReportingObserver((reports, observer) => resolve([reports, observer]),
+ {types: ['feature-policy']}).observe();
+ });
+ await navigator.requestMediaKeySystemAccess("org.w3.clearkey",
+ [{
+ initDataTypes: ["webm"],
+ videoCapabilities: [{contentType: 'video/webm;codecs="vp8"'}],
+ }]);
+ check_report_format(await report);
+}, "Encrypted Media report only mode");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/encrypted-media-report-only.https.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/encrypted-media-report-only.https.html.headers
new file mode 100644
index 00000000000..a2c8fbb4425
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/encrypted-media-report-only.https.html.headers
@@ -0,0 +1 @@
+Feature-Policy: encrypted-media-report-only 'none'
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/encrypted-media-reporting.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/encrypted-media-reporting.https.html
index d309d5390f1..c3b63936b3a 100644
--- a/tests/wpt/web-platform-tests/feature-policy/reporting/encrypted-media-reporting.https.html
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/encrypted-media-reporting.https.html
@@ -11,6 +11,7 @@ var check_report_format = (reports, observer) => {
assert_equals(report.type, "feature-policy");
assert_equals(report.url, document.location.href);
assert_equals(report.body.feature, "encrypted-media");
+ assert_equals(report.body.disposition, "enforce");
assert_equals(report.body.sourceFile, document.location.href);
assert_equals(typeof report.body.message, "string");
assert_equals(typeof report.body.lineNumber, "number");
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/fullscreen-report-only.html b/tests/wpt/web-platform-tests/feature-policy/reporting/fullscreen-report-only.html
new file mode 100644
index 00000000000..a6b3d5adeed
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/fullscreen-report-only.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <script src='/resources/testharness.js'></script>
+ <script src='/resources/testharnessreport.js'></script>
+ <script src='/resources/testdriver.js'></script>
+ <script src="/resources/testdriver-vendor.js"></script>
+ </head>
+ <body>
+ <div id='fs'></div>
+ <script>
+var check_report_format = ([reports, observer]) => {
+ let report = reports[0];
+ assert_equals(report.type, "feature-policy");
+ assert_equals(report.body.feature, "fullscreen");
+ assert_equals(report.body.disposition, "report");
+};
+
+promise_test(async t => {
+ const report = new Promise(resolve => {
+ new ReportingObserver((reports, observer) => resolve([reports, observer]),
+ {types: ['feature-policy']}).observe();
+ });
+ await test_driver.bless('Activate document for fullscreen');
+ await document.getElementById('fs').requestFullscreen();
+ check_report_format(await report);
+ document.exitFullscreen();
+}, "Fullscreen report only mode");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/fullscreen-report-only.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/fullscreen-report-only.html.headers
new file mode 100644
index 00000000000..33defa88f6e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/fullscreen-report-only.html.headers
@@ -0,0 +1 @@
+Feature-Policy: fullscreen-report-only 'none'
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/fullscreen-reporting.html b/tests/wpt/web-platform-tests/feature-policy/reporting/fullscreen-reporting.html
index 83d97c91fab..4190fdd1926 100644
--- a/tests/wpt/web-platform-tests/feature-policy/reporting/fullscreen-reporting.html
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/fullscreen-reporting.html
@@ -9,18 +9,19 @@
<script>
var check_report_format = (reports, observer) => {
let report = reports[0];
- assert_equals(report.type, "feature-policy");
+ assert_equals(report.type, "feature-policy-violation");
assert_equals(report.url, document.location.href);
- assert_equals(report.body.feature, "fullscreen");
+ assert_equals(report.body.featureId, "fullscreen");
+ assert_equals(report.body.disposition, "enforce");
assert_equals(report.body.sourceFile, document.location.href);
- assert_equals(typeof report.body.message, "string");
assert_equals(typeof report.body.lineNumber, "number");
assert_equals(typeof report.body.columnNumber, "number");
+ assert_equals(report.body.disposition, "enforce");
};
async_test(t => {
new ReportingObserver(t.step_func_done(check_report_format),
- {types: ['feature-policy']}).observe();
+ {types: ['feature-policy-violation']}).observe();
document.getElementById('fs').requestFullscreen().then(t.unreached_func(
"Fullscreen should not be allowed in this document.")).catch(()=>{});
}, "Fullscreen Report Format");
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/generic-sensor-report-only.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/generic-sensor-report-only.https.html
new file mode 100644
index 00000000000..deb6adeb736
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/generic-sensor-report-only.https.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <script src='/resources/testharness.js'></script>
+ <script src='/resources/testharnessreport.js'></script>
+ </head>
+ <body>
+ <script>
+var sensor_features_verified = {
+ "accelerometer": false,
+ "ambient-light-sensor": false,
+ "magnetometer": false,
+ "gyroscope": false
+};
+
+var check_report_format = function(reports, observer) {
+ // Check each report in this batch. This observer callback may be called
+ // multiple times before all reports have been processed.
+ for (const report of reports) {
+
+ // Validate that the reported feature is one of the sensor features, and that
+ // we have not seen a report for this feature before.
+ assert_true(sensor_features_verified.hasOwnProperty(report.body.feature));
+ assert_false(sensor_features_verified[report.body.feature]);
+
+ // Validate the remainder of the report
+ assert_equals(report.type, "feature-policy");
+ assert_equals(report.url, document.location.href);
+ assert_equals(report.body.disposition, "report");
+ assert_equals(report.body.sourceFile, document.location.href);
+ assert_equals(typeof report.body.message, "string");
+ assert_equals(typeof report.body.lineNumber, "number");
+ assert_equals(typeof report.body.columnNumber, "number");
+
+ sensor_features_verified[report.body.feature] = true;
+ }
+
+ // Test is only done when reports for all features have been seen
+ for (let result of Object.values(sensor_features_verified)) {
+ if (!result)
+ return;
+ }
+ this.done();
+};
+
+async_test(t => {
+ new ReportingObserver(t.step_func(check_report_format),
+ {types: ['feature-policy']}).observe();
+ new Accelerometer();
+ new AmbientLightSensor();
+ new Gyroscope();
+ new Magnetometer();
+}, "Generic Sensor report only mode");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/generic-sensor-report-only.https.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/generic-sensor-report-only.https.html.headers
new file mode 100644
index 00000000000..26605eb0fa6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/generic-sensor-report-only.https.html.headers
@@ -0,0 +1 @@
+Feature-Policy: ambient-light-sensor-report-only 'none'; accelerometer-report-only 'none'; gyroscope-report-only 'none'; magnetometer-report-only 'none'
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/generic-sensor-reporting.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/generic-sensor-reporting.https.html
index c60e3e81a1d..517c7f68721 100644
--- a/tests/wpt/web-platform-tests/feature-policy/reporting/generic-sensor-reporting.https.html
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/generic-sensor-reporting.https.html
@@ -26,6 +26,7 @@ var check_report_format = function(reports, observer) {
// Validate the remainder of the report
assert_equals(report.type, "feature-policy");
assert_equals(report.url, document.location.href);
+ assert_equals(report.body.disposition, "enforce");
assert_equals(report.body.sourceFile, document.location.href);
assert_equals(typeof report.body.message, "string");
assert_equals(typeof report.body.lineNumber, "number");
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/geolocation-report-only.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/geolocation-report-only.https.html
new file mode 100644
index 00000000000..cf2a75b766c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/geolocation-report-only.https.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <script src='/resources/testharness.js'></script>
+ <script src='/resources/testharnessreport.js'></script>
+ </head>
+ <body>
+ <script>
+var check_report_format = ([reports, observer]) => {
+ let report = reports[0];
+ assert_equals(report.type, "feature-policy");
+ assert_equals(report.body.feature, "geolocation");
+ assert_equals(report.body.disposition, "report");
+};
+
+promise_test(async t => {
+ const report = new Promise(resolve => {
+ new ReportingObserver((reports, observer) => resolve([reports, observer]),
+ {types: ['feature-policy']}).observe();
+ });
+ try {
+ await new Promise((resolve, reject) => {
+ navigator.geolocation.getCurrentPosition(resolve, reject);
+ });
+ check_report_format(await report);
+ } catch (err) {
+ // In case the getCurrentPosition call was rejected due to user permissions,
+ // the report should be generated anyway. Wait for it and check the format
+ // before failing this test.
+ check_report_format(await report);
+ throw err;
+ }
+}, "Geolocation report only mode");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/geolocation-report-only.https.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/geolocation-report-only.https.html.headers
new file mode 100644
index 00000000000..fc9859000f5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/geolocation-report-only.https.html.headers
@@ -0,0 +1 @@
+Feature-Policy: geolocation-report-only 'none'
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/geolocation-reporting.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/geolocation-reporting.https.html
index 22e258563b7..05445fc1f1c 100644
--- a/tests/wpt/web-platform-tests/feature-policy/reporting/geolocation-reporting.https.html
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/geolocation-reporting.https.html
@@ -10,17 +10,19 @@ var t = async_test("Geolocation Report Format");
var check_report_format = (reports, observer) => {
let report = reports[0];
- assert_equals(report.type, "feature-policy");
+ assert_equals(report.type, "feature-policy-violation");
assert_equals(report.url, document.location.href);
- assert_equals(report.body.feature, "geolocation");
+ assert_equals(report.body.featureId, "geolocation");
+ assert_equals(report.body.disposition, "enforce");
assert_equals(report.body.sourceFile, document.location.href);
assert_equals(typeof report.body.message, "string");
assert_equals(typeof report.body.lineNumber, "number");
assert_equals(typeof report.body.columnNumber, "number");
+ assert_equals(report.body.disposition, "enforce");
};
new ReportingObserver(t.step_func_done(check_report_format),
- {types: ['feature-policy']}).observe();
+ {types: ['feature-policy-violation']}).observe();
navigator.geolocation.getCurrentPosition(
t.unreached_func("geolocation should be disabled in this document"),
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/microphone-report-only.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/microphone-report-only.https.html
new file mode 100644
index 00000000000..2d7b4d960d8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/microphone-report-only.https.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <script src='/resources/testharness.js'></script>
+ <script src='/resources/testharnessreport.js'></script>
+ <script src='/resources/testdriver.js'></script>
+ <script src="/resources/testdriver-vendor.js"></script>
+ </head>
+ <body>
+ <script>
+var check_report_format = ([reports, observer]) => {
+ let report = reports[0];
+ assert_equals(report.type, "feature-policy");
+ assert_equals(report.body.feature, "microphone");
+ assert_equals(report.body.disposition, "report");
+};
+
+promise_test(async t => {
+ const report = new Promise(resolve => {
+ new ReportingObserver((reports, observer) => resolve([reports, observer]),
+ {types: ['feature-policy']}).observe();
+ });
+ await test_driver.bless('Activate document for user media');
+ await navigator.mediaDevices.getUserMedia({audio: true});
+ check_report_format(await report);
+}, "Microphone report only mode");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/microphone-report-only.https.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/microphone-report-only.https.html.headers
new file mode 100644
index 00000000000..7673d05b948
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/microphone-report-only.https.html.headers
@@ -0,0 +1 @@
+Feature-Policy: microphone-report-only 'none'
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/microphone-reporting.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/microphone-reporting.https.html
index 7347a2332bc..246484fd6cf 100644
--- a/tests/wpt/web-platform-tests/feature-policy/reporting/microphone-reporting.https.html
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/microphone-reporting.https.html
@@ -10,17 +10,18 @@ var t = async_test("Microphone Report Format");
var check_report_format = (reports, observer) => {
let report = reports[0];
- assert_equals(report.type, "feature-policy");
+ assert_equals(report.type, "feature-policy-violation");
assert_equals(report.url, document.location.href);
- assert_equals(report.body.feature, "microphone");
+ assert_equals(report.body.featureId, "microphone");
+ assert_equals(report.body.disposition, "enforce");
assert_equals(report.body.sourceFile, document.location.href);
- assert_equals(typeof report.body.message, "string");
assert_equals(typeof report.body.lineNumber, "number");
assert_equals(typeof report.body.columnNumber, "number");
+ assert_equals(report.body.disposition, "enforce");
};
new ReportingObserver(t.step_func_done(check_report_format),
- {types: ['feature-policy']}).observe();
+ {types: ['feature-policy-violation']}).observe();
navigator.mediaDevices.getUserMedia({audio: true}).then(
t.unreached_func("UserMedia microphone access should not be allowed in this document.")
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/midi-report-only.html b/tests/wpt/web-platform-tests/feature-policy/reporting/midi-report-only.html
new file mode 100644
index 00000000000..e466ce0dc41
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/midi-report-only.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <script src='/resources/testharness.js'></script>
+ <script src='/resources/testharnessreport.js'></script>
+ </head>
+ <body>
+ <script>
+var check_report_format = ([reports, observer]) => {
+ let report = reports[0];
+ assert_equals(report.type, "feature-policy");
+ assert_equals(report.body.feature, "midi");
+ assert_equals(report.body.disposition, "report");
+};
+
+promise_test(async t => {
+ const report = new Promise(resolve => {
+ new ReportingObserver((reports, observer) => resolve([reports, observer]),
+ {types: ['feature-policy']}).observe();
+ });
+ try {
+ await navigator.requestMIDIAccess();
+ check_report_format(await report);
+ } catch (err) {
+ // In case the requestMIDIAccess call was rejected due to user permissions,
+ // the report should be generated anyway. Wait for it and check the format
+ // before failing this test.
+ check_report_format(await report);
+ throw err;
+ }
+}, "MIDI report only mode");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/midi-report-only.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/midi-report-only.html.headers
new file mode 100644
index 00000000000..3c6a2d4fbb3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/midi-report-only.html.headers
@@ -0,0 +1 @@
+Feature-Policy: midi-report-only 'none'
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/midi-reporting.html b/tests/wpt/web-platform-tests/feature-policy/reporting/midi-reporting.html
index 8303b7adce4..c5627e5a213 100644
--- a/tests/wpt/web-platform-tests/feature-policy/reporting/midi-reporting.html
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/midi-reporting.html
@@ -8,19 +8,20 @@
<script>
var check_report_format = (reports, observer) => {
let report = reports[0];
- assert_equals(report.type, "feature-policy");
+ assert_equals(report.type, "feature-policy-violation");
assert_equals(report.url, document.location.href);
- assert_equals(report.body.feature, "midi");
+ assert_equals(report.body.featureId, "midi");
+ assert_equals(report.body.disposition, "enforce");
assert_equals(report.body.sourceFile, document.location.href);
- assert_equals(typeof report.body.message, "string");
assert_equals(typeof report.body.lineNumber, "number");
assert_equals(typeof report.body.columnNumber, "number");
+ assert_equals(report.body.disposition, "enforce");
};
promise_test(async (t) => {
const report = new Promise(resolve => {
new ReportingObserver((reports, observer) => resolve([reports, observer]),
- {types: ['feature-policy']}).observe();
+ {types: ['feature-policy-violation']}).observe();
});
await promise_rejects(t, 'SecurityError', navigator.requestMIDIAccess(),
"MIDI device access should not be allowed in this document.");
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/payment-report-only.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/payment-report-only.https.html
new file mode 100644
index 00000000000..6a7678b51e7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/payment-report-only.https.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <script src='/resources/testharness.js'></script>
+ <script src='/resources/testharnessreport.js'></script>
+ </head>
+ <body>
+ <script>
+var check_report_format = ([reports, observer]) => {
+ let report = reports[0];
+ assert_equals(report.type, "feature-policy");
+ assert_equals(report.body.feature, "payment");
+ assert_equals(report.body.disposition, "report");
+};
+
+promise_test(async t => {
+ const report = new Promise(resolve => {
+ new ReportingObserver((reports, observer) => resolve([reports, observer]),
+ {types: ['feature-policy']}).observe();
+ });
+ try {
+ const request = new PaymentRequest(
+ [{ supportedMethods: 'basic-card' }],
+ { total: { label: 'Total', amount: { currency: 'USD', value: 0 }}},
+ {});
+ await request.show()
+ check_report_format(await report);
+ } catch (err) {
+ // In case the show call was rejected, the report should be generated
+ // anyway. Wait for it and check the format before failing this test.
+ check_report_format(await report);
+ throw err;
+ }
+}, "PaymentRequest report only mode");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/payment-report-only.https.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/payment-report-only.https.html.headers
new file mode 100644
index 00000000000..6411478e4ca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/payment-report-only.https.html.headers
@@ -0,0 +1 @@
+Feature-Policy: payment-report-only 'none'
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/payment-reporting.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/payment-reporting.https.html
index 03eaebea58f..828054a6caf 100644
--- a/tests/wpt/web-platform-tests/feature-policy/reporting/payment-reporting.https.html
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/payment-reporting.https.html
@@ -10,17 +10,18 @@ var t = async_test("PaymentRequest Report Format");
var check_report_format = (reports, observer) => {
let report = reports[0];
- assert_equals(report.type, "feature-policy");
+ assert_equals(report.type, "feature-policy-violation");
assert_equals(report.url, document.location.href);
- assert_equals(report.body.feature, "payment");
+ assert_equals(report.body.featureId, "payment");
+ assert_equals(report.body.disposition, "enforce");
assert_equals(report.body.sourceFile, document.location.href);
- assert_equals(typeof report.body.message, "string");
assert_equals(typeof report.body.lineNumber, "number");
assert_equals(typeof report.body.columnNumber, "number");
+ assert_equals(report.body.disposition, "enforce");
};
new ReportingObserver(t.step_func_done(check_report_format),
- {types: ['feature-policy']}).observe();
+ {types: ['feature-policy-violation']}).observe();
t.step_func(() => {
assert_throws('SecurityError',
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-report-only.html b/tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-report-only.html
new file mode 100644
index 00000000000..157670f2cab
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-report-only.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <script src='/common/media.js'></script>
+ <script src='/resources/testharness.js'></script>
+ <script src='/resources/testharnessreport.js'></script>
+ <script src="/resources/testdriver.js"></script>
+ <script src="/resources/testdriver-vendor.js"></script>
+ <script src='../resources/picture-in-picture.js'></script>
+ </head>
+ <body>
+ <script>
+const check_report_format = ([reports, observer]) => {
+ const report = reports[0];
+ assert_equals(report.type, "feature-policy");
+ assert_equals(report.body.feature, "picture-in-picture");
+ assert_equals(report.body.disposition, "report");
+};
+
+const loadVideo = () => new Promise(resolve => {
+ const video = document.createElement('video');
+ video.src = getVideoURI('/media/movie_5');
+ video.addEventListener('loadedmetadata', () => {
+ resolve(video);
+ }, { once: true });
+});
+
+promise_pip_test(async (t) => {
+ const report = new Promise(resolve => {
+ new ReportingObserver((reports, observer) => resolve([reports, observer]),
+ {types: ['feature-policy']}).observe();
+ });
+ const videoElement = await loadVideo();
+ await test_driver.bless('picture-in-picture');
+ await videoElement.requestPictureInPicture();
+ check_report_format(await report);
+}, "Picture-in-Picture report only mode");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-report-only.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-report-only.html.headers
new file mode 100644
index 00000000000..0df90a3e94a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-report-only.html.headers
@@ -0,0 +1 @@
+Feature-Policy: picture-in-picture-report-only 'none'
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-reporting.html b/tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-reporting.html
index e3cbf103687..f15f47c549d 100644
--- a/tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-reporting.html
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-reporting.html
@@ -15,6 +15,7 @@ const check_report_format = (reports, observer) => {
assert_equals(report.type, "feature-policy");
assert_equals(report.url, document.location.href);
assert_equals(report.body.feature, "picture-in-picture");
+ assert_equals(report.body.disposition, "enforce");
assert_equals(report.body.sourceFile, document.location.href);
assert_equals(typeof report.body.message, "string");
assert_equals(typeof report.body.lineNumber, "number");
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/sync-xhr-report-only.html b/tests/wpt/web-platform-tests/feature-policy/reporting/sync-xhr-report-only.html
new file mode 100644
index 00000000000..f841f63d6ed
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/sync-xhr-report-only.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <script src='/resources/testharness.js'></script>
+ <script src='/resources/testharnessreport.js'></script>
+ </head>
+ <body>
+ <script>
+const check_report_format = ([reports, observer]) => {
+ const report = reports[0];
+ assert_equals(report.type, "feature-policy");
+ assert_equals(report.body.feature, "sync-xhr");
+ assert_equals(report.body.disposition, "report");
+};
+
+promise_test(async t => {
+ const report = new Promise(resolve => {
+ new ReportingObserver((reports, observer) => resolve([reports, observer]),
+ {types: ['feature-policy']}).observe();
+ });
+ const xhr = new XMLHttpRequest();
+ xhr.open("GET", document.location.href, false);
+ xhr.send();
+ check_report_format(await report);
+}, "Sync-xhr report only mode");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/sync-xhr-report-only.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/sync-xhr-report-only.html.headers
new file mode 100644
index 00000000000..79a82cfb635
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/sync-xhr-report-only.html.headers
@@ -0,0 +1 @@
+Feature-Policy: sync-xhr-report-only 'none'
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/sync-xhr-reporting.html b/tests/wpt/web-platform-tests/feature-policy/reporting/sync-xhr-reporting.html
index 2c76390847b..82200cdfbcc 100644
--- a/tests/wpt/web-platform-tests/feature-policy/reporting/sync-xhr-reporting.html
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/sync-xhr-reporting.html
@@ -10,17 +10,18 @@ var t = async_test("Sync-xhr Report Format");
var check_report_format = (reports, observer) => {
let report = reports[0];
- assert_equals(report.type, "feature-policy");
+ assert_equals(report.type, "feature-policy-violation");
assert_equals(report.url, document.location.href);
- assert_equals(report.body.feature, "sync-xhr");
+ assert_equals(report.body.featureId, "sync-xhr");
+ assert_equals(report.body.disposition, "enforce");
assert_equals(report.body.sourceFile, document.location.href);
- assert_equals(typeof report.body.message, "string");
assert_equals(typeof report.body.lineNumber, "number");
assert_equals(typeof report.body.columnNumber, "number");
+ assert_equals(report.body.disposition, "enforce");
};
new ReportingObserver(t.step_func_done(check_report_format),
- {types: ['feature-policy']}).observe();
+ {types: ['feature-policy-violation']}).observe();
t.step_func(() => {
var xhr = new XMLHttpRequest();
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/unsized-media-reporting.html b/tests/wpt/web-platform-tests/feature-policy/reporting/unsized-media-reporting.html
index 8bd79318950..00a15587d44 100644
--- a/tests/wpt/web-platform-tests/feature-policy/reporting/unsized-media-reporting.html
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/unsized-media-reporting.html
@@ -9,15 +9,15 @@
<script>
var check_report_format = (reports, observer) => {
let report = reports[0];
- assert_equals(report.type, "feature-policy");
+ assert_equals(report.type, "feature-policy-violation");
assert_equals(report.url, document.location.href);
- assert_equals(report.body.feature, "unsized-media");
+ assert_equals(report.body.featureId, "unsized-media");
assert_equals(typeof report.body.message, "string");
};
async_test(t => {
new ReportingObserver(t.step_func_done(check_report_format),
- {types: ['feature-policy'], buffered: true}).observe();
+ {types: ['feature-policy-violation'], buffered: true}).observe();
}, "Unsized-media Report Format");
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/usb-report-only.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/usb-report-only.https.html
new file mode 100644
index 00000000000..e44c6c528fd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/usb-report-only.https.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <script src='/resources/testharness.js'></script>
+ <script src='/resources/testharnessreport.js'></script>
+ <script src='/resources/testdriver.js'></script>
+ <script src="/resources/testdriver-vendor.js"></script>
+ </head>
+ <body>
+ <div id='fs'></div>
+ <script>
+var check_report_format = ([reports, observer]) => {
+ let report = reports[0];
+ assert_equals(report.type, "feature-policy");
+ assert_equals(report.body.feature, "usb");
+ assert_equals(report.body.disposition, "report");
+};
+
+promise_test(async t => {
+ const report = new Promise(resolve => {
+ new ReportingObserver((reports, observer) => resolve([reports, observer]),
+ {types: ['feature-policy']}).observe();
+ });
+ await test_driver.bless('Activate document for USB');
+ await navigator.usb.getDevices();
+ check_report_format(await report);
+}, "USB report only mode");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/usb-report-only.https.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/usb-report-only.https.html.headers
new file mode 100644
index 00000000000..bd2e3c6fe50
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/usb-report-only.https.html.headers
@@ -0,0 +1 @@
+Feature-Policy: usb-report-only 'none'
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/usb-reporting.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/usb-reporting.https.html
index f90c602e449..0ddff455537 100644
--- a/tests/wpt/web-platform-tests/feature-policy/reporting/usb-reporting.https.html
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/usb-reporting.https.html
@@ -10,17 +10,18 @@ var t = async_test("USB Report Format");
var check_report_format = (reports, observer) => {
let report = reports[0];
- assert_equals(report.type, "feature-policy");
+ assert_equals(report.type, "feature-policy-violation");
assert_equals(report.url, document.location.href);
- assert_equals(report.body.feature, "usb");
+ assert_equals(report.body.featureId, "usb");
+ assert_equals(report.body.disposition, "enforce");
assert_equals(report.body.sourceFile, document.location.href);
- assert_equals(typeof report.body.message, "string");
assert_equals(typeof report.body.lineNumber, "number");
assert_equals(typeof report.body.columnNumber, "number");
+ assert_equals(report.body.disposition, "enforce");
};
new ReportingObserver(t.step_func_done(check_report_format),
- {types: ['feature-policy']}).observe();
+ {types: ['feature-policy-violation']}).observe();
navigator.usb.getDevices().then(
t.unreached_func("USB device access should not be allowed in this document.")
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/vr-report-only.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/vr-report-only.https.html
new file mode 100644
index 00000000000..91016d38853
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/vr-report-only.https.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <script src='/resources/testharness.js'></script>
+ <script src='/resources/testharnessreport.js'></script>
+ </head>
+ <body>
+ <script>
+const check_report_format = ([reports, observer]) => {
+ const report = reports[0];
+ assert_equals(report.type, "feature-policy");
+ assert_equals(report.url, document.location.href);
+ assert_equals(report.body.feature, "vr");
+ assert_equals(report.body.disposition, "report");
+ assert_equals(report.body.sourceFile, document.location.href);
+ assert_equals(typeof report.body.message, "string");
+ assert_equals(typeof report.body.lineNumber, "number");
+ assert_equals(typeof report.body.columnNumber, "number");
+};
+
+promise_test(async t => {
+ const report = new Promise(resolve => {
+ new ReportingObserver((reports, observer) => resolve([reports, observer]),
+ {types: ['feature-policy']}).observe();
+ });
+ await navigator.getVRDisplays();
+ check_report_format(await report);
+}, "VR report only mode");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/vr-report-only.https.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/vr-report-only.https.html.headers
new file mode 100644
index 00000000000..b54cad2af94
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/vr-report-only.https.html.headers
@@ -0,0 +1 @@
+Feature-Policy: vr-report-only 'none'
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/vr-reporting.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/vr-reporting.https.html
index 12cae052a16..e0bb6353117 100644
--- a/tests/wpt/web-platform-tests/feature-policy/reporting/vr-reporting.https.html
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/vr-reporting.https.html
@@ -8,19 +8,20 @@
<script>
var check_report_format = (reports, observer) => {
let report = reports[0];
- assert_equals(report.type, "feature-policy");
+ assert_equals(report.type, "feature-policy-violation");
assert_equals(report.url, document.location.href);
- assert_equals(report.body.feature, "vr");
+ assert_equals(report.body.featureId, "vr");
+ assert_equals(report.body.disposition, "enforce");
assert_equals(report.body.sourceFile, document.location.href);
- assert_equals(typeof report.body.message, "string");
assert_equals(typeof report.body.lineNumber, "number");
assert_equals(typeof report.body.columnNumber, "number");
+ assert_equals(report.body.disposition, "enforce");
};
promise_test(async (t) => {
const report = new Promise(resolve => {
new ReportingObserver((reports, observer) => resolve([reports, observer]),
- {types: ['feature-policy']}).observe();
+ {types: ['feature-policy-violation']}).observe();
});
await promise_rejects(t, 'SecurityError', navigator.getVRDisplays(),
"VR device access should not be allowed in this document.");
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/xr-report-only.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/xr-report-only.https.html
new file mode 100644
index 00000000000..5d4fb062c1e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/xr-report-only.https.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <script src='/resources/testharness.js'></script>
+ <script src='/resources/testharnessreport.js'></script>
+ </head>
+ <body>
+ <script>
+const check_report_format = ([reports, observer]) => {
+ const report = reports[0];
+ assert_equals(report.type, "feature-policy");
+ assert_equals(report.url, document.location.href);
+ assert_equals(report.body.feature, "vr");
+ assert_equals(report.body.disposition, "report");
+ assert_equals(report.body.sourceFile, document.location.href);
+ assert_equals(typeof report.body.message, "string");
+ assert_equals(typeof report.body.lineNumber, "number");
+ assert_equals(typeof report.body.columnNumber, "number");
+};
+
+promise_test(async t => {
+ const report = new Promise(resolve => {
+ new ReportingObserver((reports, observer) => resolve([reports, observer]),
+ {types: ['feature-policy']}).observe();
+ });
+ try {
+ await navigator.xr.requestDevice();
+ } catch (err) {
+ // If no XR devices are available, requestDevice() will throw NotFoundError,
+ // but the report should be generated anyway.
+ assert_equals(err.name, 'NotFoundError');
+ }
+ check_report_format(await report);
+}, "XR report only mode");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/xr-report-only.https.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/xr-report-only.https.html.headers
new file mode 100644
index 00000000000..b54cad2af94
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/xr-report-only.https.html.headers
@@ -0,0 +1 @@
+Feature-Policy: vr-report-only 'none'
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html
index a7a122237bb..0844860ad79 100644
--- a/tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html
@@ -8,19 +8,20 @@
<script>
var check_report_format = (reports, observer) => {
let report = reports[0];
- assert_equals(report.type, "feature-policy");
+ assert_equals(report.type, "feature-policy-violation");
assert_equals(report.url, document.location.href);
- assert_equals(report.body.feature, "vr");
+ assert_equals(report.body.featureId, "vr");
+ assert_equals(report.body.disposition, "enforce");
assert_equals(report.body.sourceFile, document.location.href);
- assert_equals(typeof report.body.message, "string");
assert_equals(typeof report.body.lineNumber, "number");
assert_equals(typeof report.body.columnNumber, "number");
+ assert_equals(report.body.disposition, "enforce");
};
promise_test(async (t) => {
const report = new Promise(resolve => {
new ReportingObserver((reports, observer) => resolve([reports, observer]),
- {types: ['feature-policy']}).observe();
+ {types: ['feature-policy-violation']}).observe();
});
await promise_rejects(t, 'SecurityError', navigator.xr.requestDevice(),
"XR device access should not be allowed in this document.");
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html.headers
index d021af75636..ea8722131ce 100644
--- a/tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html.headers
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html.headers
@@ -1 +1 @@
-Feature-Policy: vr 'none'
+Feature-Policy: xr 'none'
diff --git a/tests/wpt/web-platform-tests/fetch/api/headers/headers-no-cors.window.js b/tests/wpt/web-platform-tests/fetch/api/headers/headers-no-cors.window.js
index aa6562b7d37..ebf0142e280 100644
--- a/tests/wpt/web-platform-tests/fetch/api/headers/headers-no-cors.window.js
+++ b/tests/wpt/web-platform-tests/fetch/api/headers/headers-no-cors.window.js
@@ -1,5 +1,32 @@
promise_test(() => fetch("../cors/resources/not-cors-safelisted.json").then(res => res.json().then(runTests)), "Loading data…");
+const longValue = "s".repeat(127);
+
+[
+ {
+ "headers": ["accept", "accept-language", "content-language"],
+ "values": [longValue, "", longValue]
+ },
+ {
+ "headers": ["content-type"],
+ "values": ["text/plain;" + "s".repeat(116), "text/plain"]
+ }
+].forEach(testItem => {
+ testItem.headers.forEach(header => {
+ test(() => {
+ const noCorsHeaders = new Request("about:blank", { mode: "no-cors" }).headers;
+ testItem.values.forEach((value) => {
+ noCorsHeaders.append(header, value);
+ assert_equals(noCorsHeaders.get(header), testItem.values[0]);
+ });
+ noCorsHeaders.set(header, values.join(", "));
+ assert_equals(noCorsHeaders.get(header), testItem.values[0]);
+ noCorsHeaders.delete(header);
+ assert_false(noCorsHeaders.has(header));
+ }, "\"no-cors\" Headers object cannot have " + header + " set to " + testItem.values.join(", "));
+ });
+});
+
function runTests(testArray) {
testArray = testArray.concat([
["dpr", "2"],
@@ -14,6 +41,8 @@ function runTests(testArray) {
const noCorsHeaders = new Request("about:blank", { mode: "no-cors" }).headers;
noCorsHeaders.append(headerName, headerValue);
assert_false(noCorsHeaders.has(headerName));
+ noCorsHeaders.set(headerName, headerValue);
+ assert_false(noCorsHeaders.has(headerName));
}, "\"no-cors\" Headers object cannot have " + headerName + "/" + headerValue + " as header");
});
}
diff --git a/tests/wpt/web-platform-tests/fullscreen/rendering/fullscreen-css-transition.html b/tests/wpt/web-platform-tests/fullscreen/rendering/fullscreen-css-transition.html
new file mode 100644
index 00000000000..1d50502ee3b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/fullscreen/rendering/fullscreen-css-transition.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<title>Transitions should not be stopped by going fullscreen</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<style>
+ #trans {
+ transition: color steps(1, end) 100s;
+ color: green;
+ }
+</style>
+<div id="trans">Should be green</div>
+<script>
+ async_test(t => {
+ document.onfullscreenchange = t.step_func_done(() => {
+ assert_equals(document.fullscreenElement, trans);
+ assert_equals(getComputedStyle(trans).color, "rgb(0, 128, 0)", "Transition is in progress - still green");
+ });
+ trans.addEventListener('click', e => {
+ trans.style.color = "red";
+ trans.offsetTop;
+ trans.requestFullscreen();
+ }, {once: true});
+ test_driver.click(trans);
+ });
+</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/time-focus-dynamic-value-change.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/time-focus-dynamic-value-change.html
new file mode 100644
index 00000000000..95ccb1ff69b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/time-focus-dynamic-value-change.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>input type=date and input type=datetime handle focus state correctly</title>
+<link rel="help" href="https://html.spec.whatwg.org/multipage/input.html#time-state-(type=time)">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1450219">
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<input type="time">
+<input type="text">
+<script>
+let t = async_test("Time input handles focus correctly when value changes");
+window.onload = t.step_func_done(function() {
+ let time = document.querySelector("input[type=time]");
+ let text = document.querySelector("input[type=text]");
+ time.focus();
+ assert_true(time.matches(":focus"));
+ assert_equals(document.activeElement, time);
+ time.value = "08:10:10";
+ assert_true(time.matches(":focus"));
+ assert_equals(document.activeElement, time);
+ time.value = "08:10";
+ assert_true(time.matches(":focus"));
+ assert_equals(document.activeElement, time);
+ text.focus();
+ assert_true(text.matches(":focus"));
+ assert_false(time.matches(":focus"));
+ assert_equals(document.activeElement, text);
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini
index 8edb44d4148..6644d52d1ff 100644
--- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini
@@ -1,3 +1,3 @@
[elementPosition.html]
- [TestDriver actions: element position]
- expected: FAIL
+ expected:
+ if product == "chrome" or product == "safari" or product == "safari_webdriver": ERROR
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/eventOrder.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/eventOrder.html.ini
index 8c60a97ad95..bfb5c0ae4bd 100644
--- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/eventOrder.html.ini
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/eventOrder.html.ini
@@ -1,3 +1,3 @@
[eventOrder.html]
- [TestDriver actions: event order]
- expected: FAIL
+ expected:
+ if product == "chrome" or product == "safari" or product == "safari_webdriver": ERROR
diff --git a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/elementPosition.html b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/elementPosition.html
index ab9fb31ad09..145852e7b51 100644
--- a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/elementPosition.html
+++ b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/elementPosition.html
@@ -34,7 +34,7 @@ async_test(t => {
let div = document.getElementById("test");
let actions = new test_driver.Actions()
.pointerMove(0, 0, {origin: test})
- .pointerDown(0, 0, {origin: test})
+ .pointerDown()
.pointerUp()
.send()
.then(t.step_func_done(() => assert_array_equals(events, [50, 25])))
diff --git a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/eventOrder.html b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/eventOrder.html
index bd7fef41e9a..c85b861c7fd 100644
--- a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/eventOrder.html
+++ b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/eventOrder.html
@@ -17,17 +17,19 @@ let events = [];
async_test(t => {
Array.prototype.forEach.call(document.getElementsByTagName("button"),
- (x) => x.addEventListener("pointerdown", () => {events.push(x.id)}));
+ (x) => x.addEventListener("mousedown", () => {events.push(x.id)}));
let button_a = document.getElementById("a");
let button_b = document.getElementById("b");
let actions = new test_driver.Actions()
- .addPointer("pointer1", "touch")
- .addPointer("pointer2", "touch")
- .pointerDown(0, 0, {origin: button_a, sourceName: "pointer1"})
- .pointerDown(0, 0, {origin: button_b, sourceName: "pointer2"})
- .pointerUp({sourceName: "pointer1"})
+ .addPointer("pointer1")
+ .addPointer("pointer2")
+ .pointerMove(0, 0, {origin: button_a, sourceName: "pointer1"})
+ .pointerMove(0, 0, {origin: button_b, sourceName: "pointer2"})
+ .pointerDown({sourceName: "pointer2"})
+ .pointerDown({sourceName: "pointer1"})
.pointerUp({sourceName: "pointer2"})
+ .pointerUp({sourceName: "pointer1"})
.send()
.then(t.step_func_done(() => assert_array_equals(events, ["a", "b"])))
.catch(e => t.step_func(() => assert_unreached("Actions sequence failed " + e)));
diff --git a/tests/wpt/web-platform-tests/interfaces/geometry.idl b/tests/wpt/web-platform-tests/interfaces/geometry.idl
index 733a111e38b..b5b56e78054 100644
--- a/tests/wpt/web-platform-tests/interfaces/geometry.idl
+++ b/tests/wpt/web-platform-tests/interfaces/geometry.idl
@@ -156,6 +156,8 @@ interface DOMMatrixReadOnly {
optional unrestricted double originX = 0,
optional unrestricted double originY = 0,
optional unrestricted double originZ = 0);
+ [NewObject] DOMMatrix scaleNonUniform(optional unrestricted double scaleX = 1,
+ optional unrestricted double scaleY = 1);
[NewObject] DOMMatrix scale3d(optional unrestricted double scale = 1,
optional unrestricted double originX = 0,
optional unrestricted double originY = 0,
diff --git a/tests/wpt/web-platform-tests/lint.whitelist b/tests/wpt/web-platform-tests/lint.whitelist
index 99b1d6a2be1..dd90081c83e 100644
--- a/tests/wpt/web-platform-tests/lint.whitelist
+++ b/tests/wpt/web-platform-tests/lint.whitelist
@@ -311,6 +311,7 @@ SET TIMEOUT: resources/test/tests/functional/add_cleanup_async_rejection.html
SET TIMEOUT: resources/test/tests/functional/add_cleanup_async_rejection_after_load.html
SET TIMEOUT: resources/test/tests/functional/api-tests-1.html
SET TIMEOUT: resources/test/tests/functional/worker.js
+SET TIMEOUT: resources/test/tests/functional/worker-uncaught-allow.js
SET TIMEOUT: resources/test/tests/unit/exceptional-cases.html
SET TIMEOUT: resources/testharness.js
diff --git a/tests/wpt/web-platform-tests/longtask-timing/longtask-attributes.html b/tests/wpt/web-platform-tests/longtask-timing/longtask-attributes.html
index 6af90cd9eef..b5d44b0db5d 100644
--- a/tests/wpt/web-platform-tests/longtask-timing/longtask-attributes.html
+++ b/tests/wpt/web-platform-tests/longtask-timing/longtask-attributes.html
@@ -32,7 +32,7 @@
'Exactly one attribution entry is expected');
const attribution = longtask.attribution[0];
assert_equals(attribution.entryType, 'taskattribution');
- assert_equals(attribution.name, 'script');
+ assert_equals(attribution.name, 'unknown');
assert_equals(attribution.duration, 0);
assert_equals(attribution.startTime, 0);
assert_equals(attribution.containerId, '');
@@ -52,4 +52,4 @@
}, 'Performance longtask entries are observable.');
</script>
-</body> \ No newline at end of file
+</body>
diff --git a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-childiframe-crossorigin.html b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-childiframe-crossorigin.html
index 17b0fd2412b..aaabce5d79d 100644
--- a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-childiframe-crossorigin.html
+++ b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-childiframe-crossorigin.html
@@ -33,7 +33,7 @@
'Exactly one attribution entry is expected');
const attribution = longtask.attribution[0];
assert_equals(attribution.entryType, 'taskattribution');
- assert_equals(attribution.name, 'script');
+ assert_equals(attribution.name, 'unknown');
assert_equals(attribution.duration, 0);
assert_equals(attribution.startTime, 0);
assert_equals(attribution.containerId, 'child-iframe-id');
diff --git a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-childiframe.html b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-childiframe.html
index b7137043ad0..34b802cb696 100644
--- a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-childiframe.html
+++ b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-childiframe.html
@@ -38,7 +38,7 @@
'Exactly one attribution entry is expected');
const attribution = longtask.attribution[0];
assert_equals(attribution.entryType, 'taskattribution');
- assert_equals(attribution.name, 'script');
+ assert_equals(attribution.name, 'unknown');
assert_equals(attribution.duration, 0);
assert_equals(attribution.startTime, 0);
assert_equals(attribution.containerId, 'child-iframe-id');
diff --git a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-externalscript.html b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-externalscript.html
index 51c58afff05..076f0f22914 100644
--- a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-externalscript.html
+++ b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-externalscript.html
@@ -29,7 +29,7 @@
'Exactly one attribution entry is expected');
const attribution = longtask.attribution[0];
assert_equals(attribution.entryType, 'taskattribution');
- assert_equals(attribution.name, 'script');
+ assert_equals(attribution.name, 'unknown');
assert_equals(attribution.duration, 0);
assert_equals(attribution.startTime, 0);
assert_equals(attribution.containerId, '');
@@ -47,4 +47,4 @@
}
}, 'Performance longtask entries are observable.');
</script>
-</body> \ No newline at end of file
+</body>
diff --git a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-parentiframe.html b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-parentiframe.html
index 2e7a9990dd0..778edc1000f 100644
--- a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-parentiframe.html
+++ b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-parentiframe.html
@@ -15,7 +15,7 @@
window.addEventListener('message', t.step_func(e => {
assert_equals(e.data['entryType'], 'longtask');
assert_equals(e.data['frame-attribution'], 'same-origin-ancestor');
- assert_equals(e.data['task-attribution'], 'script');
+ assert_equals(e.data['task-attribution'], 'unknown');
assert_equals(e.data['containerId'], '');
assert_equals(e.data['containerName'], '');
assert_equals(e.data['containerSrc'], '');
diff --git a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-raf.html b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-raf.html
index 8a5a7290ac9..2d30ac36b96 100644
--- a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-raf.html
+++ b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-raf.html
@@ -29,7 +29,7 @@
'Exactly one attribution entry is expected');
const attribution = longtask.attribution[0];
assert_equals(attribution.entryType, 'taskattribution');
- assert_equals(attribution.name, 'script');
+ assert_equals(attribution.name, 'unknown');
assert_equals(attribution.duration, 0);
assert_equals(attribution.startTime, 0);
assert_equals(attribution.containerId, '');
diff --git a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-sibling-iframe-crossorigin.html b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-sibling-iframe-crossorigin.html
index cfcc1895a19..b73112e3abf 100644
--- a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-sibling-iframe-crossorigin.html
+++ b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-sibling-iframe-crossorigin.html
@@ -15,7 +15,7 @@
window.addEventListener('message', t.step_func(e => {
assert_equals(e.data['entryType'], 'longtask');
assert_equals(e.data['frame-attribution'], 'cross-origin-unreachable');
- assert_equals(e.data['task-attribution'], 'script');
+ assert_equals(e.data['task-attribution'], 'unknown');
assert_equals(e.data['containerId'], '');
assert_equals(e.data['containerName'], '');
assert_equals(e.data['containerSrc'], '');
diff --git a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-sibling-iframe.html b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-sibling-iframe.html
index e6041e48a66..b8a4270163a 100644
--- a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-sibling-iframe.html
+++ b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-sibling-iframe.html
@@ -15,7 +15,7 @@
window.addEventListener('message', t.step_func(e => {
assert_equals(e.data['entryType'], 'longtask');
assert_equals(e.data['frame-attribution'], 'same-origin');
- assert_equals(e.data['task-attribution'], 'script');
+ assert_equals(e.data['task-attribution'], 'unknown');
assert_equals(e.data['containerId'], 'longtask-iframe-id');
assert_equals(e.data['containerName'], 'longtask-iframe-name');
assert_equals(e.data['containerSrc'], 'resources/subframe-with-longtask.html');
diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_pointermove.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_pointermove-manual.html
index 4b168439a4e..cf1a1ee4ee8 100644
--- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_pointermove.html
+++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_pointermove-manual.html
@@ -7,9 +7,6 @@
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
- <script src="/resources/testdriver.js"></script>
- <script src="/resources/testdriver-actions.js"></script>
- <script src="/resources/testdriver-vendor.js"></script>
<!-- Additional helper script for common checks across event types -->
<script type="text/javascript" src="pointerevent_support.js"></script>
</head>
@@ -35,9 +32,6 @@
eventTested = true;
}
});
-
- // Inject the inputs to run this test.
- new test_driver.Actions().pointerMove(0, 0, {origin: target0}).send();
}
</script>
<h1>Pointer Events pointermove Tests</h1>
diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated-uncaught-allow.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated-uncaught-allow.html
new file mode 100644
index 00000000000..33543d0b4e7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated-uncaught-allow.html
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<meta name="variant" content="">
+<meta name="variant" content="?keep-promise">
+<title>Dedicated Worker Tests - Allowed Uncaught Exception</title>
+<script src="../../variants.js"></script>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+<h1>Dedicated Web Worker Tests - Allowed Uncaught Exception</h1>
+<p>Demonstrates running <tt>testharness</tt> based tests inside a dedicated web worker.
+<p>The test harness is expected to pass despite an uncaught exception in a worker because that worker is configured to allow uncaught exceptions.</p>
+<div id="log"></div>
+
+<script>
+test(function(t) {
+ assert_true("Worker" in self, "Browser should support Workers");
+ },
+ "Browser supports Workers");
+
+fetch_tests_from_worker(new Worker("worker-uncaught-allow.js"));
+</script>
+<script type="text/json" id="expected">
+{
+ "summarized_status": {
+ "status_string": "OK",
+ "message": null
+ },
+ "summarized_tests": [
+ {
+ "status_string": "PASS",
+ "name": "Browser supports Workers",
+ "properties": {},
+ "message": null
+ },
+ {
+ "status_string": "PASS",
+ "name": "onerror event is triggered",
+ "properties": {},
+ "message": null
+ }
+ ],
+ "type": "complete"
+}
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-uncaught-allow.js b/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-uncaught-allow.js
new file mode 100644
index 00000000000..957131a890e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-uncaught-allow.js
@@ -0,0 +1,17 @@
+importScripts("/resources/testharness.js");
+
+setup({allow_uncaught_exception:true});
+
+async_test(function(t) {
+ onerror = function() {
+ // Further delay the test's completion to ensure that the worker's
+ // `onerror` handler does not influence results in the parent context.
+ setTimeout(function() {
+ t.done();
+ }, 0);
+ };
+
+ setTimeout(function() {
+ throw new Error("This error is expected.");
+ }, 0);
+}, 'onerror event is triggered');
diff --git a/tests/wpt/web-platform-tests/resources/testdriver-actions.js b/tests/wpt/web-platform-tests/resources/testdriver-actions.js
index 82cac85347b..46c68858e45 100644
--- a/tests/wpt/web-platform-tests/resources/testdriver-actions.js
+++ b/tests/wpt/web-platform-tests/resources/testdriver-actions.js
@@ -22,14 +22,6 @@
}
Actions.prototype = {
- ButtonType: {
- LEFT: 0,
- MIDDLE: 1,
- RIGHT: 2,
- BACK: 3,
- FORWARD: 4,
- },
-
/**
* Generate the action sequence suitable for passing to
* test_driver.action_sequence
@@ -106,7 +98,7 @@
* @returns {Actions}
*/
addKeyboard: function(name, set=true) {
- this.createSource("key", name);
+ this.createSource("key", name, true);
if (set) {
this.setKeyboard(name);
}
@@ -133,7 +125,7 @@
* @returns {Actions}
*/
addPointer: function(name, pointerType="mouse", set=true) {
- this.createSource("pointer", name, {pointerType: pointerType});
+ this.createSource("pointer", name, true, {pointerType: pointerType});
if (set) {
this.setPointer(name);
}
@@ -233,9 +225,9 @@
* pointer source
* @returns {Actions}
*/
- pointerDown: function(x, y, {origin="viewport", button=this.ButtonType.LEFT, sourceName=null}={}) {
+ pointerDown: function({button=0, sourceName=null}={}) {
let source = this.getSource("pointer", sourceName);
- source.pointerDown(this, button, x, y, origin);
+ source.pointerDown(this, button);
return this;
},
@@ -247,7 +239,7 @@
* source
* @returns {Actions}
*/
- pointerUp: function({button=this.ButtonType.LEFT, sourceName=null}={}) {
+ pointerUp: function({button=0, sourceName=null}={}) {
let source = this.getSource("pointer", sourceName);
source.pointerUp(this, button);
return this;
@@ -367,12 +359,12 @@
return data;
},
- pointerDown: function(actions, button, x, y, origin) {
+ pointerDown: function(actions, button) {
let tick = actions.tickIdx;
if (this.actions.has(tick)) {
tick = actions.addTick().tickIdx;
}
- this.actions.set(tick, {type: "pointerDown", button, x, y, origin});
+ this.actions.set(tick, {type: "pointerDown", button});
},
pointerUp: function(actions, button) {
diff --git a/tests/wpt/web-platform-tests/resources/testdriver.js b/tests/wpt/web-platform-tests/resources/testdriver.js
index 8ffd765072c..e0741e8d61d 100644
--- a/tests/wpt/web-platform-tests/resources/testdriver.js
+++ b/tests/wpt/web-platform-tests/resources/testdriver.js
@@ -192,7 +192,7 @@
* @returns {Promise} fufiled after the actions are performed, or rejected in
* the cases the WebDriver command errors
*/
- action_sequence: function(actions) {
+ action_sequence(actions) {
return window.test_driver_internal.action_sequence(actions);
}
};
@@ -233,7 +233,7 @@
/**
* Send a sequence of pointer actions
*
- * @returns {Promise} fulfilled after actions are sent, rejected if any actions
+ * @returns {Promise} fufilled after actions are sent, rejected if any actions
* fail
*/
action_sequence: function(actions) {
diff --git a/tests/wpt/web-platform-tests/resources/testharness.js b/tests/wpt/web-platform-tests/resources/testharness.js
index 18a6f70beab..2e14c30730d 100644
--- a/tests/wpt/web-platform-tests/resources/testharness.js
+++ b/tests/wpt/web-platform-tests/resources/testharness.js
@@ -1904,7 +1904,9 @@ policies and contribution forms [3].
*/
function RemoteContext(remote, message_target, message_filter) {
this.running = true;
+ this.started = false;
this.tests = new Array();
+ this.early_exception = null;
var this_obj = this;
// If remote context is cross origin assigning to onerror is not
@@ -1943,6 +1945,21 @@ policies and contribution forms [3].
}
RemoteContext.prototype.remote_error = function(error) {
+ if (error.preventDefault) {
+ error.preventDefault();
+ }
+
+ // Defer interpretation of errors until the testing protocol has
+ // started and the remote test's `allow_uncaught_exception` property
+ // is available.
+ if (!this.started) {
+ this.early_exception = error;
+ } else if (!this.allow_uncaught_exception) {
+ this.report_uncaught(error);
+ }
+ };
+
+ RemoteContext.prototype.report_uncaught = function(error) {
var message = error.message || String(error);
var filename = (error.filename ? " " + error.filename: "");
// FIXME: Display remote error states separately from main document
@@ -1950,9 +1967,14 @@ policies and contribution forms [3].
tests.set_status(tests.status.ERROR,
"Error in remote" + filename + ": " + message,
error.stack);
+ };
- if (error.preventDefault) {
- error.preventDefault();
+ RemoteContext.prototype.start = function(data) {
+ this.started = true;
+ this.allow_uncaught_exception = data.properties.allow_uncaught_exception;
+
+ if (this.early_exception && !this.allow_uncaught_exception) {
+ this.report_uncaught(this.early_exception);
}
};
@@ -2002,6 +2024,7 @@ policies and contribution forms [3].
};
RemoteContext.prototype.message_handlers = {
+ start: RemoteContext.prototype.start,
test_state: RemoteContext.prototype.test_state,
result: RemoteContext.prototype.test_done,
complete: RemoteContext.prototype.remote_done
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/clients-get.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/clients-get.https.html
index 68c6d7f7ac0..b0527403908 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/clients-get.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/clients-get.https.html
@@ -49,6 +49,162 @@ promise_test(function(t) {
});
}, 'Test Clients.get()');
+promise_test((t) => {
+ let frame = null;
+ const scope = 'resources/simple.html';
+ const outerSwContainer = navigator.serviceWorker;
+ let innerSwReg = null;
+ let innerSw = null;
+
+ return service_worker_unregister_and_register(
+ t, 'resources/clients-get-resultingClientId-worker.js', scope)
+ .then((registration) => {
+ innerSwReg = registration;
+ add_completion_callback(function() { registration.unregister(); });
+ return wait_for_state(t, registration.installing, 'activated');
+ })
+ .then(() => {
+ // load frame and get resulting client id
+ let channel = new MessageChannel();
+ innerSw = innerSwReg.active;
+
+ let p = new Promise(resolve => {
+ function getResultingClientId(e) {
+ if (e.data.msg == 'getResultingClientId') {
+ const { resultingClientId } = e.data;
+
+ channel.port1.removeEventListener('message', getResultingClientId);
+
+ resolve({ resultingClientId, port: channel.port1 });
+ }
+ }
+
+ channel.port1.onmessage = getResultingClientId;
+ });
+
+
+ return with_iframe(scope).then((iframe) => {
+ innerSw.postMessage(
+ { port: channel.port2, msg: 'getResultingClientId' },
+ [channel.port2],
+ );
+
+ frame = iframe;
+ frame.focus();
+ add_completion_callback(() => iframe.remove());
+
+ return p;
+ });
+ })
+ .then(({ resultingClientId, port }) => {
+ // query service worker for clients.get(resultingClientId)
+ let channel = new MessageChannel();
+
+ let p = new Promise(resolve => {
+ function getIsResultingClientUndefined(e) {
+ if (e.data.msg == 'getIsResultingClientUndefined') {
+ let { isResultingClientUndefined } = e.data;
+
+ port.removeEventListener('message', getIsResultingClientUndefined);
+
+ resolve(isResultingClientUndefined);
+ }
+ }
+
+ port.onmessage = getIsResultingClientUndefined;
+ });
+
+ innerSw.postMessage(
+ { port: channel.port2, msg: 'getIsResultingClientUndefined', resultingClientId },
+ [channel.port2],
+ );
+
+ return p;
+ })
+ .then((isResultingClientUndefined) => {
+ assert_false(isResultingClientUndefined, 'Clients.get(FetchEvent.resultingClientId) resolved with a Client');
+ });
+}, 'Test successful Clients.get(FetchEvent.resultingClientId)');
+
+promise_test((t) => {
+ const scope = 'resources/simple.html?fail';
+ const outerSwContainer = navigator.serviceWorker;
+ let innerSwReg = null;
+ let innerSw = null;
+
+ return service_worker_unregister_and_register(
+ t, 'resources/clients-get-resultingClientId-worker.js', scope)
+ .then((registration) => {
+ innerSwReg = registration;
+ add_completion_callback(function() { registration.unregister(); });
+ return wait_for_state(t, registration.installing, 'activated');
+ })
+ .then(() => {
+ // load frame, destroying it while loading, and get resulting client id
+ innerSw = innerSwReg.active;
+
+ let iframe = document.createElement('iframe');
+ iframe.className = 'test-iframe';
+ iframe.src = scope;
+
+ function destroyIframe(e) {
+ if (e.data.msg == 'destroyResultingClient') {
+ iframe.remove();
+ iframe = null;
+
+ innerSw.postMessage({ msg: 'resultingClientDestroyed' });
+ }
+ }
+
+ outerSwContainer.addEventListener('message', destroyIframe);
+
+ let p = new Promise(resolve => {
+ function resultingClientDestroyedAck(e) {
+ if (e.data.msg == 'resultingClientDestroyedAck') {
+ let { resultingDestroyedClientId } = e.data;
+
+ outerSwContainer.removeEventListener('message', resultingClientDestroyedAck);
+ resolve(resultingDestroyedClientId);
+ }
+ }
+
+ outerSwContainer.addEventListener('message', resultingClientDestroyedAck);
+ });
+
+ document.body.appendChild(iframe);
+
+ return p;
+ })
+ .then((resultingDestroyedClientId) => {
+ // query service worker for clients.get(resultingDestroyedClientId)
+ let channel = new MessageChannel();
+
+ let p = new Promise((resolve, reject) => {
+ function getIsResultingClientUndefined(e) {
+ if (e.data.msg == 'getIsResultingClientUndefined') {
+ let { isResultingClientUndefined } = e.data;
+
+ channel.port1.removeEventListener('message', getIsResultingClientUndefined);
+
+ resolve(isResultingClientUndefined);
+ }
+ }
+
+ channel.port1.onmessage = getIsResultingClientUndefined;
+ });
+
+ innerSw.postMessage(
+ { port: channel.port2, msg: 'getIsResultingClientUndefined', resultingClientId: resultingDestroyedClientId },
+ [channel.port2],
+ );
+
+ return p;
+ })
+ .then((isResultingClientUndefined) => {
+ assert_true(isResultingClientUndefined, 'Clients.get(FetchEvent.resultingClientId) resolved with `undefined`');
+ });
+}, 'Test unsuccessful Clients.get(FetchEvent.resultingClientId)');
+
function wait_for_clientId() {
return new Promise(function(resolve, reject) {
function get_client_id(e) {
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event.https.html
index 78e099b8b55..169a0b17d62 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event.https.html
@@ -116,7 +116,6 @@ promise_test(t => {
})
.then(function(response) { return response.text(); })
.then(function(response_text) {
- var new_client_id = response_text.substr(17);
assert_equals(
response_text.substr(0, 15),
'Client ID Found',
@@ -125,6 +124,28 @@ promise_test(t => {
}, 'Service Worker responds to fetch event with an existing client id');
promise_test(t => {
+ const page_url = 'resources/simple.html?resultingClientId';
+ const expected_found = 'Resulting Client ID Found';
+ const expected_not_found = 'Resulting Client ID Not Found';
+ return with_iframe(page_url)
+ .then(function(frame) {
+ t.add_cleanup(() => { frame.remove(); });
+ assert_equals(
+ frame.contentDocument.body.textContent.substr(0, expected_found.length),
+ expected_found,
+ 'Service Worker should respond with an existing resulting client id for non-subresource requests');
+ return frame.contentWindow.fetch('resources/other.html?resultingClientId');
+ })
+ .then(function(response) { return response.text(); })
+ .then(function(response_text) {
+ assert_equals(
+ response_text.substr(0),
+ expected_not_found,
+ 'Service Worker should respond with an empty resulting client id for subresource requests');
+ });
+ }, 'Service Worker responds to fetch event with the correct resulting client id');
+
+promise_test(t => {
const page_url = 'resources/simple.html?ignore';
return with_iframe(page_url)
.then(function(frame) {
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/import-module-scripts.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/import-module-scripts.https.html
index e82911a1bd0..7bca8de64f5 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/import-module-scripts.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/import-module-scripts.https.html
@@ -13,6 +13,7 @@ function import_test(testCase) {
navigator.serviceWorker.onmessage = resolve;
});
await service_worker_unregister(t, testCase.scriptURL);
+ t.add_cleanup(() => service_worker_unregister(t, testCase.scriptURL));
const registration = await navigator.serviceWorker.register(
testCase.scriptURL,
{ scope: testCase.scriptURL, type: 'module' });
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/clients-get-resultingClientId-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/clients-get-resultingClientId-worker.js
new file mode 100644
index 00000000000..153a8e3f5b9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/clients-get-resultingClientId-worker.js
@@ -0,0 +1,64 @@
+let savedPort = null;
+let savedResultingClientId = null;
+
+async function destroyResultingClient(e) {
+ const outer = await self.clients.matchAll({ type: 'window', includeUncontrolled: true })
+ .then((clientList) => {
+ for (let c of clientList) {
+ if (c.url.endsWith('clients-get.https.html')) {
+ c.focus();
+ return c;
+ }
+ }
+ });
+
+ const p = new Promise(resolve => {
+ function resultingClientDestroyed(evt) {
+ if (evt.data.msg == 'resultingClientDestroyed') {
+ self.removeEventListener('message', resultingClientDestroyed);
+ resolve(outer);
+ }
+ }
+
+ self.addEventListener('message', resultingClientDestroyed);
+ });
+
+ outer.postMessage({ msg: 'destroyResultingClient' });
+
+ return await p;
+}
+
+self.addEventListener('fetch', async (e) => {
+ let { resultingClientId } = e;
+ savedResultingClientId = resultingClientId;
+
+ if (e.request.url.endsWith('simple.html?fail')) {
+ e.waitUntil(new Promise(async (resolve) => {
+ let outer = await destroyResultingClient(e);
+
+ outer.postMessage({ msg: 'resultingClientDestroyedAck',
+ resultingDestroyedClientId: savedResultingClientId });
+ resolve();
+ }));
+ } else {
+ e.respondWith(fetch(e.request));
+ }
+});
+
+self.addEventListener('message', (e) => {
+ let { msg, port, resultingClientId } = e.data;
+ savedPort = savedPort || port;
+
+ if (msg == 'getIsResultingClientUndefined') {
+ self.clients.get(resultingClientId).then((client) => {
+ let isUndefined = typeof client == 'undefined';
+ savedPort.postMessage({ msg: 'getIsResultingClientUndefined',
+ isResultingClientUndefined: isUndefined });
+ });
+ }
+
+ if (msg == 'getResultingClientId') {
+ savedPort.postMessage({ msg: 'getResultingClientId',
+ resultingClientId: savedResultingClientId });
+ }
+});
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-event-test-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-event-test-worker.js
index d503a6609d6..0a52a8201ea 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-event-test-worker.js
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-event-test-worker.js
@@ -37,6 +37,16 @@ function handleClientId(event) {
event.respondWith(new Response(body));
}
+function handleResultingClientId(event) {
+ var body;
+ if (event.resultingClientId !== "") {
+ body = 'Resulting Client ID Found: ' + event.resultingClientId;
+ } else {
+ body = 'Resulting Client ID Not Found';
+ }
+ event.respondWith(new Response(body));
+}
+
function handleNullBody(event) {
event.respondWith(new Response());
}
@@ -155,6 +165,7 @@ self.addEventListener('fetch', function(event) {
{ pattern: '?referrerPolicy', fn: handleReferrerPolicy },
{ pattern: '?referrer', fn: handleReferrer },
{ pattern: '?clientId', fn: handleClientId },
+ { pattern: '?resultingClientId', fn: handleResultingClientId },
{ pattern: '?ignore', fn: function() {} },
{ pattern: '?null', fn: handleNullBody },
{ pattern: '?fetch', fn: handleFetch },
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/registration-tests-scope.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/registration-tests-scope.js
index 51b0ab4ad51..6c097ad8d1f 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/registration-tests-scope.js
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/registration-tests-scope.js
@@ -94,9 +94,9 @@ function registration_tests_scope(register_method, check_error_types) {
var script = 'resources/empty-worker.js';
var scope = 'filesystem:' + normalizeURL('resources/scope/filesystem-scope-url');
return promise_rejects(t,
- check_error_types ? 'SecurityError' : null,
+ check_error_types ? new TypeError : null,
register_method(script, {scope: scope}),
'Registering with the scope that has same-origin filesystem: URL ' +
- 'should fail with SecurityError.');
+ 'should fail with TypeError.');
}, 'Scope URL is same-origin filesystem: URL');
}
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/registration-tests-security-error.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/registration-tests-security-error.js
index c84bb66e042..a72d3bac291 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/registration-tests-security-error.js
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/registration-tests-security-error.js
@@ -70,9 +70,9 @@ function registration_tests_security_error(register_method, check_error_types) {
var script = 'filesystem:' + normalizeURL('resources/empty-worker.js');
var scope = 'resources/scope/filesystem-script-url';
return promise_rejects(t,
- check_error_types ? 'SecurityError' : null,
+ check_error_types ? new TypeError : null,
register_method(script, {scope: scope}),
'Registering a script which has same-origin filesystem: URL should ' +
- 'fail with SecurityError.');
+ 'fail with TypeError.');
}, 'Script URL is same-origin filesystem: URL');
}
diff --git a/tests/wpt/web-platform-tests/svg/geometry/parsing/cx-computed.svg b/tests/wpt/web-platform-tests/svg/geometry/parsing/cx-computed.svg
new file mode 100644
index 00000000000..5a408ba4d28
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/geometry/parsing/cx-computed.svg
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="8000px">
+ <title>SVG Geometry Properties: getComputedValue().cx</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/geometry.html#CX"/>
+ </metadata>
+ <g id="target"></g>
+ <style>
+ #target {
+ font-size: 40px;
+ }
+ </style>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("cx", "-10px");
+test_computed_value("cx", "0.5em", "20px");
+test_computed_value("cx", "calc(10px + 0.5em)", "30px");
+test_computed_value("cx", "40%");
+test_computed_value("cx", "calc(50% + 60x)");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/geometry/parsing/cy-computed.svg b/tests/wpt/web-platform-tests/svg/geometry/parsing/cy-computed.svg
new file mode 100644
index 00000000000..97a41aed9c1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/geometry/parsing/cy-computed.svg
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="8000px">
+ <title>SVG Geometry Properties: getComputedValue().cy</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/geometry.html#CY"/>
+ </metadata>
+ <g id="target"></g>
+ <style>
+ #target {
+ font-size: 40px;
+ }
+ </style>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("cy", "-10px");
+test_computed_value("cy", "0.5em", "20px");
+test_computed_value("cy", "calc(10px + 0.5em)", "30px");
+test_computed_value("cy", "40%");
+test_computed_value("cy", "calc(50% + 60x)");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/geometry/parsing/r-computed.svg b/tests/wpt/web-platform-tests/svg/geometry/parsing/r-computed.svg
new file mode 100644
index 00000000000..fc8ea983ff0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/geometry/parsing/r-computed.svg
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="8000px">
+ <title>SVG Geometry Properties: getComputedValue().r</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/geometry.html#R"/>
+ </metadata>
+ <g id="target"></g>
+ <style>
+ #target {
+ font-size: 40px;
+ }
+ </style>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("r", "10px");
+test_computed_value("r", "0.5em", "20px");
+test_computed_value("r", "calc(10px + 0.5em)", "30px");
+test_computed_value("r", "40%");
+test_computed_value("r", "calc(50% + 60x)");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/geometry/parsing/rx-computed.svg b/tests/wpt/web-platform-tests/svg/geometry/parsing/rx-computed.svg
new file mode 100644
index 00000000000..7e4c42d2930
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/geometry/parsing/rx-computed.svg
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="8000px">
+ <title>SVG Geometry Properties: getComputedValue().rx</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/geometry.html#RX"/>
+ </metadata>
+ <g id="target"></g>
+ <style>
+ #target {
+ font-size: 40px;
+ }
+ </style>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("rx", "auto");
+
+test_computed_value("rx", "10px");
+test_computed_value("rx", "0.5em", "20px");
+test_computed_value("rx", "calc(10px + 0.5em)", "30px");
+test_computed_value("rx", "40%");
+test_computed_value("rx", "calc(50% + 60x)");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/geometry/parsing/ry-computed.svg b/tests/wpt/web-platform-tests/svg/geometry/parsing/ry-computed.svg
new file mode 100644
index 00000000000..390d63dc7e5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/geometry/parsing/ry-computed.svg
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="8000px">
+ <title>SVG Geometry Properties: getComputedValue().ry</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/geometry.html#RY"/>
+ </metadata>
+ <g id="target"></g>
+ <style>
+ #target {
+ font-size: 40px;
+ }
+ </style>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("ry", "auto");
+
+test_computed_value("ry", "10px");
+test_computed_value("ry", "0.5em", "20px");
+test_computed_value("ry", "calc(10px + 0.5em)", "30px");
+test_computed_value("ry", "40%");
+test_computed_value("ry", "calc(50% + 60x)");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/geometry/parsing/x-computed.svg b/tests/wpt/web-platform-tests/svg/geometry/parsing/x-computed.svg
new file mode 100644
index 00000000000..f7da0ed9564
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/geometry/parsing/x-computed.svg
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="8000px">
+ <title>SVG Geometry Properties: getComputedValue().x</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/geometry.html#X"/>
+ </metadata>
+ <g id="target"></g>
+ <style>
+ #target {
+ font-size: 40px;
+ }
+ </style>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("x", "-10px");
+test_computed_value("x", "0.5em", "20px");
+test_computed_value("x", "calc(10px + 0.5em)", "30px");
+test_computed_value("x", "40%");
+test_computed_value("x", "calc(50% + 60x)");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/geometry/parsing/y-computed.svg b/tests/wpt/web-platform-tests/svg/geometry/parsing/y-computed.svg
new file mode 100644
index 00000000000..83ef887da67
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/geometry/parsing/y-computed.svg
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ width="800px" height="8000px">
+ <title>SVG Geometry Properties: getComputedValue().y</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/geometry.html#Y"/>
+ </metadata>
+ <g id="target"></g>
+ <style>
+ #target {
+ font-size: 40px;
+ }
+ </style>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/computed-testcommon.js"/>
+ <script><![CDATA[
+
+test_computed_value("y", "-10px");
+test_computed_value("y", "0.5em", "20px");
+test_computed_value("y", "calc(10px + 0.5em)", "30px");
+test_computed_value("y", "40%");
+test_computed_value("y", "calc(50% + 60x)");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/interact/script-common.html b/tests/wpt/web-platform-tests/svg/interact/script-common.html
new file mode 100644
index 00000000000..fc2ae3ba01a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/interact/script-common.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test: </title>
+<link rel="help" href="https://svgwg.org/svg2-draft/interact.html#ScriptElement">
+<meta name="assert" content="The same scripts can work on both HTML and SVG elements.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<script>var total = 0;</script>
+<script>function s0() { total += 100; return s1(); }</script>
+<svg>
+ <script>function s1() { total += 20; return s2(); }</script>
+ <g>
+ <script>function s2() { return s3(); }</script>
+ <circle id="spot"><clipPath id="spot-first-child"/>
+ <script>function s3() { return s4(); }</script>
+ </circle>
+ </g>
+ <desc>
+ <script>function s4() { return s5(); }</script>
+ </desc>
+ <filter>
+ <script>function s5() { return s6(); }</script>
+ <feFlood>
+ <script>function s6() { return s7(); }</script>
+ </feFlood>
+ </filter>
+ <text>
+ <script>function s7() { return s8(); }</script>
+ <tspan>
+ <script>function s8() { return s9(); }</script>
+ </tspan>
+ </text>
+ <use href="spot">
+ <script>function s9() { return s10(); }</script>
+ </use>
+</svg>
+<div id="box"><script id="box-first-child">function s10() { total += 3; return s11(); }</script>
+ <span>
+ <script>function s11() { return 'same'; }</script>
+ </span>
+</div>
+
+<script>
+test(function(){
+ assert_equals(s0(), 'same');
+ assert_equals(total, 123);
+
+ for (let elementName of ['spot', 'box']) {
+ let element = document.getElementById(elementName);
+ let firstChild = element.firstChild;
+ assert_equals(firstChild.id, elementName + '-first-child');
+ }
+}, 'The same scripts work on both HTML and SVG elements');
+</script>
diff --git a/tests/wpt/web-platform-tests/svg/interact/script-content.svg b/tests/wpt/web-platform-tests/svg/interact/script-content.svg
new file mode 100644
index 00000000000..94836f7c033
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/interact/script-content.svg
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml">
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/interact.html#ScriptElement"/>
+ <h:meta name="assert" content="The script element is in the content model of all elements."/>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+
+<script>function s0() { return s1(); }</script>
+
+<a>
+ <script>function s1() { return s2(); }</script>
+</a>
+
+<g>
+ <script>function s2() { return s3(); }</script>
+</g>
+
+<animate>
+ <script>function s3() { return s4(); }</script>
+</animate>
+
+<animateMotion>
+ <script>function s4() { return s5(); }</script>
+ <mPath>
+ <script>function s5() { return s6(); }</script>
+ </mPath>
+</animateMotion>
+
+<animateTransform>
+ <script>function s6() { return s7(); }</script>
+</animateTransform>
+
+<circle>
+ <script>function s7() { return s8(); }</script>
+ <clipPath>
+ <script>function s8() { return s9(); }</script>
+ </clipPath>
+</circle>
+
+<defs>
+ <script>function s9() { return s10(); }</script>
+</defs>
+
+<desc>
+ <script>function s10() { return s11(); }</script>
+</desc>
+
+<!-- Becomes https://svgwg.org/svg2-draft/struct.html#UnknownElement
+ if the implementation does not support <discard> -->
+<discard>
+ <script>function s11() { return s12(); }</script>
+</discard>
+
+<ellipse>
+ <script>function s12() { return s13(); }</script>
+</ellipse>
+
+<filter>
+ <script>function s13() { return s14(); }</script>
+ <feBlend>
+ <script>function s14() { return s15(); }</script>
+ </feBlend>
+ <feColorMatrix>
+ <script>function s15() { return s16(); }</script>
+ </feColorMatrix>
+ <feComponentTransfer>
+ <script>function s16() { return s17(); }</script>
+ </feComponentTransfer>
+ <feComposite>
+ <script>function s17() { return s18(); }</script>
+ </feComposite>
+ <feConvolveMatrix>
+ <script>function s18() { return s19(); }</script>
+ </feConvolveMatrix>
+ <feDiffuseLighting>
+ <script>function s19() { return s20(); }</script>
+ </feDiffuseLighting>
+ <feDisplacementMap>
+ <script>function s20() { return s21(); }</script>
+ </feDisplacementMap>
+ <feDistantLight>
+ <script>function s21() { return s22(); }</script>
+ </feDistantLight>
+ <feDropShadow>
+ <script>function s22() { return s23(); }</script>
+ </feDropShadow>
+ <feFlood>
+ <script>function s23() { return s24(); }</script>
+ </feFlood>
+ <feFuncA>
+ <script>function s24() { return s25(); }</script>
+ </feFuncA>
+ <feFuncB>
+ <script>function s25() { return s26(); }</script>
+ </feFuncB>
+ <feFuncG>
+ <script>function s26() { return s27(); }</script>
+ </feFuncG>
+ <feFuncR>
+ <script>function s27() { return s28(); }</script>
+ </feFuncR>
+ <feGaussianBlur>
+ <script>function s28() { return s29(); }</script>
+ </feGaussianBlur>
+ <feImage>
+ <script>function s29() { return s30(); }</script>
+ </feImage>
+ <feMerge>
+ <script>function s30() { return s31(); }</script>
+ </feMerge>
+ <feMergeNode>
+ <script>function s31() { return s32(); }</script>
+ </feMergeNode>
+ <feMorphology>
+ <script>function s32() { return s33(); }</script>
+ </feMorphology>
+ <feOffset>
+ <script>function s33() { return s34(); }</script>
+ </feOffset>
+ <fePointLight>
+ <script>function s34() { return s35(); }</script>
+ </fePointLight>
+ <feSpecularLighting>
+ <script>function s35() { return s36(); }</script>
+ </feSpecularLighting>
+ <feSpotLight>
+ <script>function s36() { return s37(); }</script>
+ </feSpotLight>
+ <feTile>
+ <script>function s37() { return s38(); }</script>
+ </feTile>
+ <feTurbulence>
+ <script>function s38() { return s39(); }</script>
+ </feTurbulence>
+</filter>
+
+<foreignObject>
+ <script>function s39() { return s40(); }</script>
+</foreignObject>
+
+<g>
+ <script>function s40() { return s41(); }</script>
+</g>
+
+<image>
+ <script>function s41() { return s42(); }</script>
+</image>
+
+<line>
+ <script>function s42() { return s43(); }</script>
+</line>
+
+<linearGradient>
+ <script>function s43() { return s44(); }</script>
+</linearGradient>
+
+<marker>
+ <script>function s44() { return s45(); }</script>
+</marker>
+
+<mask>
+ <script>function s45() { return s46(); }</script>
+</mask>
+
+<path>
+ <script>function s46() { return s47(); }</script>
+</path>
+
+<pattern>
+ <script>function s47() { return s48(); }</script>
+</pattern>
+
+<polygon>
+ <script>function s48() { return s49(); }</script>
+</polygon>
+
+<polyline>
+ <script>function s49() { return s50(); }</script>
+</polyline>
+
+<radialGradient>
+ <script>function s50() { return s51(); }</script>
+</radialGradient>
+
+<rect>
+ <script>function s51() { return s52(); }</script>
+</rect>
+
+<set>
+ <script>function s52() { return s53(); }</script>
+</set>
+
+<stop>
+ <script>function s53() { return s54(); }</script>
+</stop>
+
+<svg>
+ <script>function s54() { return s55(); }</script>
+</svg>
+
+<symbol>
+ <script>function s55() { return s56(); }</script>
+</symbol>
+
+<text>
+ <script>function s56() { return s57(); }</script>
+</text>
+
+<textPath>
+ <script>function s57() { return s58(); }</script>
+</textPath>
+
+<title>
+ <script>function s58() { return s59(); }</script>
+</title>
+
+<tspan>
+ <script>function s59() { return s60(); }</script>
+</tspan>
+
+<use>
+ <script>function s60() { return s61(); }</script>
+</use>
+
+<view>
+ <script>function s61() { return s62(); }</script>
+</view>
+
+<script>
+function s62() {
+ return 'success';
+}
+
+test(function(){
+ assert_equals(s0(), 'success');
+}, "script element is in elements' content model");
+</script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/scripted/paint-order-computed-value-01.svg b/tests/wpt/web-platform-tests/svg/painting/scripted/paint-order-computed-value-01.svg
new file mode 100644
index 00000000000..7ea669f1508
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/scripted/paint-order-computed-value-01.svg
@@ -0,0 +1,62 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
+ <title>'paint-order' computed style serialization</title>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <text id="text" x="100" y="100"/>
+ <script><![CDATA[
+ 'use strict';
+
+ function make_tests(check, type) {
+ let tests = [
+ // Single keyword
+ ["normal", "normal"],
+ ["fill", "fill"],
+ ["stroke", "stroke"],
+ ["markers", "markers"],
+ // Two keywords
+ ["fill stroke", "fill"],
+ ["fill markers", "fill markers"],
+ ["stroke fill", "stroke"],
+ ["stroke markers", "stroke markers"],
+ ["markers fill", "markers"],
+ ["markers stroke", "markers stroke"],
+ // Three keywords
+ ["fill stroke markers", "fill"],
+ ["fill markers stroke", "fill markers"],
+ ["stroke fill markers", "stroke"],
+ ["stroke markers fill", "stroke markers"],
+ ["markers fill stroke", "markers"],
+ ["markers stroke fill", "markers stroke"],
+ // Invalid
+ ["foo", "normal"],
+ ["fill foo", "normal"],
+ ["stroke foo", "normal"],
+ ["markers foo", "normal"],
+ ["normal foo", "normal"],
+ ["fill markers stroke foo", "normal"],
+ ];
+ for (let [value, expected] of tests) {
+ test(() => {
+ check(value, expected);
+ }, `${document.title}, "${value}" => "${expected}" (${type})`);
+ }
+ }
+
+ const text = document.getElementById("text");
+
+ make_tests((value, expected) => {
+ text.setAttribute("style", "paint-order: " + value);
+ let actual = getComputedStyle(text).paintOrder;
+ text.removeAttribute("style");
+ assert_equals(actual, expected, value);
+ }, "property");
+
+ make_tests((value, expected) => {
+ text.setAttribute("paint-order", value);
+ let actual = getComputedStyle(text).paintOrder;
+ text.removeAttribute("paint-order");
+ assert_equals(actual, expected, value);
+ }, "presentation attribute");
+ ]]>
+ </script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/fennec.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/fennec.py
index 15396fba22c..01fed66d0e9 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/fennec.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/fennec.py
@@ -36,8 +36,9 @@ class FennecProfile(FirefoxProfile):
"app.normandy.api_url": "",
# Increase the APZ content response timeout in tests to 1 minute.
"apz.content_response_timeout": 60000,
- # Enable output of dump()
+ # Enable output for dump() and chrome console API
"browser.dom.window.dump.enabled": True,
+ "devtools.console.stdout.chrome": True,
# Disable safebrowsing components
"browser.safebrowsing.blockedURIs.enabled": False,
"browser.safebrowsing.downloads.enabled": False,
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py
index 848fbb74c7b..d57a36b1338 100644
--- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py
+++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py
@@ -621,7 +621,7 @@ class WebTestHttpd(object):
.. attribute:: started
- Boolean indictating whether the server is running
+ Boolean indicating whether the server is running
"""
def __init__(self, host="127.0.0.1", port=8000,
diff --git a/tests/wpt/web-platform-tests/user-timing/mark-measure-return-null.html b/tests/wpt/web-platform-tests/user-timing/mark-measure-return-null.html
new file mode 100644
index 00000000000..5afd9633f24
--- /dev/null
+++ b/tests/wpt/web-platform-tests/user-timing/mark-measure-return-null.html
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML>
+<meta charset=utf-8>
+<title>User Timing: L2 APIs return null</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<p>User Timing: L2 APIs return null</p>
+<div id="log"></div>
+<script>
+ async_test(function (t) {
+ self.performance.clearMeasures();
+ const measure = self.performance.measure("measure1");
+ assert_equals(measure, null);
+ t.done();
+ }, "L2: performance.measure(name) should return null.");
+
+ async_test(function (t) {
+ self.performance.clearMeasures();
+ self.performance.mark("1");
+ const measure = self.performance.measure("measure2", 1);
+ assert_equals(measure, null);
+ t.done();
+ }, "L2: performance.measure(name, param1) should return null.");
+
+ async_test(function (t) {
+ self.performance.clearMeasures();
+ self.performance.mark("1");
+ self.performance.mark("2");
+ const measure = self.performance.measure("measure3", 1, 2);
+ assert_equals(measure, null);
+ t.done();
+ }, "L2: performance.measure(name, param1, param2) should return null.");
+
+ async_test(function (t) {
+ self.performance.clearMarks();
+ const mark = self.performance.mark("mark1");
+ assert_equals(mark, null);
+ t.done();
+ }, "L2: performance.mark(name) should return null.");
+
+ async_test(function (t) {
+ self.performance.clearMarks();
+ const mark = self.performance.mark("mark2", { startTime: 34 });
+ assert_equals(mark, null);
+ t.done();
+ }, "L2: performance.mark(name, param) should return null.");
+</script>
diff --git a/tests/wpt/web-platform-tests/wasm/webapi/abort.any.js b/tests/wpt/web-platform-tests/wasm/webapi/abort.any.js
index cc0f5d9f34f..839de16108e 100644
--- a/tests/wpt/web-platform-tests/wasm/webapi/abort.any.js
+++ b/tests/wpt/web-platform-tests/wasm/webapi/abort.any.js
@@ -21,4 +21,17 @@ for (const method of methods) {
controller.abort();
return promise_rejects(t, 'AbortError', promise, `${method} should reject`);
}, `${method}() synchronously followed by abort should reject with AbortError`);
+
+ promise_test(async t => {
+ const controller = new AbortController();
+ const signal = controller.signal;
+ return fetch('../incrementer.wasm', { signal })
+ .then(response => {
+ Promise.resolve().then(() => controller.abort());
+ return WebAssembly[method](response);
+ })
+ .catch(err => {
+ assert_true(err.name === "AbortError");
+ });
+ }, `${method}() asynchronously racing with abort should succeed or reject with AbortError`);
}
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/maximize_window/stress.py b/tests/wpt/web-platform-tests/webdriver/tests/maximize_window/stress.py
index daa8a911928..4527c64a288 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/maximize_window/stress.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/maximize_window/stress.py
@@ -40,3 +40,4 @@ def test_stress(session, i):
t_end = time.time() + 3
while time.time() < t_end:
assert session.window.size == size_after_maximize
+ time.sleep(.1)
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCConfiguration-rtcpMuxPolicy.html b/tests/wpt/web-platform-tests/webrtc/RTCConfiguration-rtcpMuxPolicy.html
index 1d99aa29d85..7d0c81f5eab 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCConfiguration-rtcpMuxPolicy.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCConfiguration-rtcpMuxPolicy.html
@@ -3,6 +3,7 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="RTCConfiguration-helper.js"></script>
+<script src="RTCPeerConnection-helper.js"></script>
<script>
'use strict';
@@ -188,8 +189,8 @@
const pc = new RTCPeerConnection({rtcpMuxPolicy: 'require'});
t.add_cleanup(() => pc.close());
- await pc.createOffer({offerToReceiveAudio: true})
- .then(offer => pc.setLocalDescription(offer));
+ const offer = await generateAudioReceiveOnlyOffer(pc);
+ await pc.setLocalDescription(offer);
return promise_rejects(t, 'InvalidAccessError', pc.setRemoteDescription({type: 'answer', sdp}));
}, 'setRemoteDescription throws InvalidAccessError when called with an answer without rtcp-mux and rtcpMuxPolicy is set to require');
</script>
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate.html
index 1dd1350acd2..2283c6835e1 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate.html
@@ -61,9 +61,9 @@ a=rtcp-rsize
const sessionDesc = { type: 'offer', sdp };
// valid candidate attributes
- const sdpMid = 'a1';
- const sdpMLineIndex = 0;
- const usernameFragment = 'ETEn';
+ const sdpMid1 = 'a1';
+ const sdpMLineIndex1 = 0;
+ const usernameFragment1 = 'ETEn';
const sdpMid2 = 'v1';
const sdpMLineIndex2 = 1;
@@ -138,7 +138,9 @@ a=rtcp-rsize
return promise_rejects(t, 'InvalidStateError',
pc.addIceCandidate({
candidate: candidateStr1,
- sdpMid, sdpMLineIndex, usernameFragment
+ sdpMid: sdpMid1,
+ sdpMLineIndex: sdpMLineIndex1,
+ usernameFragment: usernameFragment1
}));
}, 'Add ICE candidate before setting remote description should reject with InvalidStateError');
@@ -153,7 +155,9 @@ a=rtcp-rsize
return pc.setRemoteDescription(sessionDesc)
.then(() => pc.addIceCandidate({
candidate: candidateStr1,
- sdpMid, sdpMLineIndex, usernameFragment
+ sdpMid: sdpMid1,
+ sdpMLineIndex: sdpMLineIndex1,
+ usernameFragement: usernameFragment1
}));
}, 'Add ICE candidate after setting remote description should succeed');
@@ -165,7 +169,9 @@ a=rtcp-rsize
return pc.setRemoteDescription(sessionDesc)
.then(() => pc.addIceCandidate(new RTCIceCandidate({
candidate: candidateStr1,
- sdpMid, sdpMLineIndex, usernameFragment
+ sdpMid: sdpMid1,
+ sdpMLineIndex: sdpMLineIndex1,
+ usernameFragement: usernameFragment1
})));
}, 'Add ICE candidate with RTCIceCandidate should succeed');
@@ -175,7 +181,9 @@ a=rtcp-rsize
t.add_cleanup(() => pc.close());
return pc.setRemoteDescription(sessionDesc)
- .then(() => pc.addIceCandidate({ sdpMid }));
+ .then(() => pc.addIceCandidate({
+ candidate: candidateStr1,
+ sdpMid: sdpMid1 }));
}, 'Add candidate with only valid sdpMid should succeed');
promise_test(t => {
@@ -184,7 +192,9 @@ a=rtcp-rsize
t.add_cleanup(() => pc.close());
return pc.setRemoteDescription(sessionDesc)
- .then(() => pc.addIceCandidate({ sdpMLineIndex }));
+ .then(() => pc.addIceCandidate({
+ candidate: candidateStr1,
+ sdpMLineIndex: sdpMLineIndex1 }));
}, 'Add candidate with only valid sdpMLineIndex should succeed');
/*
@@ -206,7 +216,9 @@ a=rtcp-rsize
return pc.setRemoteDescription(sessionDesc)
.then(() => pc.addIceCandidate({
candidate: candidateStr1,
- sdpMid, sdpMLineIndex, usernameFragment
+ sdpMid: sdpMid1,
+ sdpMLineIndex: sdpMLineIndex1,
+ usernameFragement: usernameFragment1
}))
.then(() => {
assert_candidate_line_between(pc.remoteDescription.sdp,
@@ -240,8 +252,9 @@ a=rtcp-rsize
return pc.setRemoteDescription(sessionDesc)
.then(() => pc.addIceCandidate({
candidate: candidateStr1,
- sdpMid, sdpMLineIndex,
- usernameFragment: null
+ sdpMid: sdpMid1,
+ sdpMLineIndex: sdpMLineIndex1,
+ ufrag: null
}))
.then(() => {
assert_candidate_line_between(pc.remoteDescription.sdp,
@@ -257,7 +270,9 @@ a=rtcp-rsize
return pc.setRemoteDescription(sessionDesc)
.then(() => pc.addIceCandidate({
candidate: candidateStr1,
- sdpMid, sdpMLineIndex, usernameFragment
+ sdpMid: sdpMid1,
+ sdpMLineIndex: sdpMLineIndex1,
+ usernameFragement: usernameFragment1
}))
.then(() => pc.addIceCandidate({
candidate: candidateStr2,
@@ -296,12 +311,15 @@ a=rtcp-rsize
return pc.setRemoteDescription(sessionDesc)
.then(() => pc.addIceCandidate({
candidate: candidateStr1,
- sdpMid, sdpMLineIndex, usernameFragment
+ sdpMid: sdpMid1,
+ sdpMLineIndex: sdpMLineIndex1,
+ usernameFragement: usernameFragment1
}))
.then(() => pc.addIceCandidate({
candidate: '',
- sdpMid, sdpMLineIndex,
- usernameFragment
+ sdpMid: sdpMid1,
+ sdpMLineIndex: sdpMLineIndex1,
+ usernameFragement: usernameFragment1
}))
.then(() => {
assert_candidate_line_between(pc.remoteDescription.sdp,
@@ -404,7 +422,9 @@ a=rtcp-rsize
promise_rejects(t, 'OperationError',
pc.addIceCandidate({
candidate: candidateStr1,
- sdpMid: 'invalid', sdpMLineIndex, usernameFragment
+ sdpMid: 'invalid',
+ sdpMLineIndex: sdpMLineIndex1,
+ usernameFragement: usernameFragment1
})));
}, 'Add candidate with invalid sdpMid should reject with OperationError');
@@ -427,7 +447,7 @@ a=rtcp-rsize
pc.addIceCandidate({
candidate: candidateStr1,
sdpMLineIndex: 2,
- usernameFragment
+ usernameFragement: usernameFragment1
})));
}, 'Add candidate with invalid sdpMLineIndex should reject with OperationError');
@@ -441,9 +461,9 @@ a=rtcp-rsize
return pc.setRemoteDescription(sessionDesc)
.then(() => pc.addIceCandidate({
candidate: candidateStr1,
- sdpMid,
+ sdpMid: sdpMid1,
sdpMLineIndex: 2,
- usernameFragment
+ usernameFragement: usernameFragment1
}));
}, 'Invalid sdpMLineIndex should be ignored if valid sdpMid is provided');
@@ -482,8 +502,9 @@ a=rtcp-rsize
promise_rejects(t, 'OperationError',
pc.addIceCandidate({
candidate: candidateStr1,
- sdpMid, sdpMLineIndex,
- usernameFragment: 'invalid'
+ sdpMid: sdpMid1,
+ sdpMLineIndex: sdpMLineIndex1,
+ ufrag: 'invalid'
})));
}, 'Add candidate with invalid usernameFragment should reject with OperationError');
@@ -504,7 +525,9 @@ a=rtcp-rsize
promise_rejects(t, 'OperationError',
pc.addIceCandidate({
candidate: invalidCandidateStr,
- sdpMid, sdpMLineIndex, usernameFragment
+ sdpMid: sdpMid1,
+ sdpMLineIndex: sdpMLineIndex1,
+ usernameFragement: usernameFragment1
})));
}, 'Add candidate with invalid candidate string should reject with OperationError');
@@ -520,7 +543,7 @@ a=rtcp-rsize
candidate: candidateStr2,
sdpMid: sdpMid2,
sdpMLineIndex: sdpMLineIndex2,
- usernameFragment
+ usernameFragement: usernameFragment1
})));
}, 'Add candidate with sdpMid belonging to different usernameFragment should reject with OperationError');
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceGatheringState.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceGatheringState.html
index fb9e514194b..e6d8d062701 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceGatheringState.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceGatheringState.html
@@ -11,8 +11,9 @@
// https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
// The following helper functions are called from RTCPeerConnection-helper.js:
- // exchangeIceCandidates
// doSignalingHandshake
+ // exchangeIceCandidates
+ // generateAudioReceiveOnlyOffer
/*
4.3.2. Interface Definition
@@ -72,7 +73,7 @@
pc.addEventListener('icegatheringstatechange', onIceGatheringStateChange);
- pc.createOffer({ offerToReceiveAudio: true })
+ generateAudioReceiveOnlyOffer(pc)
.then(offer => pc.setLocalDescription(offer))
.then(err => t.step_func(err =>
assert_unreached(`Unhandled rejection ${err.name}: ${err.message}`)));
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onnegotiationneeded.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onnegotiationneeded.html
index 8f9ea2be780..7e55ac3fadd 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onnegotiationneeded.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onnegotiationneeded.html
@@ -12,6 +12,7 @@
// The following helper functions are called from RTCPeerConnection-helper.js:
// generateAnswer
+ // generateAudioReceiveOnlyOffer
// test_never_resolve
// Listen to the negotiationneeded event on a peer connection
@@ -165,7 +166,7 @@
const pc = new RTCPeerConnection();
const negotiated = awaitNegotiation(pc);
- return pc.createOffer({ offerToReceiveAudio: true })
+ return generateAudioReceiveOnlyOffer(pc)
.then(offer => pc.setLocalDescription(offer))
.then(() => negotiated)
.then(({nextPromise}) => {
@@ -190,7 +191,7 @@
return assert_first_promise_fulfill_after_second(
awaitNegotiation(pc),
- pc.createOffer({ offerToReceiveAudio: true })
+ generateAudioReceiveOnlyOffer(pc)
.then(offer =>
pc.setLocalDescription(offer)
.then(() => {
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-rollback.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-rollback.html
index 0147b3185cc..630f84faa47 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-rollback.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-rollback.html
@@ -12,6 +12,7 @@
// The following helper functions are called from RTCPeerConnection-helper.js:
// assert_session_desc_similar
+ // generateAudioReceiveOnlyOffer
/*
4.3.2. Interface Definition
@@ -105,7 +106,7 @@
promise_test(t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
- return pc.createOffer({ offerToReceiveAudio: true })
+ return generateAudioReceiveOnlyOffer(pc)
.then(offer =>
pc.setRemoteDescription(offer)
.then(() => pc.createAnswer()))
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-offer.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-offer.html
index 565fddc59be..cae62b24b6c 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-offer.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-offer.html
@@ -12,6 +12,7 @@
// The following helper functions are called from RTCPeerConnection-helper.js:
// assert_session_desc_similar()
+ // generateAudioReceiveOnlyOffer
/*
4.3.2. Interface Definition
@@ -115,7 +116,7 @@
.then(offer1 => {
return pc1.setLocalDescription(offer1)
.then(()=> {
- return pc1.createOffer({ offerToReceiveAudio: true })
+ return generateAudioReceiveOnlyOffer(pc1)
.then(offer2 => {
assert_session_desc_not_similar(offer1, offer2);
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html
index ec90e561cbc..c317f3e1ae6 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html
@@ -11,8 +11,9 @@
// https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
// The following helper functions are called from RTCPeerConnection-helper.js:
- // generateDataChannelOffer
// assert_session_desc_similar
+ // generateAudioReceiveOnlyOffer
+ // generateDataChannelOffer
/*
4.3.2. Interface Definition
@@ -105,7 +106,7 @@
promise_test(t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
- return pc.createOffer({ offerToReceiveAudio: true })
+ return generateAudioReceiveOnlyOffer(pc)
.then(offer => pc.setRemoteDescription(offer))
.then(() => pc.setRemoteDescription({
type: 'rollback',
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCQuicStream.https.html b/tests/wpt/web-platform-tests/webrtc/RTCQuicStream.https.html
index b147414794e..eed7cffc37f 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCQuicStream.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCQuicStream.https.html
@@ -55,10 +55,8 @@ promise_test(async t => {
promise_test(async t => {
const [ localQuicTransport, remoteQuicTransport ] =
await makeTwoConnectedQuicTransports(t);
- const firstLocalStream = localQuicTransport.createStream();
- firstLocalStream.finish();
- const secondLocalStream = localQuicTransport.createStream();
- secondLocalStream.finish();
+ localQuicTransport.createStream().finish();
+ localQuicTransport.createStream().finish();
const remoteWatcher =
new EventWatcher(t, remoteQuicTransport, [ 'quicstream', 'statechange' ]);
const { stream: firstRemoteStream } =
@@ -109,20 +107,6 @@ promise_test(async t => {
const [ localQuicTransport, remoteQuicTransport ] =
await makeTwoConnectedQuicTransports(t);
const localStream = localQuicTransport.createStream();
- localStream.finish();
- const remoteWatcher = new EventWatcher(t, remoteQuicTransport, 'quicstream');
- const { stream: remoteStream } = await remoteWatcher.wait_for('quicstream');
- assert_equals(remoteStream.state, 'open');
- const remoteStreamWatcher = new EventWatcher(t, remoteStream, 'statechange');
- await remoteStreamWatcher.wait_for('statechange');
- assert_equals(remoteStream.state, 'closing');
-}, 'createStream() followed by finish() fires a quicstream event followed by ' +
- `a statechange event to 'closing' on the remote side.`);
-
-promise_test(async t => {
- const [ localQuicTransport, remoteQuicTransport ] =
- await makeTwoConnectedQuicTransports(t);
- const localStream = localQuicTransport.createStream();
localStream.reset();
const remoteWatcher = new EventWatcher(t, remoteQuicTransport, 'quicstream');
const { stream: remoteStream } = await remoteWatcher.wait_for('quicstream');
@@ -135,33 +119,6 @@ promise_test(async t => {
promise_test(async t => {
const [ localQuicTransport, remoteQuicTransport ] =
- await makeTwoConnectedQuicTransports(t);
- remoteQuicTransport.onquicstream = ({ stream }) => stream.reset();
- const localStream = localQuicTransport.createStream();
- localStream.finish();
- const localWatcher = new EventWatcher(t, localStream, 'statechange');
- await localWatcher.wait_for('statechange');
- assert_equals(localStream.state, 'closed');
-}, 'finish() on a remote stream that has already finished fires a ' +
- `statechange event to 'closed' on the remote side.`);
-
-promise_test(async t => {
- const [ localQuicTransport, remoteQuicTransport ] =
- await makeTwoConnectedQuicTransports(t);
- const localStream = localQuicTransport.createStream();
- localStream.finish();
- localStream.reset();
- const remoteWatcher = new EventWatcher(t, remoteQuicTransport, 'quicstream');
- const { stream: remoteStream } = await remoteWatcher.wait_for('quicstream');
- const remoteStreamWatcher = new EventWatcher(t, remoteStream, 'statechange');
- await remoteStreamWatcher.wait_for('statechange');
- assert_equals(remoteStream.state, 'closing');
- await remoteStreamWatcher.wait_for('statechange');
- assert_equals(remoteStream.state, 'closed');
-}, 'finish() then reset() fires two statechange events on the remote side.');
-
-promise_test(async t => {
- const [ localQuicTransport, remoteQuicTransport ] =
await makeTwoConnectedQuicTransports(t);
const localStream = localQuicTransport.createStream();
localStream.write(new Uint8Array(0));
@@ -217,6 +174,24 @@ promise_test(async t => {
const [ localQuicTransport, remoteQuicTransport ] =
await makeTwoConnectedQuicTransports(t);
const localStream = localQuicTransport.createStream();
+ localStream.write(new Uint8Array(10));
+ const remoteWatcher = new EventWatcher(t, remoteQuicTransport, 'quicstream');
+ await remoteWatcher.wait_for('quicstream');
+}, 'write() causes quicstream event to fire on the remote transport.');
+
+promise_test(async t => {
+ const [ localQuicTransport, remoteQuicTransport ] =
+ await makeTwoConnectedQuicTransports(t);
+ const localStream = localQuicTransport.createStream();
+ localStream.finish();
+ const remoteWatcher = new EventWatcher(t, remoteQuicTransport, 'quicstream');
+ await remoteWatcher.wait_for('quicstream');
+}, 'finish() causes quicstream event to fire on the remote transport.');
+
+promise_test(async t => {
+ const [ localQuicTransport, remoteQuicTransport ] =
+ await makeTwoConnectedQuicTransports(t);
+ const localStream = localQuicTransport.createStream();
localStream.finish();
assert_throws('InvalidStateError',
() => localStream.write(new Uint8Array()));
@@ -253,4 +228,66 @@ promise_test(async t => {
assert_equals(localStream.writeBufferedAmount, 10);
}, 'writeBufferedAmount maintained after finish() has been called.');
+promise_test(async t => {
+ const [ localQuicTransport, remoteQuicTransport ] =
+ await makeTwoConnectedQuicTransports(t);
+ const localStream = localQuicTransport.createStream();
+ await localStream.waitForWriteBufferedAmountBelow(0);
+}, 'waitForWriteBufferedAmountBelow(0) resolves immediately.');
+
+promise_test(async t => {
+ const [ localQuicTransport, remoteQuicTransport ] =
+ await makeTwoConnectedQuicTransports(t);
+ const localStream = localQuicTransport.createStream();
+ await localStream.waitForWriteBufferedAmountBelow(
+ localStream.maxWriteBufferedAmount);
+}, 'waitForWriteBufferedAmountBelow(maxWriteBufferedAmount) resolves ' +
+ 'immediately.');
+
+promise_test(async t => {
+ const [ localQuicTransport, remoteQuicTransport ] =
+ await makeTwoConnectedQuicTransports(t);
+ const localStream = localQuicTransport.createStream();
+ localStream.write(new Uint8Array(localStream.maxWriteBufferedAmount));
+ const promise1 = localStream.waitForWriteBufferedAmountBelow(0);
+ const promise2 = localStream.waitForWriteBufferedAmountBelow(0);
+ localStream.finish();
+ await Promise.all([
+ promise_rejects(t, 'InvalidStateError', promise1),
+ promise_rejects(t, 'InvalidStateError', promise2)]);
+}, 'Pending waitForWriteBufferedAmountBelow() promises rejected after ' +
+ 'finish().');
+
+promise_test(async t => {
+ const [ localQuicTransport, remoteQuicTransport ] =
+ await makeTwoConnectedQuicTransports(t);
+ const localStream = localQuicTransport.createStream();
+ localStream.write(new Uint8Array(localStream.maxWriteBufferedAmount));
+ const promise1 = localStream.waitForWriteBufferedAmountBelow(0);
+ const promise2 = localStream.waitForWriteBufferedAmountBelow(0);
+ localStream.reset();
+ await Promise.all([
+ promise_rejects(t, 'InvalidStateError', promise1),
+ promise_rejects(t, 'InvalidStateError', promise2)]);
+}, 'Pending waitForWriteBufferedAmountBelow() promises rejected after ' +
+ 'reset().');
+
+closed_stream_test(async (t, stream) => {
+ await promise_rejects(t, 'InvalidStateError',
+ stream.waitForWriteBufferedAmountBelow(0));
+}, 'waitForWriteBufferedBelow() rejects with InvalidStateError.');
+
+promise_test(async t => {
+ const [ localQuicTransport, remoteQuicTransport ] =
+ await makeTwoConnectedQuicTransports(t);
+ const localStream = localQuicTransport.createStream();
+ assert_object_equals(
+ localStream.readInto(new Uint8Array(10)),
+ { amount: 0, finished: false });
+}, 'readInto() on new local stream returns amount 0.');
+
+closed_stream_test(async (t, stream) => {
+ assert_throws('InvalidStateError', () => stream.readInto(new Uint8Array(1)));
+}, 'readInto() throws InvalidStateError.');
+
</script>