From 6caaa0c955fa7535554d50e46c1eb91bc2d2ba3b Mon Sep 17 00:00:00 2001 From: Servo WPT Sync <32481905+servo-wpt-sync@users.noreply.github.com> Date: Sat, 24 Aug 2024 21:37:49 -0400 Subject: [PATCH] Update web-platform-tests to revision b'd988aeeb33edc4d452899921799b8bed69fff65d' (#33178) Signed-off-by: WPT Sync Bot --- .../css/CSS2/floats-clear/floats-147.xht.ini | 2 + .../normal-flow/negative-margin-001.html.ini | 2 + .../bidi-inline-fragment-oof-crash.html.ini | 2 + .../white-space-bidirectionality-001.xht.ini | 2 - .../white-space-collapsing-bidi-002.xht.ini | 3 - ...p-border-area-background-geometry.html.ini | 2 + .../clip-border-area-border-image.html.ini | 2 + .../clip-border-area-border-on-top.html.ini | 2 + ...-border-area-box-decoration-break.html.ini | 2 + ...-border-area-multiple-backgrounds.html.ini | 2 + .../background-clip/clip-border-area.html.ini | 2 + .../clip-text-ellipsis.html.ini | 2 + .../clip-text-text-decorations.html.ini | 2 + .../clip-text-text-emphasis.html.ini | 2 + .../parsing/background-clip-computed.html.ini | 5 + .../parsing/background-clip-valid.html.ini | 6 + .../parsing/background-computed.html.ini | 3 + ...ty-animation-ending-correctly-002.html.ini | 2 - ...ex-one-sets-flex-basis-to-zero-px.html.ini | 33 +- .../generic-family-keywords-001.html.ini | 3 + .../css/css-position/sticky-dialog.html.ini | 3 + ...ecoration-thickness-interpolation.html.ini | 480 +++ .../css/css-text/bidi/bidi-lines-001.html.ini | 2 + .../css/css-text/bidi/bidi-tab-001.html.ini | 2 + .../reference/shaping-023-ref.html.ini | 2 + .../text-align/text-align-end-003.html.ini | 3 - .../text-align/text-align-end-007.html.ini | 3 - .../text-align/text-align-end-010.html.ini | 2 + .../text-align/text-align-end-014.html.ini | 3 - .../text-align-justify-003.html.ini | 3 - .../text-align-justify-006.html.ini | 2 + ...t-align-match-parent-root-logical.html.ini | 2 + .../text-align/text-align-start-003.html.ini | 3 - .../text-align/text-align-start-007.html.ini | 3 - .../text-align/text-align-start-010.html.ini | 2 + .../text-align/text-align-start-014.html.ini | 3 - .../text-autospace-001.html.ini | 2 +- .../hypot-pow-sqrt-serialize.html.ini | 3 + ...QueryList-addListener-handleEvent.html.ini | 3 + ...omputedStyle-insets-relpos-inline.html.ini | 1 + .../css/selectors/featureless-001.html.ini | 2 + .../css/selectors/featureless-002.html.ini | 2 + .../css/selectors/featureless-003.html.ini | 2 + .../css/selectors/featureless-004.html.ini | 2 + .../css/selectors/featureless-005.html.ini | 2 + .../selectors/focus-visible-017-2.html.ini | 3 - .../css/selectors/focus-visible-017.html.ini | 4 - .../css/selectors/focus-visible-023.html.ini | 3 - .../focus-visible-script-focus-001.html.ini | 3 - .../css/selectors/focus-within-009.html.ini | 10 - .../parsing/parse-focus-visible.html.ini | 10 - .../tentative/modal-dialog.html.ini | 3 + .../moveBefore-shadow-inside.html.ini | 3 + .../tentative/mutation-events.html.ini | 3 + .../css-font-face.sub.tentative.html.ini | 3 + ...ent_location_aboutsrcdoc.sub.window.js.ini | 19 + ...rent_session_aboutsrcdoc.sub.window.js.ini | 13 + .../layers/2d.layer.ctm.ctx-filter.html.ini | 2 + .../layers/2d.layer.global-filter.html.ini | 2 - ...es.filter.ctx-filter.no-transform.html.ini | 2 + ...states.filter.ctx-filter.rotation.html.ini | 2 + ...filter.no-cxt-filter.no-transform.html.ini | 2 + ...tes.filter.no-cxt-filter.rotation.html.ini | 2 + ...global-states.filter.no-transform.html.ini | 2 - ...yer.global-states.filter.rotation.html.ini | 2 - ...er-rendering-state-reset-in-layer.html.ini | 3 + .../2d.layer.nested-ctx-filter.html.ini | 2 + .../createImageBitmap-drawImage.html.ini | 2 +- .../createImageBitmap-serializable.html.ini | 2 +- .../createImageBitmap-transfer.html.ini | 2 +- .../element/text/direction-ltr.html.ini | 2 + .../layers/2d.layer.ctm.ctx-filter.html.ini | 2 + .../layers/2d.layer.ctm.ctx-filter.w.html.ini | 2 + .../layers/2d.layer.global-filter.html.ini | 2 - .../layers/2d.layer.global-filter.w.html.ini | 2 - ...al-states.ctx-filter.no-transform.html.ini | 2 + ...-states.ctx-filter.no-transform.w.html.ini | 2 + ...global-states.ctx-filter.rotation.html.ini | 2 + ...obal-states.ctx-filter.rotation.w.html.ini | 2 + ....filter.ctx-filter.no-transform.w.html.ini | 2 + ...ates.filter.ctx-filter.rotation.w.html.ini | 2 + ...lter.no-cxt-filter.no-transform.w.html.ini | 2 + ...s.filter.no-cxt-filter.rotation.w.html.ini | 2 + ...obal-states.filter.no-transform.w.html.ini | 2 - ...r.global-states.filter.rotation.w.html.ini | 2 - ...states.no-cxt-filter.no-transform.html.ini | 2 + ...ates.no-cxt-filter.no-transform.w.html.ini | 2 + ...bal-states.no-cxt-filter.rotation.html.ini | 2 + ...l-states.no-cxt-filter.rotation.w.html.ini | 2 + ....layer.global-states.no-transform.html.ini | 2 - ...ayer.global-states.no-transform.w.html.ini | 2 - .../2d.layer.global-states.rotation.html.ini | 2 - ...2d.layer.global-states.rotation.w.html.ini | 2 - ...er-rendering-state-reset-in-layer.html.ini | 3 + ...ndering-state-reset-in-layer.worker.js.ini | 3 + .../2d.layer.nested-ctx-filter.html.ini | 2 + .../2d.layer.nested-ctx-filter.w.html.ini | 2 + .../dir-auto-dynamic-changes.window.js.ini | 6 + .../dir-slots-directionality.html.ini | 21 + .../global-attributes/dir_auto-EN-L.html.ini | 2 + .../global-attributes/dir_auto-EN-R.html.ini | 2 + .../global-attributes/dir_auto-L.html.ini | 2 + .../dir_auto-N-EN-L.html.ini | 2 + .../dir_auto-N-EN-R.html.ini | 2 + .../global-attributes/dir_auto-N-EN.html.ini | 2 + .../global-attributes/dir_auto-N-L.html.ini | 2 + .../global-attributes/dir_auto-N-R.html.ini | 2 + .../global-attributes/dir_auto-R.html.ini | 2 + .../dir_auto-contained-L.html.ini | 2 + .../dir_auto-contained-R.html.ini | 2 + .../dir_auto-contained-bdi-L.html.ini | 2 + .../dir_auto-contained-bdi-R.html.ini | 2 + .../dir_auto-contained-dir-L.html.ini | 2 + .../dir_auto-contained-dir-R.html.ini | 2 + .../dir_auto-contained-dir_auto-L.html.ini | 2 + .../dir_auto-contained-dir_auto-R.html.ini | 2 + .../dir_auto-contained-style-L.html.ini | 2 + .../dir_auto-contained-style-R.html.ini | 2 + .../dir_auto-contained-textarea-L.html.ini | 2 + .../dir_auto-contained-textarea-R.html.ini | 2 + .../dir_auto-input-EN-L.html.ini | 2 + .../dir_auto-input-EN-R.html.ini | 2 + .../dir_auto-input-L.html.ini | 2 + .../dir_auto-input-N-EN-L.html.ini | 2 + .../dir_auto-input-N-EN-R.html.ini | 2 + .../dir_auto-input-N-EN.html.ini | 2 + .../dir_auto-input-N-L.html.ini | 2 + .../dir_auto-input-N-R.html.ini | 2 + .../dir_auto-input-R.html.ini | 2 + .../dir_auto-isolate.html.ini | 1 - .../dir_auto-pre-N-EN.html.ini | 2 + .../dir_auto-textarea-N-EN.html.ini | 2 + .../dir-isolation-001b.html.ini | 3 - .../dir-isolation-001c.html.ini | 3 - .../dir-isolation-002c.html.ini | 3 - .../dir-isolation-004a.html.ini | 3 - .../dir-isolation-004b.html.ini | 3 - .../dir-isolation-004c.html.ini | 3 - .../dir-isolation-005b.html.ini | 3 - .../dir-isolation-005c.html.ini | 3 - .../dir-isolation-006c.html.ini | 3 - .../dir-isolation-008a.html.ini | 3 - .../dir-isolation-008b.html.ini | 3 - .../dir-isolation-008c.html.ini | 3 - .../dir-isolation-009a.html.ini | 3 - .../dir-isolation-009b.html.ini | 3 - .../dir-isolation-009c.html.ini | 3 - .../unicode-bidi-ua-rules.html.ini | 9 + .../fieldset-content-rtl.html.ini | 2 - ...put-checkbox-switch-rtl.tentative.html.ini | 2 - ...-loading-lazy-nav-location-assign.html.ini | 3 - .../iframe_sandbox_popups_escaping-3.html.ini | 2 +- ...rame_sandbox_popups_nonescaping-1.html.ini | 2 +- ...rame_sandbox_popups_nonescaping-2.html.ini | 1 + .../sizes/sizes-auto-rendering-2.html.ini | 2 - .../sizes/sizes-auto-rendering-3.html.ini | 2 + .../sizes/sizes-auto-rendering.html.ini | 2 + .../fail-to-resolve.html.ini | 5 - .../update-the-source-set.html.ini | 4 - .../html/semantics/forms/historical.html.ini | 3 + .../range-tick-marks-02.html.ini | 2 + .../css-module-assertions/charset-2.html.ini | 2 - .../charset-bom.html.ini | 2 - .../css-module-assertions/charset.html.ini | 2 - .../content-type-checking.html.ini | 16 - .../cors-crossorigin-requests.html.ini | 9 - .../credentials.sub.html.ini | 3 - .../css-module-worker-test.html.ini | 7 - .../import-css-module-basic.html.ini | 2 - .../import-css-module-dynamic.html.ini | 2 - .../css-module-assertions/integrity.html.ini | 2 - .../load-error-events.html.ini | 25 - .../referrer-policies.sub.html.ini | 2 - .../relative-urls.html.ini | 2 - ...-import-with-assertion-argument.any.js.ini | 8 - .../empty-assertion-clause.html.ini | 5 - .../invalid-type-assertion-error.html.ini | 4 - .../unsupported-assertion.html.ini | 3 - .../json-module-assertions/charset-2.html.ini | 2 - .../charset-bom.any.js.ini | 8 - .../json-module-assertions/charset.html.ini | 2 - .../cors-crossorigin-requests.html.ini | 9 - .../credentials.sub.html.ini | 3 - .../json-module-assertions/integrity.html.ini | 2 - .../invalid-content-type.any.js.ini | 8 - ...-module-service-worker-test.https.html.ini | 9 - .../load-error-events.html.ini | 25 - .../json-module-assertions/module.html.ini | 4 - .../non-object.any.js.ini | 8 - .../parse-error.html.ini | 3 - .../referrer-policies.sub.html.ini | 2 - .../repeated-imports.any.js.ini | 8 - .../valid-content-type.html.ini | 19 - .../pseudo-classes/autofill.html.ini | 4 - .../bdi-neutral-number.html.ini | 1 - .../bdi-neutral-separate.html.ini | 1 - ...bdi-neutral-to-letter-preceding-1.html.ini | 1 - .../bdi-neutral-to-surrounding-run.html.ini | 1 - .../bdi-neutral-wrapped.html.ini | 1 - .../bdi-paragraph-level-container.html.ini | 1 - .../tentative/Selection-isCollapsed.html.ini | 2 + .../js-string/basic.tentative.any.js.ini | 8 + .../js-string/constants.tentative.any.js.ini | 245 ++ .../js-string/imports.tentative.any.js.ini | 11 + .../webxr/render_state_update.https.html.ini | 1 + tests/wpt/meta/MANIFEST.json | 3100 +++++++++++------ ...p-border-area-background-geometry.html.ini | 2 + .../clip-border-area-border-image.html.ini | 2 + .../clip-border-area-border-on-top.html.ini | 2 + ...-border-area-box-decoration-break.html.ini | 2 + ...-border-area-multiple-backgrounds.html.ini | 2 + .../background-clip/clip-border-area.html.ini | 2 + .../clip-text-ellipsis.html.ini | 2 + .../clip-text-text-decorations.html.ini | 2 + .../clip-text-text-emphasis.html.ini | 2 + .../parsing/background-clip-computed.html.ini | 5 + .../parsing/background-clip-valid.html.ini | 6 + .../parsing/background-computed.html.ini | 3 + .../css/css-position/sticky-dialog.html.ini | 3 + ...ecoration-thickness-interpolation.html.ini | 480 +++ .../text-autospace-001.html.ini | 2 +- .../hypot-pow-sqrt-serialize.html.ini | 3 + .../vh_not_refreshing_on_chrome.html.ini | 2 - ...ryList-addListener-removeListener.html.ini | 3 + .../css/selectors/featureless-001.html.ini | 2 + .../css/selectors/featureless-002.html.ini | 2 + .../css/selectors/featureless-003.html.ini | 2 + .../css/selectors/featureless-004.html.ini | 2 + .../css/selectors/featureless-005.html.ini | 2 + .../tentative/modal-dialog.html.ini | 3 + .../moveBefore-shadow-inside.html.ini | 3 + .../tentative/mutation-events.html.ini | 3 + ...ent_location_aboutsrcdoc.sub.window.js.ini | 19 + ...rent_session_aboutsrcdoc.sub.window.js.ini | 13 + ...tion-unload-cross-origin.sub.window.js.ini | 3 - .../layers/2d.layer.ctm.ctx-filter.html.ini | 2 + .../layers/2d.layer.global-filter.html.ini | 2 - ...es.filter.ctx-filter.no-transform.html.ini | 2 + ...states.filter.ctx-filter.rotation.html.ini | 2 + ...filter.no-cxt-filter.no-transform.html.ini | 2 + ...tes.filter.no-cxt-filter.rotation.html.ini | 2 + ...global-states.filter.no-transform.html.ini | 2 - ...yer.global-states.filter.rotation.html.ini | 2 - ...er-rendering-state-reset-in-layer.html.ini | 3 + .../2d.layer.nested-ctx-filter.html.ini | 2 + .../layers/2d.layer.ctm.ctx-filter.html.ini | 2 + .../layers/2d.layer.ctm.ctx-filter.w.html.ini | 2 + .../layers/2d.layer.global-filter.html.ini | 2 - .../layers/2d.layer.global-filter.w.html.ini | 2 - ...al-states.ctx-filter.no-transform.html.ini | 2 + ...-states.ctx-filter.no-transform.w.html.ini | 2 + ...global-states.ctx-filter.rotation.html.ini | 2 + ...obal-states.ctx-filter.rotation.w.html.ini | 2 + ....filter.ctx-filter.no-transform.w.html.ini | 2 + ...ates.filter.ctx-filter.rotation.w.html.ini | 2 + ...lter.no-cxt-filter.no-transform.w.html.ini | 2 + ...s.filter.no-cxt-filter.rotation.w.html.ini | 2 + ...obal-states.filter.no-transform.w.html.ini | 2 - ...r.global-states.filter.rotation.w.html.ini | 2 - ...states.no-cxt-filter.no-transform.html.ini | 2 + ...ates.no-cxt-filter.no-transform.w.html.ini | 2 + ...bal-states.no-cxt-filter.rotation.html.ini | 2 + ...l-states.no-cxt-filter.rotation.w.html.ini | 2 + ....layer.global-states.no-transform.html.ini | 2 - ...ayer.global-states.no-transform.w.html.ini | 2 - .../2d.layer.global-states.rotation.html.ini | 2 - ...2d.layer.global-states.rotation.w.html.ini | 2 - ...er-rendering-state-reset-in-layer.html.ini | 3 + ...ndering-state-reset-in-layer.worker.js.ini | 3 + .../2d.layer.nested-ctx-filter.html.ini | 2 + .../2d.layer.nested-ctx-filter.w.html.ini | 2 + .../dir-auto-dynamic-changes.window.js.ini | 6 + .../dir-slots-directionality.html.ini | 21 + .../iframe_sandbox_popups_escaping-1.html.ini | 4 +- .../iframe_sandbox_popups_escaping-2.html.ini | 2 +- ...rame_sandbox_popups_nonescaping-2.html.ini | 4 +- .../htmlanchorelement_noopener.html.ini | 3 - .../css-module-assertions/charset-2.html.ini | 2 - .../charset-bom.html.ini | 2 - .../css-module-assertions/charset.html.ini | 2 - .../content-type-checking.html.ini | 16 - .../cors-crossorigin-requests.html.ini | 9 - .../credentials.sub.html.ini | 3 - .../css-module-worker-test.html.ini | 7 - .../import-css-module-basic.html.ini | 2 - .../import-css-module-dynamic.html.ini | 2 - .../css-module-assertions/integrity.html.ini | 2 - .../load-error-events.html.ini | 25 - .../referrer-policies.sub.html.ini | 2 - .../relative-urls.html.ini | 2 - ...-import-with-assertion-argument.any.js.ini | 8 - .../empty-assertion-clause.html.ini | 5 - .../invalid-type-assertion-error.html.ini | 4 - .../unsupported-assertion.html.ini | 3 - .../json-module-assertions/charset-2.html.ini | 2 - .../charset-bom.any.js.ini | 8 - .../json-module-assertions/charset.html.ini | 2 - .../cors-crossorigin-requests.html.ini | 9 - .../credentials.sub.html.ini | 3 - .../json-module-assertions/integrity.html.ini | 2 - .../invalid-content-type.any.js.ini | 8 - ...-module-service-worker-test.https.html.ini | 9 - .../load-error-events.html.ini | 25 - .../json-module-assertions/module.html.ini | 4 - .../non-object.any.js.ini | 8 - .../parse-error.html.ini | 3 - .../referrer-policies.sub.html.ini | 2 - .../repeated-imports.any.js.ini | 8 - .../valid-content-type.html.ini | 19 - .../child-document-raf-order.html.ini | 3 - .../content-type-parsing.html.ini | 4 +- .../test_resource_timing.html.ini | 3 + .../tentative/Selection-isCollapsed.html.ini | 2 + .../js-string/basic.tentative.any.js.ini | 8 + .../js-string/constants.tentative.any.js.ini | 245 ++ .../js-string/imports.tentative.any.js.ini | 11 + .../workers/WorkerGlobalScope-close.html.ini | 3 + .../idbcursor_update_objectstore.any.js | 276 ++ .../idbcursor_update_objectstore.htm | 60 - .../idbcursor_update_objectstore2.htm | 38 - .../idbcursor_update_objectstore3.htm | 40 - .../idbcursor_update_objectstore4.htm | 39 - .../idbcursor_update_objectstore5.htm | 41 - .../idbcursor_update_objectstore6.htm | 43 - .../idbcursor_update_objectstore7.htm | 39 - .../idbcursor_update_objectstore8.htm | 39 - .../idbcursor_update_objectstore9.htm | 45 - tests/wpt/tests/accname/name/comp_label.html | 22 +- ...p-border-area-background-geometry-ref.html | 28 + .../clip-border-area-background-geometry.html | 27 + .../clip-border-area-border-image-ref.html | 28 + .../clip-border-area-border-image.html | 28 + .../clip-border-area-border-on-top-ref.html | 24 + .../clip-border-area-border-on-top.html | 24 + ...-border-area-box-decoration-break-ref.html | 27 + ...clip-border-area-box-decoration-break.html | 37 + ...-border-area-multiple-backgrounds-ref.html | 23 + ...clip-border-area-multiple-backgrounds.html | 27 + .../background-clip/clip-border-area-ref.html | 47 + .../background-clip/clip-border-area.html | 54 + .../clip-text-ellipsis-ref.html | 13 + .../background-clip/clip-text-ellipsis.html | 18 + .../clip-text-text-decorations-ref.html | 15 + .../clip-text-text-decorations.html | 20 + .../clip-text-text-emphasis-ref.html | 9 + .../clip-text-text-emphasis.html | 15 + .../parsing/background-clip-computed.html | 3 +- .../parsing/background-clip-invalid.html | 1 + .../parsing/background-clip-valid.html | 3 +- .../parsing/background-computed.html | 2 + .../css/css-break/background-image-004.html | 8 + .../css/css-break/background-image-005.html | 10 + .../css/css-break/background-image-006.html | 12 + .../css-break/background-image-007-ref.html | 17 + .../css/css-break/background-image-007.html | 8 + .../tests/css/css-break/borders-008-ref.html | 8 + .../wpt/tests/css/css-break/borders-008.html | 8 + .../css/css-break/box-shadow-005-ref.html | 15 + .../tests/css/css-break/box-shadow-005.html | 8 + .../tests/css/css-cascade/scope-part-ref.html | 4 + .../wpt/tests/css/css-cascade/scope-part.html | 31 + .../color-scheme-iframe-dynamic.html | 53 + ...scheme-iframe-preferred-page-dark-ref.html | 4 + ...lor-scheme-iframe-preferred-page-dark.html | 15 + ...cheme-iframe-preferred-page-light-ref.html | 3 + ...or-scheme-iframe-preferred-page-light.html | 15 + .../custom-property-style-queries.html | 123 +- .../linear-timing-functions-syntax.html | 1 + .../flex-item-position-relative-001-ref.html | 16 - .../flex-item-position-relative-001.html | 42 - .../css-images/support/external-images.svg | 2 +- .../text-box-trim-accumulation-001.html | 2 +- .../text-box-trim-dynamic-001.html | 2 +- .../text-box-trim-dynamic-002.html | 2 +- ...x-trim-half-leading-block-box-001-ref.html | 6 +- .../text-box-trim-height-002-ref.html | 6 +- .../text-box-trim-height-002.html | 5 +- ...box-trim-initial-letter-start-001-ref.html | 4 +- .../text-box-trim-line-clamp-001-ref.html | 2 +- .../text-box-trim-line-clamp-001.html | 2 +- .../text-box-trim-multicol-001.html | 2 +- .../text-box-trim-multicol-002.html | 2 +- .../text-box-trim-ruby-end-001.html | 1 + .../text-box-trim-ruby-start-002.html | 3 +- .../text-box-trim-start-001.html | 2 +- .../clip-path-interpolation-shape.html | 104 +- .../clip-path-circle-closest-corner.html | 43 + .../clip-path-circle-farthest-corner.html | 45 + ...-path-ellipse-closest-farthest-corner.html | 38 + .../clip-path/clip-path-marginBox-1d.html | 2 +- .../clip-path/clip-path-shape-003.html | 6 +- .../clip-path/clip-path-xywh-003.html | 2 +- .../reference/clip-path-circle-4-ref.html | 27 + .../reference/clip-path-ellipse-2-ref.html | 21 + .../tests/css/css-nesting/supports-rule.html | 5 +- .../tests/css/css-position/sticky-dialog.html | 15 + .../circle-function-computed.html | 4 +- .../circle-function-valid.html | 4 +- .../shape-function-computed.tentative.html | 53 + .../shape-function-invalid.tentative.html | 30 + .../shape-function-valid.tentative.html | 50 + ...xt-decoration-thickness-interpolation.html | 80 +- .../text-autospace-001-ref.html | 28 + .../text-autospace/text-autospace-001.html | 42 +- .../css-values/hypot-pow-sqrt-invalid.html | 5 +- .../css-values/hypot-pow-sqrt-serialize.html | 2 + .../css-viewport/zoom/svg-transform-ref.html | 4 + .../css/css-viewport/zoom/svg-transform.html | 7 + ...ertRule-import-trailing-garbage-crash.html | 6 + .../css-filters-animation-grayscale.html | 1 + .../css-filters-animation-sepia.html | 1 + .../filters-grayscale-001-test.html | 1 + .../offset-path-interpolation-008.html | 100 +- .../tests/css/selectors/featureless-001.html | 34 + .../tests/css/selectors/featureless-002.html | 39 + .../tests/css/selectors/featureless-003.html | 39 + .../tests/css/selectors/featureless-004.html | 43 + .../tests/css/selectors/featureless-005.html | 30 + .../allow-attribute.https.html | 131 + .../wpt/tests/digital-credentials/dc-types.ts | 64 + .../default-permissions-policy.https.sub.html | 42 + ...abled-by-permissions-policy.https.sub.html | 59 + ...-permissions-policy.https.sub.html.headers | 1 + ...rigin-by-permissions-policy.https.sub.html | 59 + ...-permissions-policy.https.sub.html.headers | 1 + .../get-user-activation.https.html | 38 + .../identity-create.tentative.https.html | 124 + .../identity-get.tentative.https.html | 201 +- .../digital-credentials/support/helper.js | 120 +- .../digital-credentials/support/iframe.html | 88 +- .../tests/digital-credentials/tsconfig.json | 12 + .../abort/resources/abort-signal-any-tests.js | 39 + tests/wpt/tests/dom/historical.html | 43 + .../moveBefore/tentative/modal-dialog.html | 19 + .../tentative/moveBefore-shadow-inside.html | 47 + .../moveBefore/tentative/mutation-events.html | 20 + .../run/createlink-with-selecting-img.html | 33 + ...ess-api-autogrant.tentative.https.sub.html | 100 + ...ate-store-collect.tentative.sub.https.html | 38 +- ...dentity.discovery.tentative.sub.https.html | 14 +- .../lfedcm-identity.provider-create.sub.html | 6 + ...acon-data-cross-origin-subframe.https.html | 51 + .../remote-context-executor.https.html | 1 + ...ment-exit-fullscreen-nested-in-iframe.html | 47 +- .../tests/html-aam/dir-role.tentative.html | 28 + tests/wpt/tests/html-aam/roles.html | 3 + ...dparent_location_aboutsrcdoc.sub.window.js | 88 + ...ndparent_session_aboutsrcdoc.sub.window.js | 71 + .../resources/child2.html | 11 + .../child_with_srcdoc_subframe.window.js | 43 + .../child_with_static_sandbox_srcdoc.html | 15 + .../resources/child_with_static_srcdoc.html | 15 + .../2d.layer.ctm.ctx-filter-expected.html | 27 + .../layers/2d.layer.ctm.ctx-filter.html | 38 + .../2d.layer.global-filter-expected.html | 17 - .../layers/2d.layer.global-filter.html | 26 - ...ates.ctx-filter.no-transform-expected.html | 578 +++ ...global-states.ctx-filter.no-transform.html | 611 ++++ ...l-states.ctx-filter.rotation-expected.html | 610 ++++ ...yer.global-states.ctx-filter.rotation.html | 643 ++++ ...lter.ctx-filter.no-transform-expected.html | 786 +++++ ...states.filter.ctx-filter.no-transform.html | 611 ++++ ...s.filter.ctx-filter.rotation-expected.html | 818 +++++ ...bal-states.filter.ctx-filter.rotation.html | 643 ++++ ....no-cxt-filter.no-transform-expected.html} | 116 +- ...es.filter.no-cxt-filter.no-transform.html} | 118 +- ...lter.no-cxt-filter.rotation-expected.html} | 116 +- ...states.filter.no-cxt-filter.rotation.html} | 118 +- ....no-cxt-filter.no-transform-expected.html} | 84 +- ...al-states.no-cxt-filter.no-transform.html} | 86 +- ...ates.no-cxt-filter.rotation-expected.html} | 84 +- ...global-states.no-cxt-filter.rotation.html} | 86 +- ....layer-rendering-state-reset-in-layer.html | 8 +- .../2d.layer.nested-ctx-filter-expected.html | 25 + .../layers/2d.layer.nested-ctx-filter.html | 23 + .../canvas/element/layers/2d.layer.reset.html | 2 + .../2d.layer.ctm.ctx-filter-expected.html | 27 + .../layers/2d.layer.ctm.ctx-filter.html | 41 + .../layers/2d.layer.ctm.ctx-filter.w.html | 55 + .../2d.layer.global-filter-expected.html | 17 - .../layers/2d.layer.global-filter.html | 29 - ...ates.ctx-filter.no-transform-expected.html | 578 +++ ...global-states.ctx-filter.no-transform.html | 675 ++++ ...obal-states.ctx-filter.no-transform.w.html | 902 +++++ ...l-states.ctx-filter.rotation-expected.html | 610 ++++ ...yer.global-states.ctx-filter.rotation.html | 707 ++++ ...r.global-states.ctx-filter.rotation.w.html | 934 +++++ ...lter.ctx-filter.no-transform-expected.html | 786 +++++ ...states.filter.ctx-filter.no-transform.html | 675 ++++ ...ates.filter.ctx-filter.no-transform.w.html | 902 +++++ ...s.filter.ctx-filter.rotation-expected.html | 818 +++++ ...bal-states.filter.ctx-filter.rotation.html | 707 ++++ ...l-states.filter.ctx-filter.rotation.w.html | 934 +++++ ....no-cxt-filter.no-transform-expected.html} | 116 +- ...es.filter.no-cxt-filter.no-transform.html} | 118 +- ....filter.no-cxt-filter.no-transform.w.html} | 118 +- ...lter.no-cxt-filter.rotation-expected.html} | 116 +- ...states.filter.no-cxt-filter.rotation.html} | 118 +- ...ates.filter.no-cxt-filter.rotation.w.html} | 118 +- ....no-cxt-filter.no-transform-expected.html} | 84 +- ...al-states.no-cxt-filter.no-transform.html} | 86 +- ...-states.no-cxt-filter.no-transform.w.html} | 86 +- ...ates.no-cxt-filter.rotation-expected.html} | 84 +- ...global-states.no-cxt-filter.rotation.html} | 86 +- ...obal-states.no-cxt-filter.rotation.w.html} | 86 +- ....layer-rendering-state-reset-in-layer.html | 8 +- ...r-rendering-state-reset-in-layer.worker.js | 8 +- .../2d.layer.nested-ctx-filter-expected.html | 25 + .../layers/2d.layer.nested-ctx-filter.html | 26 + ...html => 2d.layer.nested-ctx-filter.w.html} | 27 +- .../offscreen/layers/2d.layer.reset.html | 2 + .../offscreen/layers/2d.layer.reset.w.html | 2 + .../html/canvas/tools/yaml-new/layers.yaml | 135 +- .../dir-auto-dynamic-changes.window.js | 21 +- .../dir-slots-directionality.html | 83 +- tests/wpt/tests/html/resources/common.js | 5 + .../select-mouse-behavior.tentative.html | 81 +- ...ayer-backdrop-remove-add-ordering-ref.html | 19 + ...op-layer-backdrop-remove-add-ordering.html | 26 + .../scripting-1/the-script-element/README.md | 16 - .../css-module-assertions/charset-2.html | 19 - .../css-module-assertions/charset-bom.html | 20 - .../css-module-assertions/charset.html | 37 - .../content-type-checking.html | 39 - .../cors-crossorigin-requests.html | 33 - .../credentials.sub.html | 55 - .../css-module-worker-test.html | 54 - .../import-css-module-basic.html | 83 - .../import-css-module-dynamic.html | 23 - .../css-module-assertions/integrity.html | 28 - .../load-error-events.html | 67 - .../referrer-policies.sub.html | 84 - .../css-module-assertions/relative-urls.html | 18 - .../resources/atImported.css | 3 - .../resources/bad-import.css | 4 - .../resources/basic-large.css | 7 - .../css-module-assertions/resources/basic.css | 3 - .../resources/bom-utf-16be.css | Bin 64 -> 0 bytes .../resources/bom-utf-16le.css | Bin 64 -> 0 bytes .../resources/bom-utf-8.css | 1 - .../resources/credentials-iframe.sub.html | 33 - .../resources/cross-origin.py | 17 - ...igin-import-parse-error-with-cors.sub.html | 15 - .../crossorigin-import-with-cors.sub.html | 15 - .../crossorigin-import-without-cors.sub.html | 15 - .../css-module-without-assertion-iframe.html | 22 - .../resources/integrity-matches.js | 2 - .../resources/integrity-mismatches.js | 2 - .../resources/load-error-events.py | 14 - .../resources/load-relative-url.css | 5 - .../resources/malformed.css | 7 - .../resources/parse-error.css | 2 - .../resources/record-fetch.py | 20 - .../resources/referrer-checker.py | 7 - .../css-module-assertions/resources/utf-8.css | 3 - .../resources/windows-1250.css | 3 - .../resources/worker-dynamic-import.sub.js | 3 - .../resources/worker.sub.js | 2 - .../script-element-css-src.html | 14 - ...amic-import-with-assertion-argument.any.js | 18 - .../empty-assertion-clause.html | 19 - .../empty-assertion-clause.js | 2 - .../import-assertions/empty-type-assertion.js | 2 - .../import-assertions/export-hello.js | 1 - .../import-assertions/hello.js | 1 - .../invalid-import-errors-order.html | 36 - .../invalid-type-assertion-error.html | 28 - .../invalid-type-assertion.js | 2 - .../javascript-type-assertion.js | 2 - .../import-assertions/js-type-assertion.js | 2 - .../unsupported-assertion.html | 22 - .../unsupported-assertion.js | 2 - .../json-module-assertions/array.json | 1 - .../json-module-assertions/bom-utf-16be.json | Bin 40 -> 0 bytes .../json-module-assertions/bom-utf-16le.json | Bin 40 -> 0 bytes .../json-module-assertions/bom-utf-8.json | 1 - .../json-module-assertions/charset-2.html | 19 - .../json-module-assertions/charset-bom.any.js | 17 - .../json-module-assertions/charset.html | 37 - .../cors-crossorigin-requests.html | 33 - .../credentials-iframe.sub.html | 33 - .../credentials.sub.html | 55 - .../json-module-assertions/cross-origin.py | 16 - ...igin-import-parse-error-with-cors.sub.html | 15 - .../crossorigin-import-with-cors.sub.html | 15 - .../crossorigin-import-without-cors.sub.html | 15 - .../json-module-assertions/data.json | 3 - .../json-module-assertions/false.json | 1 - .../integrity-matches.js | 2 - .../integrity-mismatches.js | 2 - .../json-module-assertions/integrity.html | 28 - .../invalid-content-type.any.js | 17 - ...json-module-service-worker-test.https.html | 29 - .../load-error-events.html | 67 - .../load-error-events.py | 14 - .../json-module-assertions/module.html | 18 - .../json-module-assertions/module.json | 3 - .../json-module-assertions/non-object.any.js | 14 - .../json-module-assertions/null.json | 1 - .../json-module-assertions/parse-error.html | 21 - .../json-module-assertions/parse-error.json | 1 - .../referrer-checker.py | 6 - .../referrer-policies.sub.html | 84 - .../repeated-imports.any.js | 65 - .../script-element-json-src.html | 14 - .../serviceworker-dynamic-import.js | 5 - .../json-module-assertions/serviceworker.js | 1 - .../json-module-assertions/string.json | 1 - .../json-module-assertions/true.json | 1 - .../json-module-assertions/utf-8.json | 4 - .../valid-content-type.html | 46 - .../json-module-assertions/windows-1250.json | 4 - .../microtasks/css-import-in-worker.any.js | 4 +- .../microtasks/with-import-assertions.any.js | 4 +- .../wpt/tests/interfaces/crash-reporting.idl | 1 + .../wpt/tests/interfaces/css-font-loading.idl | 4 +- tests/wpt/tests/interfaces/dom.idl | 12 +- .../wpt/tests/interfaces/payment-handler.idl | 35 - .../wpt/tests/interfaces/payment-request.idl | 62 +- tests/wpt/tests/interfaces/pointerevents.idl | 2 + .../wpt/tests/interfaces/scheduling-apis.idl | 18 +- tests/wpt/tests/interfaces/turtledove.idl | 2 +- tests/wpt/tests/interfaces/webauthn.idl | 28 +- ...eover-heuristics-background.tentative.html | 19 - ...ouseover-heuristics-element.tentative.html | 18 - tests/wpt/tests/partitioned-popins/META.yml | 1 + ...pins.cookies.tentative.sub.https.window.js | 7 +- ...localStorage.tentative.sub.https.window.js | 3 +- ...rmission-all.tentative.sub.https.window.js | 32 + ...-all.tentative.sub.https.window.js.headers | 1 + ...sion-default.tentative.sub.https.window.js | 31 + ...mission-self.tentative.sub.https.window.js | 32 + ...self.tentative.sub.https.window.js.headers | 1 + .../partitioned-popins.cookies-iframe.html | 3 +- .../partitioned-popins.cookies-popin.py | 63 + .../partitioned-popins.cookies-window.html | 3 +- ...artitioned-popins.localStorage-iframe.html | 3 +- ...partitioned-popins.localStorage-popin.html | 3 +- ...artitioned-popins.localStorage-window.html | 3 +- ...partitioned-popins.permissions-iframe.html | 20 + .../partitioned-popins.permissions-popin.html | 12 + .../resources/digital-credentials-get.html | 33 + .../resources/permissions-policy.js | 9 +- ...pointer-boundary-events-for-shadowdom.html | 112 +- ...rent_doc_while_subdoc_captures-manual.html | 127 + ...bdoc_while_parent_doc_captures-manual.html | 128 + tests/wpt/tests/resources/testdriver.js | 2 +- tests/wpt/tests/resources/testharness.js | 17 +- ...fragment-open-link-in-new-tab-desktop.html | 28 + .../tentative/Selection-isCollapsed.html | 76 + .../tentative/property-reflection.html | 267 +- tests/wpt/tests/storage-access-api/helpers.js | 10 +- .../resources/embedded_responder.js | 8 +- .../streams/readable-byte-streams/tee.any.js | 33 + .../crashtests/from-cross-realm.https.html | 14 + .../reftests/non-scaling-stroke-005-ref.html | 47 + .../reftests/non-scaling-stroke-005.html | 57 + .../reftests/non-scaling-stroke-006-ref.html | 47 + .../reftests/non-scaling-stroke-006.html | 57 + .../wptrunner/executors/executormarionette.py | 9 +- .../wpt/tests/url/resources/urltestdata.json | 195 ++ tests/wpt/tests/viewport/META.yml | 4 + tests/wpt/tests/viewport/WEB_FEATURES.yml | 3 + .../wpt/tests/viewport/viewport-segments.html | 14 + .../viewport-segments.tentative.html | 15 - .../jsapi/js-string/basic.tentative.any.js | 383 ++ .../js-string/constants.tentative.any.js | 61 + .../jsapi/js-string/imports.tentative.any.js | 26 + .../tests/wasm/jsapi/js-string/polyfill.js | 170 + .../tests/wasm/jsapi/wasm-module-builder.js | 6 +- .../createcredential-clientdata.https.html | 47 + .../input/perform_actions/pointer_touch.py | 4 + .../webdriver/tests/bidi/network/__init__.py | 232 ++ .../webdriver/tests/bidi/network/conftest.py | 168 - .../bidi/network/continue_response/cookies.py | 201 ++ .../bidi/network/continue_response/headers.py | 230 ++ .../bidi/network/provide_response/cookies.py | 227 +- .../bidi/network/provide_response/headers.py | 10 +- .../script/realm_created/realm_created.py | 62 +- .../webdriver/tests/support/fixtures_bidi.py | 163 + .../conformance_tests/buffer.https.any.js | 105 +- .../byob_readbuffer.https.any.js | 21 +- .../webnn/conformance_tests/gru.https.any.js | 199 +- .../conformance_tests/gru_cell.https.any.js | 124 +- .../parallel-dispatch.https.any.js | 54 +- .../conformance_tests/resample2d.https.any.js | 112 + .../webnn/validation_tests/clamp.https.any.js | 35 +- .../destroyContext.https.any.js | 21 +- .../destroyGraph.https.any.js | 141 + .../validation_tests/expand.https.any.js | 31 +- .../validation_tests/hardSigmoid.https.any.js | 2 +- .../validation_tests/hardSwish.https.any.js | 2 +- .../invalid-rank.https.any.js | 16 + .../validation_tests/linear.https.any.js | 4 +- .../webnn/validation_tests/prelu.https.any.js | 42 +- .../validation_tests/reduction.https.any.js | 125 +- .../validation_tests/resample2d.https.any.js | 53 +- .../webnn/validation_tests/tanh.https.any.js | 2 +- .../validation_tests/transpose.https.any.js | 24 +- .../validation_tests/triangular.https.any.js | 3 + ...criptTransform-encoded-transform-worker.js | 13 +- .../RTCRtpParameters-codec.html | 6 +- 702 files changed, 27332 insertions(+), 6432 deletions(-) create mode 100644 tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/floats-147.xht.ini create mode 100644 tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/negative-margin-001.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/CSS2/text/crashtests/bidi-inline-fragment-oof-crash.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/css/CSS2/text/white-space-bidirectionality-001.xht.ini delete mode 100644 tests/wpt/meta-legacy-layout/css/CSS2/text/white-space-collapsing-bidi-002.xht.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-background-geometry.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-border-image.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-border-on-top.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-box-decoration-break.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-multiple-backgrounds.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-text-ellipsis.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-text-text-decorations.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-text-text-emphasis.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-backgrounds/parsing/background-clip-valid.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/css/css-color/animation/opacity-animation-ending-correctly-002.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-position/sticky-dialog.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-text/bidi/bidi-lines-001.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-text/bidi/bidi-tab-001.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-text/shaping/reference/shaping-023-ref.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-end-003.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-end-007.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-end-010.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-end-014.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-justify-003.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-justify-006.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-match-parent-root-logical.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-start-003.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-start-007.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-start-010.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-start-014.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/selectors/featureless-001.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/selectors/featureless-002.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/selectors/featureless-003.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/selectors/featureless-004.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/selectors/featureless-005.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/css/selectors/parsing/parse-focus-visible.html.ini create mode 100644 tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/modal-dialog.html.ini create mode 100644 tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/moveBefore-shadow-inside.html.ini create mode 100644 tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/mutation-events.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/grandparent_location_aboutsrcdoc.sub.window.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/grandparent_session_aboutsrcdoc.sub.window.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.ctm.ctx-filter.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-filter.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.no-transform.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.rotation.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.rotation.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.no-transform.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.rotation.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.nested-ctx-filter.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/text/direction-ltr.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter.w.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-filter.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-filter.w.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform.w.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation.w.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform.w.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation.w.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform.w.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.rotation.w.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-transform.w.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.rotation.w.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.no-transform.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.no-transform.w.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.rotation.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.rotation.w.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-transform.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-transform.w.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.rotation.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.rotation.w.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter.w.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-EN-L.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-EN-R.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-L.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-EN-L.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-EN-R.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-EN.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-L.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-R.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-R.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-L.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-R.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-bdi-L.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-bdi-R.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-dir-L.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-dir-R.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-L.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-R.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-style-L.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-style-R.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-textarea-L.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-textarea-R.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-EN-L.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-EN-R.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-L.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-EN-L.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-EN-R.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-EN.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-L.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-R.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-R.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-pre-N-EN.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-textarea-N-EN.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-001b.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-001c.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-002c.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-004a.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-004b.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-004c.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-005b.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-005c.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-006c.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-008a.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-008b.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-008c.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-009a.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-009b.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-009c.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-content-rtl.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/rendering/widgets/input-checkbox-switch-rtl.tentative.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe-loading-lazy-nav-location-assign.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/sizes/sizes-auto-rendering-2.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/sizes/sizes-auto-rendering-3.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/sizes/sizes-auto-rendering.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/update-the-image-data/fail-to-resolve.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/historical.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-input-element/range-tick-marks-02.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-2.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-bom.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/content-type-checking.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/cors-crossorigin-requests.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/credentials.sub.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/css-module-worker-test.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-basic.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-dynamic.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/integrity.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/load-error-events.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/referrer-policies.sub.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/relative-urls.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/dynamic-import-with-assertion-argument.any.js.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/empty-assertion-clause.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/invalid-type-assertion-error.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/unsupported-assertion.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-2.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-bom.any.js.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/cors-crossorigin-requests.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/credentials.sub.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/invalid-content-type.any.js.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/json-module-service-worker-test.https.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/load-error-events.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/module.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/non-object.any.js.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/parse-error.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/referrer-policies.sub.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/repeated-imports.any.js.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/valid-content-type.html.ini create mode 100644 tests/wpt/meta-legacy-layout/selection/shadow-dom/tentative/Selection-isCollapsed.html.ini create mode 100644 tests/wpt/meta-legacy-layout/wasm/jsapi/js-string/basic.tentative.any.js.ini create mode 100644 tests/wpt/meta-legacy-layout/wasm/jsapi/js-string/constants.tentative.any.js.ini create mode 100644 tests/wpt/meta-legacy-layout/wasm/jsapi/js-string/imports.tentative.any.js.ini create mode 100644 tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-background-geometry.html.ini create mode 100644 tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-border-image.html.ini create mode 100644 tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-border-on-top.html.ini create mode 100644 tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-box-decoration-break.html.ini create mode 100644 tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-multiple-backgrounds.html.ini create mode 100644 tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area.html.ini create mode 100644 tests/wpt/meta/css/css-backgrounds/background-clip/clip-text-ellipsis.html.ini create mode 100644 tests/wpt/meta/css/css-backgrounds/background-clip/clip-text-text-decorations.html.ini create mode 100644 tests/wpt/meta/css/css-backgrounds/background-clip/clip-text-text-emphasis.html.ini create mode 100644 tests/wpt/meta/css/css-backgrounds/parsing/background-clip-valid.html.ini create mode 100644 tests/wpt/meta/css/css-position/sticky-dialog.html.ini delete mode 100644 tests/wpt/meta/css/css-values/vh_not_refreshing_on_chrome.html.ini create mode 100644 tests/wpt/meta/css/selectors/featureless-001.html.ini create mode 100644 tests/wpt/meta/css/selectors/featureless-002.html.ini create mode 100644 tests/wpt/meta/css/selectors/featureless-003.html.ini create mode 100644 tests/wpt/meta/css/selectors/featureless-004.html.ini create mode 100644 tests/wpt/meta/css/selectors/featureless-005.html.ini create mode 100644 tests/wpt/meta/dom/nodes/moveBefore/tentative/modal-dialog.html.ini create mode 100644 tests/wpt/meta/dom/nodes/moveBefore/tentative/moveBefore-shadow-inside.html.ini create mode 100644 tests/wpt/meta/dom/nodes/moveBefore/tentative/mutation-events.html.ini create mode 100644 tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/grandparent_location_aboutsrcdoc.sub.window.js.ini create mode 100644 tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/grandparent_session_aboutsrcdoc.sub.window.js.ini delete mode 100644 tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.js.ini create mode 100644 tests/wpt/meta/html/canvas/element/layers/2d.layer.ctm.ctx-filter.html.ini delete mode 100644 tests/wpt/meta/html/canvas/element/layers/2d.layer.global-filter.html.ini create mode 100644 tests/wpt/meta/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.no-transform.html.ini create mode 100644 tests/wpt/meta/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.rotation.html.ini create mode 100644 tests/wpt/meta/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform.html.ini create mode 100644 tests/wpt/meta/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.rotation.html.ini delete mode 100644 tests/wpt/meta/html/canvas/element/layers/2d.layer.global-states.filter.no-transform.html.ini delete mode 100644 tests/wpt/meta/html/canvas/element/layers/2d.layer.global-states.filter.rotation.html.ini create mode 100644 tests/wpt/meta/html/canvas/element/layers/2d.layer.nested-ctx-filter.html.ini create mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter.html.ini create mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter.w.html.ini delete mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-filter.html.ini delete mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-filter.w.html.ini create mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform.html.ini create mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform.w.html.ini create mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation.html.ini create mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation.w.html.ini create mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform.w.html.ini create mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation.w.html.ini create mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform.w.html.ini create mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.rotation.w.html.ini delete mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-transform.w.html.ini delete mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-states.filter.rotation.w.html.ini create mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.no-transform.html.ini create mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.no-transform.w.html.ini create mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.rotation.html.ini create mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.rotation.w.html.ini delete mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-states.no-transform.html.ini delete mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-states.no-transform.w.html.ini delete mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-states.rotation.html.ini delete mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.global-states.rotation.w.html.ini create mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter.html.ini create mode 100644 tests/wpt/meta/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter.w.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-2.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-bom.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/css-module-assertions/charset.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/css-module-assertions/content-type-checking.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/css-module-assertions/cors-crossorigin-requests.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/css-module-assertions/credentials.sub.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/css-module-assertions/css-module-worker-test.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-basic.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-dynamic.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/css-module-assertions/integrity.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/css-module-assertions/load-error-events.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/css-module-assertions/referrer-policies.sub.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/css-module-assertions/relative-urls.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/import-assertions/dynamic-import-with-assertion-argument.any.js.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/import-assertions/empty-assertion-clause.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/import-assertions/invalid-type-assertion-error.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/import-assertions/unsupported-assertion.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-2.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-bom.any.js.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/json-module-assertions/charset.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/json-module-assertions/cors-crossorigin-requests.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/json-module-assertions/credentials.sub.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/json-module-assertions/invalid-content-type.any.js.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/json-module-assertions/json-module-service-worker-test.https.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/json-module-assertions/load-error-events.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/json-module-assertions/module.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/json-module-assertions/non-object.any.js.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/json-module-assertions/parse-error.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/json-module-assertions/referrer-policies.sub.html.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/json-module-assertions/repeated-imports.any.js.ini delete mode 100644 tests/wpt/meta/html/semantics/scripting-1/the-script-element/json-module-assertions/valid-content-type.html.ini delete mode 100644 tests/wpt/meta/html/webappapis/update-rendering/child-document-raf-order.html.ini create mode 100644 tests/wpt/meta/selection/shadow-dom/tentative/Selection-isCollapsed.html.ini create mode 100644 tests/wpt/meta/wasm/jsapi/js-string/basic.tentative.any.js.ini create mode 100644 tests/wpt/meta/wasm/jsapi/js-string/constants.tentative.any.js.ini create mode 100644 tests/wpt/meta/wasm/jsapi/js-string/imports.tentative.any.js.ini create mode 100644 tests/wpt/meta/workers/WorkerGlobalScope-close.html.ini create mode 100644 tests/wpt/tests/IndexedDB/idbcursor_update_objectstore.any.js delete mode 100644 tests/wpt/tests/IndexedDB/idbcursor_update_objectstore.htm delete mode 100644 tests/wpt/tests/IndexedDB/idbcursor_update_objectstore2.htm delete mode 100644 tests/wpt/tests/IndexedDB/idbcursor_update_objectstore3.htm delete mode 100644 tests/wpt/tests/IndexedDB/idbcursor_update_objectstore4.htm delete mode 100644 tests/wpt/tests/IndexedDB/idbcursor_update_objectstore5.htm delete mode 100644 tests/wpt/tests/IndexedDB/idbcursor_update_objectstore6.htm delete mode 100644 tests/wpt/tests/IndexedDB/idbcursor_update_objectstore7.htm delete mode 100644 tests/wpt/tests/IndexedDB/idbcursor_update_objectstore8.htm delete mode 100644 tests/wpt/tests/IndexedDB/idbcursor_update_objectstore9.htm create mode 100644 tests/wpt/tests/css/css-backgrounds/background-clip/clip-border-area-background-geometry-ref.html create mode 100644 tests/wpt/tests/css/css-backgrounds/background-clip/clip-border-area-background-geometry.html create mode 100644 tests/wpt/tests/css/css-backgrounds/background-clip/clip-border-area-border-image-ref.html create mode 100644 tests/wpt/tests/css/css-backgrounds/background-clip/clip-border-area-border-image.html create mode 100644 tests/wpt/tests/css/css-backgrounds/background-clip/clip-border-area-border-on-top-ref.html create mode 100644 tests/wpt/tests/css/css-backgrounds/background-clip/clip-border-area-border-on-top.html create mode 100644 tests/wpt/tests/css/css-backgrounds/background-clip/clip-border-area-box-decoration-break-ref.html create mode 100644 tests/wpt/tests/css/css-backgrounds/background-clip/clip-border-area-box-decoration-break.html create mode 100644 tests/wpt/tests/css/css-backgrounds/background-clip/clip-border-area-multiple-backgrounds-ref.html create mode 100644 tests/wpt/tests/css/css-backgrounds/background-clip/clip-border-area-multiple-backgrounds.html create mode 100644 tests/wpt/tests/css/css-backgrounds/background-clip/clip-border-area-ref.html create mode 100644 tests/wpt/tests/css/css-backgrounds/background-clip/clip-border-area.html create mode 100644 tests/wpt/tests/css/css-backgrounds/background-clip/clip-text-ellipsis-ref.html create mode 100644 tests/wpt/tests/css/css-backgrounds/background-clip/clip-text-ellipsis.html create mode 100644 tests/wpt/tests/css/css-backgrounds/background-clip/clip-text-text-decorations-ref.html create mode 100644 tests/wpt/tests/css/css-backgrounds/background-clip/clip-text-text-decorations.html create mode 100644 tests/wpt/tests/css/css-backgrounds/background-clip/clip-text-text-emphasis-ref.html create mode 100644 tests/wpt/tests/css/css-backgrounds/background-clip/clip-text-text-emphasis.html create mode 100644 tests/wpt/tests/css/css-break/background-image-004.html create mode 100644 tests/wpt/tests/css/css-break/background-image-005.html create mode 100644 tests/wpt/tests/css/css-break/background-image-006.html create mode 100644 tests/wpt/tests/css/css-break/background-image-007-ref.html create mode 100644 tests/wpt/tests/css/css-break/background-image-007.html create mode 100644 tests/wpt/tests/css/css-break/borders-008-ref.html create mode 100644 tests/wpt/tests/css/css-break/borders-008.html create mode 100644 tests/wpt/tests/css/css-break/box-shadow-005-ref.html create mode 100644 tests/wpt/tests/css/css-break/box-shadow-005.html create mode 100644 tests/wpt/tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-dynamic.html create mode 100644 tests/wpt/tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-preferred-page-dark-ref.html create mode 100644 tests/wpt/tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-preferred-page-dark.html create mode 100644 tests/wpt/tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-preferred-page-light-ref.html create mode 100644 tests/wpt/tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-preferred-page-light.html delete mode 100644 tests/wpt/tests/css/css-flexbox/flex-item-position-relative-001-ref.html delete mode 100644 tests/wpt/tests/css/css-flexbox/flex-item-position-relative-001.html create mode 100644 tests/wpt/tests/css/css-masking/clip-path/clip-path-circle-closest-corner.html create mode 100644 tests/wpt/tests/css/css-masking/clip-path/clip-path-circle-farthest-corner.html create mode 100644 tests/wpt/tests/css/css-masking/clip-path/clip-path-ellipse-closest-farthest-corner.html create mode 100644 tests/wpt/tests/css/css-masking/clip-path/reference/clip-path-circle-4-ref.html create mode 100644 tests/wpt/tests/css/css-masking/clip-path/reference/clip-path-ellipse-2-ref.html create mode 100644 tests/wpt/tests/css/css-position/sticky-dialog.html create mode 100644 tests/wpt/tests/css/css-shapes/shape-functions/shape-function-computed.tentative.html create mode 100644 tests/wpt/tests/css/css-shapes/shape-functions/shape-function-invalid.tentative.html create mode 100644 tests/wpt/tests/css/css-shapes/shape-functions/shape-function-valid.tentative.html create mode 100644 tests/wpt/tests/css/css-text/text-autospace/text-autospace-001-ref.html create mode 100644 tests/wpt/tests/css/css-viewport/zoom/svg-transform-ref.html create mode 100644 tests/wpt/tests/css/css-viewport/zoom/svg-transform.html create mode 100644 tests/wpt/tests/css/cssom/insertRule-import-trailing-garbage-crash.html create mode 100644 tests/wpt/tests/css/selectors/featureless-001.html create mode 100644 tests/wpt/tests/css/selectors/featureless-002.html create mode 100644 tests/wpt/tests/css/selectors/featureless-003.html create mode 100644 tests/wpt/tests/css/selectors/featureless-004.html create mode 100644 tests/wpt/tests/css/selectors/featureless-005.html create mode 100644 tests/wpt/tests/digital-credentials/allow-attribute.https.html create mode 100644 tests/wpt/tests/digital-credentials/dc-types.ts create mode 100644 tests/wpt/tests/digital-credentials/default-permissions-policy.https.sub.html create mode 100644 tests/wpt/tests/digital-credentials/disabled-by-permissions-policy.https.sub.html create mode 100644 tests/wpt/tests/digital-credentials/disabled-by-permissions-policy.https.sub.html.headers create mode 100644 tests/wpt/tests/digital-credentials/enabled-on-self-origin-by-permissions-policy.https.sub.html create mode 100644 tests/wpt/tests/digital-credentials/enabled-on-self-origin-by-permissions-policy.https.sub.html.headers create mode 100644 tests/wpt/tests/digital-credentials/get-user-activation.https.html create mode 100644 tests/wpt/tests/digital-credentials/identity-create.tentative.https.html create mode 100644 tests/wpt/tests/digital-credentials/tsconfig.json create mode 100644 tests/wpt/tests/dom/nodes/moveBefore/tentative/modal-dialog.html create mode 100644 tests/wpt/tests/dom/nodes/moveBefore/tentative/moveBefore-shadow-inside.html create mode 100644 tests/wpt/tests/dom/nodes/moveBefore/tentative/mutation-events.html create mode 100644 tests/wpt/tests/editing/run/createlink-with-selecting-img.html create mode 100644 tests/wpt/tests/fedcm/fedcm-storage-access-api-autogrant.tentative.https.sub.html create mode 100644 tests/wpt/tests/fenced-frame/automatic-beacon-data-cross-origin-subframe.https.html create mode 100644 tests/wpt/tests/html-aam/dir-role.tentative.html create mode 100644 tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/grandparent_location_aboutsrcdoc.sub.window.js create mode 100644 tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/grandparent_session_aboutsrcdoc.sub.window.js create mode 100644 tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/resources/child2.html create mode 100644 tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/resources/child_with_srcdoc_subframe.window.js create mode 100644 tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/resources/child_with_static_sandbox_srcdoc.html create mode 100644 tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/resources/child_with_static_srcdoc.html create mode 100644 tests/wpt/tests/html/canvas/element/layers/2d.layer.ctm.ctx-filter-expected.html create mode 100644 tests/wpt/tests/html/canvas/element/layers/2d.layer.ctm.ctx-filter.html delete mode 100644 tests/wpt/tests/html/canvas/element/layers/2d.layer.global-filter-expected.html delete mode 100644 tests/wpt/tests/html/canvas/element/layers/2d.layer.global-filter.html create mode 100644 tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.ctx-filter.no-transform-expected.html create mode 100644 tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.ctx-filter.no-transform.html create mode 100644 tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.ctx-filter.rotation-expected.html create mode 100644 tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.ctx-filter.rotation.html create mode 100644 tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.no-transform-expected.html create mode 100644 tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.no-transform.html create mode 100644 tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.rotation-expected.html create mode 100644 tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.rotation.html rename tests/wpt/tests/html/canvas/element/layers/{2d.layer.global-states.filter.no-transform-expected.html => 2d.layer.global-states.filter.no-cxt-filter.no-transform-expected.html} (85%) rename tests/wpt/tests/html/canvas/element/layers/{2d.layer.global-states.filter.no-transform.html => 2d.layer.global-states.filter.no-cxt-filter.no-transform.html} (84%) rename tests/wpt/tests/html/canvas/element/layers/{2d.layer.global-states.filter.rotation-expected.html => 2d.layer.global-states.filter.no-cxt-filter.rotation-expected.html} (86%) rename tests/wpt/tests/html/canvas/element/layers/{2d.layer.global-states.filter.rotation.html => 2d.layer.global-states.filter.no-cxt-filter.rotation.html} (85%) rename tests/wpt/tests/html/canvas/{offscreen/layers/2d.layer.global-states.no-transform-expected.html => element/layers/2d.layer.global-states.no-cxt-filter.no-transform-expected.html} (90%) rename tests/wpt/tests/html/canvas/element/layers/{2d.layer.global-states.no-transform.html => 2d.layer.global-states.no-cxt-filter.no-transform.html} (90%) rename tests/wpt/tests/html/canvas/{offscreen/layers/2d.layer.global-states.rotation-expected.html => element/layers/2d.layer.global-states.no-cxt-filter.rotation-expected.html} (90%) rename tests/wpt/tests/html/canvas/element/layers/{2d.layer.global-states.rotation.html => 2d.layer.global-states.no-cxt-filter.rotation.html} (90%) create mode 100644 tests/wpt/tests/html/canvas/element/layers/2d.layer.nested-ctx-filter-expected.html create mode 100644 tests/wpt/tests/html/canvas/element/layers/2d.layer.nested-ctx-filter.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter-expected.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter.w.html delete mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-filter-expected.html delete mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-filter.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform-expected.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform.w.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation-expected.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation.w.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform-expected.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform.w.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation-expected.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation.w.html rename tests/wpt/tests/html/canvas/offscreen/layers/{2d.layer.global-states.filter.no-transform-expected.html => 2d.layer.global-states.filter.no-cxt-filter.no-transform-expected.html} (85%) rename tests/wpt/tests/html/canvas/offscreen/layers/{2d.layer.global-states.filter.no-transform.html => 2d.layer.global-states.filter.no-cxt-filter.no-transform.html} (86%) rename tests/wpt/tests/html/canvas/offscreen/layers/{2d.layer.global-states.filter.no-transform.w.html => 2d.layer.global-states.filter.no-cxt-filter.no-transform.w.html} (90%) rename tests/wpt/tests/html/canvas/offscreen/layers/{2d.layer.global-states.filter.rotation-expected.html => 2d.layer.global-states.filter.no-cxt-filter.rotation-expected.html} (86%) rename tests/wpt/tests/html/canvas/offscreen/layers/{2d.layer.global-states.filter.rotation.html => 2d.layer.global-states.filter.no-cxt-filter.rotation.html} (86%) rename tests/wpt/tests/html/canvas/offscreen/layers/{2d.layer.global-states.filter.rotation.w.html => 2d.layer.global-states.filter.no-cxt-filter.rotation.w.html} (90%) rename tests/wpt/tests/html/canvas/{element/layers/2d.layer.global-states.no-transform-expected.html => offscreen/layers/2d.layer.global-states.no-cxt-filter.no-transform-expected.html} (90%) rename tests/wpt/tests/html/canvas/offscreen/layers/{2d.layer.global-states.no-transform.html => 2d.layer.global-states.no-cxt-filter.no-transform.html} (91%) rename tests/wpt/tests/html/canvas/offscreen/layers/{2d.layer.global-states.no-transform.w.html => 2d.layer.global-states.no-cxt-filter.no-transform.w.html} (93%) rename tests/wpt/tests/html/canvas/{element/layers/2d.layer.global-states.rotation-expected.html => offscreen/layers/2d.layer.global-states.no-cxt-filter.rotation-expected.html} (90%) rename tests/wpt/tests/html/canvas/offscreen/layers/{2d.layer.global-states.rotation.html => 2d.layer.global-states.no-cxt-filter.rotation.html} (91%) rename tests/wpt/tests/html/canvas/offscreen/layers/{2d.layer.global-states.rotation.w.html => 2d.layer.global-states.no-cxt-filter.rotation.w.html} (94%) create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter-expected.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter.html rename tests/wpt/tests/html/canvas/offscreen/layers/{2d.layer.global-filter.w.html => 2d.layer.nested-ctx-filter.w.html} (61%) create mode 100644 tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/top-layer-backdrop-remove-add-ordering-ref.html create mode 100644 tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/top-layer-backdrop-remove-add-ordering.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/README.md delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-2.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-bom.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/charset.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/content-type-checking.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/cors-crossorigin-requests.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/credentials.sub.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/css-module-worker-test.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-basic.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-dynamic.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/integrity.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/load-error-events.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/referrer-policies.sub.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/relative-urls.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/atImported.css delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/bad-import.css delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/basic-large.css delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/basic.css delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/bom-utf-16be.css delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/bom-utf-16le.css delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/bom-utf-8.css delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/credentials-iframe.sub.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/cross-origin.py delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/crossorigin-import-parse-error-with-cors.sub.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/crossorigin-import-with-cors.sub.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/crossorigin-import-without-cors.sub.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/css-module-without-assertion-iframe.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/integrity-matches.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/integrity-mismatches.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/load-error-events.py delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/load-relative-url.css delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/malformed.css delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/parse-error.css delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/record-fetch.py delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/referrer-checker.py delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/utf-8.css delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/windows-1250.css delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/worker-dynamic-import.sub.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/worker.sub.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/script-element-css-src.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/dynamic-import-with-assertion-argument.any.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/empty-assertion-clause.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/empty-assertion-clause.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/empty-type-assertion.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/export-hello.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/hello.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/invalid-import-errors-order.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/invalid-type-assertion-error.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/invalid-type-assertion.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/javascript-type-assertion.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/js-type-assertion.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/unsupported-assertion.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/unsupported-assertion.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/array.json delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/bom-utf-16be.json delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/bom-utf-16le.json delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/bom-utf-8.json delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-2.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-bom.any.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/charset.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/cors-crossorigin-requests.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/credentials-iframe.sub.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/credentials.sub.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/cross-origin.py delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/crossorigin-import-parse-error-with-cors.sub.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/crossorigin-import-with-cors.sub.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/crossorigin-import-without-cors.sub.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/data.json delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/false.json delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity-matches.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity-mismatches.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/invalid-content-type.any.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/json-module-service-worker-test.https.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/load-error-events.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/load-error-events.py delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/module.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/module.json delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/non-object.any.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/null.json delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/parse-error.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/parse-error.json delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/referrer-checker.py delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/referrer-policies.sub.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/repeated-imports.any.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/script-element-json-src.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/serviceworker-dynamic-import.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/serviceworker.js delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/string.json delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/true.json delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/utf-8.json delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/valid-content-type.html delete mode 100644 tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/windows-1250.json delete mode 100644 tests/wpt/tests/largest-contentful-paint/mouseover-heuristics-background.tentative.html delete mode 100644 tests/wpt/tests/largest-contentful-paint/mouseover-heuristics-element.tentative.html create mode 100644 tests/wpt/tests/partitioned-popins/partitioned-popins.permission-all.tentative.sub.https.window.js create mode 100644 tests/wpt/tests/partitioned-popins/partitioned-popins.permission-all.tentative.sub.https.window.js.headers create mode 100644 tests/wpt/tests/partitioned-popins/partitioned-popins.permission-default.tentative.sub.https.window.js create mode 100644 tests/wpt/tests/partitioned-popins/partitioned-popins.permission-self.tentative.sub.https.window.js create mode 100644 tests/wpt/tests/partitioned-popins/partitioned-popins.permission-self.tentative.sub.https.window.js.headers create mode 100644 tests/wpt/tests/partitioned-popins/resources/partitioned-popins.permissions-iframe.html create mode 100644 tests/wpt/tests/partitioned-popins/resources/partitioned-popins.permissions-popin.html create mode 100644 tests/wpt/tests/permissions-policy/resources/digital-credentials-get.html create mode 100644 tests/wpt/tests/pointerevents/pointerevent_capture_implicit_release_on_parent_doc_while_subdoc_captures-manual.html create mode 100644 tests/wpt/tests/pointerevents/pointerevent_capture_implicit_release_on_subdoc_while_parent_doc_captures-manual.html create mode 100644 tests/wpt/tests/scroll-to-text-fragment/scroll-to-text-fragment-open-link-in-new-tab-desktop.html create mode 100644 tests/wpt/tests/selection/shadow-dom/tentative/Selection-isCollapsed.html create mode 100644 tests/wpt/tests/streams/readable-streams/crashtests/from-cross-realm.https.html create mode 100644 tests/wpt/tests/svg/painting/reftests/non-scaling-stroke-005-ref.html create mode 100644 tests/wpt/tests/svg/painting/reftests/non-scaling-stroke-005.html create mode 100644 tests/wpt/tests/svg/painting/reftests/non-scaling-stroke-006-ref.html create mode 100644 tests/wpt/tests/svg/painting/reftests/non-scaling-stroke-006.html create mode 100644 tests/wpt/tests/viewport/META.yml create mode 100644 tests/wpt/tests/viewport/WEB_FEATURES.yml create mode 100644 tests/wpt/tests/viewport/viewport-segments.html delete mode 100644 tests/wpt/tests/visual-viewport/viewport-segments.tentative.html create mode 100644 tests/wpt/tests/wasm/jsapi/js-string/basic.tentative.any.js create mode 100644 tests/wpt/tests/wasm/jsapi/js-string/constants.tentative.any.js create mode 100644 tests/wpt/tests/wasm/jsapi/js-string/imports.tentative.any.js create mode 100644 tests/wpt/tests/wasm/jsapi/js-string/polyfill.js create mode 100644 tests/wpt/tests/webauthn/createcredential-clientdata.https.html delete mode 100644 tests/wpt/tests/webdriver/tests/bidi/network/conftest.py create mode 100644 tests/wpt/tests/webdriver/tests/bidi/network/continue_response/cookies.py create mode 100644 tests/wpt/tests/webdriver/tests/bidi/network/continue_response/headers.py create mode 100644 tests/wpt/tests/webnn/validation_tests/destroyGraph.https.any.js create mode 100644 tests/wpt/tests/webnn/validation_tests/invalid-rank.https.any.js rename tests/wpt/tests/{webrtc-extensions => webrtc}/RTCRtpParameters-codec.html (99%) diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/floats-147.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/floats-147.xht.ini new file mode 100644 index 00000000000..fc980a2963e --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/floats-147.xht.ini @@ -0,0 +1,2 @@ +[floats-147.xht] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/negative-margin-001.html.ini b/tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/negative-margin-001.html.ini new file mode 100644 index 00000000000..b62ca885147 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/negative-margin-001.html.ini @@ -0,0 +1,2 @@ +[negative-margin-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/text/crashtests/bidi-inline-fragment-oof-crash.html.ini b/tests/wpt/meta-legacy-layout/css/CSS2/text/crashtests/bidi-inline-fragment-oof-crash.html.ini new file mode 100644 index 00000000000..8d35c16fd3f --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/CSS2/text/crashtests/bidi-inline-fragment-oof-crash.html.ini @@ -0,0 +1,2 @@ +[bidi-inline-fragment-oof-crash.html] + expected: CRASH diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/text/white-space-bidirectionality-001.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/text/white-space-bidirectionality-001.xht.ini deleted file mode 100644 index dbb09056255..00000000000 --- a/tests/wpt/meta-legacy-layout/css/CSS2/text/white-space-bidirectionality-001.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[white-space-bidirectionality-001.xht] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/text/white-space-collapsing-bidi-002.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/text/white-space-collapsing-bidi-002.xht.ini deleted file mode 100644 index e95a922f859..00000000000 --- a/tests/wpt/meta-legacy-layout/css/CSS2/text/white-space-collapsing-bidi-002.xht.ini +++ /dev/null @@ -1,3 +0,0 @@ -[white-space-collapsing-bidi-002.xht] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-background-geometry.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-background-geometry.html.ini new file mode 100644 index 00000000000..7b5725dade5 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-background-geometry.html.ini @@ -0,0 +1,2 @@ +[clip-border-area-background-geometry.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-border-image.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-border-image.html.ini new file mode 100644 index 00000000000..ee2385389f2 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-border-image.html.ini @@ -0,0 +1,2 @@ +[clip-border-area-border-image.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-border-on-top.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-border-on-top.html.ini new file mode 100644 index 00000000000..391f73662c5 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-border-on-top.html.ini @@ -0,0 +1,2 @@ +[clip-border-area-border-on-top.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-box-decoration-break.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-box-decoration-break.html.ini new file mode 100644 index 00000000000..473a30106d1 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-box-decoration-break.html.ini @@ -0,0 +1,2 @@ +[clip-border-area-box-decoration-break.html] + expected: CRASH diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-multiple-backgrounds.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-multiple-backgrounds.html.ini new file mode 100644 index 00000000000..dedf4790821 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area-multiple-backgrounds.html.ini @@ -0,0 +1,2 @@ +[clip-border-area-multiple-backgrounds.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area.html.ini new file mode 100644 index 00000000000..0242ce1c2dc --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-border-area.html.ini @@ -0,0 +1,2 @@ +[clip-border-area.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-text-ellipsis.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-text-ellipsis.html.ini new file mode 100644 index 00000000000..d91d67cccf5 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-text-ellipsis.html.ini @@ -0,0 +1,2 @@ +[clip-text-ellipsis.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-text-text-decorations.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-text-text-decorations.html.ini new file mode 100644 index 00000000000..204009f707e --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-text-text-decorations.html.ini @@ -0,0 +1,2 @@ +[clip-text-text-decorations.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-text-text-emphasis.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-text-text-emphasis.html.ini new file mode 100644 index 00000000000..b0229e300f6 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-text-text-emphasis.html.ini @@ -0,0 +1,2 @@ +[clip-text-text-emphasis.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/parsing/background-clip-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/parsing/background-clip-computed.html.ini index 2237d957e08..e2c963b807f 100644 --- a/tests/wpt/meta-legacy-layout/css/css-backgrounds/parsing/background-clip-computed.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/parsing/background-clip-computed.html.ini @@ -5,3 +5,8 @@ [Property background-clip value 'border-box, padding-box, content-box'] expected: FAIL + [Property background-clip value 'border-area'] + expected: FAIL + + [Property background-clip value 'border-box, padding-box, content-box, border-area'] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/parsing/background-clip-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/parsing/background-clip-valid.html.ini new file mode 100644 index 00000000000..1a09ce1f0b0 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/parsing/background-clip-valid.html.ini @@ -0,0 +1,6 @@ +[background-clip-valid.html] + [e.style['background-clip'\] = "border-area" should set the property value] + expected: FAIL + + [e.style['background-clip'\] = "border-box, padding-box, content-box, border-area" should set the property value] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/parsing/background-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/parsing/background-computed.html.ini index ea265736542..92d39ecc7b1 100644 --- a/tests/wpt/meta-legacy-layout/css/css-backgrounds/parsing/background-computed.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/parsing/background-computed.html.ini @@ -151,3 +151,6 @@ [Property background-position-x value '-20%, 10px'] expected: FAIL + + [Property background-clip value 'content-box, border-box, border-area'] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-color/animation/opacity-animation-ending-correctly-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-color/animation/opacity-animation-ending-correctly-002.html.ini deleted file mode 100644 index 07545b0d444..00000000000 --- a/tests/wpt/meta-legacy-layout/css/css-color/animation/opacity-animation-ending-correctly-002.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[opacity-animation-ending-correctly-002.html] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-one-sets-flex-basis-to-zero-px.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-one-sets-flex-basis-to-zero-px.html.ini index 523d5da3d96..f5a2dba893d 100644 --- a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-one-sets-flex-basis-to-zero-px.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-one-sets-flex-basis-to-zero-px.html.ini @@ -2,11 +2,32 @@ [.flexbox 3] expected: FAIL - [.flexbox 4] - expected: FAIL - - [.flexbox 5] - expected: FAIL - [.flexbox 6] expected: FAIL + + [.flexbox 10] + expected: FAIL + + [.flexbox 11] + expected: FAIL + + [.flexbox 12] + expected: FAIL + + [.flexbox 13] + expected: FAIL + + [.flexbox 14] + expected: FAIL + + [.flexbox 15] + expected: FAIL + + [.flexbox 16] + expected: FAIL + + [.flexbox 17] + expected: FAIL + + [.flexbox 18] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-fonts/generic-family-keywords-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-fonts/generic-family-keywords-001.html.ini index 2841474c410..96ebd8b1b48 100644 --- a/tests/wpt/meta-legacy-layout/css/css-fonts/generic-family-keywords-001.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-fonts/generic-family-keywords-001.html.ini @@ -28,3 +28,6 @@ [@font-face matching for quoted and unquoted ui-monospace] expected: FAIL + + [@font-face matching for quoted and unquoted system-ui] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-position/sticky-dialog.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/sticky-dialog.html.ini new file mode 100644 index 00000000000..fc7f012b214 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-position/sticky-dialog.html.ini @@ -0,0 +1,3 @@ +[sticky-dialog.html] + [Once in the top-layer position:sticky computes to position:absolute] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text-decor/animations/text-decoration-thickness-interpolation.html.ini b/tests/wpt/meta-legacy-layout/css/css-text-decor/animations/text-decoration-thickness-interpolation.html.ini index f3e1ede6af8..1fb78ffbb3e 100644 --- a/tests/wpt/meta-legacy-layout/css/css-text-decor/animations/text-decoration-thickness-interpolation.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-text-decor/animations/text-decoration-thickness-interpolation.html.ini @@ -862,3 +862,483 @@ [Web Animations: property from [100%\] to [2em\] at (1) should be [32px\]] expected: FAIL + + [CSS Transitions: property from [100%\] to [0%\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0%\] at (0.3) should be [70%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0%\] at (0.6) should be [40%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0%\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0%\] at (0.3) should be [70%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0%\] at (0.6) should be [40%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0%\] at (0) should be [100%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0%\] at (0.3) should be [70%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0%\] at (0.6) should be [40%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0%\] at (0) should be [100%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0%\] at (0.3) should be [70%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0%\] at (0.6) should be [40%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [200%\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [200%\] at (0.3) should be [130%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [200%\] at (0.6) should be [160%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [200%\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [200%\] at (0.3) should be [130%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [200%\] at (0.6) should be [160%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [200%\] at (0) should be [100%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [200%\] at (0.3) should be [130%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [200%\] at (0.6) should be [160%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [200%\] at (0) should be [100%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [200%\] at (0.3) should be [130%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [200%\] at (0.6) should be [160%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [CSS Transitions: property from [16px\] to [0%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Transitions: property from [16px\] to [0%\] at (0.3) should be [calc(0% + 11.2px)\]] + expected: FAIL + + [CSS Transitions: property from [16px\] to [0%\] at (0.6) should be [calc(0% + 6.4px)\]] + expected: FAIL + + [CSS Transitions: property from [16px\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [16px\] to [0%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [16px\] to [0%\] at (0.3) should be [calc(0% + 11.2px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [16px\] to [0%\] at (0.6) should be [calc(0% + 6.4px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [16px\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [CSS Animations: property from [16px\] to [0%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Animations: property from [16px\] to [0%\] at (0.3) should be [calc(0% + 11.2px)\]] + expected: FAIL + + [CSS Animations: property from [16px\] to [0%\] at (0.6) should be [calc(0% + 6.4px)\]] + expected: FAIL + + [CSS Animations: property from [16px\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [Web Animations: property from [16px\] to [0%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [Web Animations: property from [16px\] to [0%\] at (0.3) should be [calc(0% + 11.2px)\]] + expected: FAIL + + [Web Animations: property from [16px\] to [0%\] at (0.6) should be [calc(0% + 6.4px)\]] + expected: FAIL + + [Web Animations: property from [16px\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions: property from [16px\] to [200%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Transitions: property from [16px\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]] + expected: FAIL + + [CSS Transitions: property from [16px\] to [200%\] at (0.6) should be [calc(120% + 6.4px)\]] + expected: FAIL + + [CSS Transitions: property from [16px\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [16px\] to [200%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [16px\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [16px\] to [200%\] at (0.6) should be [calc(120% + 6.4px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [16px\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [CSS Animations: property from [16px\] to [200%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Animations: property from [16px\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]] + expected: FAIL + + [CSS Animations: property from [16px\] to [200%\] at (0.6) should be [calc(120% + 6.4px)\]] + expected: FAIL + + [CSS Animations: property from [16px\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [Web Animations: property from [16px\] to [200%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [Web Animations: property from [16px\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]] + expected: FAIL + + [Web Animations: property from [16px\] to [200%\] at (0.6) should be [calc(120% + 6.4px)\]] + expected: FAIL + + [Web Animations: property from [16px\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [CSS Transitions: property from [1em\] to [0%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Transitions: property from [1em\] to [0%\] at (0.3) should be [calc(0% + 11.2px)\]] + expected: FAIL + + [CSS Transitions: property from [1em\] to [0%\] at (0.6) should be [calc(0% + 6.4px)\]] + expected: FAIL + + [CSS Transitions: property from [1em\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1em\] to [0%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1em\] to [0%\] at (0.3) should be [calc(0% + 11.2px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1em\] to [0%\] at (0.6) should be [calc(0% + 6.4px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1em\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [CSS Animations: property from [1em\] to [0%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Animations: property from [1em\] to [0%\] at (0.3) should be [calc(0% + 11.2px)\]] + expected: FAIL + + [CSS Animations: property from [1em\] to [0%\] at (0.6) should be [calc(0% + 6.4px)\]] + expected: FAIL + + [CSS Animations: property from [1em\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [Web Animations: property from [1em\] to [0%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [Web Animations: property from [1em\] to [0%\] at (0.3) should be [calc(0% + 11.2px)\]] + expected: FAIL + + [Web Animations: property from [1em\] to [0%\] at (0.6) should be [calc(0% + 6.4px)\]] + expected: FAIL + + [Web Animations: property from [1em\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions: property from [1em\] to [200%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Transitions: property from [1em\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]] + expected: FAIL + + [CSS Transitions: property from [1em\] to [200%\] at (0.6) should be [calc(120% + 6.4px)\]] + expected: FAIL + + [CSS Transitions: property from [1em\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1em\] to [200%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1em\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1em\] to [200%\] at (0.6) should be [calc(120% + 6.4px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1em\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [CSS Animations: property from [1em\] to [200%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Animations: property from [1em\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]] + expected: FAIL + + [CSS Animations: property from [1em\] to [200%\] at (0.6) should be [calc(120% + 6.4px)\]] + expected: FAIL + + [CSS Animations: property from [1em\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [Web Animations: property from [1em\] to [200%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [Web Animations: property from [1em\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]] + expected: FAIL + + [Web Animations: property from [1em\] to [200%\] at (0.6) should be [calc(120% + 6.4px)\]] + expected: FAIL + + [Web Animations: property from [1em\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0px\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0px\] at (0.3) should be [70%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0px\] at (0.6) should be [40%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0px\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0px\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0px\] at (0.3) should be [70%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0px\] at (0.6) should be [40%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0px\] at (1) should be [0%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0px\] at (0) should be [100%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0px\] at (0.3) should be [70%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0px\] at (0.6) should be [40%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0px\] at (1) should be [0%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0px\] at (0) should be [100%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0px\] at (0.3) should be [70%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0px\] at (0.6) should be [40%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0px\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [32px\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [32px\] at (0.3) should be [calc(70% + 9.6px)\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [32px\] at (0.6) should be [calc(40% + 19.2px)\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [32px\] at (1) should be [calc(0% + 32px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [32px\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [32px\] at (0.3) should be [calc(70% + 9.6px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [32px\] at (0.6) should be [calc(40% + 19.2px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [32px\] at (1) should be [calc(0% + 32px)\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [32px\] at (0) should be [100%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [32px\] at (0.3) should be [calc(70% + 9.6px)\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [32px\] at (0.6) should be [calc(40% + 19.2px)\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [32px\] at (1) should be [calc(0% + 32px)\]] + expected: FAIL + + [Web Animations: property from [100%\] to [32px\] at (0) should be [100%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [32px\] at (0.3) should be [calc(70% + 9.6px)\]] + expected: FAIL + + [Web Animations: property from [100%\] to [32px\] at (0.6) should be [calc(40% + 19.2px)\]] + expected: FAIL + + [Web Animations: property from [100%\] to [32px\] at (1) should be [calc(0% + 32px)\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0em\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0em\] at (0.3) should be [70%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0em\] at (0.6) should be [40%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0em\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0em\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0em\] at (0.3) should be [70%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0em\] at (0.6) should be [40%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0em\] at (1) should be [0%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0em\] at (0) should be [100%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0em\] at (0.3) should be [70%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0em\] at (0.6) should be [40%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0em\] at (1) should be [0%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0em\] at (0) should be [100%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0em\] at (0.3) should be [70%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0em\] at (0.6) should be [40%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0em\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [2em\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [2em\] at (0.3) should be [calc(70% + 9.6px)\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [2em\] at (0.6) should be [calc(40% + 19.2px)\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [2em\] at (1) should be [calc(0% + 32px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [2em\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [2em\] at (0.3) should be [calc(70% + 9.6px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [2em\] at (0.6) should be [calc(40% + 19.2px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [2em\] at (1) should be [calc(0% + 32px)\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [2em\] at (0) should be [100%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [2em\] at (0.3) should be [calc(70% + 9.6px)\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [2em\] at (0.6) should be [calc(40% + 19.2px)\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [2em\] at (1) should be [calc(0% + 32px)\]] + expected: FAIL + + [Web Animations: property from [100%\] to [2em\] at (0) should be [100%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [2em\] at (0.3) should be [calc(70% + 9.6px)\]] + expected: FAIL + + [Web Animations: property from [100%\] to [2em\] at (0.6) should be [calc(40% + 19.2px)\]] + expected: FAIL + + [Web Animations: property from [100%\] to [2em\] at (1) should be [calc(0% + 32px)\]] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/bidi/bidi-lines-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/bidi/bidi-lines-001.html.ini new file mode 100644 index 00000000000..aa2029fb7e9 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-text/bidi/bidi-lines-001.html.ini @@ -0,0 +1,2 @@ +[bidi-lines-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/bidi/bidi-tab-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/bidi/bidi-tab-001.html.ini new file mode 100644 index 00000000000..a7cb98aad02 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-text/bidi/bidi-tab-001.html.ini @@ -0,0 +1,2 @@ +[bidi-tab-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/shaping/reference/shaping-023-ref.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/shaping/reference/shaping-023-ref.html.ini new file mode 100644 index 00000000000..5d9260aca14 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-text/shaping/reference/shaping-023-ref.html.ini @@ -0,0 +1,2 @@ +[shaping-023-ref.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-end-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-end-003.html.ini deleted file mode 100644 index a4bcce49617..00000000000 --- a/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-end-003.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[text-align-end-003.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-end-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-end-007.html.ini deleted file mode 100644 index 30a7c84706f..00000000000 --- a/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-end-007.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[text-align-end-007.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-end-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-end-010.html.ini new file mode 100644 index 00000000000..05ce4683b84 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-end-010.html.ini @@ -0,0 +1,2 @@ +[text-align-end-010.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-end-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-end-014.html.ini deleted file mode 100644 index 63fa088ee61..00000000000 --- a/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-end-014.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[text-align-end-014.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-justify-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-justify-003.html.ini deleted file mode 100644 index b6ffbce2aeb..00000000000 --- a/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-justify-003.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[text-align-justify-003.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-justify-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-justify-006.html.ini new file mode 100644 index 00000000000..a5f6ec8ff14 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-justify-006.html.ini @@ -0,0 +1,2 @@ +[text-align-justify-006.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-match-parent-root-logical.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-match-parent-root-logical.html.ini new file mode 100644 index 00000000000..5f0bf622b2e --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-match-parent-root-logical.html.ini @@ -0,0 +1,2 @@ +[text-align-match-parent-root-logical.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-start-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-start-003.html.ini deleted file mode 100644 index 617812033d1..00000000000 --- a/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-start-003.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[text-align-start-003.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-start-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-start-007.html.ini deleted file mode 100644 index 8bd4f0de9b2..00000000000 --- a/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-start-007.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[text-align-start-007.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-start-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-start-010.html.ini new file mode 100644 index 00000000000..fc425641ff8 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-start-010.html.ini @@ -0,0 +1,2 @@ +[text-align-start-010.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-start-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-start-014.html.ini deleted file mode 100644 index 2699d7f1f21..00000000000 --- a/tests/wpt/meta-legacy-layout/css/css-text/text-align/text-align-start-014.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[text-align-start-014.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/text-autospace/text-autospace-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/text-autospace/text-autospace-001.html.ini index 81c60721b6b..53e0ba7a9c3 100644 --- a/tests/wpt/meta-legacy-layout/css/css-text/text-autospace/text-autospace-001.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-text/text-autospace/text-autospace-001.html.ini @@ -1,2 +1,2 @@ [text-autospace-001.html] - expected: ERROR + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-values/hypot-pow-sqrt-serialize.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/hypot-pow-sqrt-serialize.html.ini index b6129abe575..66280d74723 100644 --- a/tests/wpt/meta-legacy-layout/css/css-values/hypot-pow-sqrt-serialize.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-values/hypot-pow-sqrt-serialize.html.ini @@ -40,3 +40,6 @@ ['scale(calc(hypot(1) * 0.5))' as a computed value should serialize as 'matrix(0.5, 0, 0, 0.5, 0, 0)'.] expected: FAIL + + ['hypot(2px, 40%)' as a specified value should serialize as 'hypot(2px, 40%)'.] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini b/tests/wpt/meta-legacy-layout/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini index 037d7e0f951..2869eb8616e 100644 --- a/tests/wpt/meta-legacy-layout/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini +++ b/tests/wpt/meta-legacy-layout/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini @@ -4,3 +4,6 @@ [throws if handleEvent is thruthy and not callable] expected: FAIL + + [calls handleEvent method of event listener] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/cssom/getComputedStyle-insets-relpos-inline.html.ini b/tests/wpt/meta-legacy-layout/css/cssom/getComputedStyle-insets-relpos-inline.html.ini index bcb8287b657..8d0f8f2fcaa 100644 --- a/tests/wpt/meta-legacy-layout/css/cssom/getComputedStyle-insets-relpos-inline.html.ini +++ b/tests/wpt/meta-legacy-layout/css/cssom/getComputedStyle-insets-relpos-inline.html.ini @@ -1,4 +1,5 @@ [getComputedStyle-insets-relpos-inline.html] + expected: CRASH [OOF with left fixed right auto in relpos inline container] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/selectors/featureless-001.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/featureless-001.html.ini new file mode 100644 index 00000000000..59442bd0d98 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/selectors/featureless-001.html.ini @@ -0,0 +1,2 @@ +[featureless-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/selectors/featureless-002.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/featureless-002.html.ini new file mode 100644 index 00000000000..23eb4698034 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/selectors/featureless-002.html.ini @@ -0,0 +1,2 @@ +[featureless-002.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/selectors/featureless-003.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/featureless-003.html.ini new file mode 100644 index 00000000000..55beeb40bfe --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/selectors/featureless-003.html.ini @@ -0,0 +1,2 @@ +[featureless-003.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/selectors/featureless-004.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/featureless-004.html.ini new file mode 100644 index 00000000000..8500c1d70f1 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/selectors/featureless-004.html.ini @@ -0,0 +1,2 @@ +[featureless-004.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/selectors/featureless-005.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/featureless-005.html.ini new file mode 100644 index 00000000000..d7717de42f3 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/selectors/featureless-005.html.ini @@ -0,0 +1,2 @@ +[featureless-005.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/selectors/focus-visible-017-2.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/focus-visible-017-2.html.ini index db1e8bf79d0..47a93b50f94 100644 --- a/tests/wpt/meta-legacy-layout/css/selectors/focus-visible-017-2.html.ini +++ b/tests/wpt/meta-legacy-layout/css/selectors/focus-visible-017-2.html.ini @@ -1,7 +1,4 @@ [focus-visible-017-2.html] - [":focus-visible" should be a valid selector] - expected: FAIL - [By default initial programatic focus matches ':focus-visible', so the element ABBR shows a focus ring with 'outline-style: auto'] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/selectors/focus-visible-017.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/focus-visible-017.html.ini index a8d81f5a661..871c186ee35 100644 --- a/tests/wpt/meta-legacy-layout/css/selectors/focus-visible-017.html.ini +++ b/tests/wpt/meta-legacy-layout/css/selectors/focus-visible-017.html.ini @@ -1,7 +1,3 @@ [focus-visible-017.html] [By default initial programatic focus matches ':focus-visible', so the element shows a focus ring with 'outline-style: auto'] expected: FAIL - - [":focus-visible" should be a valid selector] - expected: FAIL - diff --git a/tests/wpt/meta-legacy-layout/css/selectors/focus-visible-023.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/focus-visible-023.html.ini index a6926807555..628de6d531c 100644 --- a/tests/wpt/meta-legacy-layout/css/selectors/focus-visible-023.html.ini +++ b/tests/wpt/meta-legacy-layout/css/selectors/focus-visible-023.html.ini @@ -1,6 +1,3 @@ [focus-visible-023.html] - [":focus-visible" should be a valid selector] - expected: FAIL - [:focus-visible stop matching after blur] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/selectors/focus-visible-script-focus-001.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/focus-visible-script-focus-001.html.ini index e997b9b4c86..71da94a6729 100644 --- a/tests/wpt/meta-legacy-layout/css/selectors/focus-visible-script-focus-001.html.ini +++ b/tests/wpt/meta-legacy-layout/css/selectors/focus-visible-script-focus-001.html.ini @@ -1,6 +1,3 @@ [focus-visible-script-focus-001.html] - [":focus-visible" should be a valid selector] - expected: FAIL - [Script focus without any previous user interaction matches :focus-visible] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/selectors/focus-within-009.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/focus-within-009.html.ini index eca9d312f36..37d644129e6 100644 --- a/tests/wpt/meta-legacy-layout/css/selectors/focus-within-009.html.ini +++ b/tests/wpt/meta-legacy-layout/css/selectors/focus-within-009.html.ini @@ -1,7 +1,4 @@ [focus-within-009.html] - [Initial State] - expected: FAIL - [Focus 'target1'] expected: FAIL @@ -17,9 +14,6 @@ [Focus 'target1' once again] expected: FAIL - [Detach 'container1' from the document] - expected: FAIL - [Try to focus 'target1'] expected: FAIL @@ -31,7 +25,3 @@ [Focus 'target1' for the last time] expected: FAIL - - [Move 'target1' in 'container2'] - expected: FAIL - diff --git a/tests/wpt/meta-legacy-layout/css/selectors/parsing/parse-focus-visible.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/parsing/parse-focus-visible.html.ini deleted file mode 100644 index c351eba9aab..00000000000 --- a/tests/wpt/meta-legacy-layout/css/selectors/parsing/parse-focus-visible.html.ini +++ /dev/null @@ -1,10 +0,0 @@ -[parse-focus-visible.html] - [":focus-visible" should be a valid selector] - expected: FAIL - - ["a:focus-visible" should be a valid selector] - expected: FAIL - - [":focus:not(:focus-visible)" should be a valid selector] - expected: FAIL - diff --git a/tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/modal-dialog.html.ini b/tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/modal-dialog.html.ini new file mode 100644 index 00000000000..a0c1433a6ec --- /dev/null +++ b/tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/modal-dialog.html.ini @@ -0,0 +1,3 @@ +[modal-dialog.html] + [when reparenting a modal dialog, the dialog should stay modal] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/moveBefore-shadow-inside.html.ini b/tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/moveBefore-shadow-inside.html.ini new file mode 100644 index 00000000000..51aee9b90ee --- /dev/null +++ b/tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/moveBefore-shadow-inside.html.ini @@ -0,0 +1,3 @@ +[moveBefore-shadow-inside.html] + [moveBefore-shadow-inside] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/mutation-events.html.ini b/tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/mutation-events.html.ini new file mode 100644 index 00000000000..2a626e85985 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/mutation-events.html.ini @@ -0,0 +1,3 @@ +[mutation-events.html] + [MutationEvents (if supported by the UA) are suppressed during `moveBefore()`] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-font-face.sub.tentative.html.ini b/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-font-face.sub.tentative.html.ini index 827af5f5244..817d85ae126 100644 --- a/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-font-face.sub.tentative.html.ini +++ b/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-font-face.sub.tentative.html.ini @@ -25,3 +25,6 @@ [sec-fetch-dest - Not sent to non-trustworthy same-origin destination] expected: FAIL + + [sec-fetch-user - Not sent to non-trustworthy cross-site destination] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/grandparent_location_aboutsrcdoc.sub.window.js.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/grandparent_location_aboutsrcdoc.sub.window.js.ini new file mode 100644 index 00000000000..47fe8f97479 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/grandparent_location_aboutsrcdoc.sub.window.js.ini @@ -0,0 +1,19 @@ +[grandparent_location_aboutsrcdoc.sub.window.html] + expected: ERROR + [cross-origin grandparent sets location to about:srcdoc] + expected: TIMEOUT + + [cross-origin grandparent sets location in same-doc navigation] + expected: NOTRUN + + [same-origin grandparent sets location to about:srcdoc] + expected: NOTRUN + + [same-origin grandparent sets location in same-doc navigation] + expected: NOTRUN + + [same-origin grandparent with sandboxed srcdoc grandchild that self navigates] + expected: NOTRUN + + [cross-origin grandparent with sandboxed srcdoc grandchild that self navigate] + expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/grandparent_session_aboutsrcdoc.sub.window.js.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/grandparent_session_aboutsrcdoc.sub.window.js.ini new file mode 100644 index 00000000000..ead534edffc --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/grandparent_session_aboutsrcdoc.sub.window.js.ini @@ -0,0 +1,13 @@ +[grandparent_session_aboutsrcdoc.sub.window.html] + expected: TIMEOUT + [Grandparent with cross-origin srdoc grandchild session] + expected: TIMEOUT + + [Grandparent with cross-origin sandboxed srdoc grandchild session] + expected: NOTRUN + + [Grandparent with same-origin srdoc grandchild session] + expected: NOTRUN + + [Grandparent with same-origin sandboxed srdoc grandchild session] + expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.ctm.ctx-filter.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.ctm.ctx-filter.html.ini new file mode 100644 index 00000000000..721215b89e8 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.ctm.ctx-filter.html.ini @@ -0,0 +1,2 @@ +[2d.layer.ctm.ctx-filter.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-filter.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-filter.html.ini deleted file mode 100644 index 7c8370f5626..00000000000 --- a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-filter.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[2d.layer.global-filter.html] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.no-transform.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.no-transform.html.ini new file mode 100644 index 00000000000..8a0835e5445 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.no-transform.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.filter.ctx-filter.no-transform.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.rotation.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.rotation.html.ini new file mode 100644 index 00000000000..6814d4bc79e --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.rotation.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.filter.ctx-filter.rotation.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform.html.ini new file mode 100644 index 00000000000..69987e0271f --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.filter.no-cxt-filter.no-transform.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.rotation.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.rotation.html.ini new file mode 100644 index 00000000000..f06b34dec77 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.rotation.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.filter.no-cxt-filter.rotation.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.no-transform.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.no-transform.html.ini deleted file mode 100644 index 5bfd6fbfd87..00000000000 --- a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.no-transform.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[2d.layer.global-states.filter.no-transform.html] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.rotation.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.rotation.html.ini deleted file mode 100644 index d69f71b10b6..00000000000 --- a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.rotation.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[2d.layer.global-states.filter.rotation.html] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.layer-rendering-state-reset-in-layer.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.layer-rendering-state-reset-in-layer.html.ini index 0c2a17e7e1d..2b9286f13d9 100644 --- a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.layer-rendering-state-reset-in-layer.html.ini +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.layer-rendering-state-reset-in-layer.html.ini @@ -1,3 +1,6 @@ [2d.layer.layer-rendering-state-reset-in-layer.html] [Tests that layers ignore the global context filter.] expected: FAIL + + [Tests that rendering states are reset in layers and restored after.] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.nested-ctx-filter.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.nested-ctx-filter.html.ini new file mode 100644 index 00000000000..bd449275f57 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.nested-ctx-filter.html.ini @@ -0,0 +1,2 @@ +[2d.layer.nested-ctx-filter.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-drawImage.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-drawImage.html.ini index c94490ae5ee..18fa4ea84ea 100644 --- a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-drawImage.html.ini +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-drawImage.html.ini @@ -1,5 +1,5 @@ [createImageBitmap-drawImage.html] - expected: ERROR + expected: TIMEOUT [createImageBitmap from an OffscreenCanvas resized, and drawImage on the created ImageBitmap] expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-serializable.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-serializable.html.ini index 7616121487c..ea398e580ef 100644 --- a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-serializable.html.ini +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-serializable.html.ini @@ -1,5 +1,5 @@ [createImageBitmap-serializable.html] - expected: TIMEOUT + expected: ERROR [Serialize ImageBitmap created from a vector SVGImageElement] expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-transfer.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-transfer.html.ini index 5d2657041d1..7e036a1c4e4 100644 --- a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-transfer.html.ini +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-transfer.html.ini @@ -1,5 +1,5 @@ [createImageBitmap-transfer.html] - expected: ERROR + expected: TIMEOUT [Transfer ImageBitmap created from a vector HTMLImageElement] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/text/direction-ltr.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/direction-ltr.html.ini new file mode 100644 index 00000000000..222c5bbb34b --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/direction-ltr.html.ini @@ -0,0 +1,2 @@ +[direction-ltr.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter.html.ini new file mode 100644 index 00000000000..721215b89e8 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter.html.ini @@ -0,0 +1,2 @@ +[2d.layer.ctm.ctx-filter.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter.w.html.ini new file mode 100644 index 00000000000..c7e85028469 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter.w.html.ini @@ -0,0 +1,2 @@ +[2d.layer.ctm.ctx-filter.w.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-filter.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-filter.html.ini deleted file mode 100644 index 7c8370f5626..00000000000 --- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-filter.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[2d.layer.global-filter.html] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-filter.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-filter.w.html.ini deleted file mode 100644 index 2ff1481c701..00000000000 --- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-filter.w.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[2d.layer.global-filter.w.html] - expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform.html.ini new file mode 100644 index 00000000000..f910a046875 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.ctx-filter.no-transform.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform.w.html.ini new file mode 100644 index 00000000000..fa0f18187d5 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform.w.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.ctx-filter.no-transform.w.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation.html.ini new file mode 100644 index 00000000000..f488bf2f8fb --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.ctx-filter.rotation.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation.w.html.ini new file mode 100644 index 00000000000..f3861229acf --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation.w.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.ctx-filter.rotation.w.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform.w.html.ini new file mode 100644 index 00000000000..4a4e8440cf8 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform.w.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.filter.ctx-filter.no-transform.w.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation.w.html.ini new file mode 100644 index 00000000000..10e14493090 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation.w.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.filter.ctx-filter.rotation.w.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform.w.html.ini new file mode 100644 index 00000000000..93377fbc62d --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform.w.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.filter.no-cxt-filter.no-transform.w.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.rotation.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.rotation.w.html.ini new file mode 100644 index 00000000000..6654f82a369 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.rotation.w.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.filter.no-cxt-filter.rotation.w.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-transform.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-transform.w.html.ini deleted file mode 100644 index d867e0fc45b..00000000000 --- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-transform.w.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[2d.layer.global-states.filter.no-transform.w.html] - expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.rotation.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.rotation.w.html.ini deleted file mode 100644 index af2eb3e5257..00000000000 --- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.rotation.w.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[2d.layer.global-states.filter.rotation.w.html] - expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.no-transform.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.no-transform.html.ini new file mode 100644 index 00000000000..ade399e0192 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.no-transform.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.no-cxt-filter.no-transform.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.no-transform.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.no-transform.w.html.ini new file mode 100644 index 00000000000..f73d7047f46 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.no-transform.w.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.no-cxt-filter.no-transform.w.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.rotation.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.rotation.html.ini new file mode 100644 index 00000000000..5c0ebc45ff9 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.rotation.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.no-cxt-filter.rotation.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.rotation.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.rotation.w.html.ini new file mode 100644 index 00000000000..7974878c829 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.rotation.w.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.no-cxt-filter.rotation.w.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-transform.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-transform.html.ini deleted file mode 100644 index 780decaea7a..00000000000 --- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-transform.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[2d.layer.global-states.no-transform.html] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-transform.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-transform.w.html.ini deleted file mode 100644 index 6f5fcab1e92..00000000000 --- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.no-transform.w.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[2d.layer.global-states.no-transform.w.html] - expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.rotation.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.rotation.html.ini deleted file mode 100644 index 67b4fa5c70a..00000000000 --- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.rotation.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[2d.layer.global-states.rotation.html] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.rotation.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.rotation.w.html.ini deleted file mode 100644 index d1c4919b910..00000000000 --- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.rotation.w.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[2d.layer.global-states.rotation.w.html] - expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.html.ini index 0c2a17e7e1d..2b9286f13d9 100644 --- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.html.ini +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.html.ini @@ -1,3 +1,6 @@ [2d.layer.layer-rendering-state-reset-in-layer.html] [Tests that layers ignore the global context filter.] expected: FAIL + + [Tests that rendering states are reset in layers and restored after.] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.worker.js.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.worker.js.ini index a90d210ab1e..3bca307ed98 100644 --- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.worker.js.ini +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.worker.js.ini @@ -1,3 +1,6 @@ [2d.layer.layer-rendering-state-reset-in-layer.worker.html] [Tests that layers ignore the global context filter.] expected: FAIL + + [Tests that rendering states are reset in layers and restored after.] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter.html.ini new file mode 100644 index 00000000000..bd449275f57 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter.html.ini @@ -0,0 +1,2 @@ +[2d.layer.nested-ctx-filter.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter.w.html.ini new file mode 100644 index 00000000000..1b37f366c50 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter.w.html.ini @@ -0,0 +1,2 @@ +[2d.layer.nested-ctx-filter.w.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir-auto-dynamic-changes.window.js.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir-auto-dynamic-changes.window.js.ini index 7395ce6f2ed..311973e2c98 100644 --- a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir-auto-dynamic-changes.window.js.ini +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir-auto-dynamic-changes.window.js.ini @@ -46,3 +46,9 @@ [slot provides updated directionality from host to a dir=auto container] expected: FAIL + + [dir=auto slot is not affected by text in value of input element children] + expected: FAIL + + [input direction changes if it stops being auto-directionality form-associated] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir-slots-directionality.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir-slots-directionality.html.ini index cd0a57e465c..f65d16935bf 100644 --- a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir-slots-directionality.html.ini +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir-slots-directionality.html.ini @@ -34,3 +34,24 @@ [dir=auto slot considers text in value of input element children] expected: FAIL + + [dir=auto slot ignores assigned nodes with dir attribute] + expected: FAIL + + [dir=auto slot ignores text in bdi assigned nodes] + expected: FAIL + + [dir=auto slot ignores text in value of input element children] + expected: FAIL + + [dir=auto slot is not affected by value of auto-directionality form associated elements] + expected: FAIL + + [inner slot is given directionality from slotted content] + expected: FAIL + + [dir=auto slot is not affected by content inside inner slot (version 1)] + expected: FAIL + + [dir=auto slot is not affected by content inside inner slot (version 2)] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-EN-L.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-EN-L.html.ini new file mode 100644 index 00000000000..9f8e18ce1de --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-EN-L.html.ini @@ -0,0 +1,2 @@ +[dir_auto-EN-L.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-EN-R.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-EN-R.html.ini new file mode 100644 index 00000000000..198065222cc --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-EN-R.html.ini @@ -0,0 +1,2 @@ +[dir_auto-EN-R.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-L.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-L.html.ini new file mode 100644 index 00000000000..57e9736bb27 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-L.html.ini @@ -0,0 +1,2 @@ +[dir_auto-L.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-EN-L.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-EN-L.html.ini new file mode 100644 index 00000000000..8190f8e083b --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-EN-L.html.ini @@ -0,0 +1,2 @@ +[dir_auto-N-EN-L.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-EN-R.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-EN-R.html.ini new file mode 100644 index 00000000000..81b26aa70c3 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-EN-R.html.ini @@ -0,0 +1,2 @@ +[dir_auto-N-EN-R.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-EN.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-EN.html.ini new file mode 100644 index 00000000000..019363e9530 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-EN.html.ini @@ -0,0 +1,2 @@ +[dir_auto-N-EN.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-L.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-L.html.ini new file mode 100644 index 00000000000..55aeb067c0e --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-L.html.ini @@ -0,0 +1,2 @@ +[dir_auto-N-L.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-R.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-R.html.ini new file mode 100644 index 00000000000..3a5c918929d --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-N-R.html.ini @@ -0,0 +1,2 @@ +[dir_auto-N-R.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-R.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-R.html.ini new file mode 100644 index 00000000000..499cd15487c --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-R.html.ini @@ -0,0 +1,2 @@ +[dir_auto-R.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-L.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-L.html.ini new file mode 100644 index 00000000000..b3e8cd63760 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-L.html.ini @@ -0,0 +1,2 @@ +[dir_auto-contained-L.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-R.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-R.html.ini new file mode 100644 index 00000000000..2b18c78a135 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-R.html.ini @@ -0,0 +1,2 @@ +[dir_auto-contained-R.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-bdi-L.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-bdi-L.html.ini new file mode 100644 index 00000000000..b81b7c2ff93 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-bdi-L.html.ini @@ -0,0 +1,2 @@ +[dir_auto-contained-bdi-L.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-bdi-R.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-bdi-R.html.ini new file mode 100644 index 00000000000..d8fb9117684 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-bdi-R.html.ini @@ -0,0 +1,2 @@ +[dir_auto-contained-bdi-R.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-dir-L.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-dir-L.html.ini new file mode 100644 index 00000000000..1073dac59f9 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-dir-L.html.ini @@ -0,0 +1,2 @@ +[dir_auto-contained-dir-L.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-dir-R.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-dir-R.html.ini new file mode 100644 index 00000000000..2768064bcb5 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-dir-R.html.ini @@ -0,0 +1,2 @@ +[dir_auto-contained-dir-R.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-L.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-L.html.ini new file mode 100644 index 00000000000..4911ea6ddf4 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-L.html.ini @@ -0,0 +1,2 @@ +[dir_auto-contained-dir_auto-L.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-R.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-R.html.ini new file mode 100644 index 00000000000..432c4b7c8fd --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-R.html.ini @@ -0,0 +1,2 @@ +[dir_auto-contained-dir_auto-R.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-style-L.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-style-L.html.ini new file mode 100644 index 00000000000..ffc39e8c275 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-style-L.html.ini @@ -0,0 +1,2 @@ +[dir_auto-contained-style-L.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-style-R.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-style-R.html.ini new file mode 100644 index 00000000000..e46d164337f --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-style-R.html.ini @@ -0,0 +1,2 @@ +[dir_auto-contained-style-R.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-textarea-L.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-textarea-L.html.ini new file mode 100644 index 00000000000..90fd5c0f993 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-textarea-L.html.ini @@ -0,0 +1,2 @@ +[dir_auto-contained-textarea-L.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-textarea-R.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-textarea-R.html.ini new file mode 100644 index 00000000000..78ebd3cbd9c --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-contained-textarea-R.html.ini @@ -0,0 +1,2 @@ +[dir_auto-contained-textarea-R.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-EN-L.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-EN-L.html.ini new file mode 100644 index 00000000000..89dab77831c --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-EN-L.html.ini @@ -0,0 +1,2 @@ +[dir_auto-input-EN-L.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-EN-R.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-EN-R.html.ini new file mode 100644 index 00000000000..78d7c4fc189 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-EN-R.html.ini @@ -0,0 +1,2 @@ +[dir_auto-input-EN-R.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-L.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-L.html.ini new file mode 100644 index 00000000000..4ca2966cc50 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-L.html.ini @@ -0,0 +1,2 @@ +[dir_auto-input-L.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-EN-L.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-EN-L.html.ini new file mode 100644 index 00000000000..b3781af8883 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-EN-L.html.ini @@ -0,0 +1,2 @@ +[dir_auto-input-N-EN-L.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-EN-R.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-EN-R.html.ini new file mode 100644 index 00000000000..0b6e863e507 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-EN-R.html.ini @@ -0,0 +1,2 @@ +[dir_auto-input-N-EN-R.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-EN.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-EN.html.ini new file mode 100644 index 00000000000..b591ac7acef --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-EN.html.ini @@ -0,0 +1,2 @@ +[dir_auto-input-N-EN.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-L.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-L.html.ini new file mode 100644 index 00000000000..ab8b3a09535 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-L.html.ini @@ -0,0 +1,2 @@ +[dir_auto-input-N-L.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-R.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-R.html.ini new file mode 100644 index 00000000000..a91a35baaa4 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-N-R.html.ini @@ -0,0 +1,2 @@ +[dir_auto-input-N-R.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-R.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-R.html.ini new file mode 100644 index 00000000000..e8b52a5f83d --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-input-R.html.ini @@ -0,0 +1,2 @@ +[dir_auto-input-R.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-isolate.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-isolate.html.ini index 66406e86118..4fdef114f90 100644 --- a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-isolate.html.ini +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-isolate.html.ini @@ -2,4 +2,3 @@ type: reftest reftype: == refurl: /html/dom/elements/global-attributes/dir_auto-isolate-ref.html - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-pre-N-EN.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-pre-N-EN.html.ini new file mode 100644 index 00000000000..a78f3b268dd --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-pre-N-EN.html.ini @@ -0,0 +1,2 @@ +[dir_auto-pre-N-EN.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-textarea-N-EN.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-textarea-N-EN.html.ini new file mode 100644 index 00000000000..fbcb5a0656b --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/dir_auto-textarea-N-EN.html.ini @@ -0,0 +1,2 @@ +[dir_auto-textarea-N-EN.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-001b.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-001b.html.ini deleted file mode 100644 index 0c124898973..00000000000 --- a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-001b.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[dir-isolation-001b.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-001c.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-001c.html.ini deleted file mode 100644 index 68004f49d5b..00000000000 --- a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-001c.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[dir-isolation-001c.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-002c.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-002c.html.ini deleted file mode 100644 index 6600f129998..00000000000 --- a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-002c.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[dir-isolation-002c.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-004a.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-004a.html.ini deleted file mode 100644 index 1ab297f9593..00000000000 --- a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-004a.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[dir-isolation-004a.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-004b.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-004b.html.ini deleted file mode 100644 index 4116ad5bb7d..00000000000 --- a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-004b.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[dir-isolation-004b.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-004c.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-004c.html.ini deleted file mode 100644 index 3e045af39bf..00000000000 --- a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-004c.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[dir-isolation-004c.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-005b.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-005b.html.ini deleted file mode 100644 index a98f4a4a394..00000000000 --- a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-005b.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[dir-isolation-005b.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-005c.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-005c.html.ini deleted file mode 100644 index 67e1ef32604..00000000000 --- a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-005c.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[dir-isolation-005c.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-006c.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-006c.html.ini deleted file mode 100644 index 1f511fbce3e..00000000000 --- a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-006c.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[dir-isolation-006c.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-008a.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-008a.html.ini deleted file mode 100644 index f9ac9edc2ee..00000000000 --- a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-008a.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[dir-isolation-008a.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-008b.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-008b.html.ini deleted file mode 100644 index 7ecc74b1150..00000000000 --- a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-008b.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[dir-isolation-008b.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-008c.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-008c.html.ini deleted file mode 100644 index cc6028dcf2f..00000000000 --- a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-008c.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[dir-isolation-008c.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-009a.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-009a.html.ini deleted file mode 100644 index 0b47330b200..00000000000 --- a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-009a.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[dir-isolation-009a.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-009b.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-009b.html.ini deleted file mode 100644 index 9401701f033..00000000000 --- a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-009b.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[dir-isolation-009b.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-009c.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-009c.html.ini deleted file mode 100644 index 6fbc2e2d6ee..00000000000 --- a/tests/wpt/meta-legacy-layout/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-009c.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[dir-isolation-009c.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/rendering/bidi-rendering/unicode-bidi-ua-rules.html.ini b/tests/wpt/meta-legacy-layout/html/rendering/bidi-rendering/unicode-bidi-ua-rules.html.ini index 1ba0e76c448..4349d4389f5 100644 --- a/tests/wpt/meta-legacy-layout/html/rendering/bidi-rendering/unicode-bidi-ua-rules.html.ini +++ b/tests/wpt/meta-legacy-layout/html/rendering/bidi-rendering/unicode-bidi-ua-rules.html.ini @@ -13,3 +13,12 @@ [UA stylesheet rule for unicode-bidi, for ] expected: FAIL + + [UA stylesheet rule for unicode-bidi, for ] + expected: FAIL + + [UA stylesheet rule for unicode-bidi, for
] + expected: FAIL + + [UA stylesheet rule for unicode-bidi, for ] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-content-rtl.html.ini b/tests/wpt/meta-legacy-layout/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-content-rtl.html.ini deleted file mode 100644 index e954f4df6e3..00000000000 --- a/tests/wpt/meta-legacy-layout/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-content-rtl.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[fieldset-content-rtl.html] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/rendering/widgets/input-checkbox-switch-rtl.tentative.html.ini b/tests/wpt/meta-legacy-layout/html/rendering/widgets/input-checkbox-switch-rtl.tentative.html.ini deleted file mode 100644 index 89d10ae3c9a..00000000000 --- a/tests/wpt/meta-legacy-layout/html/rendering/widgets/input-checkbox-switch-rtl.tentative.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[input-checkbox-switch-rtl.tentative.html] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe-loading-lazy-nav-location-assign.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe-loading-lazy-nav-location-assign.html.ini deleted file mode 100644 index 68a30137729..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe-loading-lazy-nav-location-assign.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[iframe-loading-lazy-nav-location-assign.html] - [Navigating iframe loading='lazy' before it is loaded: location.assign] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini index eacbe5794ea..26918347169 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini @@ -1,5 +1,5 @@ [iframe_sandbox_popups_escaping-3.html] type: testharness - expected: TIMEOUT + expected: CRASH [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini index f9138fb999a..4041e43a4fd 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini @@ -1,5 +1,5 @@ [iframe_sandbox_popups_nonescaping-1.html] type: testharness - expected: TIMEOUT + expected: CRASH [Check that popups from a sandboxed iframe do not escape the sandbox] expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini index 6bec7a732b8..ff0e825b9a1 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini @@ -1,4 +1,5 @@ [iframe_sandbox_popups_nonescaping-2.html] type: testharness + expected: CRASH [Check that popups from a sandboxed iframe do not escape the sandbox] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/sizes/sizes-auto-rendering-2.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/sizes/sizes-auto-rendering-2.html.ini deleted file mode 100644 index 9d59ac0a232..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/sizes/sizes-auto-rendering-2.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[sizes-auto-rendering-2.html] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/sizes/sizes-auto-rendering-3.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/sizes/sizes-auto-rendering-3.html.ini new file mode 100644 index 00000000000..69f301973a8 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/sizes/sizes-auto-rendering-3.html.ini @@ -0,0 +1,2 @@ +[sizes-auto-rendering-3.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/sizes/sizes-auto-rendering.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/sizes/sizes-auto-rendering.html.ini new file mode 100644 index 00000000000..c297353b2b9 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/sizes/sizes-auto-rendering.html.ini @@ -0,0 +1,2 @@ +[sizes-auto-rendering.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/update-the-image-data/fail-to-resolve.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/update-the-image-data/fail-to-resolve.html.ini deleted file mode 100644 index 54de89d13f1..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/update-the-image-data/fail-to-resolve.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[fail-to-resolve.html] - type: testharness - [] - expected: FAIL - diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/update-the-source-set.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/update-the-source-set.html.ini index cf6b9408e6b..0ce2ea708cf 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/update-the-source-set.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/update-the-source-set.html.ini @@ -1,8 +1,5 @@ [update-the-source-set.html] type: testharness - [] - expected: FAIL - [] expected: FAIL @@ -26,4 +23,3 @@ [] expected: FAIL - diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/historical.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/historical.html.ini new file mode 100644 index 00000000000..5d8289307cc --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/forms/historical.html.ini @@ -0,0 +1,3 @@ +[historical.html] + [ should not be supported] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/the-input-element/range-tick-marks-02.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/the-input-element/range-tick-marks-02.html.ini new file mode 100644 index 00000000000..12618c3f23a --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/forms/the-input-element/range-tick-marks-02.html.ini @@ -0,0 +1,2 @@ +[range-tick-marks-02.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-2.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-2.html.ini deleted file mode 100644 index c23c4a2fa4a..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-2.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[charset-2.html] - expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-bom.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-bom.html.ini deleted file mode 100644 index 50ba04c037f..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-bom.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[charset-bom.html] - expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset.html.ini deleted file mode 100644 index c4640fac0fe..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/charset.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[charset.html] - expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/content-type-checking.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/content-type-checking.html.ini deleted file mode 100644 index 5dd7ab59bea..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/content-type-checking.html.ini +++ /dev/null @@ -1,16 +0,0 @@ -[content-type-checking.html] - expected: ERROR - [text/css] - expected: NOTRUN - - [application/css] - expected: NOTRUN - - [text/html+css] - expected: NOTRUN - - [text/css;boundary=something] - expected: NOTRUN - - [text/css;foo=bar] - expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/cors-crossorigin-requests.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/cors-crossorigin-requests.html.ini deleted file mode 100644 index 965dfc8a347..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/cors-crossorigin-requests.html.ini +++ /dev/null @@ -1,9 +0,0 @@ -[cors-crossorigin-requests.html] - [Imported CSS module, cross-origin with CORS] - expected: FAIL - - [Imported CSS module, cross-origin, missing CORS ACAO header] - expected: FAIL - - [Imported CSS module with parse error, cross-origin, with CORS] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/credentials.sub.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/credentials.sub.html.ini deleted file mode 100644 index af03917cf03..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/credentials.sub.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[credentials.sub.html] - [CSS Modules should be loaded with or without the credentials based on the same-origin-ness and the crossOrigin attribute] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/css-module-worker-test.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/css-module-worker-test.html.ini deleted file mode 100644 index 24493e76054..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/css-module-worker-test.html.ini +++ /dev/null @@ -1,7 +0,0 @@ -[css-module-worker-test.html] - expected: TIMEOUT - [A dynamic import CSS Module within a web worker should not load and should not attempt to fetch the module.] - expected: TIMEOUT - - [An attempt to load a CSS module as a worker should fail.] - expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-basic.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-basic.html.ini deleted file mode 100644 index 07b075f3894..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-basic.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[import-css-module-basic.html] - expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-dynamic.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-dynamic.html.ini deleted file mode 100644 index e2611f01222..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-dynamic.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[import-css-module-dynamic.html] - expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/integrity.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/integrity.html.ini deleted file mode 100644 index dba6afe8012..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/integrity.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[integrity.html] - expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/load-error-events.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/load-error-events.html.ini deleted file mode 100644 index 95ef1bfcd96..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/load-error-events.html.ini +++ /dev/null @@ -1,25 +0,0 @@ -[load-error-events.html] - expected: ERROR - [inline, 200, parser-inserted] - expected: NOTRUN - - [inline, 404, parser-inserted] - expected: NOTRUN - - [src, 200, parser-inserted] - expected: FAIL - - [src, 404, parser-inserted] - expected: FAIL - - [src, 200, not parser-inserted] - expected: FAIL - - [src, 404, not parser-inserted] - expected: FAIL - - [inline, 200, not parser-inserted] - expected: NOTRUN - - [inline, 404, not parser-inserted] - expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/referrer-policies.sub.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/referrer-policies.sub.html.ini deleted file mode 100644 index d1bd3ff92f1..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/referrer-policies.sub.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[referrer-policies.sub.html] - expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/relative-urls.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/relative-urls.html.ini deleted file mode 100644 index c43a0b852b0..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/css-module-assertions/relative-urls.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[relative-urls.html] - expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/dynamic-import-with-assertion-argument.any.js.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/dynamic-import-with-assertion-argument.any.js.ini deleted file mode 100644 index ab646cc1808..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/dynamic-import-with-assertion-argument.any.js.ini +++ /dev/null @@ -1,8 +0,0 @@ -[dynamic-import-with-assertion-argument.any.sharedworker.html] - expected: ERROR - -[dynamic-import-with-assertion-argument.any.worker.html] - expected: ERROR - -[dynamic-import-with-assertion-argument.any.html] - expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/empty-assertion-clause.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/empty-assertion-clause.html.ini deleted file mode 100644 index 77f56ecc207..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/empty-assertion-clause.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[empty-assertion-clause.html] - expected: ERROR - [Test that no error occurs when an empty import assertion clause is provided.] - expected: FAIL - diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/invalid-type-assertion-error.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/invalid-type-assertion-error.html.ini deleted file mode 100644 index e68cd55a9d4..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/invalid-type-assertion-error.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[invalid-type-assertion-error.html] - [Test that invalid module type assertion leads to TypeError on window.] - expected: FAIL - diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/unsupported-assertion.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/unsupported-assertion.html.ini deleted file mode 100644 index be81dcefe3b..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/import-assertions/unsupported-assertion.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[unsupported-assertion.html] - [Test that no error occurs when an unsupported import assertion is provided.] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-2.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-2.html.ini deleted file mode 100644 index c23c4a2fa4a..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-2.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[charset-2.html] - expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-bom.any.js.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-bom.any.js.ini deleted file mode 100644 index 01d14e7319e..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-bom.any.js.ini +++ /dev/null @@ -1,8 +0,0 @@ -[charset-bom.any.worker.html] - expected: ERROR - -[charset-bom.any.sharedworker.html] - expected: ERROR - -[charset-bom.any.html] - expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset.html.ini deleted file mode 100644 index c4640fac0fe..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/charset.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[charset.html] - expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/cors-crossorigin-requests.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/cors-crossorigin-requests.html.ini deleted file mode 100644 index 2c72ea94442..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/cors-crossorigin-requests.html.ini +++ /dev/null @@ -1,9 +0,0 @@ -[cors-crossorigin-requests.html] - [Imported JSON module, cross-origin with CORS] - expected: FAIL - - [Imported JSON module, cross-origin, missing CORS ACAO header] - expected: FAIL - - [Imported JSON module with parse error, cross-origin, with CORS] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/credentials.sub.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/credentials.sub.html.ini deleted file mode 100644 index 52b294d640f..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/credentials.sub.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[credentials.sub.html] - [JSON Modules should be loaded with or without the credentials based on the same-origin-ness and the crossOrigin attribute] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity.html.ini deleted file mode 100644 index dba6afe8012..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[integrity.html] - expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/invalid-content-type.any.js.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/invalid-content-type.any.js.ini deleted file mode 100644 index a6808cce7a1..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/invalid-content-type.any.js.ini +++ /dev/null @@ -1,8 +0,0 @@ -[invalid-content-type.any.html] - expected: ERROR - -[invalid-content-type.any.worker.html] - expected: ERROR - -[invalid-content-type.any.sharedworker.html] - expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/json-module-service-worker-test.https.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/json-module-service-worker-test.https.html.ini deleted file mode 100644 index 5ac910adced..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/json-module-service-worker-test.https.html.ini +++ /dev/null @@ -1,9 +0,0 @@ -[json-module-service-worker-test.https.html] - [Javascript importing JSON Module should load within the context of a service worker] - expected: FAIL - - [Trying to register a service worker with a top-level JSON Module should fail] - expected: FAIL - - [JSON Module dynamic import should not load within the context of a service worker] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/load-error-events.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/load-error-events.html.ini deleted file mode 100644 index 95ef1bfcd96..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/load-error-events.html.ini +++ /dev/null @@ -1,25 +0,0 @@ -[load-error-events.html] - expected: ERROR - [inline, 200, parser-inserted] - expected: NOTRUN - - [inline, 404, parser-inserted] - expected: NOTRUN - - [src, 200, parser-inserted] - expected: FAIL - - [src, 404, parser-inserted] - expected: FAIL - - [src, 200, not parser-inserted] - expected: FAIL - - [src, 404, not parser-inserted] - expected: FAIL - - [inline, 200, not parser-inserted] - expected: NOTRUN - - [inline, 404, not parser-inserted] - expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/module.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/module.html.ini deleted file mode 100644 index f35e3f413b5..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/module.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[module.html] - expected: ERROR - [JSON modules] - expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/non-object.any.js.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/non-object.any.js.ini deleted file mode 100644 index e43dccf0dc4..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/non-object.any.js.ini +++ /dev/null @@ -1,8 +0,0 @@ -[non-object.any.worker.html] - expected: ERROR - -[non-object.any.sharedworker.html] - expected: ERROR - -[non-object.any.html] - expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/parse-error.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/parse-error.html.ini deleted file mode 100644 index 2287365fc3d..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/parse-error.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[parse-error.html] - [JSON modules: parse error] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/referrer-policies.sub.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/referrer-policies.sub.html.ini deleted file mode 100644 index d1bd3ff92f1..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/referrer-policies.sub.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[referrer-policies.sub.html] - expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/repeated-imports.any.js.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/repeated-imports.any.js.ini deleted file mode 100644 index 49b84bbf028..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/repeated-imports.any.js.ini +++ /dev/null @@ -1,8 +0,0 @@ -[repeated-imports.any.sharedworker.html] - expected: ERROR - -[repeated-imports.any.worker.html] - expected: ERROR - -[repeated-imports.any.html] - expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/valid-content-type.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/valid-content-type.html.ini deleted file mode 100644 index e8b972c5790..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/json-module-assertions/valid-content-type.html.ini +++ /dev/null @@ -1,19 +0,0 @@ -[valid-content-type.html] - expected: ERROR - [text/json] - expected: NOTRUN - - [application/json] - expected: NOTRUN - - [text/html+json] - expected: NOTRUN - - [image/svg+json] - expected: NOTRUN - - [text/json;boundary=something] - expected: NOTRUN - - [text/json;foo=bar] - expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/semantics/selectors/pseudo-classes/autofill.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/selectors/pseudo-classes/autofill.html.ini index 85f8e43548f..fa9f57ee7b6 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/selectors/pseudo-classes/autofill.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/selectors/pseudo-classes/autofill.html.ini @@ -1,7 +1,3 @@ [autofill.html] - [":autofill" should be a valid selector] - expected: FAIL - [":-webkit-autofill" should be a valid selector] expected: FAIL - diff --git a/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-number.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-number.html.ini index f3f98895a39..211ed463d8f 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-number.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-number.html.ini @@ -2,4 +2,3 @@ type: reftest reftype: == refurl: /html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-number-ref.html - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-separate.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-separate.html.ini index 72578b893ca..8fa46939bb0 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-separate.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-separate.html.ini @@ -2,4 +2,3 @@ type: reftest reftype: == refurl: /html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-separate-ref.html - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-to-letter-preceding-1.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-to-letter-preceding-1.html.ini index 5cde0877122..252c015238c 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-to-letter-preceding-1.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-to-letter-preceding-1.html.ini @@ -2,4 +2,3 @@ type: reftest reftype: == refurl: /html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-to-letter-preceding-1-ref.html - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-to-surrounding-run.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-to-surrounding-run.html.ini index a3016fb0f48..ce8e2501813 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-to-surrounding-run.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-to-surrounding-run.html.ini @@ -2,4 +2,3 @@ type: reftest reftype: == refurl: /html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-to-surrounding-run-ref.html - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-wrapped.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-wrapped.html.ini index 967921d1e60..af556bafa9c 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-wrapped.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-wrapped.html.ini @@ -2,4 +2,3 @@ type: reftest reftype: == refurl: /html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-wrapped-ref.html - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-paragraph-level-container.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-paragraph-level-container.html.ini index 449d42bcb57..4ce44ffe244 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-paragraph-level-container.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/text-level-semantics/the-bdi-element/bdi-paragraph-level-container.html.ini @@ -2,4 +2,3 @@ type: reftest reftype: == refurl: /html/semantics/text-level-semantics/the-bdi-element/bdi-paragraph-level-container-ref.html - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/selection/shadow-dom/tentative/Selection-isCollapsed.html.ini b/tests/wpt/meta-legacy-layout/selection/shadow-dom/tentative/Selection-isCollapsed.html.ini new file mode 100644 index 00000000000..66003985326 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/selection/shadow-dom/tentative/Selection-isCollapsed.html.ini @@ -0,0 +1,2 @@ +[Selection-isCollapsed.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/wasm/jsapi/js-string/basic.tentative.any.js.ini b/tests/wpt/meta-legacy-layout/wasm/jsapi/js-string/basic.tentative.any.js.ini new file mode 100644 index 00000000000..c975bf4fb9e --- /dev/null +++ b/tests/wpt/meta-legacy-layout/wasm/jsapi/js-string/basic.tentative.any.js.ini @@ -0,0 +1,8 @@ +[basic.tentative.any.html] + expected: ERROR + +[basic.tentative.any.shadowrealm.html] + expected: ERROR + +[basic.tentative.any.worker.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/wasm/jsapi/js-string/constants.tentative.any.js.ini b/tests/wpt/meta-legacy-layout/wasm/jsapi/js-string/constants.tentative.any.js.ini new file mode 100644 index 00000000000..02dc6360649 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/wasm/jsapi/js-string/constants.tentative.any.js.ini @@ -0,0 +1,245 @@ +[constants.tentative.any.html] + [constants] + expected: FAIL + + [constants 1] + expected: FAIL + + [constants 2] + expected: FAIL + + [constants 3] + expected: FAIL + + [constants 4] + expected: FAIL + + [constants 5] + expected: FAIL + + [constants 6] + expected: FAIL + + [constants 7] + expected: FAIL + + [constants 8] + expected: FAIL + + [constants 9] + expected: FAIL + + [constants 10] + expected: FAIL + + [constants 11] + expected: FAIL + + [constants 12] + expected: FAIL + + [constants 13] + expected: FAIL + + [constants 14] + expected: FAIL + + [constants 15] + expected: FAIL + + [constants 16] + expected: FAIL + + [constants 17] + expected: FAIL + + [constants 18] + expected: FAIL + + [constants 19] + expected: FAIL + + [constants 20] + expected: FAIL + + [constants 21] + expected: FAIL + + [constants 22] + expected: FAIL + + [constants 23] + expected: FAIL + + [constants 24] + expected: FAIL + + [constants 25] + expected: FAIL + + [constants 26] + expected: FAIL + + [constants 27] + expected: FAIL + + [constants 28] + expected: FAIL + + [constants 29] + expected: FAIL + + [constants 30] + expected: FAIL + + [constants 31] + expected: FAIL + + [constants 32] + expected: FAIL + + [constants 33] + expected: FAIL + + [constants 34] + expected: FAIL + + [constants 35] + expected: FAIL + + [constants 36] + expected: FAIL + + [constants 37] + expected: FAIL + + [constants 38] + expected: FAIL + + [constants 39] + expected: FAIL + + +[constants.tentative.any.shadowrealm.html] + expected: ERROR + +[constants.tentative.any.worker.html] + [constants] + expected: FAIL + + [constants 1] + expected: FAIL + + [constants 2] + expected: FAIL + + [constants 3] + expected: FAIL + + [constants 4] + expected: FAIL + + [constants 5] + expected: FAIL + + [constants 6] + expected: FAIL + + [constants 7] + expected: FAIL + + [constants 8] + expected: FAIL + + [constants 9] + expected: FAIL + + [constants 10] + expected: FAIL + + [constants 11] + expected: FAIL + + [constants 12] + expected: FAIL + + [constants 13] + expected: FAIL + + [constants 14] + expected: FAIL + + [constants 15] + expected: FAIL + + [constants 16] + expected: FAIL + + [constants 17] + expected: FAIL + + [constants 18] + expected: FAIL + + [constants 19] + expected: FAIL + + [constants 20] + expected: FAIL + + [constants 21] + expected: FAIL + + [constants 22] + expected: FAIL + + [constants 23] + expected: FAIL + + [constants 24] + expected: FAIL + + [constants 25] + expected: FAIL + + [constants 26] + expected: FAIL + + [constants 27] + expected: FAIL + + [constants 28] + expected: FAIL + + [constants 29] + expected: FAIL + + [constants 30] + expected: FAIL + + [constants 31] + expected: FAIL + + [constants 32] + expected: FAIL + + [constants 33] + expected: FAIL + + [constants 34] + expected: FAIL + + [constants 35] + expected: FAIL + + [constants 36] + expected: FAIL + + [constants 37] + expected: FAIL + + [constants 38] + expected: FAIL + + [constants 39] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/wasm/jsapi/js-string/imports.tentative.any.js.ini b/tests/wpt/meta-legacy-layout/wasm/jsapi/js-string/imports.tentative.any.js.ini new file mode 100644 index 00000000000..1145b5c9b53 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/wasm/jsapi/js-string/imports.tentative.any.js.ini @@ -0,0 +1,11 @@ +[imports.tentative.any.shadowrealm.html] + expected: ERROR + +[imports.tentative.any.worker.html] + [imports] + expected: FAIL + + +[imports.tentative.any.html] + [imports] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/webxr/render_state_update.https.html.ini b/tests/wpt/meta-legacy-layout/webxr/render_state_update.https.html.ini index b54c718bef8..5b1e5777f13 100644 --- a/tests/wpt/meta-legacy-layout/webxr/render_state_update.https.html.ini +++ b/tests/wpt/meta-legacy-layout/webxr/render_state_update.https.html.ini @@ -1,4 +1,5 @@ [render_state_update.https.html] + expected: ERROR [updateRenderState clamps appropriately near/far clipping planes - webgl] expected: FAIL diff --git a/tests/wpt/meta/MANIFEST.json b/tests/wpt/meta/MANIFEST.json index 4cad61a9c92..71712e32821 100644 --- a/tests/wpt/meta/MANIFEST.json +++ b/tests/wpt/meta/MANIFEST.json @@ -5327,6 +5327,13 @@ {} ] ], + "insertRule-import-trailing-garbage-crash.html": [ + "3acd607ca3c245dd47f4a4ddc225d8cb4e7af7b9", + [ + null, + {} + ] + ], "removerule-invalidation-crash.html": [ "a83f43d5faf62338cfb442468a6e9e0e011c79f2", [ @@ -8547,6 +8554,13 @@ }, "readable-streams": { "crashtests": { + "from-cross-realm.https.html": [ + "b242e41dac45930a2f77c801fbbb7086fed10b4a", + [ + null, + {} + ] + ], "strategy-worker-terminate.html": [ "a75c3c66b688dfe9711f2593319e3d8e9b668bc4", [ @@ -24635,6 +24649,20 @@ ] ] }, + "pointerevent_capture_implicit_release_on_parent_doc_while_subdoc_captures-manual.html": [ + "b8524b378bef28d17c8023084e71aaa2f1409e32", + [ + null, + {} + ] + ], + "pointerevent_capture_implicit_release_on_subdoc_while_parent_doc_captures-manual.html": [ + "44032c11e5fbf31ff8a69804b30f07eb6b787441", + [ + null, + {} + ] + ], "pointerevent_multiple_primary_pointers_boundary_events-manual.html": [ "029aa26368413ea96b90823285a780b6798a12d9", [ @@ -124781,6 +124809,116 @@ ] ], "background-clip": { + "clip-border-area-background-geometry.html": [ + "7d448469b31628547c524e8dafb893495391e36e", + [ + null, + [ + [ + "/css/css-backgrounds/background-clip/clip-border-area-background-geometry-ref.html", + "==" + ] + ], + {} + ] + ], + "clip-border-area-border-image.html": [ + "ee1ebe6df0441a2215425dde5f7a26235b0050a6", + [ + null, + [ + [ + "/css/css-backgrounds/background-clip/clip-border-area-border-image-ref.html", + "==" + ] + ], + {} + ] + ], + "clip-border-area-border-on-top.html": [ + "05109e4a7f5ddcc56466cf1dc4a9d5a7e4808b4b", + [ + null, + [ + [ + "/css/css-backgrounds/background-clip/clip-border-area-border-on-top-ref.html", + "==" + ] + ], + {} + ] + ], + "clip-border-area-box-decoration-break.html": [ + "dfbf39580af2e477716652ea2484b26667953c98", + [ + null, + [ + [ + "/css/css-backgrounds/background-clip/clip-border-area-box-decoration-break-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 150 + ], + [ + 0, + 200 + ] + ] + ] + ] + } + ] + ], + "clip-border-area-multiple-backgrounds.html": [ + "4c871fc3d0a79b06a1c8c624e6df0932cc945cd5", + [ + null, + [ + [ + "/css/css-backgrounds/background-clip/clip-border-area-multiple-backgrounds-ref.html", + "==" + ] + ], + {} + ] + ], + "clip-border-area.html": [ + "cdbb096c701aaccdedb09f96769130154079b0b1", + [ + null, + [ + [ + "/css/css-backgrounds/background-clip/clip-border-area-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 130 + ], + [ + 0, + 1100 + ] + ] + ] + ] + } + ] + ], "clip-rounded-corner.html": [ "3453c5bc8f5e45667ba20a1e6276a08e4b1be714", [ @@ -124820,6 +124958,35 @@ {} ] ], + "clip-text-ellipsis.html": [ + "d2a73b9fb6eb88ef391defa8fde3f73a6f030fad", + [ + null, + [ + [ + "/css/css-backgrounds/background-clip/clip-text-ellipsis-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 45 + ], + [ + 0, + 1350 + ] + ] + ] + ] + } + ] + ], "clip-text-flex.html": [ "618c8c1dbc5bd1a017b50c850b54263cf0828b68", [ @@ -124861,6 +125028,48 @@ ] } ] + ], + "clip-text-text-decorations.html": [ + "3a15fad5cef236ee978b536e3d209810aa3e66cb", + [ + null, + [ + [ + "/css/css-backgrounds/background-clip/clip-rounded-corner-ref.html", + "==" + ] + ], + {} + ] + ], + "clip-text-text-emphasis.html": [ + "c34ddba99f99454e24542c3d222d52c97e21ab68", + [ + null, + [ + [ + "/css/css-backgrounds/background-clip/clip-text-text-emphasis-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 45 + ], + [ + 0, + 5100 + ] + ] + ] + ] + } + ] ] }, "background-clip-002.html": [ @@ -134746,6 +134955,58 @@ {} ] ], + "background-image-004.html": [ + "11e1d13ec4e08b390756d6c51edd8dbea9da0729", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "background-image-005.html": [ + "82624e4a9743e6d69bae9fdf175fe06ea16fc8f7", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "background-image-006.html": [ + "b7b5ca54643d53774782ea6860d18f662ab6c4fc", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "background-image-007.html": [ + "0b7c2cd8cd773cc759f03283b7ba57eae968d826", + [ + null, + [ + [ + "/css/css-break/background-image-007-ref.html", + "==" + ] + ], + {} + ] + ], "become-unfragmented-001.html": [ "df104fc494dfc3bd5070c04abf66becaea468a24", [ @@ -135123,6 +135384,19 @@ {} ] ], + "borders-008.html": [ + "6f99764ebe0cee76a933c81d502b0651c4222d2b", + [ + null, + [ + [ + "/css/css-break/borders-008-ref.html", + "==" + ] + ], + {} + ] + ], "box-decoration-break-clone-001.html": [ "c247c9dbe09918fbf4e0f096687456fe859c1eb3", [ @@ -135500,6 +135774,19 @@ {} ] ], + "box-shadow-005.html": [ + "536e2ad67d0cfa8d9a16ef7fed1ab8fb743f7138", + [ + null, + [ + [ + "/css/css-break/box-shadow-005-ref.html", + "==" + ] + ], + {} + ] + ], "br-clear-all.html": [ "ac3a67ffd034ecb315c66da5682500dea47ee2d4", [ @@ -146436,7 +146723,7 @@ ] ], "scope-part.html": [ - "6583db20c07068bf7a272012fdc0a4649c3b4016", + "eb4af2394625c422fa37725ee28465b5d1e7132b", [ null, [ @@ -150527,6 +150814,32 @@ {} ] ], + "color-scheme-iframe-preferred-page-dark.html": [ + "551bc7ec00d2e1598ef6a8a12dff63996aae2faa", + [ + null, + [ + [ + "/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-preferred-page-dark-ref.html", + "==" + ] + ], + {} + ] + ], + "color-scheme-iframe-preferred-page-light.html": [ + "20a874629b5af183cbfd5a4dbdb10fb72618ce31", + [ + null, + [ + [ + "/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-preferred-page-light-ref.html", + "==" + ] + ], + {} + ] + ], "color-scheme-iframe-preferred.html": [ "1c8814b112492a0efaee5b8f944db1234a341131", [ @@ -167867,19 +168180,6 @@ {} ] ], - "flex-item-position-relative-001.html": [ - "7e6907e0e8d4801776d581474a29d5f5b5743b53", - [ - null, - [ - [ - "/css/css-flexbox/flex-item-position-relative-001-ref.html", - "==" - ] - ], - {} - ] - ], "flex-item-transferred-sizes-padding-border-sizing.html": [ "fc1a163e01ee1eaca8186619aee3e8d0e25c3155", [ @@ -198654,7 +198954,7 @@ }, "text-box-trim": { "text-box-trim-accumulation-001.html": [ - "5ff9c7181f88ad93df1aab71b53ad89734ee44d0", + "2429640f284459341d1494856386fd8a3013de54", [ null, [ @@ -198771,7 +199071,7 @@ ] ], "text-box-trim-dynamic-001.html": [ - "363fed4b039353daeeddbffb093175f840c7420f", + "26c14e541280734406524fc71a9bc59ca70744cc", [ null, [ @@ -198784,7 +199084,7 @@ ] ], "text-box-trim-dynamic-002.html": [ - "f07b39302868a79a4e85043b6ec17700123c1eee", + "5de7a913f34190e1105433a4057bbf310cc98ce4", [ null, [ @@ -199056,12 +199356,12 @@ ] ], "text-box-trim-height-002.html": [ - "113dabc83f063360f434f2855a3b171cb62991ec", + "a3743e4bf9fac7b7938bb8dcb90795e93c9e941a", [ null, [ [ - "/css/css-inline/text-box-trim/text-box-trim-height-001-ref.html", + "/css/css-inline/text-box-trim/text-box-trim-height-002-ref.html", "==" ] ], @@ -199095,7 +199395,7 @@ ] ], "text-box-trim-line-clamp-001.html": [ - "88cd7454c5427bf9966d5bc30fcf96ef8e1f2fda", + "46c10c859eaa14f02ae5f9e07162006d2b112d4a", [ null, [ @@ -199108,7 +199408,7 @@ ] ], "text-box-trim-multicol-001.html": [ - "80f897aa4b696a6e3ea615fdb9d5c5ebe89da4fa", + "e8669b4651c4a97329690a657c70c4784f48c988", [ null, [ @@ -199121,7 +199421,7 @@ ] ], "text-box-trim-multicol-002.html": [ - "f15746d3d6a00c1076e1cdf2b9f76b29b131efdc", + "445814df90430cdb8e964b2f4a4c2c95cf93c7f1", [ null, [ @@ -199134,7 +199434,7 @@ ] ], "text-box-trim-ruby-end-001.html": [ - "5494b00d17ef08ec8dd8ea2a0d7c334b94524b5e", + "d156e6d521c1b4ecf5e0c792bb0f38b03adc3394", [ null, [ @@ -199160,7 +199460,7 @@ ] ], "text-box-trim-ruby-start-002.html": [ - "c4430278adad806895cb7688b084bd9da16f8579", + "1de39238d85d4138b1bb0ff7e80ef1dfb88e3e7b", [ null, [ @@ -199173,7 +199473,7 @@ ] ], "text-box-trim-start-001.html": [ - "106f027688c6941a0fbd95cab29698358995456a", + "223d8b351a158bdad6a9bb6858d6866a01d5dacf", [ "css/css-inline/text-box-trim/text-box-trim-start-001.html?class=auto", [ @@ -204346,6 +204646,64 @@ } ] ], + "clip-path-circle-closest-corner.html": [ + "79e57b1cb6a32dfc455d69d5fee6e69a5aa9ef93", + [ + null, + [ + [ + "/css/css-masking/clip-path/reference/clip-path-circle-4-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 40 + ], + [ + 0, + 2000 + ] + ] + ] + ] + } + ] + ], + "clip-path-circle-farthest-corner.html": [ + "9d4eeaecc71f6f7a93ec8f074cf79a199f7db4c5", + [ + null, + [ + [ + "/css/css-masking/clip-path/reference/clip-path-circle-4-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 40 + ], + [ + 0, + 2000 + ] + ] + ] + ] + } + ] + ], "clip-path-columns-shape-001.html": [ "de13607ad83c9f06382c8584613883bb8e93639d", [ @@ -204824,6 +205182,35 @@ } ] ], + "clip-path-ellipse-closest-farthest-corner.html": [ + "aba7f6e0b554f7294b6965c11729607729e3a1bb", + [ + null, + [ + [ + "/css/css-masking/clip-path/reference/clip-path-ellipse-2-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 1 + ], + [ + 0, + 300 + ] + ] + ] + ] + } + ] + ], "clip-path-fillBox-1a.html": [ "c14890e9673b012e0fc2937c2093abec8e12532d", [ @@ -205252,7 +205639,7 @@ ] ], "clip-path-marginBox-1d.html": [ - "39d3c9db5afb39eb20f1ed0260111dfff85468ca", + "7917f6e4a39ab19637ad2558c179ef07bf8df6a5", [ null, [ @@ -205268,7 +205655,7 @@ [ [ 0, - 146 + 224 ], [ 0, @@ -205884,7 +206271,7 @@ ] ], "clip-path-shape-003.html": [ - "ef03f85b28c5661744069214c53187db667f1c60", + "8f8ac9e07ee2b5a8911ce67dd207ad908d732ac8", [ null, [ @@ -206327,7 +206714,7 @@ ] ], "clip-path-xywh-003.html": [ - "370e1af9757cb6cc067d911ec58bda41aff5bcff", + "a8faef658a988d914e38f24c5761272db75f5b5b", [ null, [ @@ -206343,11 +206730,11 @@ [ [ 0, - 2 + 62 ], [ 0, - 32 + 250 ] ] ] @@ -215422,7 +215809,7 @@ ] ], "supports-rule.html": [ - "886eda432370f1262dd55280e9d941cc2667c5aa", + "653af0f831275aebc1d2b833629a0877736af8ca", [ null, [ @@ -249385,6 +249772,19 @@ ] }, "text-autospace": { + "text-autospace-001.html": [ + "afd1352d5d22455b2c8dd7e7d43d0f280259f4ee", + [ + null, + [ + [ + "/css/css-text/text-autospace/text-autospace-001-ref.html", + "==" + ] + ], + {} + ] + ], "text-autospace-break-001.html": [ "5af0e1f65afed7d878bb82ac9dfe3695a273cc97", [ @@ -296853,6 +297253,19 @@ {} ] ], + "svg-transform.html": [ + "e0adf0725e86b43d2b73e7121704631012236988", + [ + null, + [ + [ + "/css/css-viewport/zoom/svg-transform-ref.html", + "==" + ] + ], + {} + ] + ], "svg-viewBox.html": [ "d5c2336bdd0402259ce94e9f83c69ce794fb2d1e", [ @@ -313832,7 +314245,7 @@ ] ], "css-filters-animation-grayscale.html": [ - "c258718f69df1575f536c00ebfef0af08bbea986", + "c96488dc1b317df03aac8b183ce2e97c677b33c5", [ null, [ @@ -313841,7 +314254,23 @@ "==" ] ], - {} + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 1 + ], + [ + 0, + 10000 + ] + ] + ] + ] + } ] ], "css-filters-animation-hue-rotate.html": [ @@ -313897,7 +314326,7 @@ ] ], "css-filters-animation-sepia.html": [ - "223970111080d999bcceb6f3c258301c77c0f382", + "90ffbb783f0434ec1b107566d15fe540b8a89213", [ null, [ @@ -313906,7 +314335,23 @@ "==" ] ], - {} + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 1 + ], + [ + 0, + 10001 + ] + ] + ] + ] + } ] ], "css-reference-large-svg-filter.html": [ @@ -314978,7 +315423,7 @@ ] ], "filters-grayscale-001-test.html": [ - "40e49b60bea249d54280ea9e74a5cd5cbf5e31a5", + "efde7b4ffe47f747f40c11e9a67aba6779e6c9f4", [ null, [ @@ -314987,7 +315432,23 @@ "==" ] ], - {} + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 1 + ], + [ + 0, + 40000 + ] + ] + ] + ] + } ] ], "filters-opacity-001-test.html": [ @@ -318760,6 +319221,71 @@ } ] ], + "featureless-001.html": [ + "b248b65a4f48e3a8cbc2fbde475bf7addca55eda", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "featureless-002.html": [ + "0904e3098c57728eef81f991d1c2d4f076fb80e2", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "featureless-003.html": [ + "3700b241951f06db2b082d9f89dced1022ade525", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "featureless-004.html": [ + "d0ea23e560f2e7697f4727f3145c9b4af035f042", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "featureless-005.html": [ + "2ffe9d2488c91129ef7f644f24d2b15a1db2cc9f", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], "first-letter-flag-001.html": [ "dc23dda1741b154a7af3f48677b0fbe0744d06d4", [ @@ -324281,6 +324807,19 @@ {} ] ], + "2d.layer.ctm.ctx-filter.html": [ + "66d57624bdc76bd70d4a8aaa646cb908ecedbab4", + [ + null, + [ + [ + "/html/canvas/element/layers/2d.layer.ctm.ctx-filter-expected.html", + "==" + ] + ], + {} + ] + ], "2d.layer.ctm.filter.html": [ "3d56ac36011cdac9aff399c0159806162edf9b58", [ @@ -324359,65 +324898,104 @@ {} ] ], - "2d.layer.global-filter.html": [ - "cf46f41b974947839f6f69e028b6dc51ba4ec62d", + "2d.layer.global-states.ctx-filter.no-transform.html": [ + "a7636efcef757fb4883b298813170a7aeb9c769c", [ null, [ [ - "/html/canvas/element/layers/2d.layer.global-filter-expected.html", + "/html/canvas/element/layers/2d.layer.global-states.ctx-filter.no-transform-expected.html", "==" ] ], {} ] ], - "2d.layer.global-states.filter.no-transform.html": [ - "dc55eeb38cf9093d7e6749ffcd56b89d775dbfc1", + "2d.layer.global-states.ctx-filter.rotation.html": [ + "677fb3bae75882a06330457ebd5c9bc5aa6069d6", [ null, [ [ - "/html/canvas/element/layers/2d.layer.global-states.filter.no-transform-expected.html", + "/html/canvas/element/layers/2d.layer.global-states.ctx-filter.rotation-expected.html", "==" ] ], {} ] ], - "2d.layer.global-states.filter.rotation.html": [ - "49676d458ef38f581b3f3cc03fec160b83bf3826", + "2d.layer.global-states.filter.ctx-filter.no-transform.html": [ + "6c327382eafc7a0154d4451e2948fe46c3f57475", [ null, [ [ - "/html/canvas/element/layers/2d.layer.global-states.filter.rotation-expected.html", + "/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.no-transform-expected.html", "==" ] ], {} ] ], - "2d.layer.global-states.no-transform.html": [ - "cabbe954cee38864c414099114998c1b559d3d4d", + "2d.layer.global-states.filter.ctx-filter.rotation.html": [ + "7a7ae56980ac48b4caf33742ea03dcc9badc823f", [ null, [ [ - "/html/canvas/element/layers/2d.layer.global-states.no-transform-expected.html", + "/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.rotation-expected.html", "==" ] ], {} ] ], - "2d.layer.global-states.rotation.html": [ - "240a510b844710ecaabe94b08bbc482a977abef1", + "2d.layer.global-states.filter.no-cxt-filter.no-transform.html": [ + "a0bcfb3978286f5e16e0d7fce274d0396af10f96", [ null, [ [ - "/html/canvas/element/layers/2d.layer.global-states.rotation-expected.html", + "/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.filter.no-cxt-filter.rotation.html": [ + "fcfe914fc01740a6f84de2ab64d4278ac49b3342", + [ + null, + [ + [ + "/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.rotation-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.no-cxt-filter.no-transform.html": [ + "ca6791971f5b9547165fe117179f735055e39562", + [ + null, + [ + [ + "/html/canvas/element/layers/2d.layer.global-states.no-cxt-filter.no-transform-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.no-cxt-filter.rotation.html": [ + "f7914c6a70c56e6b89f2ad8c93b0f9a16b73621e", + [ + null, + [ + [ + "/html/canvas/element/layers/2d.layer.global-states.no-cxt-filter.rotation-expected.html", "==" ] ], @@ -324437,6 +325015,19 @@ {} ] ], + "2d.layer.nested-ctx-filter.html": [ + "68c8b06857bcfab428aa83365e539f6a4754c52b", + [ + null, + [ + [ + "/html/canvas/element/layers/2d.layer.nested-ctx-filter-expected.html", + "==" + ] + ], + {} + ] + ], "2d.layer.nested-filters.html": [ "333de67ac9bcbacac96f7266eb3b50a44be311d3", [ @@ -324516,7 +325107,7 @@ ] ], "2d.layer.reset.html": [ - "9ad779abfddabe221d600b4cc48f69954ee1aa4f", + "ecb3903b008b58bc75dd29983fab76778a1f43c7", [ null, [ @@ -326966,6 +327557,32 @@ {} ] ], + "2d.layer.ctm.ctx-filter.html": [ + "8ef1bbee08f2e7b273759f1ad555c6c1aeddbd1c", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.ctm.ctx-filter.w.html": [ + "8f9981a6fc54c1d4dd5e124dff2e54c2d5dff167", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter-expected.html", + "==" + ] + ], + {} + ] + ], "2d.layer.ctm.filter.html": [ "e5efc24bcc4f1e19ba49e5e5bee67cc21cce1eb6", [ @@ -327096,130 +327713,208 @@ {} ] ], - "2d.layer.global-filter.html": [ - "2388a06a964222700dd1f71b57ad0b7004becfbb", + "2d.layer.global-states.ctx-filter.no-transform.html": [ + "483cbd077f72e5e449c5259ee743b36edf0e5a40", [ null, [ [ - "/html/canvas/offscreen/layers/2d.layer.global-filter-expected.html", + "/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform-expected.html", "==" ] ], {} ] ], - "2d.layer.global-filter.w.html": [ - "4c8f92d18a1d149185ae86a5e9d6c3ad7dd16aa5", + "2d.layer.global-states.ctx-filter.no-transform.w.html": [ + "50cc215d852e2d5fa90e499d33480dad95b27f2a", [ null, [ [ - "/html/canvas/offscreen/layers/2d.layer.global-filter-expected.html", + "/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform-expected.html", "==" ] ], {} ] ], - "2d.layer.global-states.filter.no-transform.html": [ - "3afded0040552a09621515de9f1ce94789262715", + "2d.layer.global-states.ctx-filter.rotation.html": [ + "fde83b631e2678350ca898ef9fb1d39ffbe6df26", [ null, [ [ - "/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-transform-expected.html", + "/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation-expected.html", "==" ] ], {} ] ], - "2d.layer.global-states.filter.no-transform.w.html": [ - "7b925b2539aeabc0f8b21ea0c5eb97f256bb8bc2", + "2d.layer.global-states.ctx-filter.rotation.w.html": [ + "3ba60548851684aab64a2e84936d82f01b4e8ef2", [ null, [ [ - "/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-transform-expected.html", + "/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation-expected.html", "==" ] ], {} ] ], - "2d.layer.global-states.filter.rotation.html": [ - "851b24adbd5f5acc8277ef5396be3a57b0c54f70", + "2d.layer.global-states.filter.ctx-filter.no-transform.html": [ + "01a366f3f85a1ca900c4c4109fa3162fe14f4087", [ null, [ [ - "/html/canvas/offscreen/layers/2d.layer.global-states.filter.rotation-expected.html", + "/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform-expected.html", "==" ] ], {} ] ], - "2d.layer.global-states.filter.rotation.w.html": [ - "adb85393eb1e2e866fdef409a5a5f36a3341c8d4", + "2d.layer.global-states.filter.ctx-filter.no-transform.w.html": [ + "e9a5d4265c76fe5e51abb4acbd473b6c19f504a1", [ null, [ [ - "/html/canvas/offscreen/layers/2d.layer.global-states.filter.rotation-expected.html", + "/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform-expected.html", "==" ] ], {} ] ], - "2d.layer.global-states.no-transform.html": [ - "d80b669af927b320716deaeb30304eb6290e88cd", + "2d.layer.global-states.filter.ctx-filter.rotation.html": [ + "b3221ed51810d75a8cb95deb56266705dfb9ba8d", [ null, [ [ - "/html/canvas/offscreen/layers/2d.layer.global-states.no-transform-expected.html", + "/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation-expected.html", "==" ] ], {} ] ], - "2d.layer.global-states.no-transform.w.html": [ - "e9e1f753a3cf350480a2da2e2a37feb5acebde17", + "2d.layer.global-states.filter.ctx-filter.rotation.w.html": [ + "3468b0020f3185df874d4d523d44ba294b075b4d", [ null, [ [ - "/html/canvas/offscreen/layers/2d.layer.global-states.no-transform-expected.html", + "/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation-expected.html", "==" ] ], {} ] ], - "2d.layer.global-states.rotation.html": [ - "30d0ef5aca5893fe1733ba4603208c0c79d7814c", + "2d.layer.global-states.filter.no-cxt-filter.no-transform.html": [ + "2d88a8e6be4cdadb0830e616b77e220600615e79", [ null, [ [ - "/html/canvas/offscreen/layers/2d.layer.global-states.rotation-expected.html", + "/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform-expected.html", "==" ] ], {} ] ], - "2d.layer.global-states.rotation.w.html": [ - "7f947d8dba2ac3cb3023f608c7963f207fdf6b02", + "2d.layer.global-states.filter.no-cxt-filter.no-transform.w.html": [ + "d55a0958dd7551a34c1f2883d4604c61f8c008cf", [ null, [ [ - "/html/canvas/offscreen/layers/2d.layer.global-states.rotation-expected.html", + "/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.filter.no-cxt-filter.rotation.html": [ + "4ed3bed784e1826a1949dbb976d9b89a5b618add", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.rotation-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.filter.no-cxt-filter.rotation.w.html": [ + "d36f3874da87273adbe413a5dd1ef2c18c663fad", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.rotation-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.no-cxt-filter.no-transform.html": [ + "b4e3d1b79514934f9183302be313dedd043fd85c", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.no-transform-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.no-cxt-filter.no-transform.w.html": [ + "09715cb7f229be742a9545260f43ff9e4cdde2db", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.no-transform-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.no-cxt-filter.rotation.html": [ + "40ae3a8bf6612cbe5965d9f507f5a0c551e3db35", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.rotation-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.no-cxt-filter.rotation.w.html": [ + "9e71313b7ac3d1229cbd530264e2da6a37a623a8", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.rotation-expected.html", "==" ] ], @@ -327252,6 +327947,32 @@ {} ] ], + "2d.layer.nested-ctx-filter.html": [ + "b48bf6b9b2b1c30ded3930bfb4463057a76611b2", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.nested-ctx-filter.w.html": [ + "9e1749b8bd087bcb025d5f3e5b461f0cdb4430e2", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter-expected.html", + "==" + ] + ], + {} + ] + ], "2d.layer.nested-filters.html": [ "adf99bacbe700beaf38f3ea84e3a3f676fe80d91", [ @@ -327409,7 +328130,7 @@ ] ], "2d.layer.reset.html": [ - "3254c0a0489094feee414f868bdd59da81e11729", + "be2628d1eddecfcb31797204334c04037379e8e6", [ null, [ @@ -327422,7 +328143,7 @@ ] ], "2d.layer.reset.w.html": [ - "09bd6451bd00884dc837b830b275204fd81fc044", + "2706b1fbc248112c953babea35e30dbf003a412c", [ null, [ @@ -335760,6 +336481,19 @@ {} ] ], + "top-layer-backdrop-remove-add-ordering.html": [ + "fbfe2e1fd17a4a357b62504332bc66844d3c4d76", + [ + null, + [ + [ + "/html/semantics/interactive-elements/the-dialog-element/top-layer-backdrop-remove-add-ordering-ref.html", + "==" + ] + ], + {} + ] + ], "top-layer-containing-block.html": [ "0886c2cd2c2a0cfe6383b6488afa9943e568508f", [ @@ -345152,6 +345886,32 @@ {} ] ], + "non-scaling-stroke-005.html": [ + "bc7259d083204f443ea0c2d82f68af6defb481e5", + [ + null, + [ + [ + "/svg/painting/reftests/non-scaling-stroke-005-ref.html", + "==" + ] + ], + {} + ] + ], + "non-scaling-stroke-006.html": [ + "677a35272b94dfce91970b91482764de1c58b437", + [ + null, + [ + [ + "/svg/painting/reftests/non-scaling-stroke-006-ref.html", + "==" + ] + ], + {} + ] + ], "paint-context-001.svg": [ "7be33cb20fb257496cb1357a5481edecf364bc59", [ @@ -394630,6 +395390,30 @@ "5258340ceeba8489d3c75a62b6199908640bd591", [] ], + "clip-border-area-background-geometry-ref.html": [ + "ce4c0996f5fca7216585f73bfbbc868e8449864b", + [] + ], + "clip-border-area-border-image-ref.html": [ + "3ef871ef03212099a4a0fca12c374c826e8bec1b", + [] + ], + "clip-border-area-border-on-top-ref.html": [ + "7ec9f70ad523d278b712380ac8757998e7f8ab11", + [] + ], + "clip-border-area-box-decoration-break-ref.html": [ + "d3e84ff89e815aaa5b5422e83a66e3902686013d", + [] + ], + "clip-border-area-multiple-backgrounds-ref.html": [ + "1db39c33f62aa9001b68f1a50eea2db86caa3887", + [] + ], + "clip-border-area-ref.html": [ + "1df7f6416db78d1149a8c66f3639b752945ceca9", + [] + ], "clip-rounded-corner-ref.html": [ "379ad36992a92384444bd0db12cb7b90531fcd1c", [] @@ -394642,6 +395426,10 @@ "2619a196d77f615cdee81bfdfe8d8cf3449bedef", [] ], + "clip-text-ellipsis-ref.html": [ + "8ee44e858972e71963b990acea63af1b03d405ed", + [] + ], "clip-text-flex-ref.html": [ "0bcbc0bc13f6bb8a13adc256a728a7860f3e2d69", [] @@ -394649,6 +395437,14 @@ "clip-text-multi-line-ref.html": [ "455daa7aeabc3fba876eda3d1807b4ddca98c4f9", [] + ], + "clip-text-text-decorations-ref.html": [ + "de819e4678e9c26c81bba94b7662d0fb55e4aa9a", + [] + ], + "clip-text-text-emphasis-ref.html": [ + "8d7c54f3f7ec0176d55ce9bc6eb89ce108be9b18", + [] ] }, "background-clip-color-ref.html": [ @@ -396753,6 +397549,10 @@ "84853d4cf4fff381e0d864fdb4a785fa1e0ada5f", [] ], + "background-image-007-ref.html": [ + "155a5b92f3afd005debacdbe20c8ddad9ae1cf7e", + [] + ], "block-001-wm-vlr-ref.html": [ "b131b0e486084ed3a127ac07c23425f8e50be93a", [] @@ -396825,6 +397625,10 @@ "3b9e23678d4eb08387423de7a0a0dfb5675445ef", [] ], + "borders-008-ref.html": [ + "57ea42641940a527f0b1ca0d363f1ab8206ee1c1", + [] + ], "box-decoration-break-clone-009-ref.html": [ "23be78f87fcc373e74584c788b05b61a374803b3", [] @@ -396845,6 +397649,10 @@ "29156878c0b5aea6f0eec393279f11ebb742cb47", [] ], + "box-shadow-005-ref.html": [ + "f675826ac35de6a84d3d3519590ec5fe9209185e", + [] + ], "break-inside-avoid-min-block-size-1-ref.html": [ "56789f62cbb570c4f5fbdcbdb13b97feda4fa174", [] @@ -397412,7 +398220,7 @@ [] ], "scope-part-ref.html": [ - "d0824e735722a568d86c46e822b8d9adb30fd5d5", + "8bb5f753b0f131f381f00a4546bfc17cf72cdaf3", [] ], "scope-pseudo-element-ref.html": [ @@ -398079,6 +398887,14 @@ "8cc4618ede4af030adc8fe5f119deccf3c2e3882", [] ], + "color-scheme-iframe-preferred-page-dark-ref.html": [ + "24e8c6edb0993f49366ee38d0798731cd2194b41", + [] + ], + "color-scheme-iframe-preferred-page-light-ref.html": [ + "5c614823824a8973d57fb5d5bf64c6eb99630ead", + [] + ], "color-scheme-iframe-preferred-ref.html": [ "ff2683bbd31da32aecf5bb48c3cf417543438f9c", [] @@ -400943,10 +401759,6 @@ "2b0f294c3441f1cf25a6678b9ce0748258582ea1", [] ], - "flex-item-position-relative-001-ref.html": [ - "01e078d983d1319199a9356e2da54278009a7418", - [] - ], "flex-lines": { "multi-line-wrap-reverse-column-reverse-ref.html": [ "38366a62f7e6b7df30b2da814cf178ebba5a83fa", @@ -413335,7 +414147,7 @@ [] ], "external-images.svg": [ - "8439561e160dd0a8919360c3d0d6896e90a972c8", + "ed06ecbd87728a09265c7cc6283774c07428c541", [] ], "import-green.css": [ @@ -413845,7 +414657,7 @@ [] ], "text-box-trim-half-leading-block-box-001-ref.html": [ - "4aaf3375abbdfcd9c79738d63285486011e2ffcc", + "403eee5f842542f336ae2fff9e2640bc1cd811b9", [] ], "text-box-trim-half-leading-block-box-002-ref.html": [ @@ -413861,7 +414673,7 @@ [] ], "text-box-trim-height-002-ref.html": [ - "61378327c75323b74d5d6454ae14a2fbf2d8044f", + "ae6a271312f04f0cce103ea593a3396de5049626", [] ], "text-box-trim-initial-letter-end-001-ref.html": [ @@ -413869,11 +414681,11 @@ [] ], "text-box-trim-initial-letter-start-001-ref.html": [ - "7a3adc8b7e2082ab9c3fc3ef7abf2e4cb3996cc7", + "c1baf7957f7aa3b5b1fa3599f9d9807f235a667b", [] ], "text-box-trim-line-clamp-001-ref.html": [ - "31b11cb6843a36361cbb95e96e9401d43b82763e", + "9d03140f4d7454f77e960816b8fe96d05f2aec89", [] ], "text-box-trim-multicol-001-ref.html": [ @@ -414815,6 +415627,10 @@ "4cffe8837d34b54ccff3524a01b5eb162662349d", [] ], + "clip-path-circle-4-ref.html": [ + "50cd08f458f38a644c02c27ea842570d34e05f97", + [] + ], "clip-path-circle-ref.html": [ "c427e696bfd64a7fb550d777ce8a8c3d28598245", [] @@ -414835,6 +415651,10 @@ "4608e54b2082aef805dce8b5bbff2c2cc82c41e9", [] ], + "clip-path-ellipse-2-ref.html": [ + "150f440f725f9b5c58ac4338e3fdb9b566ae6178", + [] + ], "clip-path-ellipse-ref.html": [ "5adc91a5c00f27f0d3225c99a6c2534b5b868a8d", [] @@ -424642,6 +425462,10 @@ ] }, "text-autospace": { + "text-autospace-001-ref.html": [ + "5c231fac913a0ba8c149db5d5845e63aa5908295", + [] + ], "text-autospace-break-001-ref.html": [ "130c89fcba5dc5307a4b27a2f3ca4d46fc71f844", [] @@ -431774,6 +432598,10 @@ "10bf2decaa74ae0108c86d5b97ad0480f85bf307", [] ], + "svg-transform-ref.html": [ + "abaed2accea09b8d4d6b790bab554ca83ac630ba", + [] + ], "svg-viewBox-ref.html": [ "b58eb47a23c4a0531e6ec6f690cebbd2dfb46afc", [] @@ -437238,16 +438066,32 @@ "fc8f6a62cda5062676e1fb27324739c17ac0f91e", [] ], + "dc-types.ts": [ + "f2b7e3a172c35f250d4f2e1fa84c713c3e4f287b", + [] + ], + "disabled-by-permissions-policy.https.sub.html.headers": [ + "02a76b7c3f289bed45a44e7c949b4792fd798dbc", + [] + ], + "enabled-on-self-origin-by-permissions-policy.https.sub.html.headers": [ + "1207d9e29a111a46b920d27dd3188bae1e6cf8f4", + [] + ], "support": { "helper.js": [ - "8fff82745172154972dcda4c3c6cb98d4a5af5e1", + "6bbcdb2cd3eb8fae557fd9a2156b7947b4504544", [] ], "iframe.html": [ - "74733d82ec6533cbd0c6da4af1e88af61413e868", + "0598cfb00be418f0f799f0d928d69539760ae587", [] ] - } + }, + "tsconfig.json": [ + "1387caf21b7712f1ccdff45871d642d379701677", + [] + ] }, "direct-sockets": { "META.yml": [ @@ -437705,7 +438549,7 @@ ], "resources": { "abort-signal-any-tests.js": [ - "66e4141eaccb08ee3efe3da8b6e83c82acdec942", + "929ee8a2e61ab44513e2b02d7d66c61cf1f98f24", [] ] } @@ -440484,7 +441328,7 @@ [] ], "lfedcm-identity.provider-create.sub.html": [ - "4b60c7866f03cde9bd047264112f48f60995a856", + "7cec8bdf97f19a6f2a9f02e9224fae67fe347ec0", [] ], "lfedcm-identity.provider-delete.sub.html": [ @@ -441324,7 +442168,7 @@ [] ], "remote-context-executor.https.html": [ - "6b2f5ccc000058ce47d2f8d699de283a77d3d067", + "93e2ab905e785160b84061d3712c74aa5815c17a", [] ], "report-url.html": [ @@ -445302,6 +446146,22 @@ "0b49e13d651d0fde96e112752f4c19f89b4398bc", [] ], + "child2.html": [ + "c583bb26f9bbafa723feb174559d5de9dcff1aed", + [] + ], + "child_with_srcdoc_subframe.window.js": [ + "85b89df5738d63ea5e9bd655dda00ff230dcd64b", + [] + ], + "child_with_static_sandbox_srcdoc.html": [ + "df7565cf3f3fe919eeec5c035a2f834f375f0ad1", + [] + ], + "child_with_static_srcdoc.html": [ + "8e0c2504c301113a45c4c2ebeadfc97c6edf91eb", + [] + ], "click.html": [ "8cb03b74d5ecee7462f2fb82a6a7c3008c87db25", [] @@ -447723,6 +448583,10 @@ "60f78d80965fd0dec9ea11bc21d3652fc3d7bad1", [] ], + "2d.layer.ctm.ctx-filter-expected.html": [ + "fd5b51f7deaa412fb75d4f0054e140e7bb21b063", + [] + ], "2d.layer.ctm.filter-expected.html": [ "5fc1ac9acd5ec1b6132fb57a0c34e74a835f3372", [] @@ -447747,30 +448611,46 @@ "532c29576cff610107dec60f91ea8dd2231df888", [] ], - "2d.layer.global-filter-expected.html": [ - "88057fc354a4e593191a4b3d5c94cdfa7d466126", + "2d.layer.global-states.ctx-filter.no-transform-expected.html": [ + "611fb758e710c161e13d2abade9d0bb4c982af58", [] ], - "2d.layer.global-states.filter.no-transform-expected.html": [ - "c57e256847846ac136679ad6455ed6b3b8f566a3", + "2d.layer.global-states.ctx-filter.rotation-expected.html": [ + "0460013c856678d92e61ba7084938a7546f9fe79", [] ], - "2d.layer.global-states.filter.rotation-expected.html": [ - "650a40bb80c1409b6b8f6effaa10ad7baf8d45f2", + "2d.layer.global-states.filter.ctx-filter.no-transform-expected.html": [ + "a00b50b52ffdf1951c2ca1cddb890fc9586d6608", [] ], - "2d.layer.global-states.no-transform-expected.html": [ - "ad6f64043f6a175b105db4313d46c64d18f417eb", + "2d.layer.global-states.filter.ctx-filter.rotation-expected.html": [ + "b9cf004179a9039aab5102bf5bdb528be7b3f596", [] ], - "2d.layer.global-states.rotation-expected.html": [ - "376504488c392ea6f58f415da8f03faafafb41f2", + "2d.layer.global-states.filter.no-cxt-filter.no-transform-expected.html": [ + "2475d52803305ad306c63f802730c9f4c6cb6b88", + [] + ], + "2d.layer.global-states.filter.no-cxt-filter.rotation-expected.html": [ + "9553485eaf9f4ba4e14b86278309002b62074a56", + [] + ], + "2d.layer.global-states.no-cxt-filter.no-transform-expected.html": [ + "cf9fc1042e6f191dce3d3fc761cd944db6561724", + [] + ], + "2d.layer.global-states.no-cxt-filter.rotation-expected.html": [ + "97a9fa4e4c58820f0c18494d5959a18d84aebe59", [] ], "2d.layer.globalCompositeOperation-expected.html": [ "02a8915c0b530b779842e1b10e4e7663e1de8598", [] ], + "2d.layer.nested-ctx-filter-expected.html": [ + "77d41f725eac880785d49287af195251c9fe1ae8", + [] + ], "2d.layer.nested-expected.html": [ "65525d4d6a23db56e5717147a60fa8e22d0519a2", [] @@ -448823,6 +449703,10 @@ "60f78d80965fd0dec9ea11bc21d3652fc3d7bad1", [] ], + "2d.layer.ctm.ctx-filter-expected.html": [ + "fd5b51f7deaa412fb75d4f0054e140e7bb21b063", + [] + ], "2d.layer.ctm.filter-expected.html": [ "5fc1ac9acd5ec1b6132fb57a0c34e74a835f3372", [] @@ -448843,30 +449727,46 @@ "26f6e752149102af7cd3bda76045092545712ba4", [] ], - "2d.layer.global-filter-expected.html": [ - "88057fc354a4e593191a4b3d5c94cdfa7d466126", + "2d.layer.global-states.ctx-filter.no-transform-expected.html": [ + "611fb758e710c161e13d2abade9d0bb4c982af58", [] ], - "2d.layer.global-states.filter.no-transform-expected.html": [ - "c57e256847846ac136679ad6455ed6b3b8f566a3", + "2d.layer.global-states.ctx-filter.rotation-expected.html": [ + "0460013c856678d92e61ba7084938a7546f9fe79", [] ], - "2d.layer.global-states.filter.rotation-expected.html": [ - "650a40bb80c1409b6b8f6effaa10ad7baf8d45f2", + "2d.layer.global-states.filter.ctx-filter.no-transform-expected.html": [ + "a00b50b52ffdf1951c2ca1cddb890fc9586d6608", [] ], - "2d.layer.global-states.no-transform-expected.html": [ - "ad6f64043f6a175b105db4313d46c64d18f417eb", + "2d.layer.global-states.filter.ctx-filter.rotation-expected.html": [ + "b9cf004179a9039aab5102bf5bdb528be7b3f596", [] ], - "2d.layer.global-states.rotation-expected.html": [ - "376504488c392ea6f58f415da8f03faafafb41f2", + "2d.layer.global-states.filter.no-cxt-filter.no-transform-expected.html": [ + "2475d52803305ad306c63f802730c9f4c6cb6b88", + [] + ], + "2d.layer.global-states.filter.no-cxt-filter.rotation-expected.html": [ + "9553485eaf9f4ba4e14b86278309002b62074a56", + [] + ], + "2d.layer.global-states.no-cxt-filter.no-transform-expected.html": [ + "cf9fc1042e6f191dce3d3fc761cd944db6561724", + [] + ], + "2d.layer.global-states.no-cxt-filter.rotation-expected.html": [ + "97a9fa4e4c58820f0c18494d5959a18d84aebe59", [] ], "2d.layer.globalCompositeOperation-expected.html": [ "02a8915c0b530b779842e1b10e4e7663e1de8598", [] ], + "2d.layer.nested-ctx-filter-expected.html": [ + "77d41f725eac880785d49287af195251c9fe1ae8", + [] + ], "2d.layer.nested-expected.html": [ "65525d4d6a23db56e5717147a60fa8e22d0519a2", [] @@ -449274,7 +450174,7 @@ [] ], "layers.yaml": [ - "59030a69914b0c6556b9cbef50f07601414921ed", + "678038032f19e734489e2001e000e39c1ed24f75", [] ], "line-styles.yaml": [ @@ -455568,7 +456468,7 @@ }, "resources": { "common.js": [ - "fd4529e80aa45cf5aa260ac376f1289a3e2e93fe", + "6f8ae7b3436d16908313b65356edd657c45907ac", [] ] }, @@ -457619,6 +458519,10 @@ [] ] }, + "top-layer-backdrop-remove-add-ordering-ref.html": [ + "7bc302861e336cb74f64e5592a3c1393c2ea5127", + [] + ], "top-layer-containing-block-ref.html": [ "40b72cf5ef7c4b11d677d334778726042b33e11f", [] @@ -457875,10 +458779,6 @@ [] ], "the-script-element": { - "README.md": [ - "ab4a4820afa955e02c03019246226f2e3891e57e", - [] - ], "cacheable-script-throw.py": [ "b315afed5639302a099376576cafe07e0b40fc3c", [] @@ -457987,110 +458887,6 @@ ] } }, - "css-module-assertions": { - "resources": { - "atImported.css": [ - "8629a846d14e60a3596e809b911622f6aecb5a04", - [] - ], - "bad-import.css": [ - "a6e1a0f395d910a604e4b6d6a0afd8a43b94e5f2", - [] - ], - "basic-large.css": [ - "555ab70d2ed80cdb7d528ea6be65755634885e57", - [] - ], - "basic.css": [ - "e034ed9ac7c0a1cde5f0ef9857a639557e1e05fa", - [] - ], - "bom-utf-16be.css": [ - "9e17902a1d3d69e0ebebd039553d2b50ab489d81", - [] - ], - "bom-utf-16le.css": [ - "ef90843d8eda44a5cc3bb82e3ad2f1d862ad2b24", - [] - ], - "bom-utf-8.css": [ - "5cf81232b7aacafc82b1799306cfae0b166df580", - [] - ], - "credentials-iframe.sub.html": [ - "cf1d621ce3a550228ac4e7b50f3f7a18d92fe0b5", - [] - ], - "cross-origin.py": [ - "d744fc9514d397af248c0b1b2d215f452d17ffd5", - [] - ], - "crossorigin-import-parse-error-with-cors.sub.html": [ - "3afb8edeb1421c08ff7113e8aef3a47222678e9e", - [] - ], - "crossorigin-import-with-cors.sub.html": [ - "f8754c2a569b27dd0cabff251b3d3522d9d8de99", - [] - ], - "crossorigin-import-without-cors.sub.html": [ - "ab70b735732dc76f9e8438c578da82f8aa04561c", - [] - ], - "css-module-without-assertion-iframe.html": [ - "3d1be841cee24e90d10be47fb821f9f55937fbfe", - [] - ], - "integrity-matches.js": [ - "95be445311be7b3af57fdcc006b5dfc1ee1616cd", - [] - ], - "integrity-mismatches.js": [ - "af6fc24de4949e94d9d1bcb2471bb775c203a8b8", - [] - ], - "load-error-events.py": [ - "b61b1ca834e53dd4966115743278815565355fad", - [] - ], - "load-relative-url.css": [ - "27f298761048b73a6c7229b083a4711434200424", - [] - ], - "malformed.css": [ - "28819bfdf55bff3dd2ab9bd204271bc4114f8c49", - [] - ], - "parse-error.css": [ - "2bee3ff9966cb5a84afba6e3f4fb843d5ad7394b", - [] - ], - "record-fetch.py": [ - "4928cb4acb9eb591a2e1ac80cf8a81982a353313", - [] - ], - "referrer-checker.py": [ - "c1eaed8e468b6e50a8a49d9e2a0cdccf4479c65d", - [] - ], - "utf-8.css": [ - "0a8b46656f1684410692862ae625202b1566cc7f", - [] - ], - "windows-1250.css": [ - "9beac4d618040083435e2a4077cc8c668f1bc00b", - [] - ], - "worker-dynamic-import.sub.js": [ - "791bd7d3f949940e91eee181095d61db725c7eb7", - [] - ], - "worker.sub.js": [ - "ffee312d21e094e9c3ff2627bd74c77b9700717e", - [] - ] - } - }, "defer.js": [ "c4449ca7c8a598e3712c8b24eb9e424775c19102", [] @@ -458215,40 +459011,6 @@ [] ] }, - "import-assertions": { - "empty-assertion-clause.js": [ - "6913dd61dffe682063eb887a08c90242ca1b5f42", - [] - ], - "empty-type-assertion.js": [ - "5bb9b1ddb8e648c7165a3b29ab425fc97cb81037", - [] - ], - "export-hello.js": [ - "34b58e6e126c27f840c2ebd092e3b82b095fb374", - [] - ], - "hello.js": [ - "2f348444606435700656725dbcd9a08e8e10775f", - [] - ], - "invalid-type-assertion.js": [ - "e28c0176d5c3e444051f7b21070ac62a86f0ff0f", - [] - ], - "javascript-type-assertion.js": [ - "cc0f531026eda4d8eb66c5b11efbf7c5dda83018", - [] - ], - "js-type-assertion.js": [ - "c649c95ffeaa9cb132aab9b182b1032605c0f685", - [] - ], - "unsupported-assertion.js": [ - "45f6d60c9dae25f26640d6b79b08fc9a009fc06b", - [] - ] - }, "import-attributes": { "empty-attributes-clause.js": [ "98c45731796fba43ce1425ff165b14e80b9534aa", @@ -458389,104 +459151,6 @@ [] ] }, - "json-module-assertions": { - "array.json": [ - "e77e32d3382e0a40e9682d11664a3c0d9f354523", - [] - ], - "bom-utf-16be.json": [ - "d22a45a591079d6caea71404eb0190e7094f321c", - [] - ], - "bom-utf-16le.json": [ - "4d1aa264a697b224eadbfe993cafeaac810acdd2", - [] - ], - "bom-utf-8.json": [ - "07ba933e8608da70bb40645066226b8e95fb2267", - [] - ], - "credentials-iframe.sub.html": [ - "44e6402faa56897075ef298b9079b2f5ddcb1b7c", - [] - ], - "cross-origin.py": [ - "cd56c3628a087d9c8221720f3ceca385117f1c4a", - [] - ], - "crossorigin-import-parse-error-with-cors.sub.html": [ - "7d044f8579b5daf53b000f28a4938b44105a91da", - [] - ], - "crossorigin-import-with-cors.sub.html": [ - "d71938dae4ef688a3c559cc42d54b955b7673182", - [] - ], - "crossorigin-import-without-cors.sub.html": [ - "9d07d6c727c407ee6f301528d4b9f00c5bed0dff", - [] - ], - "data.json": [ - "14a0526ebb23f65992fa3558613e32df34421136", - [] - ], - "false.json": [ - "c508d5366f70bba37fcc09d128b6537c4adb2c79", - [] - ], - "integrity-matches.js": [ - "969c90c2907cc83abc2b828285b0badfd673723c", - [] - ], - "integrity-mismatches.js": [ - "3c88a98dbc5512f966cc937ac4c671da51e0b601", - [] - ], - "load-error-events.py": [ - "4018adcdf7cd8d6b1fbc9e25e2ff34bf0b495f26", - [] - ], - "module.json": [ - "f834b2a4e8fab045a4b224caa485e0ee666f04c6", - [] - ], - "null.json": [ - "19765bd501b636fce433540d9e6735f51d66151d", - [] - ], - "parse-error.json": [ - "98232c64fce9360c79f119cf6de8f670f69f1c44", - [] - ], - "referrer-checker.py": [ - "e9f0f1789ba18a73e49bae06fcaa5b0f8447350f", - [] - ], - "serviceworker-dynamic-import.js": [ - "9466c6fbe409a790ee3eab5405b98b86b7842a40", - [] - ], - "serviceworker.js": [ - "3f0a4d1664020f6d041ad77bccf956e2be22ce0f", - [] - ], - "string.json": [ - "ace2d72d9d3d24dbfaa1462949b0688ff326fc9b", - [] - ], - "true.json": [ - "27ba77ddaf61532f217964734769a42cdabc17dc", - [] - ], - "utf-8.json": [ - "088d98235873d4dd5107ef2f00b10625773fe8db", - [] - ], - "windows-1250.json": [ - "490e752ce93c75afad150e65af9737b7f4d9b3c9", - [] - ] - }, "log.py": [ "2a6cc3302962e4bc4fe1c180aea76bbf09ca68a4", [] @@ -462951,7 +463615,7 @@ [] ], "crash-reporting.idl": [ - "7c8a0ff71f2ab026b48d7d36c2bf366ce2a7ecd9", + "a6737ca8482e1d67c40d6d3618424969fa680f96", [] ], "credential-management.idl": [ @@ -463011,7 +463675,7 @@ [] ], "css-font-loading.idl": [ - "5e5f4252a40e26b7d6739d95fe9d8a9d99993cf6", + "a5db8f3c494d61f1c1ae9829debb647e5e8b1e02", [] ], "css-fonts.idl": [ @@ -463135,7 +463799,7 @@ [] ], "dom.idl": [ - "72d61f5cfd80ad446e4508b8e8bfe29c424d27c4", + "99192924f4f46f937124488950fa6b1916ccc895", [] ], "edit-context.idl": [ @@ -463435,11 +464099,11 @@ [] ], "payment-handler.idl": [ - "91c01297f40bb12e08dcbba2807f7b35929fd396", + "8aa55e9e950098f5145f0ec44e4bcc27ce7b57ad", [] ], "payment-request.idl": [ - "50c12fe49c33d6dfeda13be2595f22334189fb7c", + "c1227d59c6bb9d2c1e9cff1818c48284c01851e9", [] ], "performance-measure-memory.idl": [ @@ -463475,7 +464139,7 @@ [] ], "pointerevents.idl": [ - "4ecb290ed4143eafad0c8d1f667809a1d0f8fab8", + "0356e845058a5c97d27f96c5bc41e8ea74bd9cbc", [] ], "pointerlock.idl": [ @@ -463567,7 +464231,7 @@ [] ], "scheduling-apis.idl": [ - "3c858a2db06ad3f7e47198aaa4935303116533fe", + "6f93db15a74e052913a277e5130226280a3f9311", [] ], "screen-capture.idl": [ @@ -463663,7 +464327,7 @@ [] ], "turtledove.idl": [ - "314f2f07d9203b9226f77785f3a857f9bc56d061", + "8ed7903f0b1c2af8cd0bfc05832cf9bedfb64777", [] ], "ua-client-hints.idl": [ @@ -463755,7 +464419,7 @@ [] ], "webauthn.idl": [ - "c44df9b26a68be98248ef1ee24a71b276d9ab1b6", + "10dd0f7e059a7ba11d0d4ac06eee02703da1cb76", [] ], "webcodecs-aac-codec-registration.idl": [ @@ -467543,7 +468207,15 @@ }, "partitioned-popins": { "META.yml": [ - "b9d43340c8af62e294a2ecd89ccaa870f51405d9", + "3329f00c069308e1729a707accf3b128b4244dea", + [] + ], + "partitioned-popins.permission-all.tentative.sub.https.window.js.headers": [ + "36ba34ecd5346257a406700a657bdd6397f893d1", + [] + ], + "partitioned-popins.permission-self.tentative.sub.https.window.js.headers": [ + "0d61ec4d3e4c527089c67da826bd512b62ab390c", [] ], "resources": { @@ -467552,27 +468224,35 @@ [] ], "partitioned-popins.cookies-iframe.html": [ - "43ef731278e0ceb83a41615b9783d2112dbe3c48", + "04d95e6c6e92e37f60c7c7396501da133fd4f2a4", [] ], "partitioned-popins.cookies-popin.py": [ - "db48e781b9419bd73f602286d78d06a81895b4fa", + "f5d94c3c5f1bf4e43436b7ccd82bd2ccc2097001", [] ], "partitioned-popins.cookies-window.html": [ - "66880c3255d51299f64585f6cdd06f1a6128a246", + "908ad75622df47bc9270f1aa1c3f941f1879e073", [] ], "partitioned-popins.localStorage-iframe.html": [ - "d2833c71852c42ccbe65b7173661b7cf16b455ec", + "ae3e96150a375fd6c0eebac8bb2f9a9107c94a04", [] ], "partitioned-popins.localStorage-popin.html": [ - "87a6ab95fa26d92e870a8c886139850c7a2ae1af", + "4ab2d4a5ff22664e9c24bb094410eb92b9dc3684", [] ], "partitioned-popins.localStorage-window.html": [ - "1d5106e05092f6d7230430bb0f081b0e56af5a51", + "1e1f4ed2a6b288e490ea786d8abc40c7b7b684a8", + [] + ], + "partitioned-popins.permissions-iframe.html": [ + "fe41057b7bb16071e6c49429e2fba282e12f616f", + [] + ], + "partitioned-popins.permissions-popin.html": [ + "1009ee687a29a94a264aaf89c50fc64010d161a7", [] ] } @@ -468121,6 +468801,10 @@ "56780cf6dc05879731bff0bbb1486c51b0b4141b", [] ], + "digital-credentials-get.html": [ + "4b212756c229101ab1d1cbb908767033edbb6367", + [] + ], "nested-sandbox.html": [ "4ba512140dae5d9df8d1b1bd19178a34ff5b40c0", [] @@ -468246,7 +468930,7 @@ [] ], "permissions-policy.js": [ - "d700cb086b362229e194cd2596f151bdf74d0039", + "cfc6d3caab103427f5de5ab8ebb4949bbc2ef334", [] ], "picture-in-picture.js": [ @@ -471789,7 +472473,7 @@ [] ], "testdriver.js": [ - "985dbb0e4030aaaeb9e912367262d8cee3de3806", + "e737a6ee659f0502fbf4137094d237b08ca54fb8", [] ], "testdriver.js.headers": [ @@ -471797,7 +472481,7 @@ [] ], "testharness.js": [ - "61cd18511151f3574a41aabcfdb0b3531244c534", + "7fd5336bf34ae9d173b277acf48db45390193e40", [] ], "testharness.js.headers": [ @@ -476519,7 +477203,7 @@ [] ], "helpers.js": [ - "7a476805135df44ff141d3f59ac9c59e2966b3e8", + "a1fd02ab5e60b86421d22e98953b748a2da69415", [] ], "resources": { @@ -476536,7 +477220,7 @@ [] ], "embedded_responder.js": [ - "c222c4dac0562ef6fda4f5a9b0855c358229492a", + "fb3bef40b2d9245508ce99bad5f5990c5b9615ab", [] ], "embedded_worker.py": [ @@ -477282,6 +477966,14 @@ "4717ac4a2750e236db2a7e003ac9acd6c40a9305", [] ], + "non-scaling-stroke-005-ref.html": [ + "3adf8f2c8dd264d500bc342d232d61dd059c3871", + [] + ], + "non-scaling-stroke-006-ref.html": [ + "d4cc4a6e4eacfdb2e53072f067adef117461ad64", + [] + ], "paint-context-001-ref.svg": [ "99bd8c44cb78a4b0340ad6456c7e58e4ca397257", [] @@ -489588,7 +490280,7 @@ [] ], "executormarionette.py": [ - "fe1fed136309ba137b705dc68917864f9bf878a2", + "c1748f1ffda53ee54cade5b1a057ce8075721d68", [] ], "executorselenium.py": [ @@ -491182,7 +491874,7 @@ [] ], "urltestdata.json": [ - "91fcca2c3c25570e9783afe8525778fa19d28891", + "9dbe5456a96950085aa4ee11fe757b90350b6bad", [] ] }, @@ -491261,6 +491953,16 @@ [] ] }, + "viewport": { + "META.yml": [ + "38eb8c0cb93a2199986c84460769a920eb122bda", + [] + ], + "WEB_FEATURES.yml": [ + "8f93ba9790f5a9fb75e3e7b39df0a20fa71ee2cd", + [] + ] + }, "virtual-keyboard": { "META.yml": [ "a925b52d6f0e9d2ef1b291d50486713d0ee83744", @@ -491435,6 +492137,12 @@ "2e015af8198a6112a528640bdc6c202dd5785c25", [] ], + "js-string": { + "polyfill.js": [ + "e18236899df896b8606de7a6acd109d21f7b86d4", + [] + ] + }, "memory": { "assertions.js": [ "b539513adcab7d84e67d65fcf97453e9bc22de43", @@ -491448,7 +492156,7 @@ ] }, "wasm-module-builder.js": [ - "1d8db0a6e6fd71059963e4a1b767d796fa1a5eff", + "90ccc954a5dba362f9ea2c57560bbe8d64002800", [] ] }, @@ -493300,7 +494008,7 @@ }, "network": { "__init__.py": [ - "60a39741f833e65f22d733441390c7cad0b5d8dd", + "f67f7bccd52fc0659fddad1560f200b294e1e432", [] ], "add_intercept": { @@ -493327,10 +494035,6 @@ [] ] }, - "conftest.py": [ - "6928334b7d989006cd97b4b2d52ef288634dbdc2", - [] - ], "continue_request": { "__init__.py": [ "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", @@ -494047,7 +494751,7 @@ [] ], "fixtures_bidi.py": [ - "9f3c31d3d57cfc0189481c48800512b4a780efc1", + "241ba528ddfaae95c4474dba578417813a189bcb", [] ], "fixtures_http.py": [ @@ -494535,7 +495239,7 @@ [] ], "RTCRtpScriptTransform-encoded-transform-worker.js": [ - "3faafd26673819ca0850f26d9793a056f8cc2d2f", + "ba3ddc1b7564ee59ce561fe7bd11e992e86d715a", [] ], "RTCRtpScriptTransform-sender-worker-single-frame.js": [ @@ -501708,67 +502412,83 @@ } ] ], - "idbcursor_update_objectstore.htm": [ - "e1fdff6047b6008d856f1f1a323fc0a9399c9a1e", + "idbcursor_update_objectstore.any.js": [ + "ca3fd870eb76369efd500f973817cca5be2a0da5", [ - null, - {} - ] - ], - "idbcursor_update_objectstore2.htm": [ - "73dcd34f5bed6d4643e94535491bb5aefd4975e0", + "IndexedDB/idbcursor_update_objectstore.any.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "title", + "IDBCursor.update() - object store" + ], + [ + "script", + "resources/support.js" + ] + ] + } + ], [ - null, - {} - ] - ], - "idbcursor_update_objectstore3.htm": [ - "3582f0967ca3fc346c0bb253f1f97524f761701e", + "IndexedDB/idbcursor_update_objectstore.any.serviceworker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "title", + "IDBCursor.update() - object store" + ], + [ + "script", + "resources/support.js" + ] + ] + } + ], [ - null, - {} - ] - ], - "idbcursor_update_objectstore4.htm": [ - "b467c296edc1f603e41ef1c21bc28075b4e81bcc", + "IndexedDB/idbcursor_update_objectstore.any.sharedworker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "title", + "IDBCursor.update() - object store" + ], + [ + "script", + "resources/support.js" + ] + ] + } + ], [ - null, - {} - ] - ], - "idbcursor_update_objectstore5.htm": [ - "e358caa3929afedafc55142f4d54ca3f0810b482", - [ - null, - {} - ] - ], - "idbcursor_update_objectstore6.htm": [ - "26d42c116d914a7a27b9f4727a6c52d01ea7ef37", - [ - null, - {} - ] - ], - "idbcursor_update_objectstore7.htm": [ - "fc850bbcf1f40fa22945aaac642c7addb29d6f83", - [ - null, - {} - ] - ], - "idbcursor_update_objectstore8.htm": [ - "4d3439794eb945c24c880321e5a2833be3016c6f", - [ - null, - {} - ] - ], - "idbcursor_update_objectstore9.htm": [ - "39220f67be0b579e87c7813a64670d9ead9f8e7b", - [ - null, - {} + "IndexedDB/idbcursor_update_objectstore.any.worker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "title", + "IDBCursor.update() - object store" + ], + [ + "script", + "resources/support.js" + ] + ] + } ] ], "idbdatabase-createObjectStore-exception-order.htm": [ @@ -513917,7 +514637,7 @@ ] ], "comp_label.html": [ - "373940c04d0c176a31b80fc7a3d350dd56ea4618", + "e24956bff9d11de02e58178719f47962bae3056e", [ null, { @@ -539687,21 +540407,21 @@ ] ], "background-clip-computed.html": [ - "91ca19f5b26dc7248b8be7136c5cc90a96425e54", + "45dc75f7a4f9fb69a484144a0fe62dc1c09caf79", [ null, {} ] ], "background-clip-invalid.html": [ - "96831e06fc9cce1c9c45e4d44c83f04d2350d0ab", + "f86293635bbc5a5d0fb110fc271e42ba17d71d53", [ null, {} ] ], "background-clip-valid.html": [ - "e262a788bd0296deb0429fd4fc4257390776680a", + "6949b4e3d81713c6acc79c1471598bb86512927c", [ null, {} @@ -539729,7 +540449,7 @@ ] ], "background-computed.html": [ - "8a07df4903d6d3fa24cd675af284261798c549a1", + "9c45a8888abdb393f36689b5fb6a944f36ac7123", [ null, {} @@ -542395,6 +543115,13 @@ {} ] ], + "color-scheme-iframe-dynamic.html": [ + "46d05d63cb75ffd03f9f6f08b23743184e73d2ab", + [ + null, + {} + ] + ], "color-scheme-root-background.html": [ "c5766c7f99f9d22510da537fcb8b9035d356f2d4", [ @@ -542807,7 +543534,7 @@ ] ], "custom-property-style-queries.html": [ - "96a80904521ae3e92c43c87c4f05098d7e2376fd", + "17ee5b4184bf9b71ca559031ef136aa5f7016277", [ null, {} @@ -544359,7 +545086,7 @@ ] ], "linear-timing-functions-syntax.html": [ - "2d1baea4ebb311cd9710469189926b5a95beab47", + "3b8e106b6aae0b67728fa516313d7ded2be47d15", [ null, {} @@ -553397,7 +554124,7 @@ ] ], "clip-path-interpolation-shape.html": [ - "638e133c26bf007c1b642a989f36430e26bf4dd3", + "c9d9bf756fc237cda2b0cc22642befe2a06dcb78", [ null, {} @@ -555810,7 +556537,14 @@ } ] ] - } + }, + "sticky-dialog.html": [ + "2a2ef34d81f4811f23f4deffbc0c45d87383c7b3", + [ + null, + {} + ] + ] }, "css-properties-values-api": { "animate-invalid.html": [ @@ -559307,7 +560041,7 @@ }, "shape-functions": { "circle-function-computed.html": [ - "cdfbbb5aa0357d04b23ae0e493f32638a2e76baf", + "70f17c53f6e300026cccbca9129babeee7d8031b", [ null, {} @@ -559321,7 +560055,7 @@ ] ], "circle-function-valid.html": [ - "417e397de9ec689a67e69524243fd56ce3844606", + "7b64a82125d3be42dd6d3244ab21baa722b89e10", [ null, {} @@ -559432,6 +560166,27 @@ {} ] ], + "shape-function-computed.tentative.html": [ + "28f622f03bdd5205395234ff6d30c1f6dbea4272", + [ + null, + {} + ] + ], + "shape-function-invalid.tentative.html": [ + "76f0fcc94d6d2fb55bb32590cd6f960bbd7f0371", + [ + null, + {} + ] + ], + "shape-function-valid.tentative.html": [ + "16656a668f4af23419060e1d8e80214a47e497f7", + [ + null, + {} + ] + ], "xywh-function-computed.html": [ "117e7a40cfeb4405ef508afab1d8e9cc11d9165f", [ @@ -564198,13 +564953,6 @@ ] }, "text-autospace": { - "text-autospace-001.html": [ - "40a98861ad9c3b4a0d3028512bcf52c0fa36b51f", - [ - null, - {} - ] - ], "text-autospace-first-line-001.html": [ "7294856b8f68e299185cf8471ba7d5dd92380591", [ @@ -564537,7 +565285,7 @@ ] ], "text-decoration-thickness-interpolation.html": [ - "57a7eb09c690dfc89cfaed14510c530f0b6f8b30", + "a17efd9331dee4586c71fcd077f3680ca2b26099", [ null, {} @@ -569961,14 +570709,14 @@ ] ], "hypot-pow-sqrt-invalid.html": [ - "4b04e5358ed1b0ee7beb06700eff0bf8f5b0b29b", + "edecfceb13afe79ad0b13b6b5d29a9924f5fad9b", [ null, {} ] ], "hypot-pow-sqrt-serialize.html": [ - "ffaaaf4531d7d3ecc2c90d92ff60c10f3c1f6928", + "378f334555c4f3bc3e547945f30f3547634794cf", [ null, {} @@ -575200,7 +575948,7 @@ ] ], "offset-path-interpolation-008.html": [ - "30d789f4eb84daf9e4400c82558d1db3c479cf51", + "ffdd773d91ddc795ef0ba77ab5889eb008557d74", [ null, {} @@ -578486,6 +579234,22 @@ ] }, "digital-credentials": { + "allow-attribute.https.html": [ + "a42a3b68f0e888b8a745429bff1f14819d741e65", + [ + null, + {} + ] + ], + "default-permissions-policy.https.sub.html": [ + "fa3309ac2b40328550f1b576ce372929c2bfd1f5", + [ + null, + { + "testdriver": true + } + ] + ], "digital-credentials-static-methods.tentative.https.html": [ "5e00861124fd1755f90f4107824c4f3aae3bf5b0", [ @@ -578493,8 +579257,44 @@ {} ] ], + "disabled-by-permissions-policy.https.sub.html": [ + "2adff986164ca7342ec98f440ac27d87ce55a987", + [ + null, + { + "testdriver": true + } + ] + ], + "enabled-on-self-origin-by-permissions-policy.https.sub.html": [ + "4b928b035784b8ac445180c5db39e19d01233748", + [ + null, + { + "testdriver": true + } + ] + ], + "get-user-activation.https.html": [ + "d4af78a9362e5f7aa802c27c75a879e49899e546", + [ + null, + { + "testdriver": true + } + ] + ], + "identity-create.tentative.https.html": [ + "027a796652e8664b1805085cc7aaefbcd3e8c241", + [ + null, + { + "testdriver": true + } + ] + ], "identity-get.tentative.https.html": [ - "15597ed594a2409dbdcf6a10fee21d145833fa76", + "775d7205101366922c752a5a8f97829f8d819c2d", [ null, { @@ -580348,7 +581148,7 @@ ] }, "historical.html": [ - "1bc209ec0e775026a2464a67ac708efddbdc97c4", + "390b40ed57a06060c94e93e540f4259fc8f4cdc7", [ null, {} @@ -582461,6 +583261,27 @@ } ] ], + "modal-dialog.html": [ + "fa9eeae85eb13daf948c20406b1b907575c1c1f6", + [ + null, + {} + ] + ], + "moveBefore-shadow-inside.html": [ + "239b08ee95b76d9626001756c59cf9ac9e9da634", + [ + null, + {} + ] + ], + "mutation-events.html": [ + "4bba1efa8e14b986bb51144062e144366d4af19d", + [ + null, + {} + ] + ], "pointer-events.html": [ "a5d34fe40051d934a0b2792b8b7a3c9132cdf5c5", [ @@ -587181,6 +588002,13 @@ } ] ], + "createlink-with-selecting-img.html": [ + "2dd2acdc0f065e61856868a975e764e085865d34", + [ + null, + {} + ] + ], "createlink.html": [ "21c190703aed27e15eff16283b0c86d4d59ab989", [ @@ -602991,6 +603819,15 @@ } ] ], + "fedcm-storage-access-api-autogrant.tentative.https.sub.html": [ + "6cbd7851414f1a7fa5745b4cbc82b38a8926bd27", + [ + null, + { + "testdriver": true + } + ] + ], "fedcm-store.https.html": [ "d1e6ef464c4f3eb8e2d4118d1a5e2dc498410e05", [ @@ -603028,7 +603865,7 @@ ] ], "lfedcm-identity.create-store-collect.tentative.sub.https.html": [ - "9cc7278d375e38d6c176192174d9becfbce459c6", + "909735ed0f0eb2d0f712e7118e1bc276749871cf", [ null, { @@ -603037,7 +603874,7 @@ ] ], "lfedcm-identity.discovery.tentative.sub.https.html": [ - "2d5e8e8db476e226722da1f5b041165e9b560e3e", + "92625284eee14c6bb0234e20d50433734a2dd75e", [ null, { @@ -603153,6 +603990,15 @@ } ] ], + "automatic-beacon-data-cross-origin-subframe.https.html": [ + "d97bf370dc9a760e03ce06d697dd5646079c5fb8", + [ + null, + { + "testdriver": true + } + ] + ], "automatic-beacon-no-destination.https.html": [ "8456b316bef2bf38d6b3b34a52ccc10c3f2a931e", [ @@ -631585,7 +632431,7 @@ ] ], "document-exit-fullscreen-nested-in-iframe.html": [ - "893814dec3a1472cd10321ecd8d22ede0d74cf84", + "a735fc70e4a14b17f2a876ba5a630f71ccc1f5da", [ null, { @@ -635587,6 +636433,42 @@ {} ] ], + "grandparent_location_aboutsrcdoc.sub.window.js": [ + "c182c29cfc7d7562de13257c74ff3e8085d110a9", + [ + "html/browsers/browsing-the-web/navigating-across-documents/grandparent_location_aboutsrcdoc.sub.window.html", + { + "script_metadata": [ + [ + "script", + "./resources/testharness.js" + ], + [ + "script", + "./resources/testharnessreport.js" + ] + ] + } + ] + ], + "grandparent_session_aboutsrcdoc.sub.window.js": [ + "6f087355b11514085fca322f27654b928fad329b", + [ + "html/browsers/browsing-the-web/navigating-across-documents/grandparent_session_aboutsrcdoc.sub.window.html", + { + "script_metadata": [ + [ + "script", + "./resources/testharness.js" + ], + [ + "script", + "./resources/testharnessreport.js" + ] + ] + } + ] + ], "initial-empty-document": { "iframe-nosrc.html": [ "b89d3bb54b8ebe0c9c0446f9d249fcc2c8c19381", @@ -645215,7 +646097,7 @@ ] ], "2d.layer.layer-rendering-state-reset-in-layer.html": [ - "5d755cfc498552a4543a6e3b843fd9929cdd74d6", + "c7c520cff6fdbf28c4511520cfb3c76d935fb14b", [ null, {} @@ -655929,14 +656811,14 @@ ] ], "2d.layer.layer-rendering-state-reset-in-layer.html": [ - "cebdfd5f27ee86f59a55d6f2092641c9d275a89f", + "9788a72c680bf148dda6631ec2ba55ea43003214", [ null, {} ] ], "2d.layer.layer-rendering-state-reset-in-layer.worker.js": [ - "a566cccf14bc89eaae903df97ab69b46c4806197", + "715e7a5a9881cdc3bbaa1d4a59508c17f4db9552", [ "html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.worker.html", {} @@ -667634,7 +668516,7 @@ ] ], "dir-auto-dynamic-changes.window.js": [ - "d57d8664dfaff8c867c322c5fb4516bcbf6c3a0d", + "979c73800a459f03a91dfc614536264b5c5fdd7f", [ "html/dom/elements/global-attributes/dir-auto-dynamic-changes.window.html", { @@ -667662,7 +668544,7 @@ ] ], "dir-slots-directionality.html": [ - "c0a11ba9a90949b5046339a956bf8f14d934395e", + "f4ac84259d7ba0a91ea0f33fd1c3c4248f0b4e35", [ null, {} @@ -680925,7 +681807,7 @@ ] ], "select-mouse-behavior.tentative.html": [ - "b5d5c3fd1bb2c3fc381dea505ca01ca51b2bdaff", + "53c10ae2c4f29770b7456bda2d97b730769dd00d", [ null, { @@ -683200,106 +684082,6 @@ ] ] }, - "css-module-assertions": { - "charset-2.html": [ - "aaa2960aafe36b477abaad5d284fcf3bae536cf7", - [ - null, - {} - ] - ], - "charset-bom.html": [ - "e26ee08d31d74414d4c147f92a9e6e94e48b59a8", - [ - null, - {} - ] - ], - "charset.html": [ - "2127ec7280440c8cb08e3fa38b64bb52edda0573", - [ - null, - {} - ] - ], - "content-type-checking.html": [ - "3ade8633058443d2a830a7ac3e87401a976fa54b", - [ - null, - {} - ] - ], - "cors-crossorigin-requests.html": [ - "b9de562b723287c3e84b3499fec99bfd0a04caf0", - [ - null, - {} - ] - ], - "credentials.sub.html": [ - "8c2f0f8073d8249f9505193d1114c89ffa45955a", - [ - null, - {} - ] - ], - "css-module-worker-test.html": [ - "7ff672da6a9274ba7fb6d08c70b81406eeb795d6", - [ - null, - {} - ] - ], - "import-css-module-basic.html": [ - "4ea1790aabdf2bf420d05eb0c902770b5cef7139", - [ - null, - {} - ] - ], - "import-css-module-dynamic.html": [ - "13967858cb35d29233d9a46d8114c15d84ec8d25", - [ - null, - {} - ] - ], - "integrity.html": [ - "1dd0dad470a319d1fe11e74e997441a7b6e6d0d8", - [ - null, - {} - ] - ], - "load-error-events.html": [ - "3457452c93654e4e0187cb4cbaf0f547802ba03d", - [ - null, - {} - ] - ], - "referrer-policies.sub.html": [ - "f078437e09cc7599ab4427cbed4fe011e23fdc7d", - [ - null, - {} - ] - ], - "relative-urls.html": [ - "22971d28d9bd259caa1088ec86761eba650b95da", - [ - null, - {} - ] - ], - "script-element-css-src.html": [ - "231d02db477bde9e33a570e9aa8670b322acf634", - [ - null, - {} - ] - ] - }, "data-url.html": [ "6fad50527177e756db35842e054bf19d6e4dfbe4", [ @@ -684501,72 +685283,6 @@ {} ] ], - "import-assertions": { - "dynamic-import-with-assertion-argument.any.js": [ - "7efb2050b72664197f1a2b5dc9efb1a67b7f0b8c", - [ - "html/semantics/scripting-1/the-script-element/import-assertions/dynamic-import-with-assertion-argument.any.html", - { - "script_metadata": [ - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] - } - ], - [ - "html/semantics/scripting-1/the-script-element/import-assertions/dynamic-import-with-assertion-argument.any.sharedworker.html", - { - "script_metadata": [ - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] - } - ], - [ - "html/semantics/scripting-1/the-script-element/import-assertions/dynamic-import-with-assertion-argument.any.worker.html", - { - "script_metadata": [ - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] - } - ] - ], - "empty-assertion-clause.html": [ - "3a7c371189c9e847327ac14f49d4ee5153f35295", - [ - null, - {} - ] - ], - "invalid-import-errors-order.html": [ - "17c95faea0f80ae089e2fb84d075e174ae954450", - [ - null, - {} - ] - ], - "invalid-type-assertion-error.html": [ - "0adcc475693e27cebceef5e0f28212ffe2fb73a1", - [ - null, - {} - ] - ], - "unsupported-assertion.html": [ - "72977347a78c352ef0269d02542b362f4c631f48", - [ - null, - {} - ] - ] - }, "import-attributes": { "dynamic-import-with-attributes-argument.any.js": [ "2addb0fcb91e7ce2388c4bc2162b1c19fced9074", @@ -684887,260 +685603,6 @@ ] ] }, - "json-module-assertions": { - "charset-2.html": [ - "686178bfe1000a61769eeed525362f9a6282ee03", - [ - null, - {} - ] - ], - "charset-bom.any.js": [ - "d2dbe3e468f19017f2d400b059215718f56ce975", - [ - "html/semantics/scripting-1/the-script-element/json-module-assertions/charset-bom.any.html", - { - "script_metadata": [ - [ - "global", - "window,dedicatedworker,sharedworker" - ], - [ - "script", - "/common/utils.js" - ] - ] - } - ], - [ - "html/semantics/scripting-1/the-script-element/json-module-assertions/charset-bom.any.sharedworker.html", - { - "script_metadata": [ - [ - "global", - "window,dedicatedworker,sharedworker" - ], - [ - "script", - "/common/utils.js" - ] - ] - } - ], - [ - "html/semantics/scripting-1/the-script-element/json-module-assertions/charset-bom.any.worker.html", - { - "script_metadata": [ - [ - "global", - "window,dedicatedworker,sharedworker" - ], - [ - "script", - "/common/utils.js" - ] - ] - } - ] - ], - "charset.html": [ - "7c74b9bf6c4bafb61f54805f223857e44c0c5043", - [ - null, - {} - ] - ], - "cors-crossorigin-requests.html": [ - "757af2901c321d414ec6dc0db36a9ae3f238933e", - [ - null, - {} - ] - ], - "credentials.sub.html": [ - "d11d2f9589044d19a15e6d3c787189e7c79f7175", - [ - null, - {} - ] - ], - "integrity.html": [ - "68a794b973359132e8e803bd75f115ffb872d3b5", - [ - null, - {} - ] - ], - "invalid-content-type.any.js": [ - "cbccbd48429bf608fa9dd9eaac0f1fe4a38ddcbb", - [ - "html/semantics/scripting-1/the-script-element/json-module-assertions/invalid-content-type.any.html", - { - "script_metadata": [ - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] - } - ], - [ - "html/semantics/scripting-1/the-script-element/json-module-assertions/invalid-content-type.any.sharedworker.html", - { - "script_metadata": [ - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] - } - ], - [ - "html/semantics/scripting-1/the-script-element/json-module-assertions/invalid-content-type.any.worker.html", - { - "script_metadata": [ - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] - } - ] - ], - "json-module-service-worker-test.https.html": [ - "cc47da1499f13a1233ab71e461b77e7a7b53be26", - [ - null, - {} - ] - ], - "load-error-events.html": [ - "a9dfc1e6917830eb67761d34edb86cf15ca4ae64", - [ - null, - {} - ] - ], - "module.html": [ - "a495d4ac186260b6705c56b75d2b1ff1de7722a1", - [ - null, - {} - ] - ], - "non-object.any.js": [ - "37fbcae9fabb6d0fe89ff486fae4e896d5d21db5", - [ - "html/semantics/scripting-1/the-script-element/json-module-assertions/non-object.any.html", - { - "script_metadata": [ - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] - } - ], - [ - "html/semantics/scripting-1/the-script-element/json-module-assertions/non-object.any.sharedworker.html", - { - "script_metadata": [ - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] - } - ], - [ - "html/semantics/scripting-1/the-script-element/json-module-assertions/non-object.any.worker.html", - { - "script_metadata": [ - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] - } - ] - ], - "parse-error.html": [ - "9d0e3284fec6e69476162c67f2aec81d2f5a3577", - [ - null, - {} - ] - ], - "referrer-policies.sub.html": [ - "655c962ab781fa104fb3be8f9e6998d575cfb375", - [ - null, - {} - ] - ], - "repeated-imports.any.js": [ - "5cc3ee5b7c4c9fd98ad394a6571172fea9ad506d", - [ - "html/semantics/scripting-1/the-script-element/json-module-assertions/repeated-imports.any.html", - { - "script_metadata": [ - [ - "global", - "window,dedicatedworker,sharedworker" - ], - [ - "script", - "/common/utils.js" - ] - ] - } - ], - [ - "html/semantics/scripting-1/the-script-element/json-module-assertions/repeated-imports.any.sharedworker.html", - { - "script_metadata": [ - [ - "global", - "window,dedicatedworker,sharedworker" - ], - [ - "script", - "/common/utils.js" - ] - ] - } - ], - [ - "html/semantics/scripting-1/the-script-element/json-module-assertions/repeated-imports.any.worker.html", - { - "script_metadata": [ - [ - "global", - "window,dedicatedworker,sharedworker" - ], - [ - "script", - "/common/utils.js" - ] - ] - } - ] - ], - "script-element-json-src.html": [ - "c6d7c9a76e83b5d110aaa9d93a8fc49d4d714b94", - [ - null, - {} - ] - ], - "valid-content-type.html": [ - "162f2d6afcaf6fb4a23f4736286fe97e8ab05b28", - [ - null, - {} - ] - ] - }, "load-error-events-1.html": [ "45571550e1cc29bfaa218ad06f7c7b20b903a53b", [ @@ -685744,7 +686206,7 @@ ] ], "css-import-in-worker.any.js": [ - "bd6f5d092f3a6af3d405a86254dde9f7fc608ce2", + "3eae3fd3847c2413683c78a1e5e37ff271c9a31c", [ "html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/css-import-in-worker.any.sharedworker.html", { @@ -685795,7 +686257,7 @@ ] ], "with-import-assertions.any.js": [ - "f67ba9a1ae4fcedba1a7254c7b930e93d1ac66c6", + "078696ed3720adfa8a03a3fde89483d83b5a78e8", [ "html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/with-import-assertions.any.html", { @@ -693265,6 +693727,15 @@ } }, "html-aam": { + "dir-role.tentative.html": [ + "e5c374b90c2b86def16b1a29b4d4fd49fa6a0323", + [ + null, + { + "testdriver": true + } + ] + ], "fragile": { "area-role.html": [ "315d4a8e838f2d27508b53d7f6684119ebffd6bf", @@ -693353,7 +693824,7 @@ ] ], "roles.html": [ - "387acc260ddd694ef182b707aa9dbdb9f389e6d0", + "a50c767a86190891f03be5ec3a7205c6153b7ae5", [ null, { @@ -697408,24 +697879,6 @@ {} ] ], - "mouseover-heuristics-background.tentative.html": [ - "ddd4f9672e78e5e0ede5ec94fbdbd352081e670d", - [ - null, - { - "testdriver": true - } - ] - ], - "mouseover-heuristics-element.tentative.html": [ - "afc4b2a50d6bdbe63039b2bec42225dd873f1355", - [ - null, - { - "testdriver": true - } - ] - ], "multiple-image-same-src.html": [ "192a7a1dec0d9ff084147bf0ddac4af4aac0c689", [ @@ -710022,7 +710475,7 @@ }, "partitioned-popins": { "partitioned-popins.cookies.tentative.sub.https.window.js": [ - "d98e08a73969610e9eb3fbd878b2624c42520593", + "952e78a6eb0d66fb5f88b8db20c3bfbfbe2b736d", [ "partitioned-popins/partitioned-popins.cookies.tentative.sub.https.window.html", { @@ -710040,7 +710493,7 @@ ] ], "partitioned-popins.localStorage.tentative.sub.https.window.js": [ - "d8444604c9eb1d52da7111a33c9b009641b3d534", + "06fe2239fd38a2c115dc75f27243e4b4b746b60b", [ "partitioned-popins/partitioned-popins.localStorage.tentative.sub.https.window.html", { @@ -710056,6 +710509,60 @@ ] } ] + ], + "partitioned-popins.permission-all.tentative.sub.https.window.js": [ + "83eb092905c612630484d6d7af5537921d56d6ec", + [ + "partitioned-popins/partitioned-popins.permission-all.tentative.sub.https.window.html", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ] + ] + } + ] + ], + "partitioned-popins.permission-default.tentative.sub.https.window.js": [ + "613d8dbb5f2da23f8953cbfe0e6392dbe5a6cdb5", + [ + "partitioned-popins/partitioned-popins.permission-default.tentative.sub.https.window.html", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ] + ] + } + ] + ], + "partitioned-popins.permission-self.tentative.sub.https.window.js": [ + "5930442aa872d7b1c51fa8d19636348b7d658dc3", + [ + "partitioned-popins/partitioned-popins.permission-self.tentative.sub.https.window.html", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ] + ] + } + ] ] }, "payment-handler": { @@ -713420,7 +713927,7 @@ ] ], "mouse-pointer-boundary-events-for-shadowdom.html": [ - "ea200d6c966560e8fd99b5d7cbfbf19eb942ca2f", + "70b7439ce40fef36c327897f8a6f98ceba0ab800", [ null, { @@ -732955,6 +733462,15 @@ } ] ], + "scroll-to-text-fragment-open-link-in-new-tab-desktop.html": [ + "01efe38f8f17d3612dc5eae9349400be48981554", + [ + null, + { + "testdriver": true + } + ] + ], "scroll-to-text-fragment-same-doc.html": [ "378e373575ea27d488dc168b685295267f4c6204", [ @@ -733779,6 +734295,13 @@ {} ] ], + "Selection-isCollapsed.html": [ + "60384a20d3786b9ab9e0f2661276fc7e88f30dd7", + [ + null, + {} + ] + ], "Selection-later-become-slotted-content.html": [ "d44930479d4d7c1aee1de804c66865e9aefd8afe", [ @@ -738549,7 +739072,7 @@ ] ], "property-reflection.html": [ - "078eb28665d2114b22fa5f0fa2f0e75448415155", + "b182087aaedbb8fe5aaca4a107ebf06ed11df30e", [ null, { @@ -746726,7 +747249,7 @@ ] ], "tee.any.js": [ - "7dd5ba3f3fb013964b738d50d0c76a05d7c9d583", + "60d82b9cf6a1fdfb9ff89d7bbd7d304982026844", [ "streams/readable-byte-streams/tee.any.html", { @@ -759450,6 +759973,15 @@ ] ] }, + "viewport": { + "viewport-segments.html": [ + "64f0eb9caefb0b862faabcfe0ab23df52c00735d", + [ + null, + {} + ] + ] + }, "virtual-keyboard": { "idlharness.https.window.js": [ "8a40e68575f0fc7383f660346e8b98c646c798e2", @@ -759573,13 +760105,6 @@ {} ] ], - "viewport-segments.tentative.html": [ - "c90ed29d730dbaf98b1638893c8688d8b574cf04", - [ - null, - {} - ] - ], "viewport-type.html": [ "7a9ca425c082cad059f6870afaafcbf4f64a7ae5", [ @@ -761933,6 +762458,232 @@ } ] ], + "js-string": { + "basic.tentative.any.js": [ + "6275aacd5f6d4716063fbc877f9ab3f8a70d7453", + [ + null, + { + "jsshell": true, + "script_metadata": [ + [ + "global", + "window,dedicatedworker,jsshell,shadowrealm" + ], + [ + "script", + "/wasm/jsapi/assertions.js" + ], + [ + "script", + "/wasm/jsapi/wasm-module-builder.js" + ], + [ + "script", + "/wasm/jsapi/js-string/polyfill.js" + ] + ] + } + ], + [ + "wasm/jsapi/js-string/basic.tentative.any.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,jsshell,shadowrealm" + ], + [ + "script", + "/wasm/jsapi/assertions.js" + ], + [ + "script", + "/wasm/jsapi/wasm-module-builder.js" + ], + [ + "script", + "/wasm/jsapi/js-string/polyfill.js" + ] + ] + } + ], + [ + "wasm/jsapi/js-string/basic.tentative.any.shadowrealm.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,jsshell,shadowrealm" + ], + [ + "script", + "/wasm/jsapi/assertions.js" + ], + [ + "script", + "/wasm/jsapi/wasm-module-builder.js" + ], + [ + "script", + "/wasm/jsapi/js-string/polyfill.js" + ] + ] + } + ], + [ + "wasm/jsapi/js-string/basic.tentative.any.worker.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,jsshell,shadowrealm" + ], + [ + "script", + "/wasm/jsapi/assertions.js" + ], + [ + "script", + "/wasm/jsapi/wasm-module-builder.js" + ], + [ + "script", + "/wasm/jsapi/js-string/polyfill.js" + ] + ] + } + ] + ], + "constants.tentative.any.js": [ + "ef391a90b7ae7c646a03eb67ef13bfcd5100befa", + [ + null, + { + "jsshell": true, + "script_metadata": [ + [ + "global", + "window,dedicatedworker,jsshell,shadowrealm" + ], + [ + "script", + "/wasm/jsapi/wasm-module-builder.js" + ] + ] + } + ], + [ + "wasm/jsapi/js-string/constants.tentative.any.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,jsshell,shadowrealm" + ], + [ + "script", + "/wasm/jsapi/wasm-module-builder.js" + ] + ] + } + ], + [ + "wasm/jsapi/js-string/constants.tentative.any.shadowrealm.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,jsshell,shadowrealm" + ], + [ + "script", + "/wasm/jsapi/wasm-module-builder.js" + ] + ] + } + ], + [ + "wasm/jsapi/js-string/constants.tentative.any.worker.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,jsshell,shadowrealm" + ], + [ + "script", + "/wasm/jsapi/wasm-module-builder.js" + ] + ] + } + ] + ], + "imports.tentative.any.js": [ + "c357760befb6c386ef2fb7a7e972a0e55f72faf0", + [ + null, + { + "jsshell": true, + "script_metadata": [ + [ + "global", + "window,dedicatedworker,jsshell,shadowrealm" + ], + [ + "script", + "/wasm/jsapi/wasm-module-builder.js" + ] + ] + } + ], + [ + "wasm/jsapi/js-string/imports.tentative.any.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,jsshell,shadowrealm" + ], + [ + "script", + "/wasm/jsapi/wasm-module-builder.js" + ] + ] + } + ], + [ + "wasm/jsapi/js-string/imports.tentative.any.shadowrealm.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,jsshell,shadowrealm" + ], + [ + "script", + "/wasm/jsapi/wasm-module-builder.js" + ] + ] + } + ], + [ + "wasm/jsapi/js-string/imports.tentative.any.worker.html", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker,jsshell,shadowrealm" + ], + [ + "script", + "/wasm/jsapi/wasm-module-builder.js" + ] + ] + } + ] + ] + }, "memory": { "buffer.any.js": [ "fb1d1200b892be1eb7aea66db343db491e921a8d", @@ -769235,6 +769986,15 @@ } ] ], + "createcredential-clientdata.https.html": [ + "3759d5be9d3ec2058fd2d01bbf178895c7d46862", + [ + null, + { + "testdriver": true + } + ] + ], "createcredential-cross-origin-iframe.https.sub.html": [ "ecf99f68a2b4688391ebaf4bd4be1aa79ba342df", [ @@ -777833,7 +778593,7 @@ ] ], "buffer.https.any.js": [ - "31a33d9e70654d9c9a10baf7326e2bc86f015982", + "6bd3993afcf63d1713f33410eafc6dcf8544018d", [ "webnn/conformance_tests/buffer.https.any.html?cpu", { @@ -778076,7 +778836,7 @@ ] ], "byob_readbuffer.https.any.js": [ - "3b9546c50f0c63da99f0ae4db328f120ad09a8bd", + "ccbd6d390fa3661f0c3d6568243d37146b48120a", [ "webnn/conformance_tests/byob_readbuffer.https.any.html?cpu", { @@ -782669,7 +783429,7 @@ ] ], "gru.https.any.js": [ - "d14fd2eec49668dbd13e33320d09e57b35c39f73", + "15f585ba9144f42f348f1da5c39b3da299d57246", [ "webnn/conformance_tests/gru.https.any.html?cpu", { @@ -782888,7 +783648,7 @@ ] ], "gru_cell.https.any.js": [ - "f8aa3ac9cf78fead8fdb741b7135b421a860d452", + "3d7e69fb9fb302a3db43b7b06bc90a052363a7d2", [ "webnn/conformance_tests/gru_cell.https.any.html?cpu", { @@ -787487,7 +788247,7 @@ ] ], "parallel-dispatch.https.any.js": [ - "2ba1f6cf442bd0f6a36b135df7f8ed865ec98efe", + "b3927765fb5ae16deef3bae366fa26c365688d69", [ "webnn/conformance_tests/parallel-dispatch.https.any.html?cpu", { @@ -790991,7 +791751,7 @@ ] ], "resample2d.https.any.js": [ - "bedd348fe58961048a6d23b0d82ac2b2701ef630", + "65faca22abdddb36e3938e3e4f45cd2ddf0c0aec", [ "webnn/conformance_tests/resample2d.https.any.html?cpu", { @@ -795312,7 +796072,7 @@ ] ], "clamp.https.any.js": [ - "8302961e2c481413e0a6e39e44fc4424562e030a", + "10cf0028e5248425574132b45bff8781cf80088c", [ "webnn/validation_tests/clamp.https.any.html?cpu", { @@ -796824,7 +797584,7 @@ ] ], "destroyContext.https.any.js": [ - "ba0661ae6f8e3da28d03ffbf1cdfdea97a7e2fd7", + "7d2411412b3d7cb4291ff70f1c05f81debf65840", [ "webnn/validation_tests/destroyContext.https.any.html?cpu", { @@ -797018,6 +797778,201 @@ } ] ], + "destroyGraph.https.any.js": [ + "8d4f5121c2f338de423d734855af855813672c66", + [ + "webnn/validation_tests/destroyGraph.https.any.html?cpu", + { + "script_metadata": [ + [ + "timeout", + "long" + ], + [ + "title", + "validation tests for WebNN API MLContext::destroy()" + ], + [ + "global", + "window,dedicatedworker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ] + ], + "timeout": "long" + } + ], + [ + "webnn/validation_tests/destroyGraph.https.any.html?gpu", + { + "script_metadata": [ + [ + "timeout", + "long" + ], + [ + "title", + "validation tests for WebNN API MLContext::destroy()" + ], + [ + "global", + "window,dedicatedworker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ] + ], + "timeout": "long" + } + ], + [ + "webnn/validation_tests/destroyGraph.https.any.html?npu", + { + "script_metadata": [ + [ + "timeout", + "long" + ], + [ + "title", + "validation tests for WebNN API MLContext::destroy()" + ], + [ + "global", + "window,dedicatedworker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ] + ], + "timeout": "long" + } + ], + [ + "webnn/validation_tests/destroyGraph.https.any.worker.html?cpu", + { + "script_metadata": [ + [ + "timeout", + "long" + ], + [ + "title", + "validation tests for WebNN API MLContext::destroy()" + ], + [ + "global", + "window,dedicatedworker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ] + ], + "timeout": "long" + } + ], + [ + "webnn/validation_tests/destroyGraph.https.any.worker.html?gpu", + { + "script_metadata": [ + [ + "timeout", + "long" + ], + [ + "title", + "validation tests for WebNN API MLContext::destroy()" + ], + [ + "global", + "window,dedicatedworker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ] + ], + "timeout": "long" + } + ], + [ + "webnn/validation_tests/destroyGraph.https.any.worker.html?npu", + { + "script_metadata": [ + [ + "timeout", + "long" + ], + [ + "title", + "validation tests for WebNN API MLContext::destroy()" + ], + [ + "global", + "window,dedicatedworker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ] + ], + "timeout": "long" + } + ] + ], "elementwise-binary.https.any.js": [ "fc0616f569b3970a5b274017e676c180f4623b9a", [ @@ -797775,7 +798730,7 @@ ] ], "expand.https.any.js": [ - "12349a33f8cfb160b191ce9186c969963455f2f9", + "4edc9a718a4ff14daf9aa41d2be7b97b0c682734", [ "webnn/validation_tests/expand.https.any.html?cpu", { @@ -798909,7 +799864,7 @@ ] ], "hardSigmoid.https.any.js": [ - "b0104dfc2c2729c62fd732972bb07ad0a1542533", + "c4ea4e1296ba6e6d0aec8abfa502f644ce1369c6", [ "webnn/validation_tests/hardSigmoid.https.any.html?cpu", { @@ -799098,7 +800053,7 @@ ] ], "hardSwish.https.any.js": [ - "53c78c8c81df2af2b2f2759f646626d2de2b3c93", + "4c76640b09351b73635dad9318ba4ebe3e7f05b0", [ "webnn/validation_tests/hardSwish.https.any.html?cpu", { @@ -799664,6 +800619,195 @@ } ] ], + "invalid-rank.https.any.js": [ + "59f5ac52337533916efcab14d9698f4d7c84b683", + [ + "webnn/validation_tests/invalid-rank.https.any.html?cpu", + { + "script_metadata": [ + [ + "title", + "ensure an MLOperand cannot be created with an invalid rank" + ], + [ + "global", + "window,dedicatedworker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ], + [ + "script", + "../resources/utils_validation.js" + ] + ] + } + ], + [ + "webnn/validation_tests/invalid-rank.https.any.html?gpu", + { + "script_metadata": [ + [ + "title", + "ensure an MLOperand cannot be created with an invalid rank" + ], + [ + "global", + "window,dedicatedworker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ], + [ + "script", + "../resources/utils_validation.js" + ] + ] + } + ], + [ + "webnn/validation_tests/invalid-rank.https.any.html?npu", + { + "script_metadata": [ + [ + "title", + "ensure an MLOperand cannot be created with an invalid rank" + ], + [ + "global", + "window,dedicatedworker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ], + [ + "script", + "../resources/utils_validation.js" + ] + ] + } + ], + [ + "webnn/validation_tests/invalid-rank.https.any.worker.html?cpu", + { + "script_metadata": [ + [ + "title", + "ensure an MLOperand cannot be created with an invalid rank" + ], + [ + "global", + "window,dedicatedworker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ], + [ + "script", + "../resources/utils_validation.js" + ] + ] + } + ], + [ + "webnn/validation_tests/invalid-rank.https.any.worker.html?gpu", + { + "script_metadata": [ + [ + "title", + "ensure an MLOperand cannot be created with an invalid rank" + ], + [ + "global", + "window,dedicatedworker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ], + [ + "script", + "../resources/utils_validation.js" + ] + ] + } + ], + [ + "webnn/validation_tests/invalid-rank.https.any.worker.html?npu", + { + "script_metadata": [ + [ + "title", + "ensure an MLOperand cannot be created with an invalid rank" + ], + [ + "global", + "window,dedicatedworker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ], + [ + "script", + "../resources/utils_validation.js" + ] + ] + } + ] + ], "layerNormalization.https.any.js": [ "50e48cca6e39bd41fce25082011859676100a0ec", [ @@ -800043,7 +801187,7 @@ ] ], "linear.https.any.js": [ - "936843374b992f9fa7703642448e93f0edc36187", + "e1243bb73fd53b832f5de926afe86ca225717c3c", [ "webnn/validation_tests/linear.https.any.html?cpu", { @@ -801420,7 +802564,7 @@ ] ], "prelu.https.any.js": [ - "5b1b95c70f110e5668696f63c96764c911261835", + "9c01d6edae3a9ae960e1eefa4ff120176c04da25", [ "webnn/validation_tests/prelu.https.any.html?cpu", { @@ -801609,7 +802753,7 @@ ] ], "reduction.https.any.js": [ - "57931f3aec4751408f78108c3d0fdca66a11bfe9", + "cb0d344b4f127deaceacf9172f2c967467d9e5c5", [ "webnn/validation_tests/reduction.https.any.html?cpu", { @@ -801987,7 +803131,7 @@ ] ], "resample2d.https.any.js": [ - "777c1fc6bb8bafe2cfad0c080495b334936fbc6f", + "dd9916aefe099c625ff0170bb90ad126f0d5ab42", [ "webnn/validation_tests/resample2d.https.any.html?cpu", { @@ -803499,7 +804643,7 @@ ] ], "tanh.https.any.js": [ - "b7ddf461c52152a5c7969ebdf9771eb67dd42b95", + "e212d49e035e784d8c34f320d5b7194513ef0317", [ "webnn/validation_tests/tanh.https.any.html?cpu", { @@ -803688,7 +804832,7 @@ ] ], "transpose.https.any.js": [ - "f9eda1d68b6c3bda5ccca08564f96c9ba6b98636", + "d6d250d792223ea8838b177f1bafc0f1679f6937", [ "webnn/validation_tests/transpose.https.any.html?cpu", { @@ -803877,7 +805021,7 @@ ] ], "triangular.https.any.js": [ - "320c4ab56592e1d4421b283569a2787c4a707f6d", + "0995d21d692bee0fd137bdc18a8c9cebb9f73fd1", [ "webnn/validation_tests/triangular.https.any.html?cpu", { @@ -804955,6 +806099,15 @@ {} ] ], + "RTCRtpParameters-codec.html": [ + "9903776cceb7de610d0aa3d24625d1ee16206aba", + [ + null, + { + "timeout": "long" + } + ] + ], "RTCRtpParameters-codecs.html": [ "933677f792b84568b00e1c9a852d7e8fcd2b9e4e", [ @@ -806213,15 +807366,6 @@ {} ] ], - "RTCRtpParameters-codec.html": [ - "a93e028e6f6f3fd1537df267af10e72723dd4def", - [ - null, - { - "timeout": "long" - } - ] - ], "RTCRtpSynchronizationSource-captureTimestamp.html": [ "22ca5709b5f4f4e6bd4daf91e3a9c9504845b7f7", [ @@ -851967,7 +853111,7 @@ ] ], "pointer_touch.py": [ - "95aa62ceba9abb2054761007614f9353a4cc9b54", + "f036de7c744c1d5bb3376640bdffa9ef5ca79daa", [ null, {} @@ -852251,6 +853395,13 @@ ] }, "continue_response": { + "cookies.py": [ + "e77bf83cde14d4cd304350b2fc72820f5112645e", + [ + null, + {} + ] + ], "credentials.py": [ "499c8a28c126fccea5ec0af932595d0d2cefadb9", [ @@ -852258,6 +853409,13 @@ {} ] ], + "headers.py": [ + "a9f4a6d8bca0fa6c0a0470672c6bca7bcc1a5b15", + [ + null, + {} + ] + ], "invalid.py": [ "41f786ef6d7c62260e267192fc1158484be617fb", [ @@ -852325,14 +853483,14 @@ ] ], "cookies.py": [ - "c05321b3b05b50faf6db665ce82ead2125d01c4d", + "b1c9dc90437e2f436cf0951c927c3ae2ab170e9c", [ null, {} ] ], "headers.py": [ - "0436896ec196f0614206d9efaf4bb54b44eff903", + "95291b5a4c3517d07c38420b5d58d66c46c9a173", [ null, {} @@ -852794,10 +853952,12 @@ }, "realm_created": { "realm_created.py": [ - "f4dc681a3a2edf4aaa7b513137acb09bd0c2e65f", + "9adc36483ab69028c464868894208dc9d0588bb8", [ null, - {} + { + "timeout": "long" + } ] ] }, diff --git a/tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-background-geometry.html.ini b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-background-geometry.html.ini new file mode 100644 index 00000000000..7b5725dade5 --- /dev/null +++ b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-background-geometry.html.ini @@ -0,0 +1,2 @@ +[clip-border-area-background-geometry.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-border-image.html.ini b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-border-image.html.ini new file mode 100644 index 00000000000..ee2385389f2 --- /dev/null +++ b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-border-image.html.ini @@ -0,0 +1,2 @@ +[clip-border-area-border-image.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-border-on-top.html.ini b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-border-on-top.html.ini new file mode 100644 index 00000000000..391f73662c5 --- /dev/null +++ b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-border-on-top.html.ini @@ -0,0 +1,2 @@ +[clip-border-area-border-on-top.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-box-decoration-break.html.ini b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-box-decoration-break.html.ini new file mode 100644 index 00000000000..038337e7652 --- /dev/null +++ b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-box-decoration-break.html.ini @@ -0,0 +1,2 @@ +[clip-border-area-box-decoration-break.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-multiple-backgrounds.html.ini b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-multiple-backgrounds.html.ini new file mode 100644 index 00000000000..dedf4790821 --- /dev/null +++ b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area-multiple-backgrounds.html.ini @@ -0,0 +1,2 @@ +[clip-border-area-multiple-backgrounds.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area.html.ini b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area.html.ini new file mode 100644 index 00000000000..0242ce1c2dc --- /dev/null +++ b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-border-area.html.ini @@ -0,0 +1,2 @@ +[clip-border-area.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-backgrounds/background-clip/clip-text-ellipsis.html.ini b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-text-ellipsis.html.ini new file mode 100644 index 00000000000..d91d67cccf5 --- /dev/null +++ b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-text-ellipsis.html.ini @@ -0,0 +1,2 @@ +[clip-text-ellipsis.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-backgrounds/background-clip/clip-text-text-decorations.html.ini b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-text-text-decorations.html.ini new file mode 100644 index 00000000000..204009f707e --- /dev/null +++ b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-text-text-decorations.html.ini @@ -0,0 +1,2 @@ +[clip-text-text-decorations.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-backgrounds/background-clip/clip-text-text-emphasis.html.ini b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-text-text-emphasis.html.ini new file mode 100644 index 00000000000..b0229e300f6 --- /dev/null +++ b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-text-text-emphasis.html.ini @@ -0,0 +1,2 @@ +[clip-text-text-emphasis.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-backgrounds/parsing/background-clip-computed.html.ini b/tests/wpt/meta/css/css-backgrounds/parsing/background-clip-computed.html.ini index 695438b5025..05b51a16b2b 100644 --- a/tests/wpt/meta/css/css-backgrounds/parsing/background-clip-computed.html.ini +++ b/tests/wpt/meta/css/css-backgrounds/parsing/background-clip-computed.html.ini @@ -2,3 +2,8 @@ [Property background-clip value 'border-box, padding-box, content-box'] expected: FAIL + [Property background-clip value 'border-area'] + expected: FAIL + + [Property background-clip value 'border-box, padding-box, content-box, border-area'] + expected: FAIL diff --git a/tests/wpt/meta/css/css-backgrounds/parsing/background-clip-valid.html.ini b/tests/wpt/meta/css/css-backgrounds/parsing/background-clip-valid.html.ini new file mode 100644 index 00000000000..1a09ce1f0b0 --- /dev/null +++ b/tests/wpt/meta/css/css-backgrounds/parsing/background-clip-valid.html.ini @@ -0,0 +1,6 @@ +[background-clip-valid.html] + [e.style['background-clip'\] = "border-area" should set the property value] + expected: FAIL + + [e.style['background-clip'\] = "border-box, padding-box, content-box, border-area" should set the property value] + expected: FAIL diff --git a/tests/wpt/meta/css/css-backgrounds/parsing/background-computed.html.ini b/tests/wpt/meta/css/css-backgrounds/parsing/background-computed.html.ini index 736cd6a79c2..ca3fde3439f 100644 --- a/tests/wpt/meta/css/css-backgrounds/parsing/background-computed.html.ini +++ b/tests/wpt/meta/css/css-backgrounds/parsing/background-computed.html.ini @@ -73,3 +73,6 @@ [Property background-position-x value '-20%, 10px'] expected: FAIL + + [Property background-clip value 'content-box, border-box, border-area'] + expected: FAIL diff --git a/tests/wpt/meta/css/css-position/sticky-dialog.html.ini b/tests/wpt/meta/css/css-position/sticky-dialog.html.ini new file mode 100644 index 00000000000..fc7f012b214 --- /dev/null +++ b/tests/wpt/meta/css/css-position/sticky-dialog.html.ini @@ -0,0 +1,3 @@ +[sticky-dialog.html] + [Once in the top-layer position:sticky computes to position:absolute] + expected: FAIL diff --git a/tests/wpt/meta/css/css-text-decor/animations/text-decoration-thickness-interpolation.html.ini b/tests/wpt/meta/css/css-text-decor/animations/text-decoration-thickness-interpolation.html.ini index f3e1ede6af8..1fb78ffbb3e 100644 --- a/tests/wpt/meta/css/css-text-decor/animations/text-decoration-thickness-interpolation.html.ini +++ b/tests/wpt/meta/css/css-text-decor/animations/text-decoration-thickness-interpolation.html.ini @@ -862,3 +862,483 @@ [Web Animations: property from [100%\] to [2em\] at (1) should be [32px\]] expected: FAIL + + [CSS Transitions: property from [100%\] to [0%\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0%\] at (0.3) should be [70%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0%\] at (0.6) should be [40%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0%\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0%\] at (0.3) should be [70%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0%\] at (0.6) should be [40%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0%\] at (0) should be [100%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0%\] at (0.3) should be [70%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0%\] at (0.6) should be [40%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0%\] at (0) should be [100%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0%\] at (0.3) should be [70%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0%\] at (0.6) should be [40%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [200%\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [200%\] at (0.3) should be [130%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [200%\] at (0.6) should be [160%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [200%\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [200%\] at (0.3) should be [130%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [200%\] at (0.6) should be [160%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [200%\] at (0) should be [100%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [200%\] at (0.3) should be [130%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [200%\] at (0.6) should be [160%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [200%\] at (0) should be [100%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [200%\] at (0.3) should be [130%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [200%\] at (0.6) should be [160%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [CSS Transitions: property from [16px\] to [0%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Transitions: property from [16px\] to [0%\] at (0.3) should be [calc(0% + 11.2px)\]] + expected: FAIL + + [CSS Transitions: property from [16px\] to [0%\] at (0.6) should be [calc(0% + 6.4px)\]] + expected: FAIL + + [CSS Transitions: property from [16px\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [16px\] to [0%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [16px\] to [0%\] at (0.3) should be [calc(0% + 11.2px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [16px\] to [0%\] at (0.6) should be [calc(0% + 6.4px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [16px\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [CSS Animations: property from [16px\] to [0%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Animations: property from [16px\] to [0%\] at (0.3) should be [calc(0% + 11.2px)\]] + expected: FAIL + + [CSS Animations: property from [16px\] to [0%\] at (0.6) should be [calc(0% + 6.4px)\]] + expected: FAIL + + [CSS Animations: property from [16px\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [Web Animations: property from [16px\] to [0%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [Web Animations: property from [16px\] to [0%\] at (0.3) should be [calc(0% + 11.2px)\]] + expected: FAIL + + [Web Animations: property from [16px\] to [0%\] at (0.6) should be [calc(0% + 6.4px)\]] + expected: FAIL + + [Web Animations: property from [16px\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions: property from [16px\] to [200%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Transitions: property from [16px\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]] + expected: FAIL + + [CSS Transitions: property from [16px\] to [200%\] at (0.6) should be [calc(120% + 6.4px)\]] + expected: FAIL + + [CSS Transitions: property from [16px\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [16px\] to [200%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [16px\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [16px\] to [200%\] at (0.6) should be [calc(120% + 6.4px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [16px\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [CSS Animations: property from [16px\] to [200%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Animations: property from [16px\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]] + expected: FAIL + + [CSS Animations: property from [16px\] to [200%\] at (0.6) should be [calc(120% + 6.4px)\]] + expected: FAIL + + [CSS Animations: property from [16px\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [Web Animations: property from [16px\] to [200%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [Web Animations: property from [16px\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]] + expected: FAIL + + [Web Animations: property from [16px\] to [200%\] at (0.6) should be [calc(120% + 6.4px)\]] + expected: FAIL + + [Web Animations: property from [16px\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [CSS Transitions: property from [1em\] to [0%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Transitions: property from [1em\] to [0%\] at (0.3) should be [calc(0% + 11.2px)\]] + expected: FAIL + + [CSS Transitions: property from [1em\] to [0%\] at (0.6) should be [calc(0% + 6.4px)\]] + expected: FAIL + + [CSS Transitions: property from [1em\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1em\] to [0%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1em\] to [0%\] at (0.3) should be [calc(0% + 11.2px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1em\] to [0%\] at (0.6) should be [calc(0% + 6.4px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1em\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [CSS Animations: property from [1em\] to [0%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Animations: property from [1em\] to [0%\] at (0.3) should be [calc(0% + 11.2px)\]] + expected: FAIL + + [CSS Animations: property from [1em\] to [0%\] at (0.6) should be [calc(0% + 6.4px)\]] + expected: FAIL + + [CSS Animations: property from [1em\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [Web Animations: property from [1em\] to [0%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [Web Animations: property from [1em\] to [0%\] at (0.3) should be [calc(0% + 11.2px)\]] + expected: FAIL + + [Web Animations: property from [1em\] to [0%\] at (0.6) should be [calc(0% + 6.4px)\]] + expected: FAIL + + [Web Animations: property from [1em\] to [0%\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions: property from [1em\] to [200%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Transitions: property from [1em\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]] + expected: FAIL + + [CSS Transitions: property from [1em\] to [200%\] at (0.6) should be [calc(120% + 6.4px)\]] + expected: FAIL + + [CSS Transitions: property from [1em\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1em\] to [200%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1em\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1em\] to [200%\] at (0.6) should be [calc(120% + 6.4px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1em\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [CSS Animations: property from [1em\] to [200%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [CSS Animations: property from [1em\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]] + expected: FAIL + + [CSS Animations: property from [1em\] to [200%\] at (0.6) should be [calc(120% + 6.4px)\]] + expected: FAIL + + [CSS Animations: property from [1em\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [Web Animations: property from [1em\] to [200%\] at (0) should be [calc(0% + 16px)\]] + expected: FAIL + + [Web Animations: property from [1em\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]] + expected: FAIL + + [Web Animations: property from [1em\] to [200%\] at (0.6) should be [calc(120% + 6.4px)\]] + expected: FAIL + + [Web Animations: property from [1em\] to [200%\] at (1) should be [200%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0px\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0px\] at (0.3) should be [70%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0px\] at (0.6) should be [40%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0px\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0px\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0px\] at (0.3) should be [70%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0px\] at (0.6) should be [40%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0px\] at (1) should be [0%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0px\] at (0) should be [100%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0px\] at (0.3) should be [70%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0px\] at (0.6) should be [40%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0px\] at (1) should be [0%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0px\] at (0) should be [100%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0px\] at (0.3) should be [70%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0px\] at (0.6) should be [40%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0px\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [32px\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [32px\] at (0.3) should be [calc(70% + 9.6px)\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [32px\] at (0.6) should be [calc(40% + 19.2px)\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [32px\] at (1) should be [calc(0% + 32px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [32px\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [32px\] at (0.3) should be [calc(70% + 9.6px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [32px\] at (0.6) should be [calc(40% + 19.2px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [32px\] at (1) should be [calc(0% + 32px)\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [32px\] at (0) should be [100%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [32px\] at (0.3) should be [calc(70% + 9.6px)\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [32px\] at (0.6) should be [calc(40% + 19.2px)\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [32px\] at (1) should be [calc(0% + 32px)\]] + expected: FAIL + + [Web Animations: property from [100%\] to [32px\] at (0) should be [100%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [32px\] at (0.3) should be [calc(70% + 9.6px)\]] + expected: FAIL + + [Web Animations: property from [100%\] to [32px\] at (0.6) should be [calc(40% + 19.2px)\]] + expected: FAIL + + [Web Animations: property from [100%\] to [32px\] at (1) should be [calc(0% + 32px)\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0em\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0em\] at (0.3) should be [70%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0em\] at (0.6) should be [40%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [0em\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0em\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0em\] at (0.3) should be [70%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0em\] at (0.6) should be [40%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [0em\] at (1) should be [0%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0em\] at (0) should be [100%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0em\] at (0.3) should be [70%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0em\] at (0.6) should be [40%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [0em\] at (1) should be [0%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0em\] at (0) should be [100%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0em\] at (0.3) should be [70%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0em\] at (0.6) should be [40%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [0em\] at (1) should be [0%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [2em\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [2em\] at (0.3) should be [calc(70% + 9.6px)\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [2em\] at (0.6) should be [calc(40% + 19.2px)\]] + expected: FAIL + + [CSS Transitions: property from [100%\] to [2em\] at (1) should be [calc(0% + 32px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [2em\] at (0) should be [100%\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [2em\] at (0.3) should be [calc(70% + 9.6px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [2em\] at (0.6) should be [calc(40% + 19.2px)\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [100%\] to [2em\] at (1) should be [calc(0% + 32px)\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [2em\] at (0) should be [100%\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [2em\] at (0.3) should be [calc(70% + 9.6px)\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [2em\] at (0.6) should be [calc(40% + 19.2px)\]] + expected: FAIL + + [CSS Animations: property from [100%\] to [2em\] at (1) should be [calc(0% + 32px)\]] + expected: FAIL + + [Web Animations: property from [100%\] to [2em\] at (0) should be [100%\]] + expected: FAIL + + [Web Animations: property from [100%\] to [2em\] at (0.3) should be [calc(70% + 9.6px)\]] + expected: FAIL + + [Web Animations: property from [100%\] to [2em\] at (0.6) should be [calc(40% + 19.2px)\]] + expected: FAIL + + [Web Animations: property from [100%\] to [2em\] at (1) should be [calc(0% + 32px)\]] + expected: FAIL diff --git a/tests/wpt/meta/css/css-text/text-autospace/text-autospace-001.html.ini b/tests/wpt/meta/css/css-text/text-autospace/text-autospace-001.html.ini index 81c60721b6b..53e0ba7a9c3 100644 --- a/tests/wpt/meta/css/css-text/text-autospace/text-autospace-001.html.ini +++ b/tests/wpt/meta/css/css-text/text-autospace/text-autospace-001.html.ini @@ -1,2 +1,2 @@ [text-autospace-001.html] - expected: ERROR + expected: FAIL diff --git a/tests/wpt/meta/css/css-values/hypot-pow-sqrt-serialize.html.ini b/tests/wpt/meta/css/css-values/hypot-pow-sqrt-serialize.html.ini index b6129abe575..66280d74723 100644 --- a/tests/wpt/meta/css/css-values/hypot-pow-sqrt-serialize.html.ini +++ b/tests/wpt/meta/css/css-values/hypot-pow-sqrt-serialize.html.ini @@ -40,3 +40,6 @@ ['scale(calc(hypot(1) * 0.5))' as a computed value should serialize as 'matrix(0.5, 0, 0, 0.5, 0, 0)'.] expected: FAIL + + ['hypot(2px, 40%)' as a specified value should serialize as 'hypot(2px, 40%)'.] + expected: FAIL diff --git a/tests/wpt/meta/css/css-values/vh_not_refreshing_on_chrome.html.ini b/tests/wpt/meta/css/css-values/vh_not_refreshing_on_chrome.html.ini deleted file mode 100644 index 26435e28b09..00000000000 --- a/tests/wpt/meta/css/css-values/vh_not_refreshing_on_chrome.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[vh_not_refreshing_on_chrome.html] - expected: FAIL diff --git a/tests/wpt/meta/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini b/tests/wpt/meta/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini index 314dca9c1f5..d52a3e77a70 100644 --- a/tests/wpt/meta/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini +++ b/tests/wpt/meta/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini @@ -1,3 +1,6 @@ [MediaQueryList-addListener-removeListener.html] [listeners are called when +
+ diff --git a/tests/wpt/tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-preferred-page-dark-ref.html b/tests/wpt/tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-preferred-page-dark-ref.html new file mode 100644 index 00000000000..24e8c6edb09 --- /dev/null +++ b/tests/wpt/tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-preferred-page-dark-ref.html @@ -0,0 +1,4 @@ + +CSS Test Reference + +
diff --git a/tests/wpt/tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-preferred-page-dark.html b/tests/wpt/tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-preferred-page-dark.html new file mode 100644 index 00000000000..551bc7ec00d --- /dev/null +++ b/tests/wpt/tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-preferred-page-dark.html @@ -0,0 +1,15 @@ + +prefers-color-scheme propagation - page supports dark + + + + + + diff --git a/tests/wpt/tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-preferred-page-light-ref.html b/tests/wpt/tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-preferred-page-light-ref.html new file mode 100644 index 00000000000..5c614823824 --- /dev/null +++ b/tests/wpt/tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-preferred-page-light-ref.html @@ -0,0 +1,3 @@ + +CSS Test Reference +
diff --git a/tests/wpt/tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-preferred-page-light.html b/tests/wpt/tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-preferred-page-light.html new file mode 100644 index 00000000000..20a874629b5 --- /dev/null +++ b/tests/wpt/tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-preferred-page-light.html @@ -0,0 +1,15 @@ + +prefers-color-scheme propagation - page supports light + + + + + + diff --git a/tests/wpt/tests/css/css-conditional/container-queries/custom-property-style-queries.html b/tests/wpt/tests/css/css-conditional/container-queries/custom-property-style-queries.html index 96a80904521..17ee5b4184b 100644 --- a/tests/wpt/tests/css/css-conditional/container-queries/custom-property-style-queries.html +++ b/tests/wpt/tests/css/css-conditional/container-queries/custom-property-style-queries.html @@ -26,75 +26,85 @@
+
- -
- -
diff --git a/tests/wpt/tests/css/css-flexbox/flex-item-position-relative-001.html b/tests/wpt/tests/css/css-flexbox/flex-item-position-relative-001.html deleted file mode 100644 index 7e6907e0e8d..00000000000 --- a/tests/wpt/tests/css/css-flexbox/flex-item-position-relative-001.html +++ /dev/null @@ -1,42 +0,0 @@ - -Flex items and `position: relative` - - - - - - - -
- -
-
-
-
diff --git a/tests/wpt/tests/css/css-images/support/external-images.svg b/tests/wpt/tests/css/css-images/support/external-images.svg index 8439561e160..ed06ecbd877 100644 --- a/tests/wpt/tests/css/css-images/support/external-images.svg +++ b/tests/wpt/tests/css/css-images/support/external-images.svg @@ -3,7 +3,7 @@ - + diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-accumulation-001.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-accumulation-001.html index 5ff9c7181f8..2429640f284 100644 --- a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-accumulation-001.html +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-accumulation-001.html @@ -22,7 +22,7 @@ text-box-trim: trim-start; } .outer, .inner { - text-box-edge: ex; + text-box-edge: text; }
diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-dynamic-001.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-dynamic-001.html index 363fed4b039..26c14e54128 100644 --- a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-dynamic-001.html +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-dynamic-001.html @@ -25,5 +25,5 @@ document.body.offsetTop; for (const target of document.getElementsByClassName('target')) { target.classList.add('trim'); } -document.documentElement.class = ""; +document.documentElement.className = ""; diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-dynamic-002.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-dynamic-002.html index f07b3930286..5de7a913f34 100644 --- a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-dynamic-002.html +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-dynamic-002.html @@ -25,5 +25,5 @@ document.body.offsetTop; for (const target of document.getElementsByClassName('target')) { target.classList.add('trim'); } -document.documentElement.class = ""; +document.documentElement.className = ""; diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-half-leading-block-box-001-ref.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-half-leading-block-box-001-ref.html index 4aaf3375abb..403eee5f842 100644 --- a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-half-leading-block-box-001-ref.html +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-half-leading-block-box-001-ref.html @@ -5,12 +5,10 @@
-
Testline1
-
Testline2
-
Testline3
+
Testline1


Testline2


Testline3
diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-height-002-ref.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-height-002-ref.html index 61378327c75..ae6a271312f 100644 --- a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-height-002-ref.html +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-height-002-ref.html @@ -5,9 +5,6 @@ background: lightgray; block-size: 20px; } -.max-height > .spacer:first-child { - margin-top: 80px; /* avoid overlap */ -} .target { font: 100px/1 Ahem; @@ -20,8 +17,7 @@ } .max-height > .target { - margin-top: -80px; - height: 90px; + height: 10px; } diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-height-002.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-height-002.html index 113dabc83f0..a3743e4bf9f 100644 --- a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-height-002.html +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-height-002.html @@ -3,16 +3,13 @@ - +
diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-line-clamp-001-ref.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-line-clamp-001-ref.html index 31b11cb6843..9d03140f4d7 100644 --- a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-line-clamp-001-ref.html +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-line-clamp-001-ref.html @@ -6,7 +6,7 @@ block-size: 100px; } .target { - font-family: 50px/2 Ahem; + font: 50px/2 Ahem; height: 275px; } .clamp { diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-line-clamp-001.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-line-clamp-001.html index 88cd7454c54..46c10c859ea 100644 --- a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-line-clamp-001.html +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-line-clamp-001.html @@ -11,7 +11,7 @@ block-size: 100px; } .target { - font-family: 50px/2 Ahem; + font: 50px/2 Ahem; text-box-trim: trim-end; text-box-edge: text; } diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-multicol-001.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-multicol-001.html index 80f897aa4b6..e8669b4651c 100644 --- a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-multicol-001.html +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-multicol-001.html @@ -20,7 +20,7 @@ line-height: 2; } .trim { - text-box-trim: both; + text-box-trim: trim-both; text-box-edge: text; } diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-multicol-002.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-multicol-002.html index f15746d3d6a..445814df904 100644 --- a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-multicol-002.html +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-multicol-002.html @@ -20,7 +20,7 @@ line-height: 2; } .trim { - text-box-trim: both; + text-box-trim: trim-both; text-box-edge: text; } diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-ruby-end-001.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-ruby-end-001.html index 5494b00d17e..d156e6d521c 100644 --- a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-ruby-end-001.html +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-ruby-end-001.html @@ -11,6 +11,7 @@ } .target { font: 40px/1 Ahem; + ruby-position: under; text-box-trim: trim-end; text-box-edge: text; } diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-ruby-start-002.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-ruby-start-002.html index c4430278ada..1de39238d85 100644 --- a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-ruby-start-002.html +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-ruby-start-002.html @@ -22,5 +22,6 @@ rt { }
-
A BASERUBY B
+
A BASERUBY + BASERUBY B
diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-start-001.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-start-001.html index 106f027688c..223d8b351a1 100644 --- a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-start-001.html +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-start-001.html @@ -3,7 +3,7 @@ - + diff --git a/tests/wpt/tests/css/css-masking/animations/clip-path-interpolation-shape.html b/tests/wpt/tests/css/css-masking/animations/clip-path-interpolation-shape.html index 638e133c26b..c9d9bf756fc 100644 --- a/tests/wpt/tests/css/css-masking/animations/clip-path-interpolation-shape.html +++ b/tests/wpt/tests/css/css-masking/animations/clip-path-interpolation-shape.html @@ -97,50 +97,50 @@ test_interpolation({ test_interpolation({ property: 'clip-path', - from: 'shape(from 5% 5px, curve to 10% 10px via 0% 80px, curve to 30% 20px via 20% 50px 25% 70px)', - to: 'shape(from 15% 15px, curve to 20% 0px via 10% 60px, curve to 20% 30px via 30% 40px -5% 100px)', + from: 'shape(from 5% 5px, curve to 10% 10px using 0% 80px, curve to 30% 20px using 20% 50px 25% 70px)', + to: 'shape(from 15% 15px, curve to 20% 0px using 10% 60px, curve to 20% 30px using 30% 40px -5% 100px)', }, [ - {at: -0.3, expect: 'shape(from 2% 2px, curve to 7% 13px via -3% 86px, curve to 33% 17px via 17% 53px 34% 61px)'}, - {at: 0, expect: 'shape(from 5% 5px, curve to 10% 10px via 0% 80px, curve to 30% 20px via 20% 50px 25% 70px)'}, - {at: 0.5, expect: 'shape(from 10% 10px, curve to 15% 5px via 5% 70px, curve to 25% 25px via 25% 45px 10% 85px)'}, - {at: 1, expect: 'shape(from 15% 15px, curve to 20% 0px via 10% 60px, curve to 20% 30px via 30% 40px -5% 100px)'}, - {at: 1.5, expect: 'shape(from 20% 20px, curve to 25% -5px via 15% 50px, curve to 15% 35px via 35% 35px -20% 115px)'}, + {at: -0.3, expect: 'shape(from 2% 2px, curve to 7% 13px using -3% 86px, curve to 33% 17px using 17% 53px 34% 61px)'}, + {at: 0, expect: 'shape(from 5% 5px, curve to 10% 10px using 0% 80px, curve to 30% 20px using 20% 50px 25% 70px)'}, + {at: 0.5, expect: 'shape(from 10% 10px, curve to 15% 5px using 5% 70px, curve to 25% 25px using 25% 45px 10% 85px)'}, + {at: 1, expect: 'shape(from 15% 15px, curve to 20% 0px using 10% 60px, curve to 20% 30px using 30% 40px -5% 100px)'}, + {at: 1.5, expect: 'shape(from 20% 20px, curve to 25% -5px using 15% 50px, curve to 15% 35px using 35% 35px -20% 115px)'}, ]); test_interpolation({ property: 'clip-path', - from: 'shape(from 5% 5px, curve by 10% 10px via 0% 80px, curve by 30% 20px via 20% 50px 25% 70px)', - to: 'shape(from 15% 15px, curve by 20% 0px via 10% 60px, curve by 20% 30px via 30% 40px -5% 100px)', + from: 'shape(from 5% 5px, curve by 10% 10px using 0% 80px, curve by 30% 20px using 20% 50px 25% 70px)', + to: 'shape(from 15% 15px, curve by 20% 0px using 10% 60px, curve by 20% 30px using 30% 40px -5% 100px)', }, [ - {at: -0.3, expect: 'shape(from 2% 2px, curve by 7% 13px via -3% 86px, curve by 33% 17px via 17% 53px 34% 61px)'}, - {at: 0, expect: 'shape(from 5% 5px, curve by 10% 10px via 0% 80px, curve by 30% 20px via 20% 50px 25% 70px)'}, - {at: 0.5, expect: 'shape(from 10% 10px, curve by 15% 5px via 5% 70px, curve by 25% 25px via 25% 45px 10% 85px)'}, - {at: 1, expect: 'shape(from 15% 15px, curve by 20% 0px via 10% 60px, curve by 20% 30px via 30% 40px -5% 100px)'}, - {at: 1.5, expect: 'shape(from 20% 20px, curve by 25% -5px via 15% 50px, curve by 15% 35px via 35% 35px -20% 115px)'}, + {at: -0.3, expect: 'shape(from 2% 2px, curve by 7% 13px using -3% 86px, curve by 33% 17px using 17% 53px 34% 61px)'}, + {at: 0, expect: 'shape(from 5% 5px, curve by 10% 10px using 0% 80px, curve by 30% 20px using 20% 50px 25% 70px)'}, + {at: 0.5, expect: 'shape(from 10% 10px, curve by 15% 5px using 5% 70px, curve by 25% 25px using 25% 45px 10% 85px)'}, + {at: 1, expect: 'shape(from 15% 15px, curve by 20% 0px using 10% 60px, curve by 20% 30px using 30% 40px -5% 100px)'}, + {at: 1.5, expect: 'shape(from 20% 20px, curve by 25% -5px using 15% 50px, curve by 15% 35px using 35% 35px -20% 115px)'}, ]); test_interpolation({ property: 'clip-path', - from: 'shape(from 5% 5px, smooth to 10% 10px via 0% 80px, smooth to 30% 20px)', - to: 'shape(from 15% 15px, smooth to 20% 0px via 10% 60px, smooth to 20% 30px)', + from: 'shape(from 5% 5px, smooth to 10% 10px using 0% 80px, smooth to 30% 20px)', + to: 'shape(from 15% 15px, smooth to 20% 0px using 10% 60px, smooth to 20% 30px)', }, [ - {at: -0.3, expect: 'shape(from 2% 2px, smooth to 7% 13px via -3% 86px, smooth to 33% 17px)'}, - {at: 0, expect: 'shape(from 5% 5px, smooth to 10% 10px via 0% 80px, smooth to 30% 20px)'}, - {at: 0.5, expect: 'shape(from 10% 10px, smooth to 15% 5px via 5% 70px, smooth to 25% 25px)'}, - {at: 1, expect: 'shape(from 15% 15px, smooth to 20% 0px via 10% 60px, smooth to 20% 30px)'}, - {at: 1.5, expect: 'shape(from 20% 20px, smooth to 25% -5px via 15% 50px, smooth to 15% 35px)'}, + {at: -0.3, expect: 'shape(from 2% 2px, smooth to 7% 13px using -3% 86px, smooth to 33% 17px)'}, + {at: 0, expect: 'shape(from 5% 5px, smooth to 10% 10px using 0% 80px, smooth to 30% 20px)'}, + {at: 0.5, expect: 'shape(from 10% 10px, smooth to 15% 5px using 5% 70px, smooth to 25% 25px)'}, + {at: 1, expect: 'shape(from 15% 15px, smooth to 20% 0px using 10% 60px, smooth to 20% 30px)'}, + {at: 1.5, expect: 'shape(from 20% 20px, smooth to 25% -5px using 15% 50px, smooth to 15% 35px)'}, ]); test_interpolation({ property: 'clip-path', - from: 'shape(from 5% 5px, smooth by 10% 10px via 0% 80px, smooth by 30% 20px)', - to: 'shape(from 15% 15px, smooth by 20% 0px via 10% 60px, smooth by 20% 30px)', + from: 'shape(from 5% 5px, smooth by 10% 10px using 0% 80px, smooth by 30% 20px)', + to: 'shape(from 15% 15px, smooth by 20% 0px using 10% 60px, smooth by 20% 30px)', }, [ - {at: -0.3, expect: 'shape(from 2% 2px, smooth by 7% 13px via -3% 86px, smooth by 33% 17px)'}, - {at: 0, expect: 'shape(from 5% 5px, smooth by 10% 10px via 0% 80px, smooth by 30% 20px)'}, - {at: 0.5, expect: 'shape(from 10% 10px, smooth by 15% 5px via 5% 70px, smooth by 25% 25px)'}, - {at: 1, expect: 'shape(from 15% 15px, smooth by 20% 0px via 10% 60px, smooth by 20% 30px)'}, - {at: 1.5, expect: 'shape(from 20% 20px, smooth by 25% -5px via 15% 50px, smooth by 15% 35px)'}, + {at: -0.3, expect: 'shape(from 2% 2px, smooth by 7% 13px using -3% 86px, smooth by 33% 17px)'}, + {at: 0, expect: 'shape(from 5% 5px, smooth by 10% 10px using 0% 80px, smooth by 30% 20px)'}, + {at: 0.5, expect: 'shape(from 10% 10px, smooth by 15% 5px using 5% 70px, smooth by 25% 25px)'}, + {at: 1, expect: 'shape(from 15% 15px, smooth by 20% 0px using 10% 60px, smooth by 20% 30px)'}, + {at: 1.5, expect: 'shape(from 20% 20px, smooth by 25% -5px using 15% 50px, smooth by 15% 35px)'}, ]); test_interpolation({ @@ -206,50 +206,50 @@ test_interpolation({ test_interpolation({ property: 'clip-path', - from: 'shape(from 5% 5px, curve to 10% 10px via 0% 80px, curve to 30% 20px via 20% 50px 25% 70px)', + from: 'shape(from 5% 5px, curve to 10% 10px using 0% 80px, curve to 30% 20px using 20% 50px 25% 70px)', to: 'path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")', }, [ - {at: -0.3, expect: 'shape(from calc(6.5% - 4.5px) 2px, curve to calc(13% - 6px) 13px via calc(0% - 3px) 86px, curve to calc(39% - 6px) 17px via calc(26% - 9px) 53px calc(32.5% + 1.5px) 61px)'}, - {at: 0, expect: 'shape(from 5% 5px, curve to 10% 10px via 0% 80px, curve to 30% 20px via 20% 50px 25% 70px)'}, - {at: 0.5, expect: 'shape(from calc(2.5% + 7.5px) 10px, curve to calc(5% + 10px) 5px via calc(0% + 5px) 70px, curve to calc(15% + 10px) 25px via calc(10% + 15px) 45px calc(12.5% - 2.5px) 85px)'}, - {at: 1, expect: 'shape(from calc(0% + 15px) 15px, curve to calc(0% + 20px) 0px via calc(0% + 10px) 60px, curve to calc(0% + 20px) 30px via calc(0% + 30px) 40px calc(0% - 5px) 100px)'}, - {at: 1.5, expect: 'shape(from calc(-2.5% + 22.5px) 20px, curve to calc(-5% + 30px) -5px via calc(0% + 15px) 50px, curve to calc(-15% + 30px) 35px via calc(-10% + 45px) 35px calc(-12.5% - 7.5px) 115px)'}, + {at: -0.3, expect: 'shape(from calc(6.5% - 4.5px) 2px, curve to calc(13% - 6px) 13px using calc(0% - 3px) 86px, curve to calc(39% - 6px) 17px using calc(26% - 9px) 53px calc(32.5% + 1.5px) 61px)'}, + {at: 0, expect: 'shape(from 5% 5px, curve to 10% 10px using 0% 80px, curve to 30% 20px using 20% 50px 25% 70px)'}, + {at: 0.5, expect: 'shape(from calc(2.5% + 7.5px) 10px, curve to calc(5% + 10px) 5px using calc(0% + 5px) 70px, curve to calc(15% + 10px) 25px using calc(10% + 15px) 45px calc(12.5% - 2.5px) 85px)'}, + {at: 1, expect: 'shape(from calc(0% + 15px) 15px, curve to calc(0% + 20px) 0px using calc(0% + 10px) 60px, curve to calc(0% + 20px) 30px using calc(0% + 30px) 40px calc(0% - 5px) 100px)'}, + {at: 1.5, expect: 'shape(from calc(-2.5% + 22.5px) 20px, curve to calc(-5% + 30px) -5px using calc(0% + 15px) 50px, curve to calc(-15% + 30px) 35px using calc(-10% + 45px) 35px calc(-12.5% - 7.5px) 115px)'}, ]); test_interpolation({ property: 'clip-path', from: 'path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")', - to: 'shape(from 15% 15px, curve by 20% 0px via 10% 60px, curve by 20% 30px via 30% 40px -5% 100px)', + to: 'shape(from 15% 15px, curve by 20% 0px using 10% 60px, curve by 20% 30px using 30% 40px -5% 100px)', }, [ - {at: -0.3, expect: 'shape(from calc(-4.5% + 6.5px) 2px, curve by calc(-6% + 13px) 13px via -3% 86px, curve by calc(-6% + 39px) 17px via calc(-9% + 26px) 53px calc(1.5% + 32.5px) 61px)'}, - {at: 0, expect: 'shape(from calc(0% + 5px) 5px, curve by calc(0% + 10px) 10px via 0% 80px, curve by calc(0% + 30px) 20px via calc(0% + 20px) 50px calc(0% + 25px) 70px)'}, - {at: 0.5, expect: 'shape(from calc(7.5% + 2.5px) 10px, curve by calc(10% + 5px) 5px via 5% 70px, curve by calc(10% + 15px) 25px via calc(15% + 10px) 45px calc(-2.5% + 12.5px) 85px)'}, - {at: 1, expect: 'shape(from 15% 15px, curve by 20% 0px via 10% 60px, curve by 20% 30px via 30% 40px -5% 100px)'}, - {at: 1.5, expect: 'shape(from calc(22.5% - 2.5px) 20px, curve by calc(30% - 5px) -5px via 15% 50px, curve by calc(30% - 15px) 35px via calc(45% - 10px) 35px calc(-7.5% - 12.5px) 115px)'}, + {at: -0.3, expect: 'shape(from calc(-4.5% + 6.5px) 2px, curve by calc(-6% + 13px) 13px using -3% 86px, curve by calc(-6% + 39px) 17px using calc(-9% + 26px) 53px calc(1.5% + 32.5px) 61px)'}, + {at: 0, expect: 'shape(from calc(0% + 5px) 5px, curve by calc(0% + 10px) 10px using 0% 80px, curve by calc(0% + 30px) 20px using calc(0% + 20px) 50px calc(0% + 25px) 70px)'}, + {at: 0.5, expect: 'shape(from calc(7.5% + 2.5px) 10px, curve by calc(10% + 5px) 5px using 5% 70px, curve by calc(10% + 15px) 25px using calc(15% + 10px) 45px calc(-2.5% + 12.5px) 85px)'}, + {at: 1, expect: 'shape(from 15% 15px, curve by 20% 0px using 10% 60px, curve by 20% 30px using 30% 40px -5% 100px)'}, + {at: 1.5, expect: 'shape(from calc(22.5% - 2.5px) 20px, curve by calc(30% - 5px) -5px using 15% 50px, curve by calc(30% - 15px) 35px using calc(45% - 10px) 35px calc(-7.5% - 12.5px) 115px)'}, ]); test_interpolation({ property: 'clip-path', - from: 'shape(from 5% 5px, smooth to 10% 10px via 0% 80px, smooth to 30% 20px)', + from: 'shape(from 5% 5px, smooth to 10% 10px using 0% 80px, smooth to 30% 20px)', to: 'path("M 15 15 S 10 60 20 0 T 20 30")', }, [ - {at: -0.3, expect: 'shape(from calc(6.5% - 4.5px) 2px, smooth to calc(13% - 6px) 13px via calc(0% - 3px) 86px, smooth to calc(39% - 6px) 17px)'}, - {at: 0, expect: 'shape(from 5% 5px, smooth to 10% 10px via 0% 80px, smooth to 30% 20px)'}, - {at: 0.5, expect: 'shape(from calc(2.5% + 7.5px) 10px, smooth to calc(5% + 10px) 5px via calc(0% + 5px) 70px, smooth to calc(15% + 10px) 25px)'}, - {at: 1, expect: 'shape(from calc(0% + 15px) 15px, smooth to calc(0% + 20px) 0px via calc(0% + 10px) 60px, smooth to calc(0% + 20px) 30px)'}, - {at: 1.5, expect: 'shape(from calc(-2.5% + 22.5px) 20px, smooth to calc(-5% + 30px) -5px via calc(0% + 15px) 50px, smooth to calc(-15% + 30px) 35px)'}, + {at: -0.3, expect: 'shape(from calc(6.5% - 4.5px) 2px, smooth to calc(13% - 6px) 13px using calc(0% - 3px) 86px, smooth to calc(39% - 6px) 17px)'}, + {at: 0, expect: 'shape(from 5% 5px, smooth to 10% 10px using 0% 80px, smooth to 30% 20px)'}, + {at: 0.5, expect: 'shape(from calc(2.5% + 7.5px) 10px, smooth to calc(5% + 10px) 5px using calc(0% + 5px) 70px, smooth to calc(15% + 10px) 25px)'}, + {at: 1, expect: 'shape(from calc(0% + 15px) 15px, smooth to calc(0% + 20px) 0px using calc(0% + 10px) 60px, smooth to calc(0% + 20px) 30px)'}, + {at: 1.5, expect: 'shape(from calc(-2.5% + 22.5px) 20px, smooth to calc(-5% + 30px) -5px using calc(0% + 15px) 50px, smooth to calc(-15% + 30px) 35px)'}, ]); test_interpolation({ property: 'clip-path', from: 'path("M 5 5 s 0 80 10 10 t 30 20")', - to: 'shape(from 15px 15px, smooth by 20px 0px via 10px 60px, smooth by 20px 30px)', + to: 'shape(from 15px 15px, smooth by 20px 0px using 10px 60px, smooth by 20px 30px)', }, [ - {at: -0.3, expect: 'shape(from 2px 2px, smooth by 7px 13px via -3px 86px, smooth by 33px 17px)'}, - {at: 0, expect: 'shape(from 5px 5px, smooth by 10px 10px via 0px 80px, smooth by 30px 20px)'}, - {at: 0.5, expect: 'shape(from 10px 10px, smooth by 15px 5px via 5px 70px, smooth by 25px 25px)'}, - {at: 1, expect: 'shape(from 15px 15px, smooth by 20px 0px via 10px 60px, smooth by 20px 30px)'}, - {at: 1.5, expect: 'shape(from 20px 20px, smooth by 25px -5px via 15px 50px, smooth by 15px 35px)'}, + {at: -0.3, expect: 'shape(from 2px 2px, smooth by 7px 13px using -3px 86px, smooth by 33px 17px)'}, + {at: 0, expect: 'shape(from 5px 5px, smooth by 10px 10px using 0px 80px, smooth by 30px 20px)'}, + {at: 0.5, expect: 'shape(from 10px 10px, smooth by 15px 5px using 5px 70px, smooth by 25px 25px)'}, + {at: 1, expect: 'shape(from 15px 15px, smooth by 20px 0px using 10px 60px, smooth by 20px 30px)'}, + {at: 1.5, expect: 'shape(from 20px 20px, smooth by 25px -5px using 15px 50px, smooth by 15px 35px)'}, ]); test_interpolation({ diff --git a/tests/wpt/tests/css/css-masking/clip-path/clip-path-circle-closest-corner.html b/tests/wpt/tests/css/css-masking/clip-path/clip-path-circle-closest-corner.html new file mode 100644 index 00000000000..79e57b1cb6a --- /dev/null +++ b/tests/wpt/tests/css/css-masking/clip-path/clip-path-circle-closest-corner.html @@ -0,0 +1,43 @@ + + + + CSS Masking: Test clip-path property and circle with closest-corner on rectangular div + + + + + + + + +

The test passes if there is a full green circle.

+
+
+
+ + diff --git a/tests/wpt/tests/css/css-masking/clip-path/clip-path-circle-farthest-corner.html b/tests/wpt/tests/css/css-masking/clip-path/clip-path-circle-farthest-corner.html new file mode 100644 index 00000000000..9d4eeaecc71 --- /dev/null +++ b/tests/wpt/tests/css/css-masking/clip-path/clip-path-circle-farthest-corner.html @@ -0,0 +1,45 @@ + + + + CSS Masking: Test clip-path property and circle with farthest-corner on rectangular div + + + + + + + + +

The test passes if there is a full green circle.

+
+
+
+
+ + diff --git a/tests/wpt/tests/css/css-masking/clip-path/clip-path-ellipse-closest-farthest-corner.html b/tests/wpt/tests/css/css-masking/clip-path/clip-path-ellipse-closest-farthest-corner.html new file mode 100644 index 00000000000..aba7f6e0b55 --- /dev/null +++ b/tests/wpt/tests/css/css-masking/clip-path/clip-path-ellipse-closest-farthest-corner.html @@ -0,0 +1,38 @@ + + + + CSS Masking: Test clip-path property and ellipse function with absolute values + + + + + + + + +

The test passes if there is a full green ellipse.

+
+
+
+ + diff --git a/tests/wpt/tests/css/css-masking/clip-path/clip-path-marginBox-1d.html b/tests/wpt/tests/css/css-masking/clip-path/clip-path-marginBox-1d.html index 39d3c9db5af..7917f6e4a39 100644 --- a/tests/wpt/tests/css/css-masking/clip-path/clip-path-marginBox-1d.html +++ b/tests/wpt/tests/css/css-masking/clip-path/clip-path-marginBox-1d.html @@ -3,7 +3,7 @@ - + diff --git a/tests/wpt/tests/css/css-masking/clip-path/clip-path-xywh-003.html b/tests/wpt/tests/css/css-masking/clip-path/clip-path-xywh-003.html index 370e1af9757..a8faef658a9 100644 --- a/tests/wpt/tests/css/css-masking/clip-path/clip-path-xywh-003.html +++ b/tests/wpt/tests/css/css-masking/clip-path/clip-path-xywh-003.html @@ -4,7 +4,7 @@ CSS Masking: Test clip-path property and xywh function - + diff --git a/tests/wpt/tests/css/css-masking/clip-path/reference/clip-path-circle-4-ref.html b/tests/wpt/tests/css/css-masking/clip-path/reference/clip-path-circle-4-ref.html new file mode 100644 index 00000000000..50cd08f458f --- /dev/null +++ b/tests/wpt/tests/css/css-masking/clip-path/reference/clip-path-circle-4-ref.html @@ -0,0 +1,27 @@ + + + + CSS Reftest Reference + + + + +

The test passes if there is a full green circle.

+
+ + diff --git a/tests/wpt/tests/css/css-masking/clip-path/reference/clip-path-ellipse-2-ref.html b/tests/wpt/tests/css/css-masking/clip-path/reference/clip-path-ellipse-2-ref.html new file mode 100644 index 00000000000..150f440f725 --- /dev/null +++ b/tests/wpt/tests/css/css-masking/clip-path/reference/clip-path-ellipse-2-ref.html @@ -0,0 +1,21 @@ + + + + CSS Reftest Reference + + + +

The test passes if there is a full green ellipse.

+ + + + + diff --git a/tests/wpt/tests/css/css-nesting/supports-rule.html b/tests/wpt/tests/css/css-nesting/supports-rule.html index 886eda43237..653af0f8312 100644 --- a/tests/wpt/tests/css/css-nesting/supports-rule.html +++ b/tests/wpt/tests/css/css-nesting/supports-rule.html @@ -18,9 +18,12 @@ } .test { + > .test-2 { + background-color: green; + } @supports (selector(> .test-2)) { > .test-2 { - background-color: green; + background-color: red; } } } diff --git a/tests/wpt/tests/css/css-position/sticky-dialog.html b/tests/wpt/tests/css/css-position/sticky-dialog.html new file mode 100644 index 00000000000..2a2ef34d81f --- /dev/null +++ b/tests/wpt/tests/css/css-position/sticky-dialog.html @@ -0,0 +1,15 @@ + +position:sticky computes to position:absolute + + + + + + diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/circle-function-computed.html b/tests/wpt/tests/css/css-shapes/shape-functions/circle-function-computed.html index cdfbbb5aa03..70f17c53f6e 100644 --- a/tests/wpt/tests/css/css-shapes/shape-functions/circle-function-computed.html +++ b/tests/wpt/tests/css/css-shapes/shape-functions/circle-function-computed.html @@ -19,8 +19,8 @@ test_computed_value("shape-outside", "circle(at 10% 20%)"); test_computed_value("shape-outside", "circle(4% at top right)", "circle(4% at 100% 0%)"); test_computed_value("shape-outside", "circle(calc(100% - 20px) at calc(100% - 20px) calc(100% / 4))", "circle(calc(100% - 20px) at calc(100% - 20px) 25%)"); -test_computed_value("shape-outside", "circle(closest-corner at center)", "circle(closest-corner at 50% 50%"); -test_computed_value("shape-outside", "circle(closest-corner at 20px 50px)", "circle(closest-corner at 20px 50px"); +test_computed_value("shape-outside", "circle(closest-corner at center)", "circle(closest-corner at 50% 50%)"); +test_computed_value("shape-outside", "circle(closest-corner at 20px 50px)", "circle(closest-corner at 20px 50px)"); test_computed_value("shape-outside", "circle(closest-side at center)", "circle(at 50% 50%)"); test_computed_value("shape-outside", "circle(closest-side at 20px 30%)", "circle(at 20px 30%)"); test_computed_value("shape-outside", "circle(farthest-corner at center top)", "circle(farthest-corner at 50% 0%)"); diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/circle-function-valid.html b/tests/wpt/tests/css/css-shapes/shape-functions/circle-function-valid.html index 417e397de9e..7b64a82125d 100644 --- a/tests/wpt/tests/css/css-shapes/shape-functions/circle-function-valid.html +++ b/tests/wpt/tests/css/css-shapes/shape-functions/circle-function-valid.html @@ -19,8 +19,8 @@ test_valid_value("shape-outside", "circle(at 10% 20%)"); test_valid_value("shape-outside", "circle(4% at top right)", "circle(4% at 100% 0%)"); test_valid_value("shape-outside", "circle(calc(100% - 20px) at calc(100% - 20px) calc(100% / 4))", "circle(calc(100% - 20px) at calc(100% - 20px) calc(25%))"); -test_valid_value("shape-outside", "circle(closest-corner at center)", "circle(closest-corner at 50% 50%"); -test_valid_value("shape-outside", "circle(closest-corner at 20px 50px)", "circle(closest-corner at 20px 50px"); +test_valid_value("shape-outside", "circle(closest-corner at center)", "circle(closest-corner at 50% 50%)"); +test_valid_value("shape-outside", "circle(closest-corner at 20px 50px)", "circle(closest-corner at 20px 50px)"); test_valid_value("shape-outside", "circle(closest-side at center)", "circle(at 50% 50%)"); test_valid_value("shape-outside", "circle(closest-side at 20px 30%)", "circle(at 20px 30%)"); test_valid_value("shape-outside", "circle(farthest-corner at center top)", "circle(farthest-corner at 50% 0%)"); diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/shape-function-computed.tentative.html b/tests/wpt/tests/css/css-shapes/shape-functions/shape-function-computed.tentative.html new file mode 100644 index 00000000000..28f622f03bd --- /dev/null +++ b/tests/wpt/tests/css/css-shapes/shape-functions/shape-function-computed.tentative.html @@ -0,0 +1,53 @@ + + + + +CSS Shapes Module Level 2: computed values for the shape() function + + + + + + + +
+ + + diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/shape-function-invalid.tentative.html b/tests/wpt/tests/css/css-shapes/shape-functions/shape-function-invalid.tentative.html new file mode 100644 index 00000000000..76f0fcc94d6 --- /dev/null +++ b/tests/wpt/tests/css/css-shapes/shape-functions/shape-function-invalid.tentative.html @@ -0,0 +1,30 @@ + + + + +CSS Shapes Module Level 1: parsing the shape() function + + + + + + + + + + diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/shape-function-valid.tentative.html b/tests/wpt/tests/css/css-shapes/shape-functions/shape-function-valid.tentative.html new file mode 100644 index 00000000000..16656a668f4 --- /dev/null +++ b/tests/wpt/tests/css/css-shapes/shape-functions/shape-function-valid.tentative.html @@ -0,0 +1,50 @@ + + + + +CSS Shapes Module Level 2: parsing the shape() function + + + + + + + + + + diff --git a/tests/wpt/tests/css/css-text-decor/animations/text-decoration-thickness-interpolation.html b/tests/wpt/tests/css/css-text-decor/animations/text-decoration-thickness-interpolation.html index 57a7eb09c69..a17efd9331d 100644 --- a/tests/wpt/tests/css/css-text-decor/animations/text-decoration-thickness-interpolation.html +++ b/tests/wpt/tests/css/css-text-decor/animations/text-decoration-thickness-interpolation.html @@ -62,10 +62,10 @@ test_interpolation({ from: '100%', to: '0%', }, [ - {at: 0, expect: '16px'}, - {at: 0.3, expect: '11.2px'}, - {at: 0.6, expect: '6.4px'}, - {at: 1, expect: '0px'}, + {at: 0, expect: '100%'}, + {at: 0.3, expect: '70%'}, + {at: 0.6, expect: '40%'}, + {at: 1, expect: '0%'}, ]); test_interpolation({ @@ -73,10 +73,10 @@ test_interpolation({ from: '100%', to: '200%', }, [ - {at: 0, expect: '16px'}, - {at: 0.3, expect: '20.8px'}, - {at: 0.6, expect: '25.6px'}, - {at: 1, expect: '32px'}, + {at: 0, expect: '100%'}, + {at: 0.3, expect: '130%'}, + {at: 0.6, expect: '160%'}, + {at: 1, expect: '200%'}, ]); test_interpolation({ @@ -106,10 +106,10 @@ test_interpolation({ from: '16px', to: '0%', }, [ - {at: 0, expect: '16px'}, - {at: 0.3, expect: '11.2px'}, - {at: 0.6, expect: '6.4px'}, - {at: 1, expect: '0px'}, + {at: 0, expect: 'calc(0% + 16px)'}, + {at: 0.3, expect: 'calc(0% + 11.2px)'}, + {at: 0.6, expect: 'calc(0% + 6.4px)'}, + {at: 1, expect: '0%'}, ]); test_interpolation({ @@ -117,10 +117,10 @@ test_interpolation({ from: '16px', to: '200%', }, [ - {at: 0, expect: '16px'}, - {at: 0.3, expect: '20.8px'}, - {at: 0.6, expect: '25.6px'}, - {at: 1, expect: '32px'}, + {at: 0, expect: 'calc(0% + 16px)'}, + {at: 0.3, expect: 'calc(60% + 11.2px)'}, + {at: 0.6, expect: 'calc(120% + 6.4px)'}, + {at: 1, expect: '200%'}, ]); test_interpolation({ @@ -150,10 +150,10 @@ test_interpolation({ from: '1em', to: '0%', }, [ - {at: 0, expect: '16px'}, - {at: 0.3, expect: '11.2px'}, - {at: 0.6, expect: '6.4px'}, - {at: 1, expect: '0px'}, + {at: 0, expect: 'calc(0% + 16px)'}, + {at: 0.3, expect: 'calc(0% + 11.2px)'}, + {at: 0.6, expect: 'calc(0% + 6.4px)'}, + {at: 1, expect: '0%'}, ]); test_interpolation({ @@ -161,10 +161,10 @@ test_interpolation({ from: '1em', to: '200%', }, [ - {at: 0, expect: '16px'}, - {at: 0.3, expect: '20.8px'}, - {at: 0.6, expect: '25.6px'}, - {at: 1, expect: '32px'}, + {at: 0, expect: 'calc(0% + 16px)'}, + {at: 0.3, expect: 'calc(60% + 11.2px)'}, + {at: 0.6, expect: 'calc(120% + 6.4px)'}, + {at: 1, expect: '200%'}, ]); test_interpolation({ @@ -172,10 +172,10 @@ test_interpolation({ from: '100%', to: '0px', }, [ - {at: 0, expect: '16px'}, - {at: 0.3, expect: '11.2px'}, - {at: 0.6, expect: '6.4px'}, - {at: 1, expect: '0px'}, + {at: 0, expect: '100%'}, + {at: 0.3, expect: '70%'}, + {at: 0.6, expect: '40%'}, + {at: 1, expect: '0%'}, ]); test_interpolation({ @@ -183,10 +183,10 @@ test_interpolation({ from: '100%', to: '32px', }, [ - {at: 0, expect: '16px'}, - {at: 0.3, expect: '20.8px'}, - {at: 0.6, expect: '25.6px'}, - {at: 1, expect: '32px'}, + {at: 0, expect: '100%'}, + {at: 0.3, expect: 'calc(70% + 9.6px)'}, + {at: 0.6, expect: 'calc(40% + 19.2px)'}, + {at: 1, expect: 'calc(0% + 32px)'}, ]); test_interpolation({ @@ -194,10 +194,10 @@ test_interpolation({ from: '100%', to: '0em', }, [ - {at: 0, expect: '16px'}, - {at: 0.3, expect: '11.2px'}, - {at: 0.6, expect: '6.4px'}, - {at: 1, expect: '0px'}, + {at: 0, expect: '100%'}, + {at: 0.3, expect: '70%'}, + {at: 0.6, expect: '40%'}, + {at: 1, expect: '0%'}, ]); test_interpolation({ @@ -205,9 +205,9 @@ test_interpolation({ from: '100%', to: '2em', }, [ - {at: 0, expect: '16px'}, - {at: 0.3, expect: '20.8px'}, - {at: 0.6, expect: '25.6px'}, - {at: 1, expect: '32px'}, + {at: 0, expect: '100%'}, + {at: 0.3, expect: 'calc(70% + 9.6px)'}, + {at: 0.6, expect: 'calc(40% + 19.2px)'}, + {at: 1, expect: 'calc(0% + 32px)'}, ]); diff --git a/tests/wpt/tests/css/css-text/text-autospace/text-autospace-001-ref.html b/tests/wpt/tests/css/css-text/text-autospace/text-autospace-001-ref.html new file mode 100644 index 00000000000..5c231fac913 --- /dev/null +++ b/tests/wpt/tests/css/css-text/text-autospace/text-autospace-001-ref.html @@ -0,0 +1,28 @@ + + + + + +
+
国国XX国
+
国。XX国
+
国国XX国
+
国。XX国
+
diff --git a/tests/wpt/tests/css/css-text/text-autospace/text-autospace-001.html b/tests/wpt/tests/css/css-text/text-autospace/text-autospace-001.html index 40a98861ad9..afd1352d5d2 100644 --- a/tests/wpt/tests/css/css-text/text-autospace/text-autospace-001.html +++ b/tests/wpt/tests/css/css-text/text-autospace/text-autospace-001.html @@ -2,9 +2,7 @@ - - - +
-
国国XX国
-
国。XX国
-
国国XX国
-
国。XX国
-
国国11国
+
国国XX国
+
国。XX国
+
国国XX国
+
国。XX国
- diff --git a/tests/wpt/tests/css/css-values/hypot-pow-sqrt-invalid.html b/tests/wpt/tests/css/css-values/hypot-pow-sqrt-invalid.html index 4b04e5358ed..edecfceb13a 100644 --- a/tests/wpt/tests/css/css-values/hypot-pow-sqrt-invalid.html +++ b/tests/wpt/tests/css/css-values/hypot-pow-sqrt-invalid.html @@ -11,8 +11,8 @@ function test_invalid_number(value) { test_invalid_value('opacity', value); } function test_invalid_length(value) { - // 'letter-spacing' accepts only, not or any mixes. - test_invalid_value('letter-spacing', value); + // 'outline-offset' accepts only, not or any mixes. + test_invalid_value('outline-offset', value); } // Syntax checking @@ -54,7 +54,6 @@ test_invalid_number('pow(1, , 2)'); test_invalid_length('calc(1px * pow(1))'); test_invalid_length('calc(1px * pow(2px, 3px))'); test_invalid_length('calc(sqrt(100px)'); -test_invalid_length('hypot(2px, 40%)'); test_invalid_length('hypot(2px, 3)'); test_invalid_length('hypot(3, ,4)'); test_invalid_length('hypot(1, 2)'); diff --git a/tests/wpt/tests/css/css-values/hypot-pow-sqrt-serialize.html b/tests/wpt/tests/css/css-values/hypot-pow-sqrt-serialize.html index ffaaaf4531d..378f334555c 100644 --- a/tests/wpt/tests/css/css-values/hypot-pow-sqrt-serialize.html +++ b/tests/wpt/tests/css/css-values/hypot-pow-sqrt-serialize.html @@ -40,4 +40,6 @@ test_serialization( 'calc(sqrt(1) - 1)', 'calc(0)', '0'); + +test_specified_serialization('letter-spacing', 'hypot(2px, 40%)', 'hypot(2px, 40%)'); diff --git a/tests/wpt/tests/css/css-viewport/zoom/svg-transform-ref.html b/tests/wpt/tests/css/css-viewport/zoom/svg-transform-ref.html new file mode 100644 index 00000000000..abaed2accea --- /dev/null +++ b/tests/wpt/tests/css/css-viewport/zoom/svg-transform-ref.html @@ -0,0 +1,4 @@ + + + + diff --git a/tests/wpt/tests/css/css-viewport/zoom/svg-transform.html b/tests/wpt/tests/css/css-viewport/zoom/svg-transform.html new file mode 100644 index 00000000000..e0adf0725e8 --- /dev/null +++ b/tests/wpt/tests/css/css-viewport/zoom/svg-transform.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/tests/wpt/tests/css/cssom/insertRule-import-trailing-garbage-crash.html b/tests/wpt/tests/css/cssom/insertRule-import-trailing-garbage-crash.html new file mode 100644 index 00000000000..3acd607ca3c --- /dev/null +++ b/tests/wpt/tests/css/cssom/insertRule-import-trailing-garbage-crash.html @@ -0,0 +1,6 @@ + + + + diff --git a/tests/wpt/tests/css/filter-effects/css-filters-animation-grayscale.html b/tests/wpt/tests/css/filter-effects/css-filters-animation-grayscale.html index c258718f69d..c96488dc1b3 100644 --- a/tests/wpt/tests/css/filter-effects/css-filters-animation-grayscale.html +++ b/tests/wpt/tests/css/filter-effects/css-filters-animation-grayscale.html @@ -1,6 +1,7 @@ + CSS Filters Animation: Grayscale diff --git a/tests/wpt/tests/css/filter-effects/css-filters-animation-sepia.html b/tests/wpt/tests/css/filter-effects/css-filters-animation-sepia.html index 22397011108..90ffbb783f0 100644 --- a/tests/wpt/tests/css/filter-effects/css-filters-animation-sepia.html +++ b/tests/wpt/tests/css/filter-effects/css-filters-animation-sepia.html @@ -2,6 +2,7 @@ CSS Filters Animation: Sepia + diff --git a/tests/wpt/tests/css/filter-effects/filters-grayscale-001-test.html b/tests/wpt/tests/css/filter-effects/filters-grayscale-001-test.html index 40e49b60bea..efde7b4ffe4 100644 --- a/tests/wpt/tests/css/filter-effects/filters-grayscale-001-test.html +++ b/tests/wpt/tests/css/filter-effects/filters-grayscale-001-test.html @@ -1,6 +1,7 @@ + CSS Filter Test: Test grayscale shorthand with value 1 diff --git a/tests/wpt/tests/css/motion/animation/offset-path-interpolation-008.html b/tests/wpt/tests/css/motion/animation/offset-path-interpolation-008.html index 30d789f4eb8..ffdd773d91d 100644 --- a/tests/wpt/tests/css/motion/animation/offset-path-interpolation-008.html +++ b/tests/wpt/tests/css/motion/animation/offset-path-interpolation-008.html @@ -87,47 +87,47 @@ test_interpolation({ property: 'offset-path', - from: 'shape(from 5% 5px, curve to 10% 10px via 0% 80px, curve to 30% 20px via 20% 50px 25% 70px)', - to: 'shape(from 15% 15px, curve to 20% 0px via 10% 60px, curve to 20% 30px via 30% 40px -5% 100px)', + from: 'shape(from 5% 5px, curve to 10% 10px using 0% 80px, curve to 30% 20px using 20% 50px 25% 70px)', + to: 'shape(from 15% 15px, curve to 20% 0px using 10% 60px, curve to 20% 30px using 30% 40px -5% 100px)', }, [ - {at: -0.3, expect: 'shape(from 2% 2px, curve to 7% 13px via -3% 86px, curve to 33% 17px via 17% 53px 34% 61px)'}, - {at: 0, expect: 'shape(from 5% 5px, curve to 10% 10px via 0% 80px, curve to 30% 20px via 20% 50px 25% 70px)'}, - {at: 0.5, expect: 'shape(from 10% 10px, curve to 15% 5px via 5% 70px, curve to 25% 25px via 25% 45px 10% 85px)'}, - {at: 1, expect: 'shape(from 15% 15px, curve to 20% 0px via 10% 60px, curve to 20% 30px via 30% 40px -5% 100px)'}, - {at: 1.5, expect: 'shape(from 20% 20px, curve to 25% -5px via 15% 50px, curve to 15% 35px via 35% 35px -20% 115px)'}, + {at: -0.3, expect: 'shape(from 2% 2px, curve to 7% 13px using -3% 86px, curve to 33% 17px using 17% 53px 34% 61px)'}, + {at: 0, expect: 'shape(from 5% 5px, curve to 10% 10px using 0% 80px, curve to 30% 20px using 20% 50px 25% 70px)'}, + {at: 0.5, expect: 'shape(from 10% 10px, curve to 15% 5px using 5% 70px, curve to 25% 25px using 25% 45px 10% 85px)'}, + {at: 1, expect: 'shape(from 15% 15px, curve to 20% 0px using 10% 60px, curve to 20% 30px using 30% 40px -5% 100px)'}, + {at: 1.5, expect: 'shape(from 20% 20px, curve to 25% -5px using 15% 50px, curve to 15% 35px using 35% 35px -20% 115px)'}, ]); test_interpolation({ property: 'offset-path', - from: 'shape(from 5% 5px, curve by 10% 10px via 0% 80px, curve by 30% 20px via 20% 50px 25% 70px)', - to: 'shape(from 15% 15px, curve by 20% 0px via 10% 60px, curve by 20% 30px via 30% 40px -5% 100px)', + from: 'shape(from 5% 5px, curve by 10% 10px using 0% 80px, curve by 30% 20px using 20% 50px 25% 70px)', + to: 'shape(from 15% 15px, curve by 20% 0px using 10% 60px, curve by 20% 30px using 30% 40px -5% 100px)', }, [ - {at: -0.3, expect: 'shape(from 2% 2px, curve by 7% 13px via -3% 86px, curve by 33% 17px via 17% 53px 34% 61px)'}, - {at: 0, expect: 'shape(from 5% 5px, curve by 10% 10px via 0% 80px, curve by 30% 20px via 20% 50px 25% 70px)'}, - {at: 0.5, expect: 'shape(from 10% 10px, curve by 15% 5px via 5% 70px, curve by 25% 25px via 25% 45px 10% 85px)'}, - {at: 1.5, expect: 'shape(from 20% 20px, curve by 25% -5px via 15% 50px, curve by 15% 35px via 35% 35px -20% 115px)'}, + {at: -0.3, expect: 'shape(from 2% 2px, curve by 7% 13px using -3% 86px, curve by 33% 17px using 17% 53px 34% 61px)'}, + {at: 0, expect: 'shape(from 5% 5px, curve by 10% 10px using 0% 80px, curve by 30% 20px using 20% 50px 25% 70px)'}, + {at: 0.5, expect: 'shape(from 10% 10px, curve by 15% 5px using 5% 70px, curve by 25% 25px using 25% 45px 10% 85px)'}, + {at: 1.5, expect: 'shape(from 20% 20px, curve by 25% -5px using 15% 50px, curve by 15% 35px using 35% 35px -20% 115px)'}, ]); test_interpolation({ property: 'offset-path', - from: 'shape(from 5% 5px, smooth to 10% 10px via 0% 80px, smooth to 30% 20px)', - to: 'shape(from 15% 15px, smooth to 20% 0px via 10% 60px, smooth to 20% 30px)', + from: 'shape(from 5% 5px, smooth to 10% 10px using 0% 80px, smooth to 30% 20px)', + to: 'shape(from 15% 15px, smooth to 20% 0px using 10% 60px, smooth to 20% 30px)', }, [ - {at: -0.3, expect: 'shape(from 2% 2px, smooth to 7% 13px via -3% 86px, smooth to 33% 17px)'}, - {at: 0, expect: 'shape(from 5% 5px, smooth to 10% 10px via 0% 80px, smooth to 30% 20px)'}, - {at: 0.5, expect: 'shape(from 10% 10px, smooth to 15% 5px via 5% 70px, smooth to 25% 25px)'}, - {at: 1.5, expect: 'shape(from 20% 20px, smooth to 25% -5px via 15% 50px, smooth to 15% 35px)'}, + {at: -0.3, expect: 'shape(from 2% 2px, smooth to 7% 13px using -3% 86px, smooth to 33% 17px)'}, + {at: 0, expect: 'shape(from 5% 5px, smooth to 10% 10px using 0% 80px, smooth to 30% 20px)'}, + {at: 0.5, expect: 'shape(from 10% 10px, smooth to 15% 5px using 5% 70px, smooth to 25% 25px)'}, + {at: 1.5, expect: 'shape(from 20% 20px, smooth to 25% -5px using 15% 50px, smooth to 15% 35px)'}, ]); test_interpolation({ property: 'offset-path', - from: 'shape(from 5% 5px, smooth by 10% 10px via 0% 80px, smooth by 30% 20px)', - to: 'shape(from 15% 15px, smooth by 20% 0px via 10% 60px, smooth by 20% 30px)', + from: 'shape(from 5% 5px, smooth by 10% 10px using 0% 80px, smooth by 30% 20px)', + to: 'shape(from 15% 15px, smooth by 20% 0px using 10% 60px, smooth by 20% 30px)', }, [ - {at: -0.3, expect: 'shape(from 2% 2px, smooth by 7% 13px via -3% 86px, smooth by 33% 17px)'}, - {at: 0, expect: 'shape(from 5% 5px, smooth by 10% 10px via 0% 80px, smooth by 30% 20px)'}, - {at: 0.5, expect: 'shape(from 10% 10px, smooth by 15% 5px via 5% 70px, smooth by 25% 25px)'}, - {at: 1.5, expect: 'shape(from 20% 20px, smooth by 25% -5px via 15% 50px, smooth by 15% 35px)'}, + {at: -0.3, expect: 'shape(from 2% 2px, smooth by 7% 13px using -3% 86px, smooth by 33% 17px)'}, + {at: 0, expect: 'shape(from 5% 5px, smooth by 10% 10px using 0% 80px, smooth by 30% 20px)'}, + {at: 0.5, expect: 'shape(from 10% 10px, smooth by 15% 5px using 5% 70px, smooth by 25% 25px)'}, + {at: 1.5, expect: 'shape(from 20% 20px, smooth by 25% -5px using 15% 50px, smooth by 15% 35px)'}, ]); test_interpolation({ @@ -137,7 +137,7 @@ }, [ {at: -0.3, expect: 'shape(from 2% 2px, arc to 18% -12px of 7px 17px ccw small, arc by 12% -2px of 33px 33px rotate -42deg cw large , arc to 25% 20px of 10px 5px ccw small)'}, {at: 0, expect: 'shape(from 5% 5px, arc to 15% -15px of 10px 20px, arc by 15% -5px of 30px cw rotate 30deg large, arc to 25% 20px of 10px 5px small)'}, - {at: 0.3, expect: 'shape(from 8% 8px, arc to 12% -18px of 13px 23px ccw small, arc by 18% -8px of 27px 27px rotate 102deg cw large, arc to 25% 20px of 10px 5px ccw small )'}, + {at: 0.3, expect: 'shape(from 8% 8px, arc to 12% -18px of 13px 23px ccw small, arc by 18% -8px of 27px 27px rotate 102deg cw large, arc to 25% 20px of 10px 5px cw small )'}, {at: 0.5, expect: 'shape(from 10% 10px, arc to 10% -20px of 15px 25px ccw small, arc by 20% -10px of 25px rotate 150deg cw large, arc to 25% 20px of 10px 5px cw small)'}, {at: 1, expect: 'shape(from 15% 15px, arc to 5% -25px of 20px 30px, arc by 25% -15px of 20px rotate 270deg cw small, arc to 25% 20px of 10px 5px cw small)'}, {at: 1.5, expect: 'shape(from 20% 20px, arc to 0% -30px of 25px 35px ccw small, arc by 30% -20px of 15px rotate 390deg cw small, arc to 25% 20px of 10px 5px cw small)'}, @@ -187,50 +187,50 @@ test_interpolation({ property: 'offset-path', - from: 'shape(from 5% 5px, curve to 10% 10px via 0% 80px, curve to 30% 20px via 20% 50px 25% 70px)', + from: 'shape(from 5% 5px, curve to 10% 10px using 0% 80px, curve to 30% 20px using 20% 50px 25% 70px)', to: 'path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")', }, [ - {at: -0.3, expect: 'shape(from calc(6.5% - 4.5px) 2px, curve to calc(13% - 6px) 13px via calc(0% - 3px) 86px, curve to calc(39% - 6px) 17px via calc(26% - 9px) 53px calc(32.5% + 1.5px) 61px)'}, - {at: 0, expect: 'shape(from 5% 5px, curve to 10% 10px via 0% 80px, curve to 30% 20px via 20% 50px 25% 70px)'}, - {at: 0.5, expect: 'shape(from calc(2.5% + 7.5px) 10px, curve to calc(5% + 10px) 5px via calc(0% + 5px) 70px, curve to calc(15% + 10px) 25px via calc(10% + 15px) 45px calc(12.5% - 2.5px) 85px)'}, - {at: 1, expect: 'shape(from calc(0% + 15px) 15px, curve to calc(0% + 20px) 0px via calc(0% + 10px) 60px, curve to calc(0% + 20px) 30px via calc(0% + 30px) 40px calc(0% - 5px) 100px)'}, - {at: 1.5, expect: 'shape(from calc(-2.5% + 22.5px) 20px, curve to calc(-5% + 30px) -5px via calc(0% + 15px) 50px, curve to calc(-15% + 30px) 35px via calc(-10% + 45px) 35px calc(-12.5% - 7.5px) 115px)'}, + {at: -0.3, expect: 'shape(from calc(6.5% - 4.5px) 2px, curve to calc(13% - 6px) 13px using calc(0% - 3px) 86px, curve to calc(39% - 6px) 17px using calc(26% - 9px) 53px calc(32.5% + 1.5px) 61px)'}, + {at: 0, expect: 'shape(from 5% 5px, curve to 10% 10px using 0% 80px, curve to 30% 20px using 20% 50px 25% 70px)'}, + {at: 0.5, expect: 'shape(from calc(2.5% + 7.5px) 10px, curve to calc(5% + 10px) 5px using calc(0% + 5px) 70px, curve to calc(15% + 10px) 25px using calc(10% + 15px) 45px calc(12.5% - 2.5px) 85px)'}, + {at: 1, expect: 'shape(from calc(0% + 15px) 15px, curve to calc(0% + 20px) 0px using calc(0% + 10px) 60px, curve to calc(0% + 20px) 30px using calc(0% + 30px) 40px calc(0% - 5px) 100px)'}, + {at: 1.5, expect: 'shape(from calc(-2.5% + 22.5px) 20px, curve to calc(-5% + 30px) -5px using calc(0% + 15px) 50px, curve to calc(-15% + 30px) 35px using calc(-10% + 45px) 35px calc(-12.5% - 7.5px) 115px)'}, ]); test_interpolation({ property: 'offset-path', from: 'path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")', - to: 'shape(from 15% 15px, curve by 20% 0px via 10% 60px, curve by 20% 30px via 30% 40px -5% 100px)', + to: 'shape(from 15% 15px, curve by 20% 0px using 10% 60px, curve by 20% 30px using 30% 40px -5% 100px)', }, [ - {at: -0.3, expect: 'shape(from calc(-4.5% + 6.5px) 2px, curve by calc(-6% + 13px) 13px via -3% 86px, curve by calc(-6% + 39px) 17px via calc(-9% + 26px) 53px calc(1.5% + 32.5px) 61px)'}, - {at: 0, expect: 'shape(from calc(0% + 5px) 5px, curve by calc(0% + 10px) 10px via 0% 80px, curve by calc(0% + 30px) 20px via calc(0% + 20px) 50px calc(0% + 25px) 70px)'}, - {at: 0.5, expect: 'shape(from calc(7.5% + 2.5px) 10px, curve by calc(10% + 5px) 5px via 5% 70px, curve by calc(10% + 15px) 25px via calc(15% + 10px) 45px calc(-2.5% + 12.5px) 85px)'}, - {at: 1, expect: 'shape(from 15% 15px, curve by 20% 0px via 10% 60px, curve by 20% 30px via 30% 40px -5% 100px)'}, - {at: 1.5, expect: 'shape(from calc(22.5% - 2.5px) 20px, curve by calc(30% - 5px) -5px via 15% 50px, curve by calc(30% - 15px) 35px via calc(45% - 10px) 35px calc(-7.5% - 12.5px) 115px)'}, + {at: -0.3, expect: 'shape(from calc(-4.5% + 6.5px) 2px, curve by calc(-6% + 13px) 13px using -3% 86px, curve by calc(-6% + 39px) 17px using calc(-9% + 26px) 53px calc(1.5% + 32.5px) 61px)'}, + {at: 0, expect: 'shape(from calc(0% + 5px) 5px, curve by calc(0% + 10px) 10px using 0% 80px, curve by calc(0% + 30px) 20px using calc(0% + 20px) 50px calc(0% + 25px) 70px)'}, + {at: 0.5, expect: 'shape(from calc(7.5% + 2.5px) 10px, curve by calc(10% + 5px) 5px using 5% 70px, curve by calc(10% + 15px) 25px using calc(15% + 10px) 45px calc(-2.5% + 12.5px) 85px)'}, + {at: 1, expect: 'shape(from 15% 15px, curve by 20% 0px using 10% 60px, curve by 20% 30px using 30% 40px -5% 100px)'}, + {at: 1.5, expect: 'shape(from calc(22.5% - 2.5px) 20px, curve by calc(30% - 5px) -5px using 15% 50px, curve by calc(30% - 15px) 35px using calc(45% - 10px) 35px calc(-7.5% - 12.5px) 115px)'}, ]); test_interpolation({ property: 'offset-path', - from: 'shape(from 5% 5px, smooth to 10% 10px via 0% 80px, smooth to 30% 20px)', + from: 'shape(from 5% 5px, smooth to 10% 10px using 0% 80px, smooth to 30% 20px)', to: 'path("M 15 15 S 10 60 20 0 T 20 30")', }, [ - {at: -0.3, expect: 'shape(from calc(6.5% - 4.5px) 2px, smooth to calc(13% - 6px) 13px via calc(0% - 3px) 86px, smooth to calc(39% - 6px) 17px)'}, - {at: 0, expect: 'shape(from 5% 5px, smooth to 10% 10px via 0% 80px, smooth to 30% 20px)'}, - {at: 0.5, expect: 'shape(from calc(2.5% + 7.5px) 10px, smooth to calc(5% + 10px) 5px via calc(0% + 5px) 70px, smooth to calc(15% + 10px) 25px)'}, - {at: 1, expect: 'shape(from calc(0% + 15px) 15px, smooth to calc(0% + 20px) 0px via calc(0% + 10px) 60px, smooth to calc(0% + 20px) 30px)'}, - {at: 1.5, expect: 'shape(from calc(-2.5% + 22.5px) 20px, smooth to calc(-5% + 30px) -5px via calc(0% + 15px) 50px, smooth to calc(-15% + 30px) 35px)'}, + {at: -0.3, expect: 'shape(from calc(6.5% - 4.5px) 2px, smooth to calc(13% - 6px) 13px using calc(0% - 3px) 86px, smooth to calc(39% - 6px) 17px)'}, + {at: 0, expect: 'shape(from 5% 5px, smooth to 10% 10px using 0% 80px, smooth to 30% 20px)'}, + {at: 0.5, expect: 'shape(from calc(2.5% + 7.5px) 10px, smooth to calc(5% + 10px) 5px using calc(0% + 5px) 70px, smooth to calc(15% + 10px) 25px)'}, + {at: 1, expect: 'shape(from calc(0% + 15px) 15px, smooth to calc(0% + 20px) 0px using calc(0% + 10px) 60px, smooth to calc(0% + 20px) 30px)'}, + {at: 1.5, expect: 'shape(from calc(-2.5% + 22.5px) 20px, smooth to calc(-5% + 30px) -5px using calc(0% + 15px) 50px, smooth to calc(-15% + 30px) 35px)'}, ]); test_interpolation({ property: 'offset-path', from: 'path("M 5 5 s 0 80 10 10 t 30 20")', - to: 'shape(from 15px 15px, smooth by 20px 0px via 10px 60px, smooth by 20px 30px)', + to: 'shape(from 15px 15px, smooth by 20px 0px using 10px 60px, smooth by 20px 30px)', }, [ - {at: -0.3, expect: 'shape(from 2px 2px, smooth by 7px 13px via -3px 86px, smooth by 33px 17px)'}, - {at: 0, expect: 'shape(from 5px 5px, smooth by 10px 10px via 0px 80px, smooth by 30px 20px)'}, - {at: 0.5, expect: 'shape(from 10px 10px, smooth by 15px 5px via 5px 70px, smooth by 25px 25px)'}, - {at: 1, expect: 'shape(from 15px 15px, smooth by 20px 0px via 10px 60px, smooth by 20px 30px)'}, - {at: 1.5, expect: 'shape(from 20px 20px, smooth by 25px -5px via 15px 50px, smooth by 15px 35px)'}, + {at: -0.3, expect: 'shape(from 2px 2px, smooth by 7px 13px using -3px 86px, smooth by 33px 17px)'}, + {at: 0, expect: 'shape(from 5px 5px, smooth by 10px 10px using 0px 80px, smooth by 30px 20px)'}, + {at: 0.5, expect: 'shape(from 10px 10px, smooth by 15px 5px using 5px 70px, smooth by 25px 25px)'}, + {at: 1, expect: 'shape(from 15px 15px, smooth by 20px 0px using 10px 60px, smooth by 20px 30px)'}, + {at: 1.5, expect: 'shape(from 20px 20px, smooth by 25px -5px using 15px 50px, smooth by 15px 35px)'}, ]); test_interpolation({ diff --git a/tests/wpt/tests/css/selectors/featureless-001.html b/tests/wpt/tests/css/selectors/featureless-001.html new file mode 100644 index 00000000000..b248b65a4f4 --- /dev/null +++ b/tests/wpt/tests/css/selectors/featureless-001.html @@ -0,0 +1,34 @@ + + +Verifying that :host works as a selector at all + + + + +

Test passes if there is a filled green square.

+
+ +
+
\ No newline at end of file diff --git a/tests/wpt/tests/css/selectors/featureless-002.html b/tests/wpt/tests/css/selectors/featureless-002.html new file mode 100644 index 00000000000..0904e3098c5 --- /dev/null +++ b/tests/wpt/tests/css/selectors/featureless-002.html @@ -0,0 +1,39 @@ + + +Compound selectors only match if all simples do + + +

Test passes if there is a filled green square.

+
+ +
+
\ No newline at end of file diff --git a/tests/wpt/tests/css/selectors/featureless-003.html b/tests/wpt/tests/css/selectors/featureless-003.html new file mode 100644 index 00000000000..3700b241951 --- /dev/null +++ b/tests/wpt/tests/css/selectors/featureless-003.html @@ -0,0 +1,39 @@ + + +Selector lists match if any child selector does + + +

Test passes if there is a filled green square.

+
+ +
+
\ No newline at end of file diff --git a/tests/wpt/tests/css/selectors/featureless-004.html b/tests/wpt/tests/css/selectors/featureless-004.html new file mode 100644 index 00000000000..d0ea23e560f --- /dev/null +++ b/tests/wpt/tests/css/selectors/featureless-004.html @@ -0,0 +1,43 @@ + + +Logical combo pseudos can match if their argument is allowed to + + +

Test passes if there is a filled green square.

+
+ +
+
\ No newline at end of file diff --git a/tests/wpt/tests/css/selectors/featureless-005.html b/tests/wpt/tests/css/selectors/featureless-005.html new file mode 100644 index 00000000000..2ffe9d2488c --- /dev/null +++ b/tests/wpt/tests/css/selectors/featureless-005.html @@ -0,0 +1,30 @@ + + +:has() works on featureless elements *if* the rest of the selector does too + + +

Test passes if there is a filled green square.

+
+ +
+
\ No newline at end of file diff --git a/tests/wpt/tests/digital-credentials/allow-attribute.https.html b/tests/wpt/tests/digital-credentials/allow-attribute.https.html new file mode 100644 index 00000000000..a42a3b68f0e --- /dev/null +++ b/tests/wpt/tests/digital-credentials/allow-attribute.https.html @@ -0,0 +1,131 @@ + + + + + Test allow attribute with "digital-credentials-get" and + CredentialsContainer's .get() method + + + + + + + + diff --git a/tests/wpt/tests/digital-credentials/dc-types.ts b/tests/wpt/tests/digital-credentials/dc-types.ts new file mode 100644 index 00000000000..f2b7e3a172c --- /dev/null +++ b/tests/wpt/tests/digital-credentials/dc-types.ts @@ -0,0 +1,64 @@ +export type ProviderType = "default" | "openid4vp"; + +/** + * @see https://wicg.github.io/digital-credentials/#dom-identityrequestprovider + */ +export interface IdentityRequestProvider { + protocol: string; + request: object; +} + +/** + * @see https://wicg.github.io/digital-credentials/#dom-digitalcredentialrequestoptions + */ +export interface DigitalCredentialRequestOptions { + /** + * The list of identity request providers + */ + providers: IdentityRequestProvider[] | any; +} + +/** + * @see https://wicg.github.io/digital-credentials/#extensions-to-credentialrequestoptions-dictionary + */ +export interface CredentialRequestOptions { + /** + * The digital credential request options. + */ + digital: DigitalCredentialRequestOptions; +} + +/** + * The actions that can be performed on the API via the iframe. + */ +export type IframeActionType = "create" | "get" | "ping" | "preventSilentAccess" ; + +/** + * If present, when the abort controller should be aborted + * relative the invocation of the API. + */ +export type AbortType = "before" | "after"; + +export interface EventData { + /** + * Action to perform on the API. + */ + action: IframeActionType; + /** + * If the action should be aborted, and when. + */ + abort?: AbortType; + /** + * The options to pass to the API. + */ + options?: object; + /** + * If the API needs to blessed before the action is performed. + */ + needsUserActivation?: boolean; +} + +export interface SendMessageData { + action: IframeActionType; + options?: CredentialRequestOptions; +} diff --git a/tests/wpt/tests/digital-credentials/default-permissions-policy.https.sub.html b/tests/wpt/tests/digital-credentials/default-permissions-policy.https.sub.html new file mode 100644 index 00000000000..fa3309ac2b4 --- /dev/null +++ b/tests/wpt/tests/digital-credentials/default-permissions-policy.https.sub.html @@ -0,0 +1,42 @@ + + + + + + + + + + diff --git a/tests/wpt/tests/digital-credentials/disabled-by-permissions-policy.https.sub.html b/tests/wpt/tests/digital-credentials/disabled-by-permissions-policy.https.sub.html new file mode 100644 index 00000000000..2adff986164 --- /dev/null +++ b/tests/wpt/tests/digital-credentials/disabled-by-permissions-policy.https.sub.html @@ -0,0 +1,59 @@ + + + + + + + + + + diff --git a/tests/wpt/tests/digital-credentials/disabled-by-permissions-policy.https.sub.html.headers b/tests/wpt/tests/digital-credentials/disabled-by-permissions-policy.https.sub.html.headers new file mode 100644 index 00000000000..02a76b7c3f2 --- /dev/null +++ b/tests/wpt/tests/digital-credentials/disabled-by-permissions-policy.https.sub.html.headers @@ -0,0 +1 @@ +Permissions-Policy: digital-credentials-get=() diff --git a/tests/wpt/tests/digital-credentials/enabled-on-self-origin-by-permissions-policy.https.sub.html b/tests/wpt/tests/digital-credentials/enabled-on-self-origin-by-permissions-policy.https.sub.html new file mode 100644 index 00000000000..4b928b03578 --- /dev/null +++ b/tests/wpt/tests/digital-credentials/enabled-on-self-origin-by-permissions-policy.https.sub.html @@ -0,0 +1,59 @@ + + + + + + + + + + diff --git a/tests/wpt/tests/digital-credentials/enabled-on-self-origin-by-permissions-policy.https.sub.html.headers b/tests/wpt/tests/digital-credentials/enabled-on-self-origin-by-permissions-policy.https.sub.html.headers new file mode 100644 index 00000000000..1207d9e29a1 --- /dev/null +++ b/tests/wpt/tests/digital-credentials/enabled-on-self-origin-by-permissions-policy.https.sub.html.headers @@ -0,0 +1 @@ +Permissions-Policy: digital-credentials-get=(self) diff --git a/tests/wpt/tests/digital-credentials/get-user-activation.https.html b/tests/wpt/tests/digital-credentials/get-user-activation.https.html new file mode 100644 index 00000000000..d4af78a9362 --- /dev/null +++ b/tests/wpt/tests/digital-credentials/get-user-activation.https.html @@ -0,0 +1,38 @@ + +Digital Credential API: get() consumes user activation. + + + + + + + diff --git a/tests/wpt/tests/digital-credentials/identity-create.tentative.https.html b/tests/wpt/tests/digital-credentials/identity-create.tentative.https.html new file mode 100644 index 00000000000..027a796652e --- /dev/null +++ b/tests/wpt/tests/digital-credentials/identity-create.tentative.https.html @@ -0,0 +1,124 @@ + +Digital Identity Credential tests. + + + + + + + + + + + + + diff --git a/tests/wpt/tests/digital-credentials/identity-get.tentative.https.html b/tests/wpt/tests/digital-credentials/identity-get.tentative.https.html index 15597ed594a..775d7205101 100644 --- a/tests/wpt/tests/digital-credentials/identity-get.tentative.https.html +++ b/tests/wpt/tests/digital-credentials/identity-get.tentative.https.html @@ -1,6 +1,6 @@ -Digital Identity Credential tests. - +Digital Credential tests. + @@ -8,27 +8,188 @@ + + + diff --git a/tests/wpt/tests/digital-credentials/support/helper.js b/tests/wpt/tests/digital-credentials/support/helper.js index 8fff8274517..6bbcdb2cd3e 100644 --- a/tests/wpt/tests/digital-credentials/support/helper.js +++ b/tests/wpt/tests/digital-credentials/support/helper.js @@ -1,26 +1,106 @@ -// Builds valid digital identity request for navigator.identity.get() API. -export function buildValidNavigatorIdentityRequest() { +// @ts-check +// Import the types from the TypeScript file +/** + * @typedef {import('../dc-types').ProviderType} ProviderType + * @typedef {import('../dc-types').IdentityRequestProvider} IdentityRequestProvider + * @typedef {import('../dc-types').DigitalCredentialRequestOptions} DigitalCredentialRequestOptions + * @typedef {import('../dc-types').CredentialRequestOptions} CredentialRequestOptions + * @typedef {import('../dc-types').SendMessageData} SendMessageData + */ +/** + * @param {ProviderType | ProviderType[]} [providersToUse=["default"]] + * @returns {CredentialRequestOptions} + */ +export function makeGetOptions(providersToUse = ["default"]) { + if (typeof providersToUse === "string") { + if (providersToUse === "default" || providersToUse === "openid4vp"){ + return makeGetOptions([providersToUse]); + } + } + if (!Array.isArray(providersToUse) || !providersToUse?.length) { + return { digital: { providers: providersToUse } }; + } + const providers = []; + for (const provider of providersToUse) { + switch (provider) { + case "openid4vp": + providers.push(makeOID4VPDict()); + break; + case "default": + providers.push(makeIdentityRequestProvider(undefined, undefined)); + break; + default: + throw new Error(`Unknown provider type: ${provider}`); + break; + } + } + return { digital: { providers } }; +} +/** + * + * @param {string} protocol + * @param {object} request + * @returns {IdentityRequestProvider} + */ +function makeIdentityRequestProvider(protocol = "protocol", request = {}) { return { - digital: { - providers: [{ - protocol: "urn:openid.net:oid4vp", - request: JSON.stringify({ - // Based on https://github.com/openid/OpenID4VP/issues/125 - client_id: "client.example.org", - client_id_scheme: "web-origin", - nonce: "n-0S6_WzA2Mj", - presentation_definition: { - // Presentation Exchange request, omitted for brevity - } - }), - }], - }, + protocol, + request, }; } -// Requests digital identity with user activation. -export function requestIdentityWithActivation(test_driver, request) { - return test_driver.bless("request identity with activation", async function() { - return await navigator.identity.get(request); +/** + * Representation of a digital identity object with an OpenID4VP provider. + * + * @returns {IdentityRequestProvider} + **/ +function makeOID4VPDict() { + return makeIdentityRequestProvider("openid4vp", { + // Canonical example of an OpenID4VP request coming soon. + }); +} + +/** + * Sends a message to an iframe and return the response. + * + * @param {HTMLIFrameElement} iframe - The iframe element to send the message to. + * @param {SendMessageData} data - The data to be sent to the iframe. + * @returns {Promise} - A promise that resolves with the response from the iframe. + */ +export function sendMessage(iframe, data) { + return new Promise((resolve, reject) => { + if (!iframe.contentWindow) { + reject( + new Error( + "iframe.contentWindow is undefined, cannot send message (something is wrong with the test that called this)." + ) + ); + return; + } + window.addEventListener("message", function messageListener(event) { + if (event.source === iframe.contentWindow) { + window.removeEventListener("message", messageListener); + resolve(event.data); + } + }); + iframe.contentWindow.postMessage(data, "*"); + }); +} + +/** + * Load an iframe with the specified URL and wait for it to load. + * + * @param {HTMLIFrameElement} iframe + * @param {string|URL} url + * @returns {Promise} + */ +export function loadIframe(iframe, url) { + return new Promise((resolve, reject) => { + iframe.addEventListener("load", resolve, { once: true }); + iframe.addEventListener("error", reject, { once: true }); + if (!iframe.isConnected) { + document.body.appendChild(iframe); + } + iframe.src = url.toString(); }); } diff --git a/tests/wpt/tests/digital-credentials/support/iframe.html b/tests/wpt/tests/digital-credentials/support/iframe.html index 74733d82ec6..0598cfb00be 100644 --- a/tests/wpt/tests/digital-credentials/support/iframe.html +++ b/tests/wpt/tests/digital-credentials/support/iframe.html @@ -1,27 +1,75 @@ - + + diff --git a/tests/wpt/tests/digital-credentials/tsconfig.json b/tests/wpt/tests/digital-credentials/tsconfig.json new file mode 100644 index 00000000000..1387caf21b7 --- /dev/null +++ b/tests/wpt/tests/digital-credentials/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "allowJs": true, + "checkJs": true, + "noEmit": true, + "strict": true, + "lib": ["dom", "esnext"], + "baseUrl": "." + } +} diff --git a/tests/wpt/tests/dom/abort/resources/abort-signal-any-tests.js b/tests/wpt/tests/dom/abort/resources/abort-signal-any-tests.js index 66e4141eacc..929ee8a2e61 100644 --- a/tests/wpt/tests/dom/abort/resources/abort-signal-any-tests.js +++ b/tests/wpt/tests/dom/abort/resources/abort-signal-any-tests.js @@ -182,4 +182,43 @@ function abortSignalAnyTests(signalInterface, controllerInterface) { controller.abort(); assert_equals(result, "01234"); }, `Abort events for ${desc} signals fire in the right order ${suffix}`); + + test(t => { + const controller = new controllerInterface(); + const signal1 = signalInterface.any([controller.signal]); + const signal2 = signalInterface.any([signal1]); + let eventFired = false; + + controller.signal.addEventListener('abort', () => { + const signal3 = signalInterface.any([signal2]); + assert_true(controller.signal.aborted); + assert_true(signal1.aborted); + assert_true(signal2.aborted); + assert_true(signal3.aborted); + eventFired = true; + }); + + controller.abort(); + assert_true(eventFired, "event fired"); + }, `Dependent signals for ${desc} are marked aborted before abort events fire ${suffix}`); + + test(t => { + const controller1 = new controllerInterface(); + const controller2 = new controllerInterface(); + const signal = signalInterface.any([controller1.signal, controller2.signal]); + let count = 0; + + controller1.signal.addEventListener('abort', () => { + controller2.abort("reason 2"); + }); + + signal.addEventListener('abort', () => { + count++; + }); + + controller1.abort("reason 1"); + assert_equals(count, 1); + assert_true(signal.aborted); + assert_equals(signal.reason, "reason 1"); + }, `Dependent signals for ${desc} are aborted correctly for reentrant aborts ${suffix}`); } diff --git a/tests/wpt/tests/dom/historical.html b/tests/wpt/tests/dom/historical.html index 1bc209ec0e7..390b40ed57a 100644 --- a/tests/wpt/tests/dom/historical.html +++ b/tests/wpt/tests/dom/historical.html @@ -25,6 +25,7 @@ var removedInterfaces = [ "Entity", "EntityReference", "EventException", // DOM Events + "MutationEvent", "NameList", "Notation", "TypeInfo", @@ -219,4 +220,46 @@ EventPrototypeRemoved.forEach(name => { assert_equals((new Event("test"))[name], undefined) }, "Event.prototype should not have this property: " + name) }) + +// For reference, these events were defined in +// https://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/DOM3-Events.html#events-Events-EventTypes-complete +const mutationEvents = [ + 'DOMSubtreeModified', + 'DOMNodeInserted', + 'DOMNodeRemoved', + 'DOMNodeRemovedFromDocument', + 'DOMNodeInsertedIntoDocument', + 'DOMCharacterDataModified', + 'DOMAttrModified', + 'DOMAttributeNameChanged', + 'DOMElementNameChanged', +]; +mutationEvents.forEach(evt => { + promise_test(async (t) => { + const target = document.createElement('div'); + let fired = false; + function listener(event) { + fired = true; + } + target.addEventListener(evt,listener); + document.body.addEventListener(evt,listener); + target.append('here'); + t.add_cleanup(() => target.remove()); + document.body.appendChild(target); + + // Trigger all mutation types except DOMElementNameChanged, which could + // only be triggered by a call to the (deprecated, removed) + // Document.renameNode() API. + target.remove(); + document.body.appendChild(target); + target.setAttribute('test','foo'); + target.attributes[0].value='bar'; + target.attributes[0].name='baz'; + target.firstChild.textContent = "bar"; + // Mutation events were synchronous, but ensure even async versions + // would fail this test. + await new Promise(resolve=>t.step_timeout(resolve,0)); + assert_false(fired,'Event was fired'); + }, `The ${evt} mutation event must not be fired.`); +}); diff --git a/tests/wpt/tests/dom/nodes/moveBefore/tentative/modal-dialog.html b/tests/wpt/tests/dom/nodes/moveBefore/tentative/modal-dialog.html new file mode 100644 index 00000000000..fa9eeae85eb --- /dev/null +++ b/tests/wpt/tests/dom/nodes/moveBefore/tentative/modal-dialog.html @@ -0,0 +1,19 @@ + +moveBefore should not close a modal dialog + + + +
+ + +
+
+
+ diff --git a/tests/wpt/tests/dom/nodes/moveBefore/tentative/moveBefore-shadow-inside.html b/tests/wpt/tests/dom/nodes/moveBefore/tentative/moveBefore-shadow-inside.html new file mode 100644 index 00000000000..239b08ee95b --- /dev/null +++ b/tests/wpt/tests/dom/nodes/moveBefore/tentative/moveBefore-shadow-inside.html @@ -0,0 +1,47 @@ + + + + + +
+
+ +
+
+
+ +
+ diff --git a/tests/wpt/tests/dom/nodes/moveBefore/tentative/mutation-events.html b/tests/wpt/tests/dom/nodes/moveBefore/tentative/mutation-events.html new file mode 100644 index 00000000000..4bba1efa8e1 --- /dev/null +++ b/tests/wpt/tests/dom/nodes/moveBefore/tentative/mutation-events.html @@ -0,0 +1,20 @@ + +Mutation events are suppressed during moveBefore() + + + + +

reference

+

target

+ + + diff --git a/tests/wpt/tests/editing/run/createlink-with-selecting-img.html b/tests/wpt/tests/editing/run/createlink-with-selecting-img.html new file mode 100644 index 00000000000..2dd2acdc0f0 --- /dev/null +++ b/tests/wpt/tests/editing/run/createlink-with-selecting-img.html @@ -0,0 +1,33 @@ + + + + +Test document.execCommand("createLink") when selecting an img element + + + + + + +
+ + diff --git a/tests/wpt/tests/fedcm/fedcm-storage-access-api-autogrant.tentative.https.sub.html b/tests/wpt/tests/fedcm/fedcm-storage-access-api-autogrant.tentative.https.sub.html new file mode 100644 index 00000000000..6cbd7851414 --- /dev/null +++ b/tests/wpt/tests/fedcm/fedcm-storage-access-api-autogrant.tentative.https.sub.html @@ -0,0 +1,100 @@ + +Federated Credential Management API / Storage Access API autogrants tests. + + + + + + + + + diff --git a/tests/wpt/tests/fedcm/lfedcm-identity.create-store-collect.tentative.sub.https.html b/tests/wpt/tests/fedcm/lfedcm-identity.create-store-collect.tentative.sub.https.html index 9cc7278d375..909735ed0f0 100644 --- a/tests/wpt/tests/fedcm/lfedcm-identity.create-store-collect.tentative.sub.https.html +++ b/tests/wpt/tests/fedcm/lfedcm-identity.create-store-collect.tentative.sub.https.html @@ -70,6 +70,7 @@ promise_test(async t => { promise_test(async t => { let initData = { id : "wpt-pick-me", + token : "token1", }; let result1 = await navigator.credentials.create({ @@ -83,6 +84,7 @@ promise_test(async t => { let initDataWithOrigin = { id : "wpt-pick-me", + token : "token1", effectiveOrigins : [window.origin], }; @@ -97,7 +99,7 @@ promise_test(async t => { assert_not_equals(credentialGotten, undefined, "A credential is returned from the CredentialContainer."); assert_equals(credentialGotten.type, "identity", "The credential is an IdentityCredential"); assert_equals(credentialGotten.id, "wpt-pick-me", "The identity matches the argument"); - + assert_equals(credentialGotten.token, "token1", "The token matches the argument"); let promise3 = navigator.credentials.get({identity: {providers: []}}); assert_true(promise3 instanceof Promise, "The return value of get must be a promise."); @@ -276,6 +278,40 @@ promise_test(async t => { }, "Cross-origin identity credential collection is correctly returned when the endpoint returns success"); +promise_test(async t => { + let getCredentialPromise, credentialGotten; + + await createLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", { + id: "wpt-pick-me", + type: "correct" + }); + + getCredentialPromise = navigator.credentials.get({identity: {providers: [{effectiveType: "correct"}]}}); + assert_true(getCredentialPromise instanceof Promise, "The return value of get must be a promise."); + fedcm_select_account_promise(t, 0); + credentialGotten = await getCredentialPromise; + assert_not_equals(credentialGotten, null, "An effective credential is returned from the CredentialContainer."); + await clearLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", "wpt-pick-me"); + +}, "Cross-origin identity credential collection is correctly returned when the type matches"); + +promise_test(async t => { + let getCredentialPromise, credentialGotten; + + await createLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", { + id: "wpt-pick-me", + type: "correct" + }); + + getCredentialPromise = navigator.credentials.get({identity: {providers: [{effectiveType: "wrong"}]}}); + assert_true(getCredentialPromise instanceof Promise, "The return value of get must be a promise."); + fedcm_select_account_promise(t, 0); + credentialGotten = await getCredentialPromise; + assert_equals(credentialGotten, null, "An effective credential is not returned from the CredentialContainer."); + await clearLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", "wpt-pick-me"); + +}, "Cross-origin identity credential collection is correctly filtered when the type does not match"); + promise_test(async t => { let initData = { id : "wpt-pick-me", diff --git a/tests/wpt/tests/fedcm/lfedcm-identity.discovery.tentative.sub.https.html b/tests/wpt/tests/fedcm/lfedcm-identity.discovery.tentative.sub.https.html index 2d5e8e8db47..92625284eee 100644 --- a/tests/wpt/tests/fedcm/lfedcm-identity.discovery.tentative.sub.https.html +++ b/tests/wpt/tests/fedcm/lfedcm-identity.discovery.tentative.sub.https.html @@ -16,7 +16,7 @@ promise_test(async t => { let getCredentialPromise, credentialGotten; await test_driver.bless(); - getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}/", loginURL : `https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}/")}`, loginTarget : "popup"}]}}); + getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}/", loginURL : `https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}/")}&close=true`, loginTarget : "popup"}]}}); credentialGotten = await getCredentialPromise; fedcm_select_account_promise(t, 0); assert_not_equals(credentialGotten, null, "A discovered credential is returned from the CredentialContainer."); @@ -28,7 +28,7 @@ promise_test(async t => { let getCredentialPromise, credentialGotten; await test_driver.bless(); - getCredentialPromise = navigator.credentials.get({identity: {providers: [{loginURL : `https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}/")}`, loginTarget : "popup"}]}}); + getCredentialPromise = navigator.credentials.get({identity: {providers: [{loginURL : `https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}/")}&close=true`, loginTarget : "popup"}]}}); fedcm_select_account_promise(t, 0); credentialGotten = await getCredentialPromise; assert_not_equals(credentialGotten, null, "A discovered credential is returned from the CredentialContainer."); @@ -40,7 +40,7 @@ promise_test(async t => { let getCredentialPromise, credentialGotten; await test_driver.bless(); - getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}/", loginURL : `https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&url=cors`, loginTarget : "popup", effectiveQueryURL: "https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/acao-cors.py"}]}}); + getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}/", loginURL : `https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&url=cors&close=true`, loginTarget : "popup", effectiveQueryURL: "https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/acao-cors.py"}]}}); fedcm_select_account_promise(t, 0); credentialGotten = await getCredentialPromise; assert_not_equals(credentialGotten, null, "A discovered credential is returned from the CredentialContainer."); @@ -64,12 +64,12 @@ promise_test(async t => { await test_driver.bless(); let state = "pending"; - getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}/", loginURL : `https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&postMessage&origin=${encodeURIComponent("https://{{hosts[alt][]}}:{{ports[https][0]}}/")}`, loginTarget : "popup"}]}}); + getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}/", loginURL : `https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&postMessage&origin=${encodeURIComponent("https://{{hosts[alt][]}}:{{ports[https][0]}}/")}&close=true`, loginTarget : "popup"}]}}); getCredentialPromise.finally(() => {state = "fulfilled"}); await createdPromise; assert_equals(state, "pending", "promise is not fulfilled during discovery window by get."); - window.open(`https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}/")}`); + window.open(`https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}/")}&close=true`); fedcm_select_account_promise(t, 0); credentialGotten = await getCredentialPromise; @@ -95,12 +95,12 @@ promise_test(async t => { await test_driver.bless(); let state = "pending"; - getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}/", loginURL : `https://{{hosts[alt][www]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&postMessage&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}/")}`, loginTarget : "popup"}]}}); + getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}/", loginURL : `https://{{hosts[alt][www]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&postMessage&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}/")}&close=true`, loginTarget : "popup"}]}}); getCredentialPromise.finally(() => {state = "fulfilled"}); await createdPromise; assert_equals(state, "pending", "promise is not fulfilled during discovery window by get."); - window.open(`https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}")}`); + window.open(`https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}")}&close=true`); credentialGotten = await getCredentialPromise; fedcm_select_account_promise(t, 0); assert_not_equals(credentialGotten, null, "Resolved with credential because the credential was stored."); diff --git a/tests/wpt/tests/fedcm/support/lfedcm-identity.provider-create.sub.html b/tests/wpt/tests/fedcm/support/lfedcm-identity.provider-create.sub.html index 4b60c7866f0..7cec8bdf97f 100644 --- a/tests/wpt/tests/fedcm/support/lfedcm-identity.provider-create.sub.html +++ b/tests/wpt/tests/fedcm/support/lfedcm-identity.provider-create.sub.html @@ -12,6 +12,9 @@ async function createCredentials(params) { if (params.get("origin")) { identityData.effectiveOrigins = [params.get("origin")] } + if (params.get("type")) { + identityData.effectiveType = params.get("type") + } if (params.get("url") == "cors") { identityData.effectiveQueryURL = "https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/acao-cors.py"; } else if (params.get("url") == "no-cors") { @@ -26,6 +29,9 @@ async function createCredentials(params) { const queryString = window.location.search; const params = new URLSearchParams(queryString); createCredentials(params).then(() => { + if (params.has("close")) { + window.close(); + } if (params.has("postMessage")) { window.opener.postMessage("created", "*"); } diff --git a/tests/wpt/tests/fenced-frame/automatic-beacon-data-cross-origin-subframe.https.html b/tests/wpt/tests/fenced-frame/automatic-beacon-data-cross-origin-subframe.https.html new file mode 100644 index 00000000000..d97bf370dc9 --- /dev/null +++ b/tests/wpt/tests/fenced-frame/automatic-beacon-data-cross-origin-subframe.https.html @@ -0,0 +1,51 @@ + +Test window.fence.setReportEventDataForAutomaticBeacons + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/fenced-frame/resources/remote-context-executor.https.html b/tests/wpt/tests/fenced-frame/resources/remote-context-executor.https.html index 6b2f5ccc000..93e2ab905e7 100644 --- a/tests/wpt/tests/fenced-frame/resources/remote-context-executor.https.html +++ b/tests/wpt/tests/fenced-frame/resources/remote-context-executor.https.html @@ -1,6 +1,7 @@ + diff --git a/tests/wpt/tests/fullscreen/api/document-exit-fullscreen-nested-in-iframe.html b/tests/wpt/tests/fullscreen/api/document-exit-fullscreen-nested-in-iframe.html index 893814dec3a..a735fc70e4a 100644 --- a/tests/wpt/tests/fullscreen/api/document-exit-fullscreen-nested-in-iframe.html +++ b/tests/wpt/tests/fullscreen/api/document-exit-fullscreen-nested-in-iframe.html @@ -7,29 +7,54 @@ diff --git a/tests/wpt/tests/html-aam/dir-role.tentative.html b/tests/wpt/tests/html-aam/dir-role.tentative.html new file mode 100644 index 00000000000..e5c374b90c2 --- /dev/null +++ b/tests/wpt/tests/html-aam/dir-role.tentative.html @@ -0,0 +1,28 @@ + + + + HTML-AAM dir Element Role Verification Test + + + + + + + + + + +

Tentative test for the expected role mappings of the obsolete dir element. + The computedrole mappings are defined in HTML-AAM.

+ +

Merge the outcome of this test into roles.html in the appropriate alphabetical order, when it is no longer considered tentative:

+ +
  • x
  • x
  • + + + + + + diff --git a/tests/wpt/tests/html-aam/roles.html b/tests/wpt/tests/html-aam/roles.html index 387acc260dd..a50c767a861 100644 --- a/tests/wpt/tests/html-aam/roles.html +++ b/tests/wpt/tests/html-aam/roles.html @@ -45,17 +45,20 @@
    x
    +
    x
    x
    xx
    x +
    +
    x
    x
    diff --git a/tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/grandparent_location_aboutsrcdoc.sub.window.js b/tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/grandparent_location_aboutsrcdoc.sub.window.js new file mode 100644 index 00000000000..c182c29cfc7 --- /dev/null +++ b/tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/grandparent_location_aboutsrcdoc.sub.window.js @@ -0,0 +1,88 @@ +// META: script=./resources/testharness.js +// META: script=./resources/testharnessreport.js + +function run_test(cross_origin, same_doc, sandbox, name) { + promise_test(async t => { + const child_frame = document.createElement('iframe'); + + const child_relative_path = './resources/child_with_srcdoc_subframe.window.html'; + if (cross_origin) { + const new_origin = new URL('http://{{hosts[][www]}}:{{ports[http][1]}}'); + const child_url_same_site = new URL(child_relative_path, location.href); + child_frame.src = new_origin.origin + child_url_same_site.pathname; + } else { + child_frame.src = child_relative_path; + } + const iframe_load = new Promise(resolve => { + child_frame.onload = resolve; + }); + document.body.appendChild(child_frame); + await iframe_load; + + let load_count = 0; + const test_finished = new Promise(resolve => { + window.onmessage = (e) => { + load_count++; + if (load_count == 1) { + assert_equals(e.data, "about:srcdoc"); + // Allow the main frame to try and set the grand child's location. + if (same_doc) { + if (!sandbox) { + // If `sandbox` is set, the child will self-navigate, otherwise + // the main frame initiates the same-document navigation. + frames[0][0].location = "about:srcdoc#the_anchor"; + } + } else { + frames[0][0].location = "about:srcdoc"; + } + } else if (load_count == 2) { + if (same_doc) { + // The result for same_doc is the same whether cross_origin is set + // or not. + assert_equals(e.data, "about:srcdoc#the_anchor"); + } else if (cross_origin) { + const child_url = new URL(child_frame.src); + const expected_data = "SecurityError: " + + "Failed to read a named property 'href' from 'Location': " + + "Blocked a frame with origin \"" + child_url.origin + + "\" from accessing a cross-origin frame." + assert_equals(String(e.data), expected_data); + } else { + assert_equals(e.data, "about:srcdoc"); + } + resolve(); + } + } + }); + let cmd_str = "load grandchild"; + if (sandbox) { + cmd_str += " sandbox"; + } + child_frame.contentWindow.postMessage(cmd_str, "*"); + await test_finished; + + t.add_cleanup(() => child_frame.remove()) + }, name); +} + +onload = () => { + // A cross-origin frame cannot set about:srcdoc but can do same-doc navigations. + run_test(cross_origin = true, same_doc = false, sandbox = false, name = + "cross-origin grandparent sets location to about:srcdoc"); + run_test(cross_origin = true, same_doc = true, sandbox = false, name = + "cross-origin grandparent sets location in same-doc navigation"); + + // A same-origin frame can set about:srcdoc and also do same-doc navigations. + run_test(cross_origin = false, same_doc = false, sandbox = false, name = + "same-origin grandparent sets location to about:srcdoc"); + run_test(cross_origin = false, same_doc = true, sandbox = false, name = + "same-origin grandparent sets location in same-doc navigation"); + + // For the sandboxed srcdoc cases, the srcdoc will be cross-origin to + // everything but itself, but it should be able to navigate itself same- + // document. + run_test(cross_origin = false, same_doc = true, sandbox = true, name = + "same-origin grandparent with sandboxed srcdoc grandchild that self navigates"); + run_test(cross_origin = true, same_doc = true, sandbox = true, name = + "cross-origin grandparent with sandboxed srcdoc grandchild that self navigate"); +}; diff --git a/tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/grandparent_session_aboutsrcdoc.sub.window.js b/tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/grandparent_session_aboutsrcdoc.sub.window.js new file mode 100644 index 00000000000..6f087355b11 --- /dev/null +++ b/tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/grandparent_session_aboutsrcdoc.sub.window.js @@ -0,0 +1,71 @@ +// META: script=./resources/testharness.js +// META: script=./resources/testharnessreport.js + +function run_test(cross_origin, sandbox, name) { + promise_test(async test => { + let child_frame = document.createElement('iframe'); + + let load_count = 0; + const test_finished = new Promise(resolve => { + window.onmessage = (e) => { + load_count++; + if (load_count == 1) { + // Initial load. + assert_equals(e.data, "about:srcdoc"); + // Navigate child to a different page. + child_frame.src = "./resources/child2.html"; + } else if (load_count == 2) { + // Make sure we navigated away from the frame with the srcdoc, then + // go back. + assert_equals(e.data, child_frame.src); + history.back(); + } else if (load_count == 3) { + // Verify the session restore was able to load the srcdoc. + assert_equals(e.data, "about:srcdoc"); + resolve(); + } + }; + }); + let cmd_str = "load grandchild"; + if (sandbox) { + cmd_str += " sandbox"; + } + + // It would be nice not to have to hardcode the entire relative path for the + // child in the cross-origin case. + let filename = "child_with_static_srcdoc.html"; + if (sandbox) { + let filename = "child_with_static_sandbox_srcdoc.html" + } + + const child_relative_path = './resources/' + filename; + if (cross_origin) { + const new_origin = new URL('http://{{hosts[][www]}}:{{ports[http][1]}}'); + const child_url_same_site = new URL(child_relative_path, location.href); + child_frame.src = new_origin.origin + child_url_same_site.pathname; + } else { + child_frame.src = child_relative_path; + } + + document.body.appendChild(child_frame); + await test_finished; + + // Cleanup. + document.body.removeChild(child_frame); + }, name); +} + +onload = () => { + // Four tests to make sure the about:srcdoc loads when being restored from + // session history. The srcdoc itself can be either sandboxed or not, and + // the caller of history.back() can be cross-origin or same-origin to the + // oarent of the srcdoc. + run_test(cross_origin = true, sandbox = false, + name = "Grandparent with cross-origin srdoc grandchild session"); + run_test(cross_origin = true, sandbox = true, + name = "Grandparent with cross-origin sandboxed srdoc grandchild session"); + run_test(cross_origin = false, sandbox = false, + name = "Grandparent with same-origin srdoc grandchild session"); + run_test(cross_origin = false, sandbox = true, + name = "Grandparent with same-origin sandboxed srdoc grandchild session"); +} diff --git a/tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/resources/child2.html b/tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/resources/child2.html new file mode 100644 index 00000000000..c583bb26f9b --- /dev/null +++ b/tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/resources/child2.html @@ -0,0 +1,11 @@ + + + + + + child 2 + diff --git a/tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/resources/child_with_srcdoc_subframe.window.js b/tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/resources/child_with_srcdoc_subframe.window.js new file mode 100644 index 00000000000..85b89df5738 --- /dev/null +++ b/tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/resources/child_with_srcdoc_subframe.window.js @@ -0,0 +1,43 @@ +window.onmessage = (e) => { + assert_true(e.data.includes("load grandchild")); + + let srcdoc_content = ` +

    Grandchild

    The Anchor + + + + + + diff --git a/tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/resources/child_with_static_srcdoc.html b/tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/resources/child_with_static_srcdoc.html new file mode 100644 index 00000000000..8e0c2504c30 --- /dev/null +++ b/tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/resources/child_with_static_srcdoc.html @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.ctm.ctx-filter-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.ctm.ctx-filter-expected.html new file mode 100644 index 00000000000..fd5b51f7dea --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.ctm.ctx-filter-expected.html @@ -0,0 +1,27 @@ + + +Canvas test: 2d.layer.ctm.ctx-filter +

    2d.layer.ctm.ctx-filter

    +

    Checks that parent transforms don't affect context filters.

    + +

    FAIL (fallback content)

    +
    + diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.ctm.ctx-filter.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.ctm.ctx-filter.html new file mode 100644 index 00000000000..66d57624bdc --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.ctm.ctx-filter.html @@ -0,0 +1,38 @@ + + + +Canvas test: 2d.layer.ctm.ctx-filter +

    2d.layer.ctm.ctx-filter

    +

    Checks that parent transforms don't affect context filters.

    + +

    FAIL (fallback content)

    +
    + diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-filter-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-filter-expected.html deleted file mode 100644 index 88057fc354a..00000000000 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-filter-expected.html +++ /dev/null @@ -1,17 +0,0 @@ - - -Canvas test: 2d.layer.global-filter -

    2d.layer.global-filter

    -

    Tests that layers ignore the global context filter.

    - -

    FAIL (fallback content)

    -
    - diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-filter.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-filter.html deleted file mode 100644 index cf46f41b974..00000000000 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-filter.html +++ /dev/null @@ -1,26 +0,0 @@ - - - -Canvas test: 2d.layer.global-filter -

    2d.layer.global-filter

    -

    Tests that layers ignore the global context filter.

    - -

    FAIL (fallback content)

    -
    - diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.ctx-filter.no-transform-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.ctx-filter.no-transform-expected.html new file mode 100644 index 00000000000..611fb758e71 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.ctx-filter.no-transform-expected.html @@ -0,0 +1,578 @@ + + +Canvas test: 2d.layer.global-states.ctx-filter.no-transform +

    2d.layer.global-states.ctx-filter.no-transform

    +

    Checks that layers correctly use global render states.

    + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + +
    diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.ctx-filter.no-transform.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.ctx-filter.no-transform.html new file mode 100644 index 00000000000..a7636efcef7 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.ctx-filter.no-transform.html @@ -0,0 +1,611 @@ + + + +Canvas test: 2d.layer.global-states.ctx-filter.no-transform +

    2d.layer.global-states.ctx-filter.no-transform

    +

    Checks that layers correctly use global render states.

    + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + +
    diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.ctx-filter.rotation-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.ctx-filter.rotation-expected.html new file mode 100644 index 00000000000..0460013c856 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.ctx-filter.rotation-expected.html @@ -0,0 +1,610 @@ + + +Canvas test: 2d.layer.global-states.ctx-filter.rotation +

    2d.layer.global-states.ctx-filter.rotation

    +

    Checks that layers correctly use global render states.

    + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + +
    diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.ctx-filter.rotation.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.ctx-filter.rotation.html new file mode 100644 index 00000000000..677fb3bae75 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.ctx-filter.rotation.html @@ -0,0 +1,643 @@ + + + +Canvas test: 2d.layer.global-states.ctx-filter.rotation +

    2d.layer.global-states.ctx-filter.rotation

    +

    Checks that layers correctly use global render states.

    + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + +
    diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.no-transform-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.no-transform-expected.html new file mode 100644 index 00000000000..a00b50b52ff --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.no-transform-expected.html @@ -0,0 +1,786 @@ + + +Canvas test: 2d.layer.global-states.filter.ctx-filter.no-transform +

    2d.layer.global-states.filter.ctx-filter.no-transform

    +

    Checks that layers with filters correctly use global render states.

    + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + +
    diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.no-transform.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.no-transform.html new file mode 100644 index 00000000000..6c327382eaf --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.no-transform.html @@ -0,0 +1,611 @@ + + + +Canvas test: 2d.layer.global-states.filter.ctx-filter.no-transform +

    2d.layer.global-states.filter.ctx-filter.no-transform

    +

    Checks that layers with filters correctly use global render states.

    + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + +
    diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.rotation-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.rotation-expected.html new file mode 100644 index 00000000000..b9cf004179a --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.rotation-expected.html @@ -0,0 +1,818 @@ + + +Canvas test: 2d.layer.global-states.filter.ctx-filter.rotation +

    2d.layer.global-states.filter.ctx-filter.rotation

    +

    Checks that layers with filters correctly use global render states.

    + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + +
    diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.rotation.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.rotation.html new file mode 100644 index 00000000000..7a7ae56980a --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.ctx-filter.rotation.html @@ -0,0 +1,643 @@ + + + +Canvas test: 2d.layer.global-states.filter.ctx-filter.rotation +

    2d.layer.global-states.filter.ctx-filter.rotation

    +

    Checks that layers with filters correctly use global render states.

    + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + +
    diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.no-transform-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform-expected.html similarity index 85% rename from tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.no-transform-expected.html rename to tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform-expected.html index c57e2568478..2475d528033 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.no-transform-expected.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform-expected.html @@ -1,7 +1,7 @@ -Canvas test: 2d.layer.global-states.filter.no-transform -

    2d.layer.global-states.filter.no-transform

    +Canvas test: 2d.layer.global-states.filter.no-cxt-filter.no-transform +

    2d.layer.global-states.filter.no-cxt-filter.no-transform

    Checks that layers with filters correctly use global render states.

    - + - - + + `; @@ -46,6 +46,7 @@ // No globalAlpha. // No globalCompositeOperation. // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -69,14 +70,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -92,6 +93,7 @@ ctx.globalAlpha = 0.75; // No globalCompositeOperation. // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -115,14 +117,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -138,6 +140,7 @@ // No globalAlpha. ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -161,14 +164,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -184,6 +187,7 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -207,14 +211,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -230,6 +234,7 @@ // No globalAlpha. ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -253,14 +258,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -276,6 +281,7 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -299,14 +305,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -322,6 +328,7 @@ // No globalAlpha. ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -345,14 +352,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -368,6 +375,7 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -391,14 +399,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -417,6 +425,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -440,14 +449,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -466,6 +475,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -489,14 +499,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -515,6 +525,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -538,14 +549,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -564,6 +575,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -587,14 +599,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -613,6 +625,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -636,14 +649,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -662,6 +675,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -685,14 +699,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -711,6 +725,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -734,14 +749,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -760,6 +775,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.no-transform.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform.html similarity index 84% rename from tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.no-transform.html rename to tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform.html index dc55eeb38cf..a0bcfb39782 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.no-transform.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform.html @@ -1,8 +1,8 @@ - -Canvas test: 2d.layer.global-states.filter.no-transform -

    2d.layer.global-states.filter.no-transform

    + +Canvas test: 2d.layer.global-states.filter.no-cxt-filter.no-transform +

    2d.layer.global-states.filter.no-cxt-filter.no-transform

    Checks that layers with filters correctly use global render states.

    @@ -62,17 +63,18 @@ ctx.globalAlpha = 0.75; // No globalCompositeOperation. // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -97,17 +99,18 @@ // No globalAlpha. ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -132,17 +135,18 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -167,17 +171,18 @@ // No globalAlpha. ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -202,17 +207,18 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -237,17 +243,18 @@ // No globalAlpha. ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -272,17 +279,18 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -310,17 +318,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -348,17 +357,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -386,17 +396,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -424,17 +435,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -462,17 +474,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -500,17 +513,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -538,17 +552,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -576,17 +591,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.rotation-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.rotation-expected.html similarity index 86% rename from tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.rotation-expected.html rename to tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.rotation-expected.html index 650a40bb80c..9553485eaf9 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.rotation-expected.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.rotation-expected.html @@ -1,7 +1,7 @@ -Canvas test: 2d.layer.global-states.filter.rotation -

    2d.layer.global-states.filter.rotation

    +Canvas test: 2d.layer.global-states.filter.no-cxt-filter.rotation +

    2d.layer.global-states.filter.no-cxt-filter.rotation

    Checks that layers with filters correctly use global render states.

    - + - - + + `; @@ -48,6 +48,7 @@ // No globalAlpha. // No globalCompositeOperation. // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -71,14 +72,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -96,6 +97,7 @@ ctx.globalAlpha = 0.75; // No globalCompositeOperation. // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -119,14 +121,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -144,6 +146,7 @@ // No globalAlpha. ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -167,14 +170,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -192,6 +195,7 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -215,14 +219,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -240,6 +244,7 @@ // No globalAlpha. ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -263,14 +268,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -288,6 +293,7 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -311,14 +317,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -336,6 +342,7 @@ // No globalAlpha. ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -359,14 +366,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -384,6 +391,7 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -407,14 +415,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -435,6 +443,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -458,14 +467,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -486,6 +495,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -509,14 +519,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -537,6 +547,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -560,14 +571,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -588,6 +599,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -611,14 +623,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -639,6 +651,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -662,14 +675,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -690,6 +703,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -713,14 +727,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -741,6 +755,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -764,14 +779,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -792,6 +807,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.rotation.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.rotation.html similarity index 85% rename from tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.rotation.html rename to tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.rotation.html index 49676d458ef..fcfe914fc01 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.rotation.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.no-cxt-filter.rotation.html @@ -1,8 +1,8 @@ - -Canvas test: 2d.layer.global-states.filter.rotation -

    2d.layer.global-states.filter.rotation

    + +Canvas test: 2d.layer.global-states.filter.no-cxt-filter.rotation +

    2d.layer.global-states.filter.no-cxt-filter.rotation

    Checks that layers with filters correctly use global render states.

    @@ -66,17 +67,18 @@ ctx.globalAlpha = 0.75; // No globalCompositeOperation. // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -103,17 +105,18 @@ // No globalAlpha. ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -140,17 +143,18 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -177,17 +181,18 @@ // No globalAlpha. ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -214,17 +219,18 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -251,17 +257,18 @@ // No globalAlpha. ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -288,17 +295,18 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -328,17 +336,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -368,17 +377,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -408,17 +418,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -448,17 +459,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -488,17 +500,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -528,17 +541,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -568,17 +582,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -608,17 +623,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.no-transform-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.no-cxt-filter.no-transform-expected.html similarity index 90% rename from tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.no-transform-expected.html rename to tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.no-cxt-filter.no-transform-expected.html index ad6f64043f6..cf9fc1042e6 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.no-transform-expected.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.no-cxt-filter.no-transform-expected.html @@ -1,7 +1,7 @@ -Canvas test: 2d.layer.global-states.no-transform -

    2d.layer.global-states.no-transform

    +Canvas test: 2d.layer.global-states.no-cxt-filter.no-transform +

    2d.layer.global-states.no-cxt-filter.no-transform

    Checks that layers correctly use global render states.

    @@ -59,15 +60,16 @@ ctx.globalAlpha = 0.75; // No globalCompositeOperation. // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -92,15 +94,16 @@ // No globalAlpha. ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -125,15 +128,16 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -158,15 +162,16 @@ // No globalAlpha. ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -191,15 +196,16 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -224,15 +230,16 @@ // No globalAlpha. ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -257,15 +264,16 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -293,15 +301,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -329,15 +338,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -365,15 +375,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -401,15 +412,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -437,15 +449,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -473,15 +486,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -509,15 +523,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -545,15 +560,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.no-transform.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.no-cxt-filter.no-transform.html similarity index 90% rename from tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.no-transform.html rename to tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.no-cxt-filter.no-transform.html index cabbe954cee..ca6791971f5 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.no-transform.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.no-cxt-filter.no-transform.html @@ -1,8 +1,8 @@ - -Canvas test: 2d.layer.global-states.no-transform -

    2d.layer.global-states.no-transform

    + +Canvas test: 2d.layer.global-states.no-cxt-filter.no-transform +

    2d.layer.global-states.no-cxt-filter.no-transform

    Checks that layers correctly use global render states.

    2d.layer.global-states.rotation +Canvas test: 2d.layer.global-states.no-cxt-filter.rotation +

    2d.layer.global-states.no-cxt-filter.rotation

    Checks that layers correctly use global render states.

    @@ -63,15 +64,16 @@ ctx.globalAlpha = 0.75; // No globalCompositeOperation. // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -98,15 +100,16 @@ // No globalAlpha. ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -133,15 +136,16 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -168,15 +172,16 @@ // No globalAlpha. ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -203,15 +208,16 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -238,15 +244,16 @@ // No globalAlpha. ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -273,15 +280,16 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -311,15 +319,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -349,15 +358,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -387,15 +397,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -425,15 +436,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -463,15 +475,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -501,15 +514,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -539,15 +553,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -577,15 +592,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.rotation.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.no-cxt-filter.rotation.html similarity index 90% rename from tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.rotation.html rename to tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.no-cxt-filter.rotation.html index 240a510b844..f7914c6a70c 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.rotation.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.no-cxt-filter.rotation.html @@ -1,8 +1,8 @@ - -Canvas test: 2d.layer.global-states.rotation -

    2d.layer.global-states.rotation

    + +Canvas test: 2d.layer.global-states.no-cxt-filter.rotation +

    2d.layer.global-states.no-cxt-filter.rotation

    Checks that layers correctly use global render states.

    2d.layer.layer-rendering-state-reset-in-layer

    -

    Tests that layers ignore the global context filter.

    +

    Tests that rendering states are reset in layers and restored after.

    Actual output:

    @@ -26,6 +26,7 @@ test(t => { ctx.shadowOffsetX = 10; ctx.shadowOffsetY = 20; ctx.shadowBlur = 30; + ctx.filter = 'blur(5px)'; _assertSame(ctx.globalAlpha, 0.5, "ctx.globalAlpha", "0.5"); _assertSame(ctx.globalCompositeOperation, 'xor', "ctx.globalCompositeOperation", "'xor'"); @@ -33,6 +34,7 @@ test(t => { _assertSame(ctx.shadowOffsetX, 10, "ctx.shadowOffsetX", "10"); _assertSame(ctx.shadowOffsetY, 20, "ctx.shadowOffsetY", "20"); _assertSame(ctx.shadowBlur, 30, "ctx.shadowBlur", "30"); + _assertSame(ctx.filter, 'blur(5px)', "ctx.filter", "'blur(5px)'"); ctx.beginLayer(); @@ -42,6 +44,7 @@ test(t => { _assertSame(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0"); _assertSame(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0"); _assertSame(ctx.shadowBlur, 0, "ctx.shadowBlur", "0"); + _assertSame(ctx.filter, 'none', "ctx.filter", "'none'"); ctx.endLayer(); @@ -51,7 +54,8 @@ test(t => { _assertSame(ctx.shadowOffsetX, 10, "ctx.shadowOffsetX", "10"); _assertSame(ctx.shadowOffsetY, 20, "ctx.shadowOffsetY", "20"); _assertSame(ctx.shadowBlur, 30, "ctx.shadowBlur", "30"); + _assertSame(ctx.filter, 'blur(5px)', "ctx.filter", "'blur(5px)'"); -}, "Tests that layers ignore the global context filter."); +}, "Tests that rendering states are reset in layers and restored after."); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.nested-ctx-filter-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.nested-ctx-filter-expected.html new file mode 100644 index 00000000000..77d41f725ea --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.nested-ctx-filter-expected.html @@ -0,0 +1,25 @@ + + +Canvas test: 2d.layer.nested-ctx-filter +

    2d.layer.nested-ctx-filter

    +

    Tests nested canvas layers with context filters.

    + +

    FAIL (fallback content)

    +
    + diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.nested-ctx-filter.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.nested-ctx-filter.html new file mode 100644 index 00000000000..68c8b06857b --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.nested-ctx-filter.html @@ -0,0 +1,23 @@ + + + +Canvas test: 2d.layer.nested-ctx-filter +

    2d.layer.nested-ctx-filter

    +

    Tests nested canvas layers with context filters.

    + +

    FAIL (fallback content)

    +
    + diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.reset.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.reset.html index 9ad779abfdd..ecb3903b008 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.reset.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.reset.html @@ -18,6 +18,7 @@ ctx.shadowOffsetY = 3; ctx.shadowColor = 'rgba(0, 30, 0, 0.3)'; ctx.shadowBlur = 3; + ctx.filter = 'blur(5px)'; ctx.beginLayer({filter: {name: 'dropShadow', dx: -3, dy: 3}}); @@ -28,6 +29,7 @@ ctx.shadowOffsetY = 6; ctx.shadowColor = 'rgba(0, 60, 0, 0.6)'; ctx.shadowBlur = 3; + ctx.filter = 'blur(15px)'; ctx.reset(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter-expected.html new file mode 100644 index 00000000000..fd5b51f7dea --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter-expected.html @@ -0,0 +1,27 @@ + + +Canvas test: 2d.layer.ctm.ctx-filter +

    2d.layer.ctm.ctx-filter

    +

    Checks that parent transforms don't affect context filters.

    + +

    FAIL (fallback content)

    +
    + diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter.html new file mode 100644 index 00000000000..8ef1bbee08f --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter.html @@ -0,0 +1,41 @@ + + + +Canvas test: 2d.layer.ctm.ctx-filter +

    2d.layer.ctm.ctx-filter

    +

    Checks that parent transforms don't affect context filters.

    + +

    FAIL (fallback content)

    +
    + diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter.w.html new file mode 100644 index 00000000000..8f9981a6fc5 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.ctm.ctx-filter.w.html @@ -0,0 +1,55 @@ + + + + +Canvas test: 2d.layer.ctm.ctx-filter +

    2d.layer.ctm.ctx-filter

    +

    Checks that parent transforms don't affect context filters.

    + +

    FAIL (fallback content)

    +
    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-filter-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-filter-expected.html deleted file mode 100644 index 88057fc354a..00000000000 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-filter-expected.html +++ /dev/null @@ -1,17 +0,0 @@ - - -Canvas test: 2d.layer.global-filter -

    2d.layer.global-filter

    -

    Tests that layers ignore the global context filter.

    - -

    FAIL (fallback content)

    -
    - diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-filter.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-filter.html deleted file mode 100644 index 2388a06a964..00000000000 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-filter.html +++ /dev/null @@ -1,29 +0,0 @@ - - - -Canvas test: 2d.layer.global-filter -

    2d.layer.global-filter

    -

    Tests that layers ignore the global context filter.

    - -

    FAIL (fallback content)

    -
    - diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform-expected.html new file mode 100644 index 00000000000..611fb758e71 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform-expected.html @@ -0,0 +1,578 @@ + + +Canvas test: 2d.layer.global-states.ctx-filter.no-transform +

    2d.layer.global-states.ctx-filter.no-transform

    +

    Checks that layers correctly use global render states.

    + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + +
    diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform.html new file mode 100644 index 00000000000..483cbd077f7 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform.html @@ -0,0 +1,675 @@ + + + +Canvas test: 2d.layer.global-states.ctx-filter.no-transform +

    2d.layer.global-states.ctx-filter.no-transform

    +

    Checks that layers correctly use global render states.

    + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + +
    diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform.w.html new file mode 100644 index 00000000000..50cc215d852 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.no-transform.w.html @@ -0,0 +1,902 @@ + + + + +Canvas test: 2d.layer.global-states.ctx-filter.no-transform +

    2d.layer.global-states.ctx-filter.no-transform

    +

    Checks that layers correctly use global render states.

    + + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + +
    + diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation-expected.html new file mode 100644 index 00000000000..0460013c856 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation-expected.html @@ -0,0 +1,610 @@ + + +Canvas test: 2d.layer.global-states.ctx-filter.rotation +

    2d.layer.global-states.ctx-filter.rotation

    +

    Checks that layers correctly use global render states.

    + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + +
    diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation.html new file mode 100644 index 00000000000..fde83b631e2 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation.html @@ -0,0 +1,707 @@ + + + +Canvas test: 2d.layer.global-states.ctx-filter.rotation +

    2d.layer.global-states.ctx-filter.rotation

    +

    Checks that layers correctly use global render states.

    + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + +
    diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation.w.html new file mode 100644 index 00000000000..3ba60548851 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.ctx-filter.rotation.w.html @@ -0,0 +1,934 @@ + + + + +Canvas test: 2d.layer.global-states.ctx-filter.rotation +

    2d.layer.global-states.ctx-filter.rotation

    +

    Checks that layers correctly use global render states.

    + + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + +
    + diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform-expected.html new file mode 100644 index 00000000000..a00b50b52ff --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform-expected.html @@ -0,0 +1,786 @@ + + +Canvas test: 2d.layer.global-states.filter.ctx-filter.no-transform +

    2d.layer.global-states.filter.ctx-filter.no-transform

    +

    Checks that layers with filters correctly use global render states.

    + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + +
    diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform.html new file mode 100644 index 00000000000..01a366f3f85 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform.html @@ -0,0 +1,675 @@ + + + +Canvas test: 2d.layer.global-states.filter.ctx-filter.no-transform +

    2d.layer.global-states.filter.ctx-filter.no-transform

    +

    Checks that layers with filters correctly use global render states.

    + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + +
    diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform.w.html new file mode 100644 index 00000000000..e9a5d4265c7 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform.w.html @@ -0,0 +1,902 @@ + + + + +Canvas test: 2d.layer.global-states.filter.ctx-filter.no-transform +

    2d.layer.global-states.filter.ctx-filter.no-transform

    +

    Checks that layers with filters correctly use global render states.

    + + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + +
    + diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation-expected.html new file mode 100644 index 00000000000..b9cf004179a --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation-expected.html @@ -0,0 +1,818 @@ + + +Canvas test: 2d.layer.global-states.filter.ctx-filter.rotation +

    2d.layer.global-states.filter.ctx-filter.rotation

    +

    Checks that layers with filters correctly use global render states.

    + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + +
    diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation.html new file mode 100644 index 00000000000..b3221ed5181 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation.html @@ -0,0 +1,707 @@ + + + +Canvas test: 2d.layer.global-states.filter.ctx-filter.rotation +

    2d.layer.global-states.filter.ctx-filter.rotation

    +

    Checks that layers with filters correctly use global render states.

    + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + +
    + +
    diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation.w.html new file mode 100644 index 00000000000..3468b0020f3 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation.w.html @@ -0,0 +1,934 @@ + + + + +Canvas test: 2d.layer.global-states.filter.ctx-filter.rotation +

    2d.layer.global-states.filter.ctx-filter.rotation

    +

    Checks that layers with filters correctly use global render states.

    + + +
    + +
    no-globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    blending
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    composite
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    copy
    +
    no-shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    no-composite-op
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    blending
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    composite
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    no-globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + + +
    globalAlpha
    +
    copy
    +
    shadow
    + +

    FAIL (fallback content)

    +
    + + +
    + +
    + diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-transform-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform-expected.html similarity index 85% rename from tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-transform-expected.html rename to tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform-expected.html index c57e2568478..2475d528033 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-transform-expected.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform-expected.html @@ -1,7 +1,7 @@ -Canvas test: 2d.layer.global-states.filter.no-transform -

    2d.layer.global-states.filter.no-transform

    +Canvas test: 2d.layer.global-states.filter.no-cxt-filter.no-transform +

    2d.layer.global-states.filter.no-cxt-filter.no-transform

    Checks that layers with filters correctly use global render states.

    - + - - + + `; @@ -46,6 +46,7 @@ // No globalAlpha. // No globalCompositeOperation. // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -69,14 +70,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -92,6 +93,7 @@ ctx.globalAlpha = 0.75; // No globalCompositeOperation. // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -115,14 +117,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -138,6 +140,7 @@ // No globalAlpha. ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -161,14 +164,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -184,6 +187,7 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -207,14 +211,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -230,6 +234,7 @@ // No globalAlpha. ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -253,14 +258,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -276,6 +281,7 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -299,14 +305,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -322,6 +328,7 @@ // No globalAlpha. ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -345,14 +352,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -368,6 +375,7 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -391,14 +399,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -417,6 +425,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -440,14 +449,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -466,6 +475,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -489,14 +499,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -515,6 +525,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -538,14 +549,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -564,6 +575,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -587,14 +599,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -613,6 +625,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -636,14 +649,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -662,6 +675,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -685,14 +699,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -711,6 +725,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -734,14 +749,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -760,6 +775,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-transform.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform.html similarity index 86% rename from tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-transform.html rename to tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform.html index 3afded00405..2d88a8e6be4 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-transform.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform.html @@ -1,8 +1,8 @@ - -Canvas test: 2d.layer.global-states.filter.no-transform -

    2d.layer.global-states.filter.no-transform

    + +Canvas test: 2d.layer.global-states.filter.no-cxt-filter.no-transform +

    2d.layer.global-states.filter.no-cxt-filter.no-transform

    Checks that layers with filters correctly use global render states.

    - -Canvas test: 2d.layer.global-states.filter.no-transform -

    2d.layer.global-states.filter.no-transform

    + +Canvas test: 2d.layer.global-states.filter.no-cxt-filter.no-transform +

    2d.layer.global-states.filter.no-cxt-filter.no-transform

    Checks that layers with filters correctly use global render states.

    @@ -30,17 +30,18 @@ // No globalAlpha. // No globalCompositeOperation. // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -83,17 +84,18 @@ ctx.globalAlpha = 0.75; // No globalCompositeOperation. // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -136,17 +138,18 @@ // No globalAlpha. ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -189,17 +192,18 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -242,17 +246,18 @@ // No globalAlpha. ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -295,17 +300,18 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -348,17 +354,18 @@ // No globalAlpha. ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -401,17 +408,18 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -457,17 +465,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -513,17 +522,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -569,17 +579,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -625,17 +636,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -681,17 +693,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -737,17 +750,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -793,17 +807,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -849,17 +864,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.rotation-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.rotation-expected.html similarity index 86% rename from tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.rotation-expected.html rename to tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.rotation-expected.html index 650a40bb80c..9553485eaf9 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.rotation-expected.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.rotation-expected.html @@ -1,7 +1,7 @@ -Canvas test: 2d.layer.global-states.filter.rotation -

    2d.layer.global-states.filter.rotation

    +Canvas test: 2d.layer.global-states.filter.no-cxt-filter.rotation +

    2d.layer.global-states.filter.no-cxt-filter.rotation

    Checks that layers with filters correctly use global render states.

    - + - - + + `; @@ -48,6 +48,7 @@ // No globalAlpha. // No globalCompositeOperation. // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -71,14 +72,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -96,6 +97,7 @@ ctx.globalAlpha = 0.75; // No globalCompositeOperation. // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -119,14 +121,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -144,6 +146,7 @@ // No globalAlpha. ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -167,14 +170,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -192,6 +195,7 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -215,14 +219,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -240,6 +244,7 @@ // No globalAlpha. ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -263,14 +268,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -288,6 +293,7 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -311,14 +317,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -336,6 +342,7 @@ // No globalAlpha. ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -359,14 +366,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -384,6 +391,7 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.drawImage(img, 0, 0); }; @@ -407,14 +415,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -435,6 +443,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -458,14 +467,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -486,6 +495,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -509,14 +519,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -537,6 +547,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -560,14 +571,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -588,6 +599,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -611,14 +623,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -639,6 +651,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -662,14 +675,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -690,6 +703,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -713,14 +727,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -741,6 +755,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; @@ -764,14 +779,14 @@ width="90" height="90" color-interpolation-filters="sRGB"> - + - - + + `; @@ -792,6 +807,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.drawImage(img, 0, 0); }; diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.rotation.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.rotation.html similarity index 86% rename from tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.rotation.html rename to tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.rotation.html index 851b24adbd5..4ed3bed784e 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.rotation.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.rotation.html @@ -1,8 +1,8 @@ - -Canvas test: 2d.layer.global-states.filter.rotation -

    2d.layer.global-states.filter.rotation

    + +Canvas test: 2d.layer.global-states.filter.no-cxt-filter.rotation +

    2d.layer.global-states.filter.no-cxt-filter.rotation

    Checks that layers with filters correctly use global render states.

    - -Canvas test: 2d.layer.global-states.filter.rotation -

    2d.layer.global-states.filter.rotation

    + +Canvas test: 2d.layer.global-states.filter.no-cxt-filter.rotation +

    2d.layer.global-states.filter.no-cxt-filter.rotation

    Checks that layers with filters correctly use global render states.

    @@ -32,17 +32,18 @@ // No globalAlpha. // No globalCompositeOperation. // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -87,17 +88,18 @@ ctx.globalAlpha = 0.75; // No globalCompositeOperation. // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -142,17 +144,18 @@ // No globalAlpha. ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -197,17 +200,18 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -252,17 +256,18 @@ // No globalAlpha. ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -307,17 +312,18 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -362,17 +368,18 @@ // No globalAlpha. ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -417,17 +424,18 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -475,17 +483,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -533,17 +542,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -591,17 +601,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -649,17 +660,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -707,17 +719,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -765,17 +778,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -823,17 +837,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -881,17 +896,18 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer({filter: [ {name: 'dropShadow', - dx: 5, dy: 5, stdDeviation: 0, floodColor: '#00f'}, + dx: 8, dy: 8, stdDeviation: 0, floodColor: '#00f'}, {name: 'componentTransfer', funcA: {type: "table", tableValues: [0, 0.8]}}]}); ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.no-transform-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.no-transform-expected.html similarity index 90% rename from tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.no-transform-expected.html rename to tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.no-transform-expected.html index ad6f64043f6..cf9fc1042e6 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.no-transform-expected.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.no-transform-expected.html @@ -1,7 +1,7 @@ -Canvas test: 2d.layer.global-states.no-transform -

    2d.layer.global-states.no-transform

    +Canvas test: 2d.layer.global-states.no-cxt-filter.no-transform +

    2d.layer.global-states.no-cxt-filter.no-transform

    Checks that layers correctly use global render states.

    @@ -59,15 +60,16 @@ ctx.globalAlpha = 0.75; // No globalCompositeOperation. // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -92,15 +94,16 @@ // No globalAlpha. ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -125,15 +128,16 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -158,15 +162,16 @@ // No globalAlpha. ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -191,15 +196,16 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -224,15 +230,16 @@ // No globalAlpha. ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -257,15 +264,16 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -293,15 +301,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -329,15 +338,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -365,15 +375,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -401,15 +412,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -437,15 +449,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -473,15 +486,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -509,15 +523,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -545,15 +560,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.no-transform.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.no-transform.html similarity index 91% rename from tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.no-transform.html rename to tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.no-transform.html index d80b669af92..b4e3d1b7951 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.no-transform.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.no-transform.html @@ -1,8 +1,8 @@ - -Canvas test: 2d.layer.global-states.no-transform -

    2d.layer.global-states.no-transform

    + +Canvas test: 2d.layer.global-states.no-cxt-filter.no-transform +

    2d.layer.global-states.no-cxt-filter.no-transform

    Checks that layers correctly use global render states.

    - -Canvas test: 2d.layer.global-states.no-transform -

    2d.layer.global-states.no-transform

    + +Canvas test: 2d.layer.global-states.no-cxt-filter.no-transform +

    2d.layer.global-states.no-cxt-filter.no-transform

    Checks that layers correctly use global render states.

    @@ -30,6 +30,7 @@ // No globalAlpha. // No globalCompositeOperation. // No shadow. + // No filter. ctx.beginLayer(); @@ -38,9 +39,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -83,6 +84,7 @@ ctx.globalAlpha = 0.75; // No globalCompositeOperation. // No shadow. + // No filter. ctx.beginLayer(); @@ -91,9 +93,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -136,6 +138,7 @@ // No globalAlpha. ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.beginLayer(); @@ -144,9 +147,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -189,6 +192,7 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.beginLayer(); @@ -197,9 +201,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -242,6 +246,7 @@ // No globalAlpha. ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.beginLayer(); @@ -250,9 +255,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -295,6 +300,7 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.beginLayer(); @@ -303,9 +309,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -348,6 +354,7 @@ // No globalAlpha. ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.beginLayer(); @@ -356,9 +363,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -401,6 +408,7 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.beginLayer(); @@ -409,9 +417,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -457,6 +465,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer(); @@ -465,9 +474,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -513,6 +522,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer(); @@ -521,9 +531,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -569,6 +579,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer(); @@ -577,9 +588,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -625,6 +636,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer(); @@ -633,9 +645,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -681,6 +693,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer(); @@ -689,9 +702,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -737,6 +750,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer(); @@ -745,9 +759,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -793,6 +807,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer(); @@ -801,9 +816,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -849,6 +864,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer(); @@ -857,9 +873,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.rotation-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.rotation-expected.html similarity index 90% rename from tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.rotation-expected.html rename to tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.rotation-expected.html index 376504488c3..97a9fa4e4c5 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.rotation-expected.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.rotation-expected.html @@ -1,7 +1,7 @@ -Canvas test: 2d.layer.global-states.rotation -

    2d.layer.global-states.rotation

    +Canvas test: 2d.layer.global-states.no-cxt-filter.rotation +

    2d.layer.global-states.no-cxt-filter.rotation

    Checks that layers correctly use global render states.

    @@ -63,15 +64,16 @@ ctx.globalAlpha = 0.75; // No globalCompositeOperation. // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -98,15 +100,16 @@ // No globalAlpha. ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -133,15 +136,16 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -168,15 +172,16 @@ // No globalAlpha. ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -203,15 +208,16 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -238,15 +244,16 @@ // No globalAlpha. ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -273,15 +280,16 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -311,15 +319,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -349,15 +358,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -387,15 +397,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -425,15 +436,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -463,15 +475,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -501,15 +514,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -539,15 +553,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); @@ -577,15 +592,16 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. const canvas2 = document.createElement("canvas"); const ctx2 = canvas2.getContext("2d"); ctx2.globalCompositeOperation = 'screen'; ctx2.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx2.fillRect(10, 25, 40, 50); + ctx2.fillRect(10, 25, 40, 45); ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx2.fillRect(30, 5, 50, 40); + ctx2.fillRect(30, 5, 45, 40); ctx.drawImage(canvas2, 0, 0); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.rotation.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.rotation.html similarity index 91% rename from tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.rotation.html rename to tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.rotation.html index 30d0ef5aca5..40ae3a8bf66 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.rotation.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.no-cxt-filter.rotation.html @@ -1,8 +1,8 @@ - -Canvas test: 2d.layer.global-states.rotation -

    2d.layer.global-states.rotation

    + +Canvas test: 2d.layer.global-states.no-cxt-filter.rotation +

    2d.layer.global-states.no-cxt-filter.rotation

    Checks that layers correctly use global render states.

    - -Canvas test: 2d.layer.global-states.rotation -

    2d.layer.global-states.rotation

    + +Canvas test: 2d.layer.global-states.no-cxt-filter.rotation +

    2d.layer.global-states.no-cxt-filter.rotation

    Checks that layers correctly use global render states.

    @@ -32,6 +32,7 @@ // No globalAlpha. // No globalCompositeOperation. // No shadow. + // No filter. ctx.beginLayer(); @@ -40,9 +41,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -87,6 +88,7 @@ ctx.globalAlpha = 0.75; // No globalCompositeOperation. // No shadow. + // No filter. ctx.beginLayer(); @@ -95,9 +97,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -142,6 +144,7 @@ // No globalAlpha. ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.beginLayer(); @@ -150,9 +153,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -197,6 +200,7 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'multiply'; // No shadow. + // No filter. ctx.beginLayer(); @@ -205,9 +209,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -252,6 +256,7 @@ // No globalAlpha. ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.beginLayer(); @@ -260,9 +265,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -307,6 +312,7 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'source-in'; // No shadow. + // No filter. ctx.beginLayer(); @@ -315,9 +321,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -362,6 +368,7 @@ // No globalAlpha. ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.beginLayer(); @@ -370,9 +377,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -417,6 +424,7 @@ ctx.globalAlpha = 0.75; ctx.globalCompositeOperation = 'copy'; // No shadow. + // No filter. ctx.beginLayer(); @@ -425,9 +433,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -475,6 +483,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer(); @@ -483,9 +492,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -533,6 +542,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer(); @@ -541,9 +551,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -591,6 +601,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer(); @@ -599,9 +610,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -649,6 +660,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer(); @@ -657,9 +669,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -707,6 +719,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer(); @@ -715,9 +728,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -765,6 +778,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer(); @@ -773,9 +787,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -823,6 +837,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer(); @@ -831,9 +846,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); @@ -881,6 +896,7 @@ ctx.shadowOffsetY = 7; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; ctx.shadowBlur = 3; + // No filter. ctx.beginLayer(); @@ -889,9 +905,9 @@ ctx.globalCompositeOperation = 'screen'; ctx.fillStyle = 'rgba(255, 0, 0, 1)'; - ctx.fillRect(10, 25, 40, 50); + ctx.fillRect(10, 25, 40, 45); ctx.fillStyle = 'rgba(0, 255, 0, 1)'; - ctx.fillRect(30, 5, 50, 40); + ctx.fillRect(30, 5, 45, 40); ctx.endLayer(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.html index cebdfd5f27e..9788a72c680 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.html @@ -6,7 +6,7 @@

    2d.layer.layer-rendering-state-reset-in-layer

    -

    Tests that layers ignore the global context filter.

    +

    Tests that rendering states are reset in layers and restored after.

    diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.worker.js b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.worker.js index a566cccf14b..715e7a5a988 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.worker.js +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.worker.js @@ -1,6 +1,6 @@ // DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. // OffscreenCanvas test in a worker:2d.layer.layer-rendering-state-reset-in-layer -// Description:Tests that layers ignore the global context filter. +// Description:Tests that rendering states are reset in layers and restored after. // Note: importScripts("/resources/testharness.js"); @@ -16,6 +16,7 @@ test(t => { ctx.shadowOffsetX = 10; ctx.shadowOffsetY = 20; ctx.shadowBlur = 30; + ctx.filter = 'blur(5px)'; _assertSame(ctx.globalAlpha, 0.5, "ctx.globalAlpha", "0.5"); _assertSame(ctx.globalCompositeOperation, 'xor', "ctx.globalCompositeOperation", "'xor'"); @@ -23,6 +24,7 @@ test(t => { _assertSame(ctx.shadowOffsetX, 10, "ctx.shadowOffsetX", "10"); _assertSame(ctx.shadowOffsetY, 20, "ctx.shadowOffsetY", "20"); _assertSame(ctx.shadowBlur, 30, "ctx.shadowBlur", "30"); + _assertSame(ctx.filter, 'blur(5px)', "ctx.filter", "'blur(5px)'"); ctx.beginLayer(); @@ -32,6 +34,7 @@ test(t => { _assertSame(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0"); _assertSame(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0"); _assertSame(ctx.shadowBlur, 0, "ctx.shadowBlur", "0"); + _assertSame(ctx.filter, 'none', "ctx.filter", "'none'"); ctx.endLayer(); @@ -41,5 +44,6 @@ test(t => { _assertSame(ctx.shadowOffsetX, 10, "ctx.shadowOffsetX", "10"); _assertSame(ctx.shadowOffsetY, 20, "ctx.shadowOffsetY", "20"); _assertSame(ctx.shadowBlur, 30, "ctx.shadowBlur", "30"); -}, "Tests that layers ignore the global context filter."); + _assertSame(ctx.filter, 'blur(5px)', "ctx.filter", "'blur(5px)'"); +}, "Tests that rendering states are reset in layers and restored after."); done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter-expected.html new file mode 100644 index 00000000000..77d41f725ea --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter-expected.html @@ -0,0 +1,25 @@ + + +Canvas test: 2d.layer.nested-ctx-filter +

    2d.layer.nested-ctx-filter

    +

    Tests nested canvas layers with context filters.

    + +

    FAIL (fallback content)

    +
    + diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter.html new file mode 100644 index 00000000000..b48bf6b9b2b --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter.html @@ -0,0 +1,26 @@ + + + +Canvas test: 2d.layer.nested-ctx-filter +

    2d.layer.nested-ctx-filter

    +

    Tests nested canvas layers with context filters.

    + +

    FAIL (fallback content)

    +
    + diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-filter.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter.w.html similarity index 61% rename from tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-filter.w.html rename to tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter.w.html index 4c8f92d18a1..9e1749b8bd0 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-filter.w.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.nested-ctx-filter.w.html @@ -1,30 +1,27 @@ - -Canvas test: 2d.layer.global-filter -

    2d.layer.global-filter

    -

    Tests that layers ignore the global context filter.

    - + +Canvas test: 2d.layer.nested-ctx-filter +

    2d.layer.nested-ctx-filter

    +

    Tests nested canvas layers with context filters.

    +

    FAIL (fallback content)

    diff --git a/tests/wpt/tests/html/resources/common.js b/tests/wpt/tests/html/resources/common.js index fd4529e80aa..6f8ae7b3436 100644 --- a/tests/wpt/tests/html/resources/common.js +++ b/tests/wpt/tests/html/resources/common.js @@ -32,6 +32,11 @@ var HTML5_VOID_ELEMENTS = [ var HTML5_FORM_ASSOCIATED_ELEMENTS = [ 'button', 'fieldset', 'input', 'object', 'output', 'select', 'textarea' ]; +// https://html.spec.whatwg.org/#category-label +const HTML5_LABELABLE_ELEMENTS = [ + 'button', 'input', 'meter', 'output', 'progress', 'select', 'textarea' +]; + const HTML5_SHADOW_ALLOWED_ELEMENTS = [ 'article', 'aside', 'blockquote', 'body', 'div', 'footer', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'main', 'nav', 'p', 'section', 'span' diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-mouse-behavior.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-mouse-behavior.tentative.html index b5d5c3fd1bb..53c10ae2c4f 100644 --- a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-mouse-behavior.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-mouse-behavior.tentative.html @@ -15,8 +15,7 @@ select { } - - @@ -24,39 +23,61 @@ select { + + + + + + diff --git a/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/top-layer-backdrop-remove-add-ordering-ref.html b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/top-layer-backdrop-remove-add-ordering-ref.html new file mode 100644 index 00000000000..7bc302861e3 --- /dev/null +++ b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/top-layer-backdrop-remove-add-ordering-ref.html @@ -0,0 +1,19 @@ + + + +Dialog1 +
    Popover1
    + diff --git a/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/top-layer-backdrop-remove-add-ordering.html b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/top-layer-backdrop-remove-add-ordering.html new file mode 100644 index 00000000000..fbfe2e1fd17 --- /dev/null +++ b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/top-layer-backdrop-remove-add-ordering.html @@ -0,0 +1,26 @@ + + + + + + + +Dialog1 +
    Popover1
    + diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/README.md b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/README.md deleted file mode 100644 index ab4a4820afa..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Script tests - -## Import attributes & JSON/CSS modules - -The import attributes proposal changed the keyword from `assert` to `with`, after that it was already been implemented and shipped in some browsers. Thus, there are some implementations that only support the `assert` syntax and others that only support the `with` syntax. - -For this reason, the import attributes, JSON modules and CSS modules are duplicated to use both keywords: -| `with` keyword | `assert` keyword | -|:----------------------|:---------------------------| -| `./import-attributes` | `./import-assertions` | -| `./json-module` | `./json-module-assertions` | -| `./css-module` | `./css-module-assertions` | - -All changes in one folder should be reflected in the corresponding folder, because the two syntaxes have the same semantics. - -The web compatibility of removing the `assert` keyword is being investigated. If it will be deemed feasible, it will be removed from the proposal and the `assert` tests can be deleted. diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-2.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-2.html deleted file mode 100644 index aaa2960aafe..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-2.html +++ /dev/null @@ -1,19 +0,0 @@ - - -CSS modules: UTF-8 decoding - - -
    - - \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-bom.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-bom.html deleted file mode 100644 index e26ee08d31d..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/charset-bom.html +++ /dev/null @@ -1,20 +0,0 @@ - -CSS Module scripts should ignore BOMs and always use UTF-8 - - - \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/charset.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/charset.html deleted file mode 100644 index 2127ec72804..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/charset.html +++ /dev/null @@ -1,37 +0,0 @@ - - -CSS modules: UTF-8 decoding - - -
    - - - - - \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/content-type-checking.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/content-type-checking.html deleted file mode 100644 index 3ade8633058..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/content-type-checking.html +++ /dev/null @@ -1,39 +0,0 @@ - - -CSS modules: Content-Type - - -
    - - - - - - \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/cors-crossorigin-requests.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/cors-crossorigin-requests.html deleted file mode 100644 index b9de562b723..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/cors-crossorigin-requests.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - css-module-assertions-crossorigin - - - - -

    css-module-assertions-crossorigin

    - - - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/credentials.sub.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/credentials.sub.html deleted file mode 100644 index 8c2f0f8073d..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/credentials.sub.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/css-module-worker-test.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/css-module-worker-test.html deleted file mode 100644 index 7ff672da6a9..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/css-module-worker-test.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-basic.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-basic.html deleted file mode 100644 index 4ea1790aabd..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-basic.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - -
    I am a test div.
    -
    I am a test div.
    -
    I am a test div.
    -
    I am a test div.
    -
    I am a test div.
    -
    I am a test div.
    - - - - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-dynamic.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-dynamic.html deleted file mode 100644 index 13967858cb3..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/import-css-module-dynamic.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/integrity.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/integrity.html deleted file mode 100644 index 1dd0dad470a..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/integrity.html +++ /dev/null @@ -1,28 +0,0 @@ - - -<script> integrity="" with CSS modules - - - - - - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/load-error-events.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/load-error-events.html deleted file mode 100644 index 3457452c936..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/load-error-events.html +++ /dev/null @@ -1,67 +0,0 @@ - - - -load/error events for CSS modules - - - - - - - - - - \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/referrer-policies.sub.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/referrer-policies.sub.html deleted file mode 100644 index f078437e09c..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/referrer-policies.sub.html +++ /dev/null @@ -1,84 +0,0 @@ - - - -Referrers with CSS module requests - - - - - - - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/relative-urls.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/relative-urls.html deleted file mode 100644 index 22971d28d9b..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/relative-urls.html +++ /dev/null @@ -1,18 +0,0 @@ - - - Test resolution of relative URL in CSS module - - - - -
    - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/atImported.css b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/atImported.css deleted file mode 100644 index 8629a846d14..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/atImported.css +++ /dev/null @@ -1,3 +0,0 @@ -#test3b { - background-color: #FF0000; -} \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/bad-import.css b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/bad-import.css deleted file mode 100644 index a6e1a0f395d..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/bad-import.css +++ /dev/null @@ -1,4 +0,0 @@ -@import "atImported.css"; -#test3 { - background-color:#00FF00; -} \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/basic-large.css b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/basic-large.css deleted file mode 100644 index 555ab70d2ed..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/basic-large.css +++ /dev/null @@ -1,7 +0,0 @@ -#test2 { - background-color:red; -} - -#test:before { - content: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; -} diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/basic.css b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/basic.css deleted file mode 100644 index e034ed9ac7c..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/basic.css +++ /dev/null @@ -1,3 +0,0 @@ -#test { - background-color: #FF0000; -} \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/bom-utf-16be.css b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/bom-utf-16be.css deleted file mode 100644 index 9e17902a1d3d69e0ebebd039553d2b50ab489d81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64 zcmezOpCN@Ilc9`3fuS0RlNb^ik{PlY(iw^v@)=4Q@_@3sK#_cg93U=YumY>e0m`H@ ISOeL$0O6PoLI3~& diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/bom-utf-16le.css b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/bom-utf-16le.css deleted file mode 100644 index ef90843d8eda44a5cc3bb82e3ad2f1d862ad2b24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64 zcmezWFNGnKp^QO+p&E#j7!nzh8L}DD8HyP48A=)Q7*ZH?fg - - - - - - - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/cross-origin.py b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/cross-origin.py deleted file mode 100644 index d744fc9514d..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/cross-origin.py +++ /dev/null @@ -1,17 +0,0 @@ -def main(request, response): - - headers = [ - (b"Content-Type", b"text/css"), - (b"Access-Control-Allow-Origin", request.GET.first(b"origin")), - (b"Access-Control-Allow-Credentials", b"true") - ] - - milk = request.cookies.first(b"milk", None) - - # Send back - if milk is None: - return headers, u'.requestDidNotHaveCookies { }' - elif milk.value == b"1": - return headers, u'.requestHadCookies { }' - - return headers, u'.requestDidNotHaveCookies { }' diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/crossorigin-import-parse-error-with-cors.sub.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/crossorigin-import-parse-error-with-cors.sub.html deleted file mode 100644 index 3afb8edeb14..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/crossorigin-import-parse-error-with-cors.sub.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - css-module-assertions-import-cross-domain-parse-error-WithCORS - - - -

    css-module-assertions-import-cross-domain-parse-error-WithCORS

    - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/crossorigin-import-with-cors.sub.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/crossorigin-import-with-cors.sub.html deleted file mode 100644 index f8754c2a569..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/crossorigin-import-with-cors.sub.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - css-module-assertions-import-cross-domain-WithCORS - - - -

    css-module-assertions-import-cross-domain-WithCORS

    - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/crossorigin-import-without-cors.sub.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/crossorigin-import-without-cors.sub.html deleted file mode 100644 index ab70b735732..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/crossorigin-import-without-cors.sub.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - css-module-assertions-import-cross-domain-NoCORS - - - -

    css-module-assertions-import-cross-domain-NoCORS

    - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/css-module-without-assertion-iframe.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/css-module-without-assertion-iframe.html deleted file mode 100644 index 3d1be841cee..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/css-module-without-assertion-iframe.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - -
    - I am a test div. -
    - \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/integrity-matches.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/integrity-matches.js deleted file mode 100644 index 95be445311b..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/integrity-matches.js +++ /dev/null @@ -1,2 +0,0 @@ -import styleSheet from "./basic.css" assert { type: "css" }; -window.matchesLog.push(`integrity-matches,css:${styleSheet.cssRules[0].cssText}`); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/integrity-mismatches.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/integrity-mismatches.js deleted file mode 100644 index af6fc24de49..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/integrity-mismatches.js +++ /dev/null @@ -1,2 +0,0 @@ -import styleSheet from "./basic.css" assert { type: "css" }; -window.matchesLog.push(`integrity-mismatches,css:${styleSheet.cssRules[0].cssText}`); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/load-error-events.py b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/load-error-events.py deleted file mode 100644 index b61b1ca834e..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/load-error-events.py +++ /dev/null @@ -1,14 +0,0 @@ -import re - -def main(request, response): - headers = [(b"Content-Type", b"text/javascript")] - test = request.GET.first(b'test') - assert(re.match(b'^[a-zA-Z0-9_]+$', test)) - - status = 200 - if test.find(b'_load') >= 0: - content = b'import "./basic.css" assert { type: "css"}; %s.executed = true;' % test - else: - content = b'import "./not_found.css" assert { type: "css"}; %s.test.step(function() { assert_unreached("404 script should not be executed"); });' % test - - return status, headers, content diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/load-relative-url.css b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/load-relative-url.css deleted file mode 100644 index 27f29876104..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/load-relative-url.css +++ /dev/null @@ -1,5 +0,0 @@ - -#target { - /* image.png doesn't exist, but that's irrelevant to the test. */ - background: url('./image.png'); -} diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/malformed.css b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/malformed.css deleted file mode 100644 index 28819bfdf55..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/malformed.css +++ /dev/null @@ -1,7 +0,0 @@ -#test4 } { - background-color: #FF0000; -} - -#test4b { - background-color: #00FF00; -} diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/parse-error.css b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/parse-error.css deleted file mode 100644 index 2bee3ff9966..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/parse-error.css +++ /dev/null @@ -1,2 +0,0 @@ -div /* Opening bracket skipped intentionally. */ } - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/record-fetch.py b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/record-fetch.py deleted file mode 100644 index 4928cb4acb9..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/record-fetch.py +++ /dev/null @@ -1,20 +0,0 @@ -def main(request, response): - try: - stash_key = request.GET.first(b"key") - action = request.GET.first(b"action") - - run_count = request.server.stash.take(stash_key) - if not run_count: - run_count = 0 - - if action == b"incCount": - request.server.stash.put(stash_key, run_count + 1) - response.headers.set(b"Content-Type", b"text/css") - response.content = b'#test { background-color: #FF0000; }' - elif action == b"getCount": - response.headers.set(b"Content-Type", b"text/json") - response.content = b'{"count": %d }' % run_count - else: - response.set_error(400, u"Invalid action") - except: - response.set_error(400, u"Not enough parameters") diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/referrer-checker.py b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/referrer-checker.py deleted file mode 100644 index c1eaed8e468..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/referrer-checker.py +++ /dev/null @@ -1,7 +0,0 @@ -def main(request, response): - referrer = request.headers.get(b"referer", b"") - response_headers = [(b"Content-Type", b"text/css"), - (b"Access-Control-Allow-Origin", b"*")] - # Put the referrer in a CSS rule that can be read by the importer through CSSOM - return (200, response_headers, - b'.referrer { content: "' + referrer + b'" }') diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/utf-8.css b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/utf-8.css deleted file mode 100644 index 0a8b46656f1..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/utf-8.css +++ /dev/null @@ -1,3 +0,0 @@ -#test { - content: "śćążź"; -} \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/windows-1250.css b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/windows-1250.css deleted file mode 100644 index 9beac4d6180..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/windows-1250.css +++ /dev/null @@ -1,3 +0,0 @@ -#test { - content: "�湿�"; -} diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/worker-dynamic-import.sub.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/worker-dynamic-import.sub.js deleted file mode 100644 index 791bd7d3f94..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/worker-dynamic-import.sub.js +++ /dev/null @@ -1,3 +0,0 @@ -import("./record-fetch.py?key={{GET[key]}}&action=incCount", { assert: { type: "css" } }) - .then(() => postMessage("LOADED")) - .catch(e => postMessage("NOT LOADED")); \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/worker.sub.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/worker.sub.js deleted file mode 100644 index ffee312d21e..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/resources/worker.sub.js +++ /dev/null @@ -1,2 +0,0 @@ -import "./record-fetch.py?key={{GET[key]}}&action=incCount" assert { type: "css" }; -postMessage("Unexpectedly loaded"); \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/script-element-css-src.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/script-element-css-src.html deleted file mode 100644 index 231d02db477..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/css-module-assertions/script-element-css-src.html +++ /dev/null @@ -1,14 +0,0 @@ - -<script> with CSS src - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/dynamic-import-with-assertion-argument.any.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/dynamic-import-with-assertion-argument.any.js deleted file mode 100644 index 7efb2050b72..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/dynamic-import-with-assertion-argument.any.js +++ /dev/null @@ -1,18 +0,0 @@ -// META: global=window,dedicatedworker,sharedworker - -promise_test(async test => { - const result = await import("./export-hello.js", { assert: { } }); - assert_equals(result.default, "hello"); -}, "Dynamic import with an empty assert clause should succeed"); - -promise_test(async test => { - return promise_rejects_js(test, TypeError, - import("./export-hello.js", { assert: { unsupportedAssertionKey: "unsupportedAssertionValue"} }), - "Dynamic import with an unsupported import assertion should fail"); -}, "Dynamic import with an unsupported import assertion should fail"); - -promise_test(test => { - return promise_rejects_js(test, TypeError, - import("./export-hello.js", { assert: { type: "notARealType"} } ), - "Dynamic import with an unsupported type assertion should fail"); -}, "Dynamic import with an unsupported type assertion should fail"); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/empty-assertion-clause.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/empty-assertion-clause.html deleted file mode 100644 index 3a7c371189c..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/empty-assertion-clause.html +++ /dev/null @@ -1,19 +0,0 @@ - -Handling of empty import assertion clause - - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/empty-assertion-clause.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/empty-assertion-clause.js deleted file mode 100644 index 6913dd61dff..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/empty-assertion-clause.js +++ /dev/null @@ -1,2 +0,0 @@ -import "./hello.js" assert { }; -log.push("empty-assertion-clause"); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/empty-type-assertion.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/empty-type-assertion.js deleted file mode 100644 index 5bb9b1ddb8e..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/empty-type-assertion.js +++ /dev/null @@ -1,2 +0,0 @@ -import "./hello.js#2" assert { type: "" }; -log.push("empty-type-assertion"); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/export-hello.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/export-hello.js deleted file mode 100644 index 34b58e6e126..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/export-hello.js +++ /dev/null @@ -1 +0,0 @@ -export default "hello"; diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/hello.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/hello.js deleted file mode 100644 index 2f348444606..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/hello.js +++ /dev/null @@ -1 +0,0 @@ -log.push("hello"); \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/invalid-import-errors-order.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/invalid-import-errors-order.html deleted file mode 100644 index 17c95faea0f..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/invalid-import-errors-order.html +++ /dev/null @@ -1,36 +0,0 @@ - -Handling of invalid module type import attributes - - - - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/invalid-type-assertion-error.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/invalid-type-assertion-error.html deleted file mode 100644 index 0adcc475693..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/invalid-type-assertion-error.html +++ /dev/null @@ -1,28 +0,0 @@ - -Handling of invalid module type import assertions - - - - - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/invalid-type-assertion.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/invalid-type-assertion.js deleted file mode 100644 index e28c0176d5c..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/invalid-type-assertion.js +++ /dev/null @@ -1,2 +0,0 @@ -import "./hello.js#1" assert { type: "notARealType" }; -log.push("invalid-type-assertion"); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/javascript-type-assertion.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/javascript-type-assertion.js deleted file mode 100644 index cc0f531026e..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/javascript-type-assertion.js +++ /dev/null @@ -1,2 +0,0 @@ -import "./hello.js#4" assert { type: "javascript" }; -log.push("javascript-type-assertion"); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/js-type-assertion.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/js-type-assertion.js deleted file mode 100644 index c649c95ffea..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/js-type-assertion.js +++ /dev/null @@ -1,2 +0,0 @@ -import "./hello.js#3" assert { type: "js" }; -log.push("js-type-assertion"); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/unsupported-assertion.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/unsupported-assertion.html deleted file mode 100644 index 72977347a78..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/unsupported-assertion.html +++ /dev/null @@ -1,22 +0,0 @@ - -Handling of unsupported assertion - - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/unsupported-assertion.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/unsupported-assertion.js deleted file mode 100644 index 45f6d60c9da..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/import-assertions/unsupported-assertion.js +++ /dev/null @@ -1,2 +0,0 @@ -import "./hello.js" assert { unsupportedAssertionKey: "unsupportedAssertionValue" }; -log.push("unsupported-assertion"); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/array.json b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/array.json deleted file mode 100644 index e77e32d3382..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/array.json +++ /dev/null @@ -1 +0,0 @@ -["en", "try"] diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/bom-utf-16be.json b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/bom-utf-16be.json deleted file mode 100644 index d22a45a591079d6caea71404eb0190e7094f321c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40 ocmezOpP`yTfkBBOg&~ol1c;Rwtib#XhE#?eAj}7fC@|Cl0J^gW#sB~S diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/bom-utf-16le.json b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/bom-utf-16le.json deleted file mode 100644 index 4d1aa264a697b224eadbfe993cafeaac810acdd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40 ocmezWubM%DL5U%SA(5d3h?N+u!2Aq`RE8WN%m<1nFw`;t0Kj|)#sB~S diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/bom-utf-8.json b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/bom-utf-8.json deleted file mode 100644 index 07ba933e860..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/bom-utf-8.json +++ /dev/null @@ -1 +0,0 @@ -{ "data": "hello" } \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-2.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-2.html deleted file mode 100644 index 686178bfe10..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-2.html +++ /dev/null @@ -1,19 +0,0 @@ - - -JSON modules: UTF-8 decoding - - -
    - - \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-bom.any.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-bom.any.js deleted file mode 100644 index d2dbe3e468f..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/charset-bom.any.js +++ /dev/null @@ -1,17 +0,0 @@ -// META: global=window,dedicatedworker,sharedworker -// META: script=/common/utils.js - -promise_test(async () => { - const jsonModule = await import('./bom-utf-8.json', { assert: { type: 'json' } }); - assert_equals(jsonModule.default.data, 'hello'); -}, 'UTF-8 BOM should be stripped when decoding JSON module script'); - -promise_test(async test => { - await promise_rejects_js(test, SyntaxError, - import('./bom-utf-16be.json', { assert: { type: 'json' } }), 'Expected parse error from UTF-16BE BOM'); -}, 'UTF-16BE BOM should result in parse error in JSON module script'); - -promise_test(async test => { - await promise_rejects_js(test, SyntaxError, - import('./bom-utf-16le.json', { assert: { type: 'json' } }), 'Expected parse error from UTF-16LE BOM'); -}, 'UTF-16LE BOM should result in parse error in JSON module script'); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/charset.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/charset.html deleted file mode 100644 index 7c74b9bf6c4..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/charset.html +++ /dev/null @@ -1,37 +0,0 @@ - - -JSON modules: UTF-8 decoding - - -
    - - - - - \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/cors-crossorigin-requests.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/cors-crossorigin-requests.html deleted file mode 100644 index 757af2901c3..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/cors-crossorigin-requests.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - json-module-assertions-crossorigin - - - - -

    json-module-assertions-crossorigin

    - - - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/credentials-iframe.sub.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/credentials-iframe.sub.html deleted file mode 100644 index 44e6402faa5..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/credentials-iframe.sub.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/credentials.sub.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/credentials.sub.html deleted file mode 100644 index d11d2f95890..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/credentials.sub.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/cross-origin.py b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/cross-origin.py deleted file mode 100644 index cd56c3628a0..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/cross-origin.py +++ /dev/null @@ -1,16 +0,0 @@ -def main(request, response): - - headers = [ - (b"Content-Type", b"application/json"), - (b"Access-Control-Allow-Origin", request.GET.first(b"origin")), - (b"Access-Control-Allow-Credentials", b"true") - ] - - milk = request.cookies.first(b"milk", None) - - if milk is None: - return headers, u'{"requestHadCookies": false}' - elif milk.value == b"1": - return headers, u'{"requestHadCookies": true}' - - return headers, u'{"requestHadCookies": false}' diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/crossorigin-import-parse-error-with-cors.sub.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/crossorigin-import-parse-error-with-cors.sub.html deleted file mode 100644 index 7d044f8579b..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/crossorigin-import-parse-error-with-cors.sub.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - json-module-assertions-import-cross-domain-parse-error-WithCORS - - - -

    json-module-assertions-import-cross-domain-parse-error-WithCORS

    - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/crossorigin-import-with-cors.sub.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/crossorigin-import-with-cors.sub.html deleted file mode 100644 index d71938dae4e..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/crossorigin-import-with-cors.sub.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - json-module-assertions-import-cross-domain-WithCORS - - - -

    json-module-assertions-import-cross-domain-WithCORS

    - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/crossorigin-import-without-cors.sub.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/crossorigin-import-without-cors.sub.html deleted file mode 100644 index 9d07d6c727c..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/crossorigin-import-without-cors.sub.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - json-module-assertions-import-cross-domain-NoCORS - - - -

    json-module-assertions-import-cross-domain-NoCORS

    - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/data.json b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/data.json deleted file mode 100644 index 14a0526ebb2..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/data.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "answer": 42 -} \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/false.json b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/false.json deleted file mode 100644 index c508d5366f7..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/false.json +++ /dev/null @@ -1 +0,0 @@ -false diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity-matches.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity-matches.js deleted file mode 100644 index 969c90c2907..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity-matches.js +++ /dev/null @@ -1,2 +0,0 @@ -import json from "./data.json" assert { type: "json" }; -window.matchesLog.push(`integrity-matches,json:${json.answer}`); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity-mismatches.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity-mismatches.js deleted file mode 100644 index 3c88a98dbc5..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity-mismatches.js +++ /dev/null @@ -1,2 +0,0 @@ -import json "./data.json" assert { type: "json" }; -window.mismatchesLog.push(`integrity-mismatches,json:${json.answer}`); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity.html deleted file mode 100644 index 68a794b9733..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/integrity.html +++ /dev/null @@ -1,28 +0,0 @@ - - -<script> integrity="" - - - - - - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/invalid-content-type.any.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/invalid-content-type.any.js deleted file mode 100644 index cbccbd48429..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/invalid-content-type.any.js +++ /dev/null @@ -1,17 +0,0 @@ -// META: global=window,dedicatedworker,sharedworker - -const content_types = [ - "application/json+protobuf", - "application/json+blah", - "text/x-json", - "text/json+blah", - "application/blahjson", - "image/json", -]; -for (const content_type of content_types) { - promise_test(async test => { - await promise_rejects_js(test, TypeError, - import(`./module.json?pipe=header(Content-Type,${content_type})`, { assert: { type: "json"} }), - `Import of a JSON module with MIME type ${content_type} should fail`); - }, `Try importing JSON module with MIME type ${content_type}`); -} diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/json-module-service-worker-test.https.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/json-module-service-worker-test.https.html deleted file mode 100644 index cc47da1499f..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/json-module-service-worker-test.https.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/load-error-events.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/load-error-events.html deleted file mode 100644 index a9dfc1e6917..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/load-error-events.html +++ /dev/null @@ -1,67 +0,0 @@ - - - -load/error events for JSON modules - - - - - - - - - - \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/load-error-events.py b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/load-error-events.py deleted file mode 100644 index 4018adcdf7c..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/load-error-events.py +++ /dev/null @@ -1,14 +0,0 @@ -import re - -def main(request, response): - headers = [(b"Content-Type", b"text/javascript")] - test = request.GET.first(b'test') - assert(re.match(b'^[a-zA-Z0-9_]+$', test)) - - status = 200 - if test.find(b'_load') >= 0: - content = b'import "./module.json" assert { type: "json"}; %s.executed = true;' % test - else: - content = b'import "./not_found.json" assert { type: "json"}; %s.test.step(function() { assert_unreached("404 script should not be executed"); });' % test - - return status, headers, content diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/module.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/module.html deleted file mode 100644 index a495d4ac186..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/module.html +++ /dev/null @@ -1,18 +0,0 @@ - - -JSON modules - - -
    - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/module.json b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/module.json deleted file mode 100644 index f834b2a4e8f..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/module.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "test": true -} diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/non-object.any.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/non-object.any.js deleted file mode 100644 index 37fbcae9fab..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/non-object.any.js +++ /dev/null @@ -1,14 +0,0 @@ -// META: global=window,dedicatedworker,sharedworker - -for (const value of [null, true, false, "string"]) { - promise_test(async t => { - const result = await import(`./${value}.json`, { assert: { type: "json" } }); - assert_equals(result.default, value); - }, `Non-object: ${value}`); -} - -promise_test(async t => { - const result = await import("./array.json", { assert: { type: "json" } }); - assert_array_equals(result.default, ["en", "try"]); -}, "Non-object: array"); - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/null.json b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/null.json deleted file mode 100644 index 19765bd501b..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/null.json +++ /dev/null @@ -1 +0,0 @@ -null diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/parse-error.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/parse-error.html deleted file mode 100644 index 9d0e3284fec..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/parse-error.html +++ /dev/null @@ -1,21 +0,0 @@ - - -JSON modules: parse error - - -
    - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/parse-error.json b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/parse-error.json deleted file mode 100644 index 98232c64fce..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/parse-error.json +++ /dev/null @@ -1 +0,0 @@ -{ diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/referrer-checker.py b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/referrer-checker.py deleted file mode 100644 index e9f0f1789ba..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/referrer-checker.py +++ /dev/null @@ -1,6 +0,0 @@ -def main(request, response): - referrer = request.headers.get(b"referer", b"") - response_headers = [(b"Content-Type", b"application/json"), - (b"Access-Control-Allow-Origin", b"*")] - return (200, response_headers, - b'{"referrer": "' + referrer + b'"}') diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/referrer-policies.sub.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/referrer-policies.sub.html deleted file mode 100644 index 655c962ab78..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/referrer-policies.sub.html +++ /dev/null @@ -1,84 +0,0 @@ - - - -Referrers with JSON module requests - - - - - - - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/repeated-imports.any.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/repeated-imports.any.js deleted file mode 100644 index 5cc3ee5b7c4..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/repeated-imports.any.js +++ /dev/null @@ -1,65 +0,0 @@ -// META: global=window,dedicatedworker,sharedworker -// META: script=/common/utils.js - -promise_test(async test => { - await promise_rejects_js(test, TypeError, - import("./module.json"), - "Dynamic import of a JSON module without a type assertion should fail"); - - // This time the import should succeed because we're using the correct - // import even though the previous attempt with the same specifier failed. - const result = await import("./module.json", { assert: { type: "json" } }); - assert_true(result.default.test); -}, "Importing a specifier that previously failed due to an incorrect type assertion can succeed if the correct assertion is later given"); - -promise_test(async test => { - // Append a URL fragment to the specifier so that this is independent - // from the previous test. - const result = await import("./module.json#2", { assert: { type: "json" } }); - assert_true(result.default.test); - - await promise_rejects_js(test, TypeError, - import("./module.json#2"), - "Dynamic import should fail with the type assertion missing even if the same specifier previously succeeded"); -}, "Importing a specifier that previously succeeded with the correct type assertion should fail if the incorrect assertion is later given"); - -promise_test(async test => { - const uuid_token = token(); - // serve-json-then-js.py gives us JSON the first time - const result_json = await import(`../serve-json-then-js.py?key=${uuid_token}`, { assert: { type: "json" } }); - assert_equals(result_json.default.hello, "world"); - - // Import using the same specifier again; this time we get JS, which - // should succeed since we're not asserting a non-JS type this time. - const result_js = await import(`../serve-json-then-js.py?key=${uuid_token}`); - assert_equals(result_js.default, "hello"); -}, "Two modules of different type with the same specifier can load if the server changes its responses"); - -promise_test(async test => { - const uuid_token = token(); - // serve-json-then-js.py gives us JSON the first time - await promise_rejects_js(test, TypeError, - import(`../serve-json-then-js.py?key=${uuid_token}`), - "Dynamic import of JS with a JSON type assertion should fail"); - - // Import using the same specifier/module type pair again; this time we get JS, - // but the import should still fail because the module map entry for this - // specifier/module type pair already contains a failure. - await promise_rejects_js(test, TypeError, - import(`../serve-json-then-js.py?key=${uuid_token}`), - "import should always fail if the same specifier/type assertion pair failed previously"); -}, "An import should always fail if the same specifier/type assertion pair failed previously"); - -promise_test(async test => { - const uuid_token = token(); - // serve-json-then-js.py gives us JSON the first time - const result_json = await import(`../serve-json-then-js.py?key=${uuid_token}`, { assert: { type: "json" } }); - assert_equals(result_json.default.hello, "world"); - - // If this were to do another fetch, the import would fail because - // serve-json-then-js.py would give us JS this time. But, the module map - // entry for this specifier/module type pair already exists, so we - // successfully reuse the entry instead of fetching again. - const result_json_2 = await import(`../serve-json-then-js.py?key=${uuid_token}`, { assert: { type: "json" } }); - assert_equals(result_json_2.default.hello, "world"); -}, "If an import previously succeeded for a given specifier/type assertion pair, future uses of that pair should yield the same result"); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/script-element-json-src.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/script-element-json-src.html deleted file mode 100644 index c6d7c9a76e8..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/script-element-json-src.html +++ /dev/null @@ -1,14 +0,0 @@ - -<script> with JSON src - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/serviceworker-dynamic-import.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/serviceworker-dynamic-import.js deleted file mode 100644 index 9466c6fbe40..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/serviceworker-dynamic-import.js +++ /dev/null @@ -1,5 +0,0 @@ -onmessage = e => { - e.waitUntil(import("./module.json", { assert: { type: "json" } }) - .then(module => e.source.postMessage("LOADED")) - .catch(error => e.source.postMessage("FAILED"))); - }; \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/serviceworker.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/serviceworker.js deleted file mode 100644 index 3f0a4d16640..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/serviceworker.js +++ /dev/null @@ -1 +0,0 @@ -import './module.json' assert { type: "json" }; \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/string.json b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/string.json deleted file mode 100644 index ace2d72d9d3..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/string.json +++ /dev/null @@ -1 +0,0 @@ -"string" diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/true.json b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/true.json deleted file mode 100644 index 27ba77ddaf6..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/true.json +++ /dev/null @@ -1 +0,0 @@ -true diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/utf-8.json b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/utf-8.json deleted file mode 100644 index 088d9823587..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/utf-8.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "data": "śćążź", - "comment": "The data above are five Polish letters, similar to scazz. It can be read correctly only with utf-8 encoding." -} diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/valid-content-type.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/valid-content-type.html deleted file mode 100644 index 162f2d6afca..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/valid-content-type.html +++ /dev/null @@ -1,46 +0,0 @@ - - -JSON modules: Content-Type - - -
    - - - - - - - \ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/windows-1250.json b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/windows-1250.json deleted file mode 100644 index 490e752ce93..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/json-module-assertions/windows-1250.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "data": "�湿�", - "comment": "The data above are five Polish letters, similar to scazz. It can be read correctly only with windows1250 encoding." -} diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/css-import-in-worker.any.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/css-import-in-worker.any.js index bd6f5d092f3..3eae3fd3847 100644 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/css-import-in-worker.any.js +++ b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/css-import-in-worker.any.js @@ -7,8 +7,8 @@ promise_test(async t => { const getCount = ticker(1000); - const importP = import(specifier, { assert: { type: "css" } }); + const importP = import(specifier, { with: { type: "css" } }); await promise_rejects_js(t, TypeError, importP, 'import() should reject'); assert_less_than(getCount(), 1000); -}, "import() should not drain the microtask queue if it fails because of the 'type: css' assertion in a worker"); +}, "import() should not drain the microtask queue if it fails because of the 'type: css' attribute in a worker"); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/with-import-assertions.any.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/with-import-assertions.any.js index f67ba9a1ae4..078696ed372 100644 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/with-import-assertions.any.js +++ b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/with-import-assertions.any.js @@ -7,9 +7,9 @@ promise_test(async t => { const getCount = ticker(1000); - const importP = import(specifier, { assert: { type: "" } }); + const importP = import(specifier, { with: { type: "" } }); await promise_rejects_js(t, TypeError, importP, 'import() should reject'); assert_less_than(getCount(), 1000); -}, "import() should not drain the microtask queue if it fails while validating the 'type' assertion"); +}, "import() should not drain the microtask queue if it fails while validating the 'type' attribute"); diff --git a/tests/wpt/tests/interfaces/crash-reporting.idl b/tests/wpt/tests/interfaces/crash-reporting.idl index 7c8a0ff71f2..a6737ca8482 100644 --- a/tests/wpt/tests/interfaces/crash-reporting.idl +++ b/tests/wpt/tests/interfaces/crash-reporting.idl @@ -7,4 +7,5 @@ interface CrashReportBody : ReportBody { [Default] object toJSON(); readonly attribute DOMString? reason; + readonly attribute DOMString? stack; }; diff --git a/tests/wpt/tests/interfaces/css-font-loading.idl b/tests/wpt/tests/interfaces/css-font-loading.idl index 5e5f4252a40..a5db8f3c494 100644 --- a/tests/wpt/tests/interfaces/css-font-loading.idl +++ b/tests/wpt/tests/interfaces/css-font-loading.idl @@ -3,8 +3,6 @@ // (https://github.com/w3c/webref) // Source: CSS Font Loading Module Level 3 (https://drafts.csswg.org/css-font-loading-3/) -typedef (ArrayBuffer or ArrayBufferView) BinaryData; - dictionary FontFaceDescriptors { CSSOMString style = "normal"; CSSOMString weight = "normal"; @@ -22,7 +20,7 @@ enum FontFaceLoadStatus { "unloaded", "loading", "loaded", "error" }; [Exposed=(Window,Worker)] interface FontFace { - constructor(CSSOMString family, (CSSOMString or BinaryData) source, + constructor(CSSOMString family, (CSSOMString or BufferSource) source, optional FontFaceDescriptors descriptors = {}); attribute CSSOMString family; attribute CSSOMString style; diff --git a/tests/wpt/tests/interfaces/dom.idl b/tests/wpt/tests/interfaces/dom.idl index 72d61f5cfd8..99192924f4f 100644 --- a/tests/wpt/tests/interfaces/dom.idl +++ b/tests/wpt/tests/interfaces/dom.idl @@ -120,9 +120,9 @@ interface mixin ParentNode { readonly attribute Element? lastElementChild; readonly attribute unsigned long childElementCount; - [CEReactions, Unscopable] undefined prepend((Node or TrustedScript or DOMString)... nodes); - [CEReactions, Unscopable] undefined append((Node or TrustedScript or DOMString)... nodes); - [CEReactions, Unscopable] undefined replaceChildren((Node or TrustedScript or DOMString)... nodes); + [CEReactions, Unscopable] undefined prepend((Node or DOMString)... nodes); + [CEReactions, Unscopable] undefined append((Node or DOMString)... nodes); + [CEReactions, Unscopable] undefined replaceChildren((Node or DOMString)... nodes); Element? querySelector(DOMString selectors); [NewObject] NodeList querySelectorAll(DOMString selectors); @@ -139,9 +139,9 @@ Element includes NonDocumentTypeChildNode; CharacterData includes NonDocumentTypeChildNode; interface mixin ChildNode { - [CEReactions, Unscopable] undefined before((Node or TrustedScript or DOMString)... nodes); - [CEReactions, Unscopable] undefined after((Node or TrustedScript or DOMString)... nodes); - [CEReactions, Unscopable] undefined replaceWith((Node or TrustedScript or DOMString)... nodes); + [CEReactions, Unscopable] undefined before((Node or DOMString)... nodes); + [CEReactions, Unscopable] undefined after((Node or DOMString)... nodes); + [CEReactions, Unscopable] undefined replaceWith((Node or DOMString)... nodes); [CEReactions, Unscopable] undefined remove(); }; DocumentType includes ChildNode; diff --git a/tests/wpt/tests/interfaces/payment-handler.idl b/tests/wpt/tests/interfaces/payment-handler.idl index 91c01297f40..8aa55e9e950 100644 --- a/tests/wpt/tests/interfaces/payment-handler.idl +++ b/tests/wpt/tests/interfaces/payment-handler.idl @@ -94,38 +94,3 @@ dictionary AddressInit { DOMString recipient = ""; DOMString phone = ""; }; - -dictionary PaymentOptions { - boolean requestPayerName = false; - boolean requestBillingAddress = false; - boolean requestPayerEmail = false; - boolean requestPayerPhone = false; - boolean requestShipping = false; - PaymentShippingType shippingType = "shipping"; -}; - -dictionary PaymentShippingOption { - required DOMString id; - required DOMString label; - required PaymentCurrencyAmount amount; - boolean selected = false; -}; - -enum PaymentShippingType { - "shipping", - "delivery", - "pickup" -}; - -dictionary AddressErrors { - DOMString addressLine; - DOMString city; - DOMString country; - DOMString dependentLocality; - DOMString organization; - DOMString phone; - DOMString postalCode; - DOMString recipient; - DOMString region; - DOMString sortingCode; -}; diff --git a/tests/wpt/tests/interfaces/payment-request.idl b/tests/wpt/tests/interfaces/payment-request.idl index 50c12fe49c3..c1227d59c6b 100644 --- a/tests/wpt/tests/interfaces/payment-request.idl +++ b/tests/wpt/tests/interfaces/payment-request.idl @@ -7,7 +7,8 @@ interface PaymentRequest : EventTarget { constructor( sequence methodData, - PaymentDetailsInit details + PaymentDetailsInit details, + optional PaymentOptions options = {} ); [NewObject] Promise show(optional Promise detailsPromise); @@ -17,7 +18,12 @@ interface PaymentRequest : EventTarget { Promise canMakePayment(); readonly attribute DOMString id; + readonly attribute ContactAddress? shippingAddress; + readonly attribute DOMString? shippingOption; + readonly attribute PaymentShippingType? shippingType; + attribute EventHandler onshippingaddresschange; + attribute EventHandler onshippingoptionchange; attribute EventHandler onpaymentmethodchange; }; @@ -33,6 +39,7 @@ dictionary PaymentCurrencyAmount { dictionary PaymentDetailsBase { sequence displayItems; + sequence shippingOptions; sequence modifiers; }; @@ -42,7 +49,10 @@ dictionary PaymentDetailsInit : PaymentDetailsBase { }; dictionary PaymentDetailsUpdate : PaymentDetailsBase { + DOMString error; PaymentItem total; + AddressErrors shippingAddressErrors; + PayerErrors payerErrors; object paymentMethodErrors; }; @@ -53,6 +63,21 @@ dictionary PaymentDetailsModifier { object data; }; +enum PaymentShippingType { + "shipping", + "delivery", + "pickup" +}; + +dictionary PaymentOptions { + boolean requestPayerName = false; + boolean requestBillingAddress = false; + boolean requestPayerEmail = false; + boolean requestPayerPhone = false; + boolean requestShipping = false; + PaymentShippingType shippingType = "shipping"; +}; + dictionary PaymentItem { required DOMString label; required PaymentCurrencyAmount amount; @@ -69,6 +94,13 @@ enum PaymentComplete { "unknown" }; +dictionary PaymentShippingOption { + required DOMString id; + required DOMString label; + required PaymentCurrencyAmount amount; + boolean selected = false; +}; + [SecureContext, Exposed=Window] interface PaymentResponse : EventTarget { [Default] object toJSON(); @@ -76,6 +108,11 @@ interface PaymentResponse : EventTarget { readonly attribute DOMString requestId; readonly attribute DOMString methodName; readonly attribute object details; + readonly attribute ContactAddress? shippingAddress; + readonly attribute DOMString? shippingOption; + readonly attribute DOMString? payerName; + readonly attribute DOMString? payerEmail; + readonly attribute DOMString? payerPhone; [NewObject] Promise complete( @@ -84,13 +121,36 @@ interface PaymentResponse : EventTarget { ); [NewObject] Promise retry(optional PaymentValidationErrors errorFields = {}); + + attribute EventHandler onpayerdetailchange; }; dictionary PaymentValidationErrors { + PayerErrors payer; + AddressErrors shippingAddress; DOMString error; object paymentMethod; }; +dictionary PayerErrors { + DOMString email; + DOMString name; + DOMString phone; +}; + +dictionary AddressErrors { + DOMString addressLine; + DOMString city; + DOMString country; + DOMString dependentLocality; + DOMString organization; + DOMString phone; + DOMString postalCode; + DOMString recipient; + DOMString region; + DOMString sortingCode; +}; + [SecureContext, Exposed=Window] interface PaymentMethodChangeEvent : PaymentRequestUpdateEvent { constructor(DOMString type, optional PaymentMethodChangeEventInit eventInitDict = {}); diff --git a/tests/wpt/tests/interfaces/pointerevents.idl b/tests/wpt/tests/interfaces/pointerevents.idl index 4ecb290ed41..0356e845058 100644 --- a/tests/wpt/tests/interfaces/pointerevents.idl +++ b/tests/wpt/tests/interfaces/pointerevents.idl @@ -16,6 +16,7 @@ dictionary PointerEventInit : MouseEventInit { double azimuthAngle; DOMString pointerType = ""; boolean isPrimary = false; + long persistentDeviceId = 0; sequence coalescedEvents = []; sequence predictedEvents = []; }; @@ -35,6 +36,7 @@ interface PointerEvent : MouseEvent { readonly attribute double azimuthAngle; readonly attribute DOMString pointerType; readonly attribute boolean isPrimary; + readonly attribute long persistentDeviceId; [SecureContext] sequence getCoalescedEvents(); sequence getPredictedEvents(); }; diff --git a/tests/wpt/tests/interfaces/scheduling-apis.idl b/tests/wpt/tests/interfaces/scheduling-apis.idl index 3c858a2db06..6f93db15a74 100644 --- a/tests/wpt/tests/interfaces/scheduling-apis.idl +++ b/tests/wpt/tests/interfaces/scheduling-apis.idl @@ -9,35 +9,19 @@ enum TaskPriority { "background" }; -enum ContinuationPriority { - "user-blocking", - "user-visible", - "background", - "inherit" -}; - dictionary SchedulerPostTaskOptions { AbortSignal signal; TaskPriority priority; [EnforceRange] unsigned long long delay = 0; }; -enum SchedulerSignalInherit { - "inherit" -}; - -dictionary SchedulerYieldOptions { - (AbortSignal or SchedulerSignalInherit) signal; - ContinuationPriority priority; -}; - callback SchedulerPostTaskCallback = any (); [Exposed=(Window, Worker)] interface Scheduler { Promise postTask(SchedulerPostTaskCallback callback, optional SchedulerPostTaskOptions options = {}); - Promise yield(optional SchedulerYieldOptions options = {}); + Promise yield(); }; [Exposed=(Window, Worker)] diff --git a/tests/wpt/tests/interfaces/turtledove.idl b/tests/wpt/tests/interfaces/turtledove.idl index 314f2f07d92..8ed7903f0b1 100644 --- a/tests/wpt/tests/interfaces/turtledove.idl +++ b/tests/wpt/tests/interfaces/turtledove.idl @@ -20,7 +20,6 @@ dictionary AuctionAd { dictionary GenerateBidInterestGroup { required USVString owner; required USVString name; - required double lifetimeMs; boolean enableBiddingSignalsPrioritization = false; record priorityVector; @@ -42,6 +41,7 @@ dictionary GenerateBidInterestGroup { dictionary AuctionAdInterestGroup : GenerateBidInterestGroup { double priority = 0.0; record prioritySignalsOverrides; + required double lifetimeMs; DOMString additionalBidKey; }; diff --git a/tests/wpt/tests/interfaces/webauthn.idl b/tests/wpt/tests/interfaces/webauthn.idl index c44df9b26a6..10dd0f7e059 100644 --- a/tests/wpt/tests/interfaces/webauthn.idl +++ b/tests/wpt/tests/interfaces/webauthn.idl @@ -19,7 +19,7 @@ typedef DOMString Base64URLString; typedef object PublicKeyCredentialJSON; dictionary RegistrationResponseJSON { - required Base64URLString id; + required DOMString id; required Base64URLString rawId; required AuthenticatorAttestationResponseJSON response; DOMString authenticatorAttachment; @@ -45,7 +45,7 @@ dictionary AuthenticatorAttestationResponseJSON { }; dictionary AuthenticationResponseJSON { - required Base64URLString id; + required DOMString id; required Base64URLString rawId; required AuthenticatorAssertionResponseJSON response; DOMString authenticatorAttachment; @@ -106,8 +106,8 @@ dictionary PublicKeyCredentialUserEntityJSON { }; dictionary PublicKeyCredentialDescriptorJSON { - required Base64URLString id; required DOMString type; + required Base64URLString id; sequence transports; }; @@ -211,7 +211,7 @@ enum AttestationConveyancePreference { dictionary PublicKeyCredentialRequestOptions { required BufferSource challenge; unsigned long timeout; - USVString rpId; + DOMString rpId; sequence allowCredentials = []; DOMString userVerification = "preferred"; sequence hints = []; @@ -228,8 +228,8 @@ dictionary CollectedClientData { required DOMString type; required DOMString challenge; required DOMString origin; - DOMString topOrigin; boolean crossOrigin; + DOMString topOrigin; }; dictionary TokenBinding { @@ -357,21 +357,3 @@ dictionary AuthenticationExtensionsLargeBlobOutputs { ArrayBuffer blob; boolean written; }; - -dictionary AuthenticationExtensionsSupplementalPubKeysInputs { - required sequence scopes; - DOMString attestation = "indirect"; - sequence attestationFormats = []; -}; - -partial dictionary AuthenticationExtensionsClientInputs { - AuthenticationExtensionsSupplementalPubKeysInputs supplementalPubKeys; -}; - -dictionary AuthenticationExtensionsSupplementalPubKeysOutputs { - required sequence signatures; -}; - -partial dictionary AuthenticationExtensionsClientOutputs { - AuthenticationExtensionsSupplementalPubKeysOutputs supplementalPubKeys; -}; diff --git a/tests/wpt/tests/largest-contentful-paint/mouseover-heuristics-background.tentative.html b/tests/wpt/tests/largest-contentful-paint/mouseover-heuristics-background.tentative.html deleted file mode 100644 index ddd4f9672e7..00000000000 --- a/tests/wpt/tests/largest-contentful-paint/mouseover-heuristics-background.tentative.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - LCP mouseover heuristics ignore background-based zoom widgets - - - - - - - - - - - - - diff --git a/tests/wpt/tests/largest-contentful-paint/mouseover-heuristics-element.tentative.html b/tests/wpt/tests/largest-contentful-paint/mouseover-heuristics-element.tentative.html deleted file mode 100644 index afc4b2a50d6..00000000000 --- a/tests/wpt/tests/largest-contentful-paint/mouseover-heuristics-element.tentative.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - LCP mouseover heuristics ignore element-based zoom widgets - - - - - - - - - - - - diff --git a/tests/wpt/tests/partitioned-popins/META.yml b/tests/wpt/tests/partitioned-popins/META.yml index b9d43340c8a..3329f00c069 100644 --- a/tests/wpt/tests/partitioned-popins/META.yml +++ b/tests/wpt/tests/partitioned-popins/META.yml @@ -1,3 +1,4 @@ spec: https://explainers-by-googlers.github.io/partitioned-popins/ suggested_reviewers: - arichiv + - johannhof diff --git a/tests/wpt/tests/partitioned-popins/partitioned-popins.cookies.tentative.sub.https.window.js b/tests/wpt/tests/partitioned-popins/partitioned-popins.cookies.tentative.sub.https.window.js index d98e08a7396..952e78a6eb0 100644 --- a/tests/wpt/tests/partitioned-popins/partitioned-popins.cookies.tentative.sub.https.window.js +++ b/tests/wpt/tests/partitioned-popins/partitioned-popins.cookies.tentative.sub.https.window.js @@ -3,7 +3,8 @@ 'use strict'; -// Step 1 (main window) Set up listener to resolve messages as they come in. +// Spec: https://explainers-by-googlers.github.io/partitioned-popins/ +// Step 1 (main-window) Set up listener to resolve messages as they come in. // Step 2 (main-window) Open window for other origin. // Step 3 (other-window) Write first-party cookies and report success. // Step 4 (main-window) Embed iframe for other origin. @@ -31,8 +32,8 @@ async_test(t => { break; case 'popin-read': // Step 8 - // We want to see the same behavior a cross-site iframe would have, initially only SameSite=None, then first-party strict and lax come back for an inner fetch. - assert_equals(e.data.message, "ReadOnLoad:FirstPartyNone-ThirdPartyNone-,ReadOnFetch:FirstPartyStrict-FirstPartyLax-FirstPartyNone-ThirdPartyNone-"); + // We want to see the same behavior a cross-site iframe would have, only SameSite=None available, with the ability to set additional cookies in the popin. + assert_equals(e.data.message, "ReadOnLoad:FirstPartyNone-ThirdPartyNone-,ReadOnFetch:FirstPartyNone-ThirdPartyNone-FirstPartyNonePopin-ThirdPartyNonePopin-,ReadOnDocument:FirstPartyNone-ThirdPartyNone-FirstPartyNonePopin-ThirdPartyNonePopin-"); t.done(); break; } diff --git a/tests/wpt/tests/partitioned-popins/partitioned-popins.localStorage.tentative.sub.https.window.js b/tests/wpt/tests/partitioned-popins/partitioned-popins.localStorage.tentative.sub.https.window.js index d8444604c9e..06fe2239fd3 100644 --- a/tests/wpt/tests/partitioned-popins/partitioned-popins.localStorage.tentative.sub.https.window.js +++ b/tests/wpt/tests/partitioned-popins/partitioned-popins.localStorage.tentative.sub.https.window.js @@ -3,7 +3,8 @@ 'use strict'; -// Step 1 (main window) Set up listener to resolve messages as they come in. +// Spec: https://explainers-by-googlers.github.io/partitioned-popins/ +// Step 1 (main-window) Set up listener to resolve messages as they come in. // Step 2 (main-window) Open window for other origin. // Step 3 (other-window) Write first-party localStorage key and report success. // Step 4 (main-window) Embed iframe for other origin. diff --git a/tests/wpt/tests/partitioned-popins/partitioned-popins.permission-all.tentative.sub.https.window.js b/tests/wpt/tests/partitioned-popins/partitioned-popins.permission-all.tentative.sub.https.window.js new file mode 100644 index 00000000000..83eb092905c --- /dev/null +++ b/tests/wpt/tests/partitioned-popins/partitioned-popins.permission-all.tentative.sub.https.window.js @@ -0,0 +1,32 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js + +'use strict'; + +// Spec: https://explainers-by-googlers.github.io/partitioned-popins/ +// Step 1 (window) Set up listener to resolve messages as they come in. +// Step 2 (window) Open iframe for other origin. +// Step 3 (iframe) Open partitioned popin. +// Step 4 (popin) Cleanup. +// Step 5 (iframe) Report success. +// Step 6 (window) Cleanup. + +async_test(t => { + const id = String(Date.now()); + // Step 1 + window.addEventListener("message", t.step_func(e => { + switch (e.data.type) { + case 'popin': + // Step 6 + assert_equals(e.data.message, "Success"); + t.done(); + break; + } + })); + + // Step 2 + const iframe = document.createElement("iframe"); + iframe.allow = "popins"; + iframe.src = "https://{{hosts[alt][]}}:{{ports[https][0]}}/partitioned-popins/resources/partitioned-popins.permissions-iframe.html"; + document.body.appendChild(iframe); +}, "Verify Partitioned Popins in an iframe work when the policy is *"); diff --git a/tests/wpt/tests/partitioned-popins/partitioned-popins.permission-all.tentative.sub.https.window.js.headers b/tests/wpt/tests/partitioned-popins/partitioned-popins.permission-all.tentative.sub.https.window.js.headers new file mode 100644 index 00000000000..36ba34ecd53 --- /dev/null +++ b/tests/wpt/tests/partitioned-popins/partitioned-popins.permission-all.tentative.sub.https.window.js.headers @@ -0,0 +1 @@ +Permissions-Policy: popins=* diff --git a/tests/wpt/tests/partitioned-popins/partitioned-popins.permission-default.tentative.sub.https.window.js b/tests/wpt/tests/partitioned-popins/partitioned-popins.permission-default.tentative.sub.https.window.js new file mode 100644 index 00000000000..613d8dbb5f2 --- /dev/null +++ b/tests/wpt/tests/partitioned-popins/partitioned-popins.permission-default.tentative.sub.https.window.js @@ -0,0 +1,31 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js + +'use strict'; + +// Spec: https://explainers-by-googlers.github.io/partitioned-popins/ +// Step 1 (window) Set up listener to resolve messages as they come in. +// Step 2 (window) Open iframe for other origin. +// Step 3 (iframe) Open partitioned popin. +// Step 4 (popin) Cleanup. +// Step 5 (iframe) Report failure. +// Step 6 (window) Cleanup. + +async_test(t => { + const id = String(Date.now()); + // Step 1 + window.addEventListener("message", t.step_func(e => { + switch (e.data.type) { + case 'popin': + // Step 6 + assert_equals(e.data.message, "Failure"); + t.done(); + break; + } + })); + + // Step 2 + const iframe = document.createElement("iframe"); + iframe.src = "https://{{hosts[alt][]}}:{{ports[https][0]}}/partitioned-popins/resources/partitioned-popins.permissions-iframe.html"; + document.body.appendChild(iframe); +}, "Verify Partitioned Popins in an iframe fails when the policy isn't set"); diff --git a/tests/wpt/tests/partitioned-popins/partitioned-popins.permission-self.tentative.sub.https.window.js b/tests/wpt/tests/partitioned-popins/partitioned-popins.permission-self.tentative.sub.https.window.js new file mode 100644 index 00000000000..5930442aa87 --- /dev/null +++ b/tests/wpt/tests/partitioned-popins/partitioned-popins.permission-self.tentative.sub.https.window.js @@ -0,0 +1,32 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js + +'use strict'; + +// Spec: https://explainers-by-googlers.github.io/partitioned-popins/ +// Step 1 (window) Set up listener to resolve messages as they come in. +// Step 2 (window) Open iframe for other origin. +// Step 3 (iframe) Open partitioned popin. +// Step 4 (popin) Cleanup. +// Step 5 (iframe) Report failure. +// Step 6 (window) Cleanup. + +async_test(t => { + const id = String(Date.now()); + // Step 1 + window.addEventListener("message", t.step_func(e => { + switch (e.data.type) { + case 'popin': + // Step 6 + assert_equals(e.data.message, "Failure"); + t.done(); + break; + } + })); + + // Step 2 + const iframe = document.createElement("iframe"); + iframe.allow = "popins"; + iframe.src = "https://{{hosts[alt][]}}:{{ports[https][0]}}/partitioned-popins/resources/partitioned-popins.permissions-iframe.html"; + document.body.appendChild(iframe); +}, "Verify Partitioned Popins in an iframe fail when the policy is 'self'"); diff --git a/tests/wpt/tests/partitioned-popins/partitioned-popins.permission-self.tentative.sub.https.window.js.headers b/tests/wpt/tests/partitioned-popins/partitioned-popins.permission-self.tentative.sub.https.window.js.headers new file mode 100644 index 00000000000..0d61ec4d3e4 --- /dev/null +++ b/tests/wpt/tests/partitioned-popins/partitioned-popins.permission-self.tentative.sub.https.window.js.headers @@ -0,0 +1 @@ +Permissions-Policy: popins=self diff --git a/tests/wpt/tests/partitioned-popins/resources/partitioned-popins.cookies-iframe.html b/tests/wpt/tests/partitioned-popins/resources/partitioned-popins.cookies-iframe.html index 43ef731278e..04d95e6c6e9 100644 --- a/tests/wpt/tests/partitioned-popins/resources/partitioned-popins.cookies-iframe.html +++ b/tests/wpt/tests/partitioned-popins/resources/partitioned-popins.cookies-iframe.html @@ -4,9 +4,10 @@ + + diff --git a/tests/wpt/tests/partitioned-popins/resources/partitioned-popins.permissions-popin.html b/tests/wpt/tests/partitioned-popins/resources/partitioned-popins.permissions-popin.html new file mode 100644 index 00000000000..1009ee687a2 --- /dev/null +++ b/tests/wpt/tests/partitioned-popins/resources/partitioned-popins.permissions-popin.html @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/tests/permissions-policy/resources/digital-credentials-get.html b/tests/wpt/tests/permissions-policy/resources/digital-credentials-get.html new file mode 100644 index 00000000000..4b212756c22 --- /dev/null +++ b/tests/wpt/tests/permissions-policy/resources/digital-credentials-get.html @@ -0,0 +1,33 @@ + + + + + + + +

    Digital Credentials iframe

    + diff --git a/tests/wpt/tests/permissions-policy/resources/permissions-policy.js b/tests/wpt/tests/permissions-policy/resources/permissions-policy.js index d700cb086b3..cfc6d3caab1 100644 --- a/tests/wpt/tests/permissions-policy/resources/permissions-policy.js +++ b/tests/wpt/tests/permissions-policy/resources/permissions-policy.js @@ -30,7 +30,7 @@ function assert_permissions_policy_supported() { // promise. Used by test_feature_availability_with_post_message_result() function test_feature_availability( feature_descriptionOrObject, test, src, expect_feature_available, feature_name, - allowfullscreen, is_promise_test = false) { + allowfullscreen, is_promise_test = false, needs_focus = false) { if (feature_descriptionOrObject && feature_descriptionOrObject instanceof Object) { const { @@ -41,6 +41,7 @@ function test_feature_availability( feature_name, allowfullscreen, is_promise_test, + needs_focus, } = feature_descriptionOrObject; return test_feature_availability( feature_description, @@ -49,7 +50,8 @@ function test_feature_availability( expect_feature_available, feature_name, allowfullscreen, - is_promise_test + is_promise_test, + needs_focus, ); } @@ -84,6 +86,9 @@ function test_feature_availability( window.addEventListener('message', resolve); }).then(expectFeatureAvailable); document.body.appendChild(frame); + if (needs_focus) { + frame.focus(); + } return promise; } diff --git a/tests/wpt/tests/pointerevents/mouse-pointer-boundary-events-for-shadowdom.html b/tests/wpt/tests/pointerevents/mouse-pointer-boundary-events-for-shadowdom.html index ea200d6c966..70b7439ce40 100644 --- a/tests/wpt/tests/pointerevents/mouse-pointer-boundary-events-for-shadowdom.html +++ b/tests/wpt/tests/pointerevents/mouse-pointer-boundary-events-for-shadowdom.html @@ -12,63 +12,75 @@ + let outOfInputExpected = [ + "pointerout target=INPUT relatedTarget=BODY", + "pointerover target=BODY relatedTarget=INPUT", + "mouseout target=INPUT relatedTarget=BODY", + "mouseover target=BODY relatedTarget=INPUT", + ]; + assert_true(events_match_expected(receivedEvents, outOfInputExpected), "Moved out of "); + }, "PointerEvent: Verifies that mouse boundary events don't point to shadow-dom"); + \ No newline at end of file diff --git a/tests/wpt/tests/pointerevents/pointerevent_capture_implicit_release_on_parent_doc_while_subdoc_captures-manual.html b/tests/wpt/tests/pointerevents/pointerevent_capture_implicit_release_on_parent_doc_while_subdoc_captures-manual.html new file mode 100644 index 00000000000..b8524b378be --- /dev/null +++ b/tests/wpt/tests/pointerevents/pointerevent_capture_implicit_release_on_parent_doc_while_subdoc_captures-manual.html @@ -0,0 +1,127 @@ + + + + + +Pointer Events when mouse button up on the parent document while an element in a child document captures the pointer + + + + + +
    +

    Test steps:

    +
      +
    1. Press the button with primary button of your mouse and start dragging
    2. +
    3. Move the mouse cursor over the red border box and release the mouse button
    4. +
    +
    + +
    And release mouse button over this box
    + + diff --git a/tests/wpt/tests/pointerevents/pointerevent_capture_implicit_release_on_subdoc_while_parent_doc_captures-manual.html b/tests/wpt/tests/pointerevents/pointerevent_capture_implicit_release_on_subdoc_while_parent_doc_captures-manual.html new file mode 100644 index 00000000000..44032c11e5f --- /dev/null +++ b/tests/wpt/tests/pointerevents/pointerevent_capture_implicit_release_on_subdoc_while_parent_doc_captures-manual.html @@ -0,0 +1,128 @@ + + + + + +Pointer Events when mouse button up on a sub-document while an element in parent document captures the pointer + + + + + +
    +

    Test steps:

    +
      +
    1. Press the button with primary button of your mouse and start dragging
    2. +
    3. Move the mouse cursor over the red border box and release the mouse button
    4. +
    +
    + +

    + + + diff --git a/tests/wpt/tests/resources/testdriver.js b/tests/wpt/tests/resources/testdriver.js index 985dbb0e403..e737a6ee659 100644 --- a/tests/wpt/tests/resources/testdriver.js +++ b/tests/wpt/tests/resources/testdriver.js @@ -1128,7 +1128,7 @@ * deleted hosts. * * Matches the `Run Bounce Tracking Mitigations - * https://privacycg.github.io/nav-tracking-mitigations/#run-bounce-tracking-mitigations-command`_ + * `_ * WebDriver command. * * @param {WindowProxy} [context=null] - Browsing context in which to diff --git a/tests/wpt/tests/resources/testharness.js b/tests/wpt/tests/resources/testharness.js index 61cd1851115..7fd5336bf34 100644 --- a/tests/wpt/tests/resources/testharness.js +++ b/tests/wpt/tests/resources/testharness.js @@ -4408,13 +4408,20 @@ { var substitution_re = /\$\{([^ }]*)\}/g; - function do_substitution(input) { + function do_substitution(input) + { var components = input.split(substitution_re); var rv = []; - for (var i = 0; i < components.length; i += 2) { - rv.push(components[i]); - if (components[i + 1]) { - rv.push(String(substitutions[components[i + 1]])); + if (components.length === 1) { + rv = components; + } else if (substitutions) { + for (var i = 0; i < components.length; i += 2) { + if (components[i]) { + rv.push(components[i]); + } + if (substitutions[components[i + 1]]) { + rv.push(String(substitutions[components[i + 1]])); + } } } return rv; diff --git a/tests/wpt/tests/scroll-to-text-fragment/scroll-to-text-fragment-open-link-in-new-tab-desktop.html b/tests/wpt/tests/scroll-to-text-fragment/scroll-to-text-fragment-open-link-in-new-tab-desktop.html new file mode 100644 index 00000000000..01efe38f8f1 --- /dev/null +++ b/tests/wpt/tests/scroll-to-text-fragment/scroll-to-text-fragment-open-link-in-new-tab-desktop.html @@ -0,0 +1,28 @@ + +Navigating to a text fragment directive in a new tab + + + + + + + + + + + diff --git a/tests/wpt/tests/selection/shadow-dom/tentative/Selection-isCollapsed.html b/tests/wpt/tests/selection/shadow-dom/tentative/Selection-isCollapsed.html new file mode 100644 index 00000000000..60384a20d37 --- /dev/null +++ b/tests/wpt/tests/selection/shadow-dom/tentative/Selection-isCollapsed.html @@ -0,0 +1,76 @@ + + + + + + + + + + +
    +
    + +
    +

    Outside shadow tree.

    +
    + +
    +
    + + \ No newline at end of file diff --git a/tests/wpt/tests/shadow-dom/reference-target/tentative/property-reflection.html b/tests/wpt/tests/shadow-dom/reference-target/tentative/property-reflection.html index 078eb28665d..b182087aaed 100644 --- a/tests/wpt/tests/shadow-dom/reference-target/tentative/property-reflection.html +++ b/tests/wpt/tests/shadow-dom/reference-target/tentative/property-reflection.html @@ -1,7 +1,7 @@ - + @@ -9,202 +9,95 @@ - -
    - - - - - - - - - - - - -
    -
    -
    -
    -
    -
    -
    -
    - - - - - -
    - -
    - - - - -
    - - - - - - -
    +
    diff --git a/tests/wpt/tests/storage-access-api/helpers.js b/tests/wpt/tests/storage-access-api/helpers.js index 7a476805135..a1fd02ab5e6 100644 --- a/tests/wpt/tests/storage-access-api/helpers.js +++ b/tests/wpt/tests/storage-access-api/helpers.js @@ -30,11 +30,14 @@ async function CreateFrameHelper(setUpFrame, fetchTests) { // the document, and optionally fetch tests. Returns the loaded frame, once // ready. function CreateFrame( - sourceURL, fetchTests = false, frameSandboxAttribute = undefined) { + sourceURL, fetchTests = false, frameSandboxAttribute = undefined, frameAllowAttribute = undefined) { return CreateFrameHelper((frame) => { if (frameSandboxAttribute !== undefined) { frame.sandbox = frameSandboxAttribute; } + if (frameAllowAttribute !== undefined) { + frame.setAttribute("allow", frameAllowAttribute); + } frame.src = sourceURL; document.body.appendChild(frame); @@ -226,6 +229,11 @@ function RequestStorageAccessInFrame(frame) { { command: "requestStorageAccess" }, frame.contentWindow); } +function GetPermissionInFrame(frame) { + return PostMessageAndAwaitReply( + { command: "get_permission" }, frame.contentWindow); +} + // Executes test_driver.set_permission in the given frame, with the provided // arguments. function SetPermissionInFrame(frame, args = []) { diff --git a/tests/wpt/tests/storage-access-api/resources/embedded_responder.js b/tests/wpt/tests/storage-access-api/resources/embedded_responder.js index c222c4dac05..fb3bef40b2d 100644 --- a/tests/wpt/tests/storage-access-api/resources/embedded_responder.js +++ b/tests/wpt/tests/storage-access-api/resources/embedded_responder.js @@ -55,13 +55,19 @@ window.addEventListener("message", async (event) => { await test_driver.set_permission(...event.data.args); reply(undefined); break; - case "observe_permission_change": + case "get_permission": { + const status = await navigator.permissions.query({name: "storage-access"}); + reply(status.state); + break; + } + case "observe_permission_change": { const status = await navigator.permissions.query({name: "storage-access"}); status.addEventListener("change", (event) => { parent.postMessage(event.target.state, '*'); }, { once: true }); reply('permission_change_observer_installed'); break; + } case "reload": window.location.reload(); break; diff --git a/tests/wpt/tests/streams/readable-byte-streams/tee.any.js b/tests/wpt/tests/streams/readable-byte-streams/tee.any.js index 7dd5ba3f3fb..60d82b9cf6a 100644 --- a/tests/wpt/tests/streams/readable-byte-streams/tee.any.js +++ b/tests/wpt/tests/streams/readable-byte-streams/tee.any.js @@ -934,3 +934,36 @@ promise_test(async () => { assert_typed_array_equals(result4.value, new Uint8Array([0]).subarray(0, 0), 'second chunk from branch2 should be correct'); }, 'ReadableStream teeing with byte source: respond() and close() while both branches are pulling'); + +promise_test(async t => { + let pullCount = 0; + const arrayBuffer = new Uint8Array([0x01, 0x02, 0x03]).buffer; + const enqueuedChunk = new Uint8Array(arrayBuffer, 2); + assert_equals(enqueuedChunk.length, 1); + assert_equals(enqueuedChunk.byteOffset, 2); + const rs = new ReadableStream({ + type: 'bytes', + pull(c) { + ++pullCount; + if (pullCount === 1) { + c.enqueue(enqueuedChunk); + } + } + }); + + const [branch1, branch2] = rs.tee(); + const reader1 = branch1.getReader(); + const reader2 = branch2.getReader(); + + const [result1, result2] = await Promise.all([reader1.read(), reader2.read()]); + assert_equals(result1.done, false, 'reader1 done'); + assert_equals(result2.done, false, 'reader2 done'); + + const view1 = result1.value; + const view2 = result2.value; + // The first stream has the transferred buffer, but the second stream has the + // cloned buffer. + const underlying = new Uint8Array([0x01, 0x02, 0x03]).buffer; + assert_typed_array_equals(view1, new Uint8Array(underlying, 2), 'reader1 value'); + assert_typed_array_equals(view2, new Uint8Array([0x03]), 'reader2 value'); +}, 'ReadableStream teeing with byte source: reading an array with a byte offset should clone correctly'); diff --git a/tests/wpt/tests/streams/readable-streams/crashtests/from-cross-realm.https.html b/tests/wpt/tests/streams/readable-streams/crashtests/from-cross-realm.https.html new file mode 100644 index 00000000000..b242e41dac4 --- /dev/null +++ b/tests/wpt/tests/streams/readable-streams/crashtests/from-cross-realm.https.html @@ -0,0 +1,14 @@ + + + diff --git a/tests/wpt/tests/svg/painting/reftests/non-scaling-stroke-005-ref.html b/tests/wpt/tests/svg/painting/reftests/non-scaling-stroke-005-ref.html new file mode 100644 index 00000000000..3adf8f2c8dd --- /dev/null +++ b/tests/wpt/tests/svg/painting/reftests/non-scaling-stroke-005-ref.html @@ -0,0 +1,47 @@ + + +Reference: non-scaling-stroke with scaling from viewBox + + + + + + + + + + + + + + +
    + + + + + + + + + + + + diff --git a/tests/wpt/tests/svg/painting/reftests/non-scaling-stroke-005.html b/tests/wpt/tests/svg/painting/reftests/non-scaling-stroke-005.html new file mode 100644 index 00000000000..bc7259d0832 --- /dev/null +++ b/tests/wpt/tests/svg/painting/reftests/non-scaling-stroke-005.html @@ -0,0 +1,57 @@ + + +non-scaling-stroke with scaling from viewBox + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + diff --git a/tests/wpt/tests/svg/painting/reftests/non-scaling-stroke-006-ref.html b/tests/wpt/tests/svg/painting/reftests/non-scaling-stroke-006-ref.html new file mode 100644 index 00000000000..d4cc4a6e4ea --- /dev/null +++ b/tests/wpt/tests/svg/painting/reftests/non-scaling-stroke-006-ref.html @@ -0,0 +1,47 @@ + + +Reference: non-scaling-stroke with scaling from viewBox and preserveAspectRatio=none + + + + + + + + + + + + + + +
    + + + + + + + + + + + + diff --git a/tests/wpt/tests/svg/painting/reftests/non-scaling-stroke-006.html b/tests/wpt/tests/svg/painting/reftests/non-scaling-stroke-006.html new file mode 100644 index 00000000000..677a35272b9 --- /dev/null +++ b/tests/wpt/tests/svg/painting/reftests/non-scaling-stroke-006.html @@ -0,0 +1,57 @@ + + +non-scaling-stroke with scaling from viewBox and preserveAspectRatio=none + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executormarionette.py b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executormarionette.py index fe1fed13630..c1748f1ffda 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executormarionette.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executormarionette.py @@ -275,15 +275,18 @@ class MarionetteTestharnessProtocolPart(TestharnessProtocolPart): def test_window_loaded(self): """Wait until the page in the new window has been loaded. - Hereby ignore Javascript execptions that are thrown when + Hereby ignore Javascript exceptions that are thrown when the document has been unloaded due to a process change. """ while True: try: self.parent.base.execute_script(self.window_loaded_script, asynchronous=True) break - except errors.JavascriptException: - pass + except errors.JavascriptException as e: + if e.message.startswith("Script evaluation aborted: Actor"): + # Special-case JavaScript errors for a JSWindowActor destroy + # until a decision is made on bug 1673478. + pass class MarionettePrefsProtocolPart(PrefsProtocolPart): diff --git a/tests/wpt/tests/url/resources/urltestdata.json b/tests/wpt/tests/url/resources/urltestdata.json index 91fcca2c3c2..9dbe5456a96 100644 --- a/tests/wpt/tests/url/resources/urltestdata.json +++ b/tests/wpt/tests/url/resources/urltestdata.json @@ -9643,6 +9643,201 @@ "search": "", "hash": "" }, + { + "input": "android://x:0/a", + "base": null, + "href": "android://x:0/a", + "origin": "null", + "protocol": "android:", + "username": "", + "password": "", + "host": "x:0", + "hostname": "x", + "port": "0", + "pathname": "/a", + "search": "", + "hash": "" + }, + { + "input": "drivefs://x:0/a", + "base": null, + "href": "drivefs://x:0/a", + "origin": "null", + "protocol": "drivefs:", + "username": "", + "password": "", + "host": "x:0", + "hostname": "x", + "port": "0", + "pathname": "/a", + "search": "", + "hash": "" + }, + { + "input": "chromeos-steam://x:0/a", + "base": null, + "href": "chromeos-steam://x:0/a", + "origin": "null", + "protocol": "chromeos-steam:", + "username": "", + "password": "", + "host": "x:0", + "hostname": "x", + "port": "0", + "pathname": "/a", + "search": "", + "hash": "" + }, + { + "input": "steam://x:0/a", + "base": null, + "href": "steam://x:0/a", + "origin": "null", + "protocol": "steam:", + "username": "", + "password": "", + "host": "x:0", + "hostname": "x", + "port": "0", + "pathname": "/a", + "search": "", + "hash": "" + }, + { + "input": "materialized-view://x:0/a", + "base": null, + "href": "materialized-view://x:0/a", + "origin": "null", + "protocol": "materialized-view:", + "username": "", + "password": "", + "host": "x:0", + "hostname": "x", + "port": "0", + "pathname": "/a", + "search": "", + "hash": "" + }, + { + "input": "android-app://x:0", + "base": null, + "href": "android-app://x:0", + "origin": "null", + "protocol": "android-app:", + "username": "", + "password": "", + "host": "x:0", + "hostname": "x", + "port": "0", + "pathname": "", + "search": "", + "hash": "" + }, + { + "input": "chrome-distiller://x:0", + "base": null, + "href": "chrome-distiller://x:0", + "origin": "null", + "protocol": "chrome-distiller:", + "username": "", + "password": "", + "host": "x:0", + "hostname": "x", + "port": "0", + "pathname": "", + "search": "", + "hash": "" + }, + { + "input": "chrome-extension://x:0", + "base": null, + "href": "chrome-extension://x:0", + "origin": "null", + "protocol": "chrome-extension:", + "username": "", + "password": "", + "host": "x:0", + "hostname": "x", + "port": "0", + "pathname": "", + "search": "", + "hash": "" + }, + { + "input": "chrome-native://x:0", + "base": null, + "href": "chrome-native://x:0", + "origin": "null", + "protocol": "chrome-native:", + "username": "", + "password": "", + "host": "x:0", + "hostname": "x", + "port": "0", + "pathname": "", + "search": "", + "hash": "" + }, + { + "input": "chrome-resource://x:0", + "base": null, + "href": "chrome-resource://x:0", + "origin": "null", + "protocol": "chrome-resource:", + "username": "", + "password": "", + "host": "x:0", + "hostname": "x", + "port": "0", + "pathname": "", + "search": "", + "hash": "" + }, + { + "input": "chrome-search://x:0", + "base": null, + "href": "chrome-search://x:0", + "origin": "null", + "protocol": "chrome-search:", + "username": "", + "password": "", + "host": "x:0", + "hostname": "x", + "port": "0", + "pathname": "", + "search": "", + "hash": "" + }, + { + "input": "fuchsia-dir://x:0", + "base": null, + "href": "fuchsia-dir://x:0", + "origin": "null", + "protocol": "fuchsia-dir:", + "username": "", + "password": "", + "host": "x:0", + "hostname": "x", + "port": "0", + "pathname": "", + "search": "", + "hash": "" + }, + { + "input": "isolated-app://x:0", + "base": null, + "href": "isolated-app://x:0", + "origin": "null", + "protocol": "isolated-app:", + "username": "", + "password": "", + "host": "x:0", + "hostname": "x", + "port": "0", + "pathname": "", + "search": "", + "hash": "" + }, "Scheme relative path starting with multiple slashes", { "input": "///test", diff --git a/tests/wpt/tests/viewport/META.yml b/tests/wpt/tests/viewport/META.yml new file mode 100644 index 00000000000..38eb8c0cb93 --- /dev/null +++ b/tests/wpt/tests/viewport/META.yml @@ -0,0 +1,4 @@ +spec: https://drafts.csswg.org/css-viewport-1/ +suggested_reviewers: + - bokand + - chrishtr diff --git a/tests/wpt/tests/viewport/WEB_FEATURES.yml b/tests/wpt/tests/viewport/WEB_FEATURES.yml new file mode 100644 index 00000000000..8f93ba9790f --- /dev/null +++ b/tests/wpt/tests/viewport/WEB_FEATURES.yml @@ -0,0 +1,3 @@ +features: +- name: viewport + files: "**" diff --git a/tests/wpt/tests/viewport/viewport-segments.html b/tests/wpt/tests/viewport/viewport-segments.html new file mode 100644 index 00000000000..64f0eb9caef --- /dev/null +++ b/tests/wpt/tests/viewport/viewport-segments.html @@ -0,0 +1,14 @@ + + +Viewport Segments: viewport.segments + + + + diff --git a/tests/wpt/tests/visual-viewport/viewport-segments.tentative.html b/tests/wpt/tests/visual-viewport/viewport-segments.tentative.html deleted file mode 100644 index c90ed29d730..00000000000 --- a/tests/wpt/tests/visual-viewport/viewport-segments.tentative.html +++ /dev/null @@ -1,15 +0,0 @@ - - -Viewport Segments: visualViewport.segments tentative - - - - - diff --git a/tests/wpt/tests/wasm/jsapi/js-string/basic.tentative.any.js b/tests/wpt/tests/wasm/jsapi/js-string/basic.tentative.any.js new file mode 100644 index 00000000000..6275aacd5f6 --- /dev/null +++ b/tests/wpt/tests/wasm/jsapi/js-string/basic.tentative.any.js @@ -0,0 +1,383 @@ +// META: global=window,dedicatedworker,jsshell,shadowrealm +// META: script=/wasm/jsapi/assertions.js +// META: script=/wasm/jsapi/wasm-module-builder.js +// META: script=/wasm/jsapi/js-string/polyfill.js + +// Generate two sets of exports, one from a polyfill implementation and another +// from the builtins provided by the host. +let polyfillExports; +let builtinExports; +setup(() => { + // Compile a module that exports a function for each builtin that will call + // it. We could just generate a module that re-exports the builtins, but that + // would not catch any special codegen that could happen when direct calling + // a known builtin function from wasm. + const builder = new WasmModuleBuilder(); + const arrayIndex = builder.addArray(kWasmI16, true, kNoSuperType, true); + const builtins = [ + { + name: "test", + params: [kWasmExternRef], + results: [kWasmI32], + }, + { + name: "cast", + params: [kWasmExternRef], + results: [wasmRefType(kWasmExternRef)], + }, + { + name: "fromCharCodeArray", + params: [wasmRefNullType(arrayIndex), kWasmI32, kWasmI32], + results: [wasmRefType(kWasmExternRef)], + }, + { + name: "intoCharCodeArray", + params: [kWasmExternRef, wasmRefNullType(arrayIndex), kWasmI32], + results: [kWasmI32], + }, + { + name: "fromCharCode", + params: [kWasmI32], + results: [wasmRefType(kWasmExternRef)], + }, + { + name: "fromCodePoint", + params: [kWasmI32], + results: [wasmRefType(kWasmExternRef)], + }, + { + name: "charCodeAt", + params: [kWasmExternRef, kWasmI32], + results: [kWasmI32], + }, + { + name: "codePointAt", + params: [kWasmExternRef, kWasmI32], + results: [kWasmI32], + }, + { + name: "length", + params: [kWasmExternRef], + results: [kWasmI32], + }, + { + name: "concat", + params: [kWasmExternRef, kWasmExternRef], + results: [wasmRefType(kWasmExternRef)], + }, + { + name: "substring", + params: [kWasmExternRef, kWasmI32, kWasmI32], + results: [wasmRefType(kWasmExternRef)], + }, + { + name: "equals", + params: [kWasmExternRef, kWasmExternRef], + results: [kWasmI32], + }, + { + name: "compare", + params: [kWasmExternRef, kWasmExternRef], + results: [kWasmI32], + }, + ]; + + // Add a function type for each builtin + for (let builtin of builtins) { + builtin.type = builder.addType({ + params: builtin.params, + results: builtin.results + }); + } + + // Add an import for each builtin + for (let builtin of builtins) { + builtin.importFuncIndex = builder.addImport( + "wasm:js-string", + builtin.name, + builtin.type); + } + + // Generate an exported function to call the builtin + for (let builtin of builtins) { + let func = builder.addFunction(builtin.name + "Imp", builtin.type); + func.addLocals(builtin.params.length); + let body = []; + for (let i = 0; i < builtin.params.length; i++) { + body.push(kExprLocalGet); + body.push(...wasmSignedLeb(i)); + } + body.push(kExprCallFunction); + body.push(...wasmSignedLeb(builtin.importFuncIndex)); + func.addBody(body); + func.exportAs(builtin.name); + } + + const buffer = builder.toBuffer(); + + // Instantiate this module using the builtins from the host + const builtinModule = new WebAssembly.Module(buffer, { + builtins: ["js-string"] + }); + const builtinInstance = new WebAssembly.Instance(builtinModule, {}); + builtinExports = builtinInstance.exports; + + // Instantiate this module using the polyfill module + const polyfillModule = new WebAssembly.Module(buffer); + const polyfillInstance = new WebAssembly.Instance(polyfillModule, { + "wasm:js-string": polyfillImports + }); + polyfillExports = polyfillInstance.exports; +}); + +// A helper function to assert that the behavior of two functions are the +// same. +function assert_same_behavior(funcA, funcB, ...params) { + let resultA; + let errA = null; + try { + resultA = funcA(...params); + } catch (err) { + errA = err; + } + + let resultB; + let errB = null; + try { + resultB = funcB(...params); + } catch (err) { + errB = err; + } + + if (errA || errB) { + assert_equals(errA === null, errB === null, errA ? errA.message : errB.message); + assert_equals(Object.getPrototypeOf(errA), Object.getPrototypeOf(errB)); + } + assert_equals(resultA, resultB); + + if (errA) { + throw errA; + } + return resultA; +} + +function assert_throws_if(func, shouldThrow, constructor) { + let error = null; + try { + func(); + } catch (e) { + error = e; + } + assert_equals(error !== null, shouldThrow); + if (shouldThrow && error !== null) { + assert_true(error instanceof constructor); + } +} + +// Constant values used in the tests below +const testStrings = [ + "", + "a", + "1", + "ab", + "hello, world", + "\n", + "☺", + "☺☺", + String.fromCodePoint(0x10000, 0x10001) +]; +const testCharCodes = [1, 2, 3, 10, 0x7f, 0xff, 0xfffe, 0xffff]; +const testCodePoints = [1, 2, 3, 10, 0x7f, 0xff, 0xfffe, 0xffff, 0x10000, 0x10001]; +const testExternRefValues = [ + null, + undefined, + true, + false, + {x:1337}, + ["abracadabra"], + 13.37, + -0, + 0x7fffffff + 0.1, + -0x7fffffff - 0.1, + 0x80000000 + 0.1, + -0x80000000 - 0.1, + 0xffffffff + 0.1, + -0xffffffff - 0.1, + Number.EPSILON, + Number.MAX_SAFE_INTEGER, + Number.MIN_SAFE_INTEGER, + Number.MIN_VALUE, + Number.MAX_VALUE, + Number.NaN, + "hi", + 37n, + new Number(42), + new Boolean(true), + Symbol("status"), + () => 1337, +]; + +// Test that `test` and `cast` work on various JS values. Run all the +// other builtins and assert that they also perform equivalent type +// checks. +test(() => { + for (let a of testExternRefValues) { + let isString = assert_same_behavior( + builtinExports['test'], + polyfillExports['test'], + a + ); + + assert_throws_if(() => assert_same_behavior( + builtinExports['cast'], + polyfillExports['cast'], + a + ), !isString, WebAssembly.RuntimeError); + + let arrayMutI16 = helperExports.createArrayMutI16(10); + assert_throws_if(() => assert_same_behavior( + builtinExports['intoCharCodeArray'], + polyfillExports['intoCharCodeArray'], + a, arrayMutI16, 0 + ), !isString, WebAssembly.RuntimeError); + + assert_throws_if(() => assert_same_behavior( + builtinExports['charCodeAt'], + polyfillExports['charCodeAt'], + a, 0 + ), !isString, WebAssembly.RuntimeError); + + assert_throws_if(() => assert_same_behavior( + builtinExports['codePointAt'], + polyfillExports['codePointAt'], + a, 0 + ), !isString, WebAssembly.RuntimeError); + + assert_throws_if(() => assert_same_behavior( + builtinExports['length'], + polyfillExports['length'], + a + ), !isString, WebAssembly.RuntimeError); + + assert_throws_if(() => assert_same_behavior( + builtinExports['concat'], + polyfillExports['concat'], + a, a + ), !isString, WebAssembly.RuntimeError); + + assert_throws_if(() => assert_same_behavior( + builtinExports['substring'], + polyfillExports['substring'], + a, 0, 0 + ), !isString, WebAssembly.RuntimeError); + + assert_throws_if(() => assert_same_behavior( + builtinExports['equals'], + polyfillExports['equals'], + a, a + ), !isString, WebAssembly.RuntimeError); + + assert_throws_if(() => assert_same_behavior( + builtinExports['compare'], + polyfillExports['compare'], + a, a + ), !isString, WebAssembly.RuntimeError); + } +}); + +// Test that `fromCharCode` works on various char codes +test(() => { + for (let a of testCharCodes) { + assert_same_behavior( + builtinExports['fromCharCode'], + polyfillExports['fromCharCode'], + a + ); + } +}); + +// Test that `fromCodePoint` works on various code points +test(() => { + for (let a of testCodePoints) { + assert_same_behavior( + builtinExports['fromCodePoint'], + polyfillExports['fromCodePoint'], + a + ); + } +}); + +// Perform tests on various strings +test(() => { + for (let a of testStrings) { + let length = assert_same_behavior( + builtinExports['length'], + polyfillExports['length'], + a + ); + + for (let i = 0; i < length; i++) { + let charCode = assert_same_behavior( + builtinExports['charCodeAt'], + polyfillExports['charCodeAt'], + a, i + ); + } + + for (let i = 0; i < length; i++) { + let charCode = assert_same_behavior( + builtinExports['codePointAt'], + polyfillExports['codePointAt'], + a, i + ); + } + + let arrayMutI16 = helperExports.createArrayMutI16(length); + assert_same_behavior( + builtinExports['intoCharCodeArray'], + polyfillExports['intoCharCodeArray'], + a, arrayMutI16, 0 + ); + + assert_same_behavior( + builtinExports['fromCharCodeArray'], + polyfillExports['fromCharCodeArray'], + arrayMutI16, 0, length + ); + + for (let i = 0; i < length; i++) { + for (let j = 0; j < length; j++) { + assert_same_behavior( + builtinExports['substring'], + polyfillExports['substring'], + a, i, j + ); + } + } + } +}); + +// Test various binary operations +test(() => { + for (let a of testStrings) { + for (let b of testStrings) { + assert_same_behavior( + builtinExports['concat'], + polyfillExports['concat'], + a, b + ); + + assert_same_behavior( + builtinExports['equals'], + polyfillExports['equals'], + a, b + ); + + assert_same_behavior( + builtinExports['compare'], + polyfillExports['compare'], + a, b + ); + } + } +}); diff --git a/tests/wpt/tests/wasm/jsapi/js-string/constants.tentative.any.js b/tests/wpt/tests/wasm/jsapi/js-string/constants.tentative.any.js new file mode 100644 index 00000000000..ef391a90b7a --- /dev/null +++ b/tests/wpt/tests/wasm/jsapi/js-string/constants.tentative.any.js @@ -0,0 +1,61 @@ +// META: global=window,dedicatedworker,jsshell,shadowrealm +// META: script=/wasm/jsapi/wasm-module-builder.js + +// Instantiate a module with an imported global and return the global. +function instantiateImportedGlobal(module, name, type, mutable, importedStringConstants) { + let builder = new WasmModuleBuilder(); + builder.addImportedGlobal(module, name, type, mutable); + builder.addExportOfKind("global", kExternalGlobal, 0); + let bytes = builder.toBuffer(); + let mod = new WebAssembly.Module(bytes, { importedStringConstants }); + let instance = new WebAssembly.Instance(mod, {}); + return instance.exports["global"]; +} + +const badGlobalTypes = [ + [kWasmAnyRef, false], + [kWasmAnyRef, true], + [wasmRefType(kWasmAnyRef), false], + [wasmRefType(kWasmAnyRef), true], + [kWasmFuncRef, false], + [kWasmFuncRef, true], + [wasmRefType(kWasmFuncRef), false], + [wasmRefType(kWasmFuncRef), true], + [kWasmExternRef, true], + [wasmRefType(kWasmExternRef), true], +]; +for ([type, mutable] of badGlobalTypes) { + test(() => { + assert_throws_js(WebAssembly.CompileError, + () => instantiateImportedGlobal("'", "constant", type, mutable, "'"), + "type mismatch"); + }); +} + +const goodGlobalTypes = [ + [kWasmExternRef, false], + [wasmRefType(kWasmExternRef), false], +]; +const constants = [ + '', + '\0', + '0', + '0'.repeat(100000), + '\uD83D\uDE00', +]; +const namespaces = [ + "", + "'", + "strings" +]; + +for (let namespace of namespaces) { + for (let constant of constants) { + for ([type, mutable] of goodGlobalTypes) { + test(() => { + let result = instantiateImportedGlobal(namespace, constant, type, mutable, namespace); + assert_equals(result.value, constant); + }); + } + } +} diff --git a/tests/wpt/tests/wasm/jsapi/js-string/imports.tentative.any.js b/tests/wpt/tests/wasm/jsapi/js-string/imports.tentative.any.js new file mode 100644 index 00000000000..c357760befb --- /dev/null +++ b/tests/wpt/tests/wasm/jsapi/js-string/imports.tentative.any.js @@ -0,0 +1,26 @@ +// META: global=window,dedicatedworker,jsshell,shadowrealm +// META: script=/wasm/jsapi/wasm-module-builder.js + +test(() => { + let builder = new WasmModuleBuilder(); + + // Import a string constant + builder.addImportedGlobal("constants", "constant", kWasmExternRef, false); + + // Import a builtin function + builder.addImport( + "wasm:js-string", + "test", + {params: [kWasmExternRef], results: [kWasmI32]}); + + let buffer = builder.toBuffer(); + let module = new WebAssembly.Module(buffer, { + builtins: ["js-string"], + importedStringConstants: "constants" + }); + let imports = WebAssembly.Module.imports(module); + + // All imports that refer to a builtin module are suppressed from import + // reflection. + assert_equals(imports.length, 0); +}); diff --git a/tests/wpt/tests/wasm/jsapi/js-string/polyfill.js b/tests/wpt/tests/wasm/jsapi/js-string/polyfill.js new file mode 100644 index 00000000000..e18236899df --- /dev/null +++ b/tests/wpt/tests/wasm/jsapi/js-string/polyfill.js @@ -0,0 +1,170 @@ +// Generate some helper functions for manipulating (array (mut i16)) from JS +let helperExports; +{ + const builder = new WasmModuleBuilder(); + const arrayIndex = builder.addArray(kWasmI16, true, kNoSuperType, true); + + builder + .addFunction("createArrayMutI16", { + params: [kWasmI32], + results: [kWasmAnyRef] + }) + .addBody([ + kExprLocalGet, + ...wasmSignedLeb(0), + ...GCInstr(kExprArrayNewDefault), + ...wasmSignedLeb(arrayIndex) + ]) + .exportFunc(); + + builder + .addFunction("arrayLength", { + params: [kWasmArrayRef], + results: [kWasmI32] + }) + .addBody([ + kExprLocalGet, + ...wasmSignedLeb(0), + ...GCInstr(kExprArrayLen) + ]) + .exportFunc(); + + builder + .addFunction("arraySet", { + params: [wasmRefNullType(arrayIndex), kWasmI32, kWasmI32], + results: [] + }) + .addBody([ + kExprLocalGet, + ...wasmSignedLeb(0), + kExprLocalGet, + ...wasmSignedLeb(1), + kExprLocalGet, + ...wasmSignedLeb(2), + ...GCInstr(kExprArraySet), + ...wasmSignedLeb(arrayIndex) + ]) + .exportFunc(); + + builder + .addFunction("arrayGet", { + params: [wasmRefNullType(arrayIndex), kWasmI32], + results: [kWasmI32] + }) + .addBody([ + kExprLocalGet, + ...wasmSignedLeb(0), + kExprLocalGet, + ...wasmSignedLeb(1), + ...GCInstr(kExprArrayGetU), + ...wasmSignedLeb(arrayIndex) + ]) + .exportFunc(); + + let bytes = builder.toBuffer(); + let module = new WebAssembly.Module(bytes); + let instance = new WebAssembly.Instance(module); + + helperExports = instance.exports; +} + +function throwIfNotString(a) { + if (typeof a !== "string") { + throw new WebAssembly.RuntimeError(); + } +} + +this.polyfillImports = { + test: (string) => { + if (string === null || + typeof string !== "string") { + return 0; + } + return 1; + }, + cast: (string) => { + throwIfNotString(string); + return string; + }, + fromCharCodeArray: (array, arrayStart, arrayCount) => { + arrayStart >>>= 0; + arrayCount >>>= 0; + let length = helperExports.arrayLength(array); + if (BigInt(arrayStart) + BigInt(arrayCount) > BigInt(length)) { + throw new WebAssembly.RuntimeError(); + } + let result = ''; + for (let i = arrayStart; i < arrayStart + arrayCount; i++) { + result += String.fromCharCode(helperExports.arrayGet(array, i)); + } + return result; + }, + intoCharCodeArray: (string, arr, arrayStart) => { + arrayStart >>>= 0; + throwIfNotString(string); + let arrLength = helperExports.arrayLength(arr); + let stringLength = string.length; + if (BigInt(arrayStart) + BigInt(stringLength) > BigInt(arrLength)) { + throw new WebAssembly.RuntimeError(); + } + for (let i = 0; i < stringLength; i++) { + helperExports.arraySet(arr, arrayStart + i, string[i].charCodeAt(0)); + } + return stringLength; + }, + fromCharCode: (charCode) => { + charCode >>>= 0; + return String.fromCharCode(charCode); + }, + fromCodePoint: (codePoint) => { + codePoint >>>= 0; + return String.fromCodePoint(codePoint); + }, + charCodeAt: (string, stringIndex) => { + stringIndex >>>= 0; + throwIfNotString(string); + if (stringIndex >= string.length) + throw new WebAssembly.RuntimeError(); + return string.charCodeAt(stringIndex); + }, + codePointAt: (string, stringIndex) => { + stringIndex >>>= 0; + throwIfNotString(string); + if (stringIndex >= string.length) + throw new WebAssembly.RuntimeError(); + return string.codePointAt(stringIndex); + }, + length: (string) => { + throwIfNotString(string); + return string.length; + }, + concat: (stringA, stringB) => { + throwIfNotString(stringA); + throwIfNotString(stringB); + return stringA + stringB; + }, + substring: (string, startIndex, endIndex) => { + startIndex >>>= 0; + endIndex >>>= 0; + throwIfNotString(string); + if (startIndex > string.length, + endIndex > string.length, + endIndex < startIndex) { + return ""; + } + return string.substring(startIndex, endIndex); + }, + equals: (stringA, stringB) => { + throwIfNotString(stringA); + throwIfNotString(stringB); + return stringA === stringB; + }, + compare: (stringA, stringB) => { + throwIfNotString(stringA); + throwIfNotString(stringB); + if (stringA < stringB) { + return -1; + } + return stringA === stringB ? 0 : 1; + }, +}; diff --git a/tests/wpt/tests/wasm/jsapi/wasm-module-builder.js b/tests/wpt/tests/wasm/jsapi/wasm-module-builder.js index 1d8db0a6e6f..90ccc954a5d 100644 --- a/tests/wpt/tests/wasm/jsapi/wasm-module-builder.js +++ b/tests/wpt/tests/wasm/jsapi/wasm-module-builder.js @@ -105,6 +105,10 @@ let kWasmF32 = 0x7d; let kWasmF64 = 0x7c; let kWasmS128 = 0x7b; +// Packed storage types +let kWasmI8 = 0x78; +let kWasmI16 = 0x77; + // These are defined as negative integers to distinguish them from positive type // indices. let kWasmNullFuncRef = -0x0d; @@ -1152,7 +1156,7 @@ class WasmModuleBuilder { section.emit_string(imp.name || ''); section.emit_u8(imp.kind); if (imp.kind == kExternalFunction) { - section.emit_u32v(imp.type_index); + section.emit_u32v(imp.type); } else if (imp.kind == kExternalGlobal) { section.emit_type(imp.type); section.emit_u8(imp.mutable); diff --git a/tests/wpt/tests/webauthn/createcredential-clientdata.https.html b/tests/wpt/tests/webauthn/createcredential-clientdata.https.html new file mode 100644 index 00000000000..3759d5be9d3 --- /dev/null +++ b/tests/wpt/tests/webauthn/createcredential-clientdata.https.html @@ -0,0 +1,47 @@ + + +WebAuthn navigator.credentials.create() clientData test + + + + + + + + diff --git a/tests/wpt/tests/webdriver/tests/bidi/input/perform_actions/pointer_touch.py b/tests/wpt/tests/webdriver/tests/bidi/input/perform_actions/pointer_touch.py index 95aa62ceba9..f036de7c744 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/input/perform_actions/pointer_touch.py +++ b/tests/wpt/tests/webdriver/tests/bidi/input/perform_actions/pointer_touch.py @@ -100,6 +100,8 @@ async def test_touch_pointer_properties( ) events = await get_events(bidi_session, top_context["context"]) + # Filter mouse events. + events = [e for e in events if e["pointerType"] == "touch"] assert len(events) == 7 event_types = [e["type"] for e in events] @@ -173,6 +175,8 @@ async def test_touch_pointer_properties_angle_twist( ) events = await get_events(bidi_session, top_context["context"]) + # Filter mouse events. + events = [e for e in events if e["pointerType"] == "touch"] assert len(events) == 7 event_types = [e["type"] for e in events] diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/__init__.py b/tests/wpt/tests/webdriver/tests/bidi/network/__init__.py index 60a39741f83..f67f7bccd52 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/network/__init__.py +++ b/tests/wpt/tests/webdriver/tests/bidi/network/__init__.py @@ -11,6 +11,10 @@ from .. import ( recursive_compare, ) +from webdriver.bidi.modules.network import ( + NetworkStringValue, + SetCookieHeader, +) def assert_bytes_value(bytes_value): assert bytes_value["type"] in ["string", "base64"] @@ -348,3 +352,231 @@ PHASE_TO_EVENT_MAP = { "beforeRequestSent": [BEFORE_REQUEST_SENT_EVENT, assert_before_request_sent_event], "responseStarted": [RESPONSE_STARTED_EVENT, assert_response_event], } + +# Common parameters for Set-Cookie headers tests used for network interception +# commands. +# +# Note that the domain needs to be handled separately because the actual +# value will be retrieved via the domain_value fixture. +# with_domain can either be : +# - "default": domain will be set to domain_value() and the page will be +# loaded on domain_value(). +# - "alt": domain will be set to domain_value(alt) and the page will be +# loaded on domain_value(alt). +# - None (or any other value): domain will not be set and the page will be +# loaded on domain_value() (which is the default). +SET_COOKIE_TEST_PARAMETERS = [ + ( + SetCookieHeader( + name="foo", + path="/", + value=NetworkStringValue("bar"), + ), + None, + { + "httpOnly": False, + "name": "foo", + "path": "/", + "sameSite": "none", + "secure": False, + "size": 6, + "value": {"type": "string", "value": "bar"}, + }, + ), + ( + SetCookieHeader( + name="foo", + path="/", + value=NetworkStringValue("bar"), + ), + "default domain", + { + "httpOnly": False, + "name": "foo", + "path": "/", + "sameSite": "none", + "secure": False, + "size": 6, + "value": {"type": "string", "value": "bar"}, + }, + ), + ( + SetCookieHeader( + name="foo", + path="/", + value=NetworkStringValue("bar"), + ), + "alt domain", + { + "httpOnly": False, + "name": "foo", + "path": "/", + "sameSite": "none", + "secure": False, + "size": 6, + "value": {"type": "string", "value": "bar"}, + }, + ), + ( + SetCookieHeader( + name="foo", + path="/some/other/path", + value=NetworkStringValue("bar"), + ), + None, + { + "httpOnly": False, + "name": "foo", + "path": "/some/other/path", + "sameSite": "none", + "secure": False, + "size": 6, + "value": {"type": "string", "value": "bar"}, + }, + ), + ( + SetCookieHeader( + http_only=True, + name="foo", + path="/", + value=NetworkStringValue("bar"), + ), + None, + { + "httpOnly": True, + "name": "foo", + "path": "/", + "sameSite": "none", + "secure": False, + "size": 6, + "value": {"type": "string", "value": "bar"}, + }, + ), + ( + SetCookieHeader( + name="foo", + path="/", + secure=True, + value=NetworkStringValue("bar"), + ), + None, + { + "httpOnly": False, + "name": "foo", + "path": "/", + "sameSite": "none", + "secure": True, + "size": 6, + "value": {"type": "string", "value": "bar"}, + }, + ), + ( + SetCookieHeader( + expiry="Tue, 14 Feb 2040 17:41:14 GMT", + name="foo", + path="/", + value=NetworkStringValue("bar"), + ), + None, + { + # Corresponds to the timestamp in seconds for "Tue, 14 Feb 2040 17:41:14 GMT" + "expiry": 2212854074, + "httpOnly": False, + "name": "foo", + "path": "/", + "sameSite": "none", + "secure": False, + "size": 6, + "value": {"type": "string", "value": "bar"}, + }, + ), + ( + SetCookieHeader( + max_age=3600, + name="foo", + path="/", + value=NetworkStringValue("bar"), + ), + None, + { + "expiry": any_int, + "httpOnly": False, + "name": "foo", + "path": "/", + "sameSite": "none", + "secure": False, + "size": 6, + "value": {"type": "string", "value": "bar"}, + }, + ), + ( + SetCookieHeader( + same_site="none", + # SameSite None requires Secure to set the cookie correctly. + secure=True, + name="foo", + path="/", + value=NetworkStringValue("bar"), + ), + None, + { + "httpOnly": False, + "name": "foo", + "path": "/", + "sameSite": "none", + "secure": True, + "size": 6, + "value": {"type": "string", "value": "bar"}, + }, + ), + ( + SetCookieHeader( + same_site="lax", + name="foo", + path="/", + value=NetworkStringValue("bar"), + ), + None, + { + "httpOnly": False, + "name": "foo", + "path": "/", + "sameSite": "lax", + "secure": False, + "size": 6, + "value": {"type": "string", "value": "bar"}, + }, + ), + ( + SetCookieHeader( + same_site="strict", + name="foo", + path="/", + value=NetworkStringValue("bar"), + ), + None, + { + "httpOnly": False, + "name": "foo", + "path": "/", + "sameSite": "strict", + "secure": False, + "size": 6, + "value": {"type": "string", "value": "bar"}, + }, + ), +] + +SET_COOKIE_TEST_IDS=[ + "no domain", + "default domain", + "alt domain", + "custom path", + "http only", + "secure", + "expiry", + "max age", + "same site none", + "same site lax", + "same site strict", +] diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/conftest.py b/tests/wpt/tests/webdriver/tests/bidi/network/conftest.py deleted file mode 100644 index 6928334b7d9..00000000000 --- a/tests/wpt/tests/webdriver/tests/bidi/network/conftest.py +++ /dev/null @@ -1,168 +0,0 @@ -import asyncio -import pytest_asyncio - -from webdriver.bidi.error import NoSuchInterceptException, NoSuchRequestException - -from tests.support.sync import AsyncPoll -from . import PAGE_EMPTY_TEXT - - -@pytest_asyncio.fixture -async def add_intercept(bidi_session): - """Add a network intercept for the provided phases and url patterns, and - ensure the intercept is removed at the end of the test.""" - - intercepts = [] - - async def add_intercept(phases, url_patterns, contexts = None): - nonlocal intercepts - intercept = await bidi_session.network.add_intercept( - phases=phases, - url_patterns=url_patterns, - contexts=contexts, - ) - intercepts.append(intercept) - - return intercept - - yield add_intercept - - # Remove all added intercepts at the end of the test - for intercept in intercepts: - try: - await bidi_session.network.remove_intercept(intercept=intercept) - except NoSuchInterceptException: - # Ignore exceptions in case a specific intercept was already removed - # during the test. - pass - - -@pytest_asyncio.fixture -async def setup_blocked_request( - bidi_session, - setup_network_test, - url, - add_intercept, - fetch, - wait_for_event, - wait_for_future_safe, - top_context, -): - """Creates an intercept for the provided phase, sends a fetch request that - should be blocked by this intercept and resolves when the corresponding - event is received. - - Pass blocked_url to target a specific URL. Otherwise, the test will use - PAGE_EMPTY_TEXT as default test url. - - Pass navigate=True in order to navigate instead of doing a fetch request. - If the navigation url should be different from the blocked url, you can - specify navigate_url. - - For the "authRequired" phase, the request will be sent to the authentication - http handler. The optional arguments username, password and realm can be used - to configure the handler. - - Returns the `request` id of the intercepted request. - """ - - # Keep track of blocked requests in order to cancel them with failRequest - # on test teardown, in case the test did not handle the request. - blocked_requests = [] - - # Blocked auth requests need to resumed using continueWithAuth, they cannot - # rely on failRequest - blocked_auth_requests = [] - - async def setup_blocked_request( - phase, - context=top_context, - username="user", - password="password", - realm="test", - blocked_url=None, - navigate=False, - navigate_url=None, - **kwargs, - ): - await setup_network_test(events=[f"network.{phase}"]) - - if blocked_url is None: - if phase == "authRequired": - blocked_url = url( - "/webdriver/tests/support/http_handlers/authentication.py?" - f"username={username}&password={password}&realm={realm}" - ) - if navigate: - # By default the authentication handler returns a text/plain - # content-type. Switch to text/html for a regular navigation. - blocked_url = f"{blocked_url}&contenttype=text/html" - else: - blocked_url = url(PAGE_EMPTY_TEXT) - - await add_intercept( - phases=[phase], - url_patterns=[ - { - "type": "string", - "pattern": blocked_url, - } - ], - ) - - events = [] - - async def on_event(method, data): - events.append(data) - - remove_listener = bidi_session.add_event_listener(f"network.{phase}", on_event) - - network_event = wait_for_event(f"network.{phase}") - if navigate: - if navigate_url is None: - navigate_url = blocked_url - - asyncio.ensure_future( - bidi_session.browsing_context.navigate( - context=context["context"], url=navigate_url, wait="complete" - ) - ) - else: - asyncio.ensure_future(fetch(blocked_url, context=context, **kwargs)) - - # Wait for the first blocked request. When testing a navigation where - # navigate_url is different from blocked_url, non-blocked events will - # be received before the blocked request. - wait = AsyncPoll(bidi_session, timeout=2) - await wait.until(lambda _: any(e["isBlocked"] is True for e in events)) - - [blocked_event] = [e for e in events if e["isBlocked"] is True] - request = blocked_event["request"]["request"] - - if phase == "authRequired": - blocked_auth_requests.append(request) - else: - blocked_requests.append(request) - - return request - - yield setup_blocked_request - - # Cleanup unhandled blocked requests on teardown. - for request in blocked_requests: - try: - await bidi_session.network.fail_request(request=request) - except NoSuchRequestException: - # Nothing to do here the request was probably handled during the test. - pass - - # Cleanup unhandled blocked auth requests on teardown. - for request in blocked_auth_requests: - try: - await bidi_session.network.continue_with_auth( - request=request, action="cancel" - ) - except NoSuchRequestException: - # Nothing to do here the request was probably handled during the test. - pass - diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/continue_response/cookies.py b/tests/wpt/tests/webdriver/tests/bidi/network/continue_response/cookies.py new file mode 100644 index 00000000000..e77bf83cde1 --- /dev/null +++ b/tests/wpt/tests/webdriver/tests/bidi/network/continue_response/cookies.py @@ -0,0 +1,201 @@ +import pytest + +from webdriver.bidi.modules.network import ( + CookieHeader, + Header, + NetworkStringValue, + SetCookieHeader, +) + +from .. import ( + assert_response_event, + PAGE_EMPTY_TEXT, + PAGE_PROVIDE_RESPONSE_HTML, + RESPONSE_COMPLETED_EVENT, + RESPONSE_STARTED_EVENT, + SET_COOKIE_TEST_IDS, + SET_COOKIE_TEST_PARAMETERS +) + +from ... import any_int, recursive_compare + +pytestmark = pytest.mark.asyncio + +LOAD_EVENT = "browsingContext.load" + + +async def test_cookie_response_started( + setup_blocked_request, + subscribe_events, + bidi_session, + top_context, + wait_for_event, + wait_for_future_safe, + fetch, + url, +): + request = await setup_blocked_request( + phase="responseStarted", + navigate=True, + blocked_url=url(PAGE_PROVIDE_RESPONSE_HTML), + navigate_url=url(PAGE_PROVIDE_RESPONSE_HTML), + ) + + await subscribe_events( + events=[ + RESPONSE_COMPLETED_EVENT, + LOAD_EVENT, + ] + ) + + on_response_completed = wait_for_event(RESPONSE_COMPLETED_EVENT) + + on_load = wait_for_event(LOAD_EVENT) + + # Prepare the cookie and header values to set and assert a test cookie + cookie_name = "test-cookie" + cookie_value = "test-cookie-value" + request_cookie = CookieHeader( + name=cookie_name, value=NetworkStringValue(cookie_value) + ) + response_cookie = SetCookieHeader( + name=cookie_name, value=NetworkStringValue(cookie_value), path="/" + ) + set_cookie_header = Header( + name="Set-Cookie", + value=NetworkStringValue("test-cookie=test-cookie-value;Path=/"), + ) + + await bidi_session.network.continue_response( + request=request, + cookies=[response_cookie], + ) + + # Check that the response events contain the expected Set-Cookie header. + response_completed_event = await wait_for_future_safe(on_response_completed) + assert_response_event( + response_completed_event, expected_response={"headers": [set_cookie_header]} + ) + + # Wait for the navigation to complete. + await wait_for_future_safe(on_load) + + # Perform a fetch from the page. + on_response_completed = wait_for_event(RESPONSE_COMPLETED_EVENT) + await fetch(PAGE_EMPTY_TEXT) + response_completed_event = await wait_for_future_safe(on_response_completed) + + # Check that the fetch contains the cookie set with provideResponse. + assert_response_event( + response_completed_event, expected_request={"cookies": [request_cookie]} + ) + + await bidi_session.storage.delete_cookies() + + +@pytest.mark.parametrize( + "cookie, with_domain, expected_cookie", + SET_COOKIE_TEST_PARAMETERS, + ids=SET_COOKIE_TEST_IDS, +) +async def test_cookie_attributes_before_request_sent( + setup_blocked_request, + subscribe_events, + bidi_session, + top_context, + wait_for_event, + wait_for_future_safe, + url, + domain_value, + cookie, + with_domain, + expected_cookie, +): + if with_domain == "default domain": + domain = "" + cookie["domain"] = domain_value() + expected_cookie["domain"] = f".{domain_value()}" + elif with_domain == "alt domain": + domain = "alt" + cookie["domain"] = domain_value("alt") + expected_cookie["domain"] = f".{domain_value('alt')}" + else: + # If the cookie is not set for a specific domain it will default to + # the current domain, but no "." will be prepended to the actual cookie + # domain + domain = "" + expected_cookie["domain"] = domain_value() + + request = await setup_blocked_request( + phase="responseStarted", + navigate=True, + blocked_url=url(PAGE_PROVIDE_RESPONSE_HTML, domain=domain), + ) + + await subscribe_events(events=[LOAD_EVENT]) + + on_load = wait_for_event(LOAD_EVENT) + + # Provide response with an empty cookies list + await bidi_session.network.continue_response( + request=request, + cookies=[cookie], + ) + + # Wait for the navigation to complete. + await wait_for_future_safe(on_load) + + cookies = await bidi_session.storage.get_cookies() + assert len(cookies["cookies"]) == 1 + + cookie = cookies["cookies"][0] + recursive_compare(expected_cookie, cookie) + + await bidi_session.storage.delete_cookies() + + +async def test_no_cookie_before_request_sent( + setup_blocked_request, + subscribe_events, + bidi_session, + top_context, + wait_for_event, + wait_for_future_safe, + url, +): + request = await setup_blocked_request( + phase="responseStarted", + navigate=True, + blocked_url=url(PAGE_PROVIDE_RESPONSE_HTML), + navigate_url=url(PAGE_PROVIDE_RESPONSE_HTML), + ) + + await subscribe_events( + events=[ + RESPONSE_COMPLETED_EVENT, + LOAD_EVENT, + ] + ) + + on_response_completed = wait_for_event(RESPONSE_COMPLETED_EVENT) + + on_load = wait_for_event(LOAD_EVENT) + + # Provide response with an empty cookies list + await bidi_session.network.continue_response( + request=request, + cookies=[], + ) + + # Check that the response events contain no Set-Cookie header. + async def wait_for_event_and_assert_no_cookie(on_response_event): + response_event = await wait_for_future_safe(on_response_event) + response_headers = response_event["response"]["headers"] + assert len([h for h in response_headers if h["name"] == "Set-Cookie"]) == 0 + + await wait_for_event_and_assert_no_cookie(on_response_completed) + + # Wait for the navigation to complete. + await wait_for_future_safe(on_load) + + await bidi_session.storage.delete_cookies() diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/continue_response/headers.py b/tests/wpt/tests/webdriver/tests/bidi/network/continue_response/headers.py new file mode 100644 index 00000000000..a9f4a6d8bca --- /dev/null +++ b/tests/wpt/tests/webdriver/tests/bidi/network/continue_response/headers.py @@ -0,0 +1,230 @@ +import pytest + +from webdriver.bidi.modules.network import ( + Header, + NetworkStringValue, + SetCookieHeader, +) + +from .. import ( + assert_response_event, + RESPONSE_COMPLETED_EVENT, +) + +from ... import recursive_compare + +pytestmark = pytest.mark.asyncio + +LOAD_EVENT = "browsingContext.load" + + +@pytest.mark.parametrize( + "headers", + [ + {}, + {"a": "1"}, + {"a": "1", "b": "2"}, + ], +) +async def test_headers( + setup_blocked_request, + subscribe_events, + bidi_session, + top_context, + wait_for_event, + wait_for_future_safe, + url, + headers, +): + request = await setup_blocked_request(phase="responseStarted") + + await subscribe_events( + events=[ + RESPONSE_COMPLETED_EVENT, + ] + ) + + on_response_completed = wait_for_event(RESPONSE_COMPLETED_EVENT) + + response_headers = [] + for name, value in headers.items(): + response_headers.append(Header(name=name, value=NetworkStringValue(value))) + + await bidi_session.network.continue_response( + request=request, + headers=response_headers, + ) + + response_completed_event = await wait_for_future_safe(on_response_completed) + assert_response_event( + response_completed_event, expected_response={"headers": response_headers} + ) + + +@pytest.mark.parametrize( + "headers", + [ + {}, + {"foo": "baz"}, + {"other": "header"}, + ], +) +async def test_headers_overrides_original_headers( + setup_blocked_request, + subscribe_events, + bidi_session, + top_context, + wait_for_event, + wait_for_future_safe, + url, + headers, +): + # Setup a blocked response which contains a foo=bar response header. + request = await setup_blocked_request( + phase="responseStarted", + blocked_url=url( + "/webdriver/tests/support/http_handlers/headers.py?header=foo:bar" + ), + ) + + await subscribe_events(events=[RESPONSE_COMPLETED_EVENT]) + on_response_completed = wait_for_event(RESPONSE_COMPLETED_EVENT) + + response_headers = [] + for name, value in headers.items(): + response_headers.append(Header(name=name, value=NetworkStringValue(value))) + + await bidi_session.network.continue_response( + request=request, + headers=response_headers, + ) + + response_completed_event = await wait_for_future_safe(on_response_completed) + assert_response_event( + response_completed_event, expected_response={"headers": response_headers} + ) + + # Check that the original foo=bar response header is no longer in the + # response headers. + # Note: We cannot assert that only the provided headers are present because + # browsers might require some response headers to remain, eg Content-Type in + # Firefox. + received_response_headers = response_completed_event["response"]["headers"] + for h in received_response_headers: + assert h["name"] != "foo" or h["value"]["value"] != "bar" + + +async def test_set_cookie_header( + setup_blocked_request, + subscribe_events, + bidi_session, + top_context, + wait_for_event, + wait_for_future_safe, + url, +): + request = await setup_blocked_request( + phase="responseStarted", + navigate=True, + ) + + await subscribe_events(events=[LOAD_EVENT]) + on_load = wait_for_event(LOAD_EVENT) + + response_header = Header( + name="Set-Cookie", value=NetworkStringValue("aaa=bbb;Path=/") + ) + + await bidi_session.network.continue_response( + request=request, + headers=[response_header], + ) + + await wait_for_future_safe(on_load) + + cookies = await bidi_session.storage.get_cookies() + assert len(cookies["cookies"]) == 1 + + cookie = cookies["cookies"][0] + + expected_cookie = { + "httpOnly": False, + "name": "aaa", + "path": "/", + "sameSite": "none", + "secure": False, + "size": 6, + "value": {"type": "string", "value": "bbb"}, + } + recursive_compare(expected_cookie, cookie) + + await bidi_session.storage.delete_cookies() + + +# Check that cookies from Set-Cookie headers of the headers parameter +# and from the cookies parameter are both present in the response. +async def test_set_cookie_header_and_cookies( + setup_blocked_request, + subscribe_events, + bidi_session, + top_context, + wait_for_event, + wait_for_future_safe, + url, +): + request = await setup_blocked_request( + phase="responseStarted", + navigate=True, + ) + + await subscribe_events(events=[LOAD_EVENT]) + on_load = wait_for_event(LOAD_EVENT) + + response_header = Header( + name="Set-Cookie", value=NetworkStringValue("foo=bar;Path=/") + ) + response_cookie = SetCookieHeader( + name="baz", value=NetworkStringValue("biz"), path="/" + ) + + await bidi_session.network.continue_response( + request=request, + headers=[response_header], + cookies=[response_cookie], + ) + + await wait_for_future_safe(on_load) + + cookies = await bidi_session.storage.get_cookies() + assert len(cookies["cookies"]) == 2 + + if cookies["cookies"][0]["name"] == "foo": + cookie_from_headers_param = cookies["cookies"][0] + cookie_from_cookies_param = cookies["cookies"][1] + else: + cookie_from_headers_param = cookies["cookies"][1] + cookie_from_cookies_param = cookies["cookies"][0] + + expected_cookie_from_headers_param = { + "httpOnly": False, + "name": "foo", + "path": "/", + "sameSite": "none", + "secure": False, + "size": 6, + "value": {"type": "string", "value": "bar"}, + } + recursive_compare(expected_cookie_from_headers_param, cookie_from_headers_param) + + expected_cookie_from_cookies_param = { + "httpOnly": False, + "name": "baz", + "path": "/", + "sameSite": "none", + "secure": False, + "size": 6, + "value": {"type": "string", "value": "biz"}, + } + recursive_compare(expected_cookie_from_cookies_param, cookie_from_cookies_param) + + await bidi_session.storage.delete_cookies() diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/provide_response/cookies.py b/tests/wpt/tests/webdriver/tests/bidi/network/provide_response/cookies.py index c05321b3b05..b1c9dc90437 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/network/provide_response/cookies.py +++ b/tests/wpt/tests/webdriver/tests/bidi/network/provide_response/cookies.py @@ -13,6 +13,8 @@ from .. import ( PAGE_PROVIDE_RESPONSE_HTML, RESPONSE_COMPLETED_EVENT, RESPONSE_STARTED_EVENT, + SET_COOKIE_TEST_IDS, + SET_COOKIE_TEST_PARAMETERS ) from ... import any_int, recursive_compare @@ -101,230 +103,9 @@ async def test_cookie_before_request_sent( @pytest.mark.parametrize( - # Note that the domain needs to be handled separately because the actual - # value will be retrieved via the domain_value fixture. - # with_domain can either be : - # - "default": domain will be set to domain_value() and the page will be - # loaded on domain_value(). - # - "alt": domain will be set to domain_value(alt) and the page will be - # loaded on domain_value(alt). - # - None (or any other value): domain will not be set and the page will be - # loaded on domain_value() (which is the default). "cookie, with_domain, expected_cookie", - [ - ( - SetCookieHeader( - name="foo", - path="/", - value=NetworkStringValue("bar"), - ), - None, - { - "httpOnly": False, - "name": "foo", - "path": "/", - "sameSite": "none", - "secure": False, - "size": 6, - "value": {"type": "string", "value": "bar"}, - }, - ), - ( - SetCookieHeader( - name="foo", - path="/", - value=NetworkStringValue("bar"), - ), - "default domain", - { - "httpOnly": False, - "name": "foo", - "path": "/", - "sameSite": "none", - "secure": False, - "size": 6, - "value": {"type": "string", "value": "bar"}, - }, - ), - ( - SetCookieHeader( - name="foo", - path="/", - value=NetworkStringValue("bar"), - ), - "alt domain", - { - "httpOnly": False, - "name": "foo", - "path": "/", - "sameSite": "none", - "secure": False, - "size": 6, - "value": {"type": "string", "value": "bar"}, - }, - ), - ( - SetCookieHeader( - name="foo", - path="/some/other/path", - value=NetworkStringValue("bar"), - ), - None, - { - "httpOnly": False, - "name": "foo", - "path": "/some/other/path", - "sameSite": "none", - "secure": False, - "size": 6, - "value": {"type": "string", "value": "bar"}, - }, - ), - ( - SetCookieHeader( - http_only=True, - name="foo", - path="/", - value=NetworkStringValue("bar"), - ), - None, - { - "httpOnly": True, - "name": "foo", - "path": "/", - "sameSite": "none", - "secure": False, - "size": 6, - "value": {"type": "string", "value": "bar"}, - }, - ), - ( - SetCookieHeader( - name="foo", - path="/", - secure=True, - value=NetworkStringValue("bar"), - ), - None, - { - "httpOnly": False, - "name": "foo", - "path": "/", - "sameSite": "none", - "secure": True, - "size": 6, - "value": {"type": "string", "value": "bar"}, - }, - ), - ( - SetCookieHeader( - expiry="Tue, 14 Feb 2040 17:41:14 GMT", - name="foo", - path="/", - value=NetworkStringValue("bar"), - ), - None, - { - # Corresponds to the timestamp in seconds for "Tue, 14 Feb 2040 17:41:14 GMT" - "expiry": 2212854074, - "httpOnly": False, - "name": "foo", - "path": "/", - "sameSite": "none", - "secure": False, - "size": 6, - "value": {"type": "string", "value": "bar"}, - }, - ), - ( - SetCookieHeader( - max_age=3600, - name="foo", - path="/", - value=NetworkStringValue("bar"), - ), - None, - { - "expiry": any_int, - "httpOnly": False, - "name": "foo", - "path": "/", - "sameSite": "none", - "secure": False, - "size": 6, - "value": {"type": "string", "value": "bar"}, - }, - ), - ( - SetCookieHeader( - same_site="none", - # SameSite None requires Secure to set the cookie correctly. - secure=True, - name="foo", - path="/", - value=NetworkStringValue("bar"), - ), - None, - { - "httpOnly": False, - "name": "foo", - "path": "/", - "sameSite": "none", - "secure": True, - "size": 6, - "value": {"type": "string", "value": "bar"}, - }, - ), - ( - SetCookieHeader( - same_site="lax", - name="foo", - path="/", - value=NetworkStringValue("bar"), - ), - None, - { - "httpOnly": False, - "name": "foo", - "path": "/", - "sameSite": "lax", - "secure": False, - "size": 6, - "value": {"type": "string", "value": "bar"}, - }, - ), - ( - SetCookieHeader( - same_site="strict", - name="foo", - path="/", - value=NetworkStringValue("bar"), - ), - None, - { - "httpOnly": False, - "name": "foo", - "path": "/", - "sameSite": "strict", - "secure": False, - "size": 6, - "value": {"type": "string", "value": "bar"}, - }, - ), - ], - ids=[ - "no domain", - "default domain", - "alt domain", - "custom path", - "http only", - "secure", - "expiry", - "max age", - "same site none", - "same site lax", - "same site strict", - ], + SET_COOKIE_TEST_PARAMETERS, + ids=SET_COOKIE_TEST_IDS, ) async def test_cookie_attributes_before_request_sent( setup_blocked_request, diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/provide_response/headers.py b/tests/wpt/tests/webdriver/tests/bidi/network/provide_response/headers.py index 0436896ec19..95291b5a4c3 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/network/provide_response/headers.py +++ b/tests/wpt/tests/webdriver/tests/bidi/network/provide_response/headers.py @@ -89,7 +89,7 @@ async def test_set_cookie_header_before_request_sent( on_load = wait_for_event(LOAD_EVENT) response_header = Header( - name="Set-Cookie", value=NetworkStringValue("foo=bar;Path=/") + name="Set-Cookie", value=NetworkStringValue("aaa=bbb;Path=/") ) await bidi_session.network.provide_response( @@ -109,15 +109,17 @@ async def test_set_cookie_header_before_request_sent( expected_cookie = { "httpOnly": False, - "name": "foo", + "name": "aaa", "path": "/", "sameSite": "none", "secure": False, "size": 6, - "value": {"type": "string", "value": "bar"}, + "value": {"type": "string", "value": "bbb"}, } recursive_compare(expected_cookie, cookie) + await bidi_session.storage.delete_cookies() + # Check that cookies from Set-Cookie headers of the headers parameter # and from the cookies parameter are both present in the response. @@ -187,3 +189,5 @@ async def test_set_cookie_header_and_cookies_before_request_sent( "value": {"type": "string", "value": "biz"}, } recursive_compare(expected_cookie_from_cookies_param, cookie_from_cookies_param) + + await bidi_session.storage.delete_cookies() diff --git a/tests/wpt/tests/webdriver/tests/bidi/script/realm_created/realm_created.py b/tests/wpt/tests/webdriver/tests/bidi/script/realm_created/realm_created.py index f4dc681a3a2..9adc36483ab 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/script/realm_created/realm_created.py +++ b/tests/wpt/tests/webdriver/tests/bidi/script/realm_created/realm_created.py @@ -1,3 +1,5 @@ +# META: timeout=long + import pytest from tests.support.sync import AsyncPoll @@ -21,7 +23,8 @@ async def test_unsubscribe(bidi_session): async def on_event(method, data): events.append(data) - remove_listener = bidi_session.add_event_listener(REALM_CREATED_EVENT, on_event) + remove_listener = bidi_session.add_event_listener( + REALM_CREATED_EVENT, on_event) await bidi_session.browsing_context.create(type_hint="tab") @@ -39,11 +42,13 @@ async def test_create_context(bidi_session, subscribe_events, type_hint): async def on_event(method, data): events.append(data) - remove_listener = bidi_session.add_event_listener(REALM_CREATED_EVENT, on_event) + remove_listener = bidi_session.add_event_listener( + REALM_CREATED_EVENT, on_event) new_context = await bidi_session.browsing_context.create(type_hint=type_hint) - wait = AsyncPoll(bidi_session, message="Didn't receive realm created events") + wait = AsyncPoll( + bidi_session, message="Didn't receive realm created events") await wait.until(lambda _: len(events) >= 1) result = await bidi_session.script.get_realms(context=new_context["context"]) @@ -61,7 +66,8 @@ async def test_navigate(bidi_session, subscribe_events, inline, new_tab): async def on_event(method, data): events.append(data) - remove_listener = bidi_session.add_event_listener(REALM_CREATED_EVENT, on_event) + remove_listener = bidi_session.add_event_listener( + REALM_CREATED_EVENT, on_event) await bidi_session.browsing_context.navigate( context=new_tab["context"], url=inline("
    foo
    "), wait="complete" @@ -86,7 +92,8 @@ async def test_reload(bidi_session, subscribe_events, new_tab, inline): async def on_event(method, data): events.append(data) - remove_listener = bidi_session.add_event_listener(REALM_CREATED_EVENT, on_event) + remove_listener = bidi_session.add_event_listener( + REALM_CREATED_EVENT, on_event) await bidi_session.browsing_context.reload( context=new_tab["context"], wait="complete" @@ -135,7 +142,8 @@ async def test_iframe(bidi_session, subscribe_events, top_context, inline, domai async def on_event(method, data): events.append(data) - remove_listener = bidi_session.add_event_listener(REALM_CREATED_EVENT, on_event) + remove_listener = bidi_session.add_event_listener( + REALM_CREATED_EVENT, on_event) frame_url = inline("
    foo
    ") url = inline(f"", domain=domain) @@ -168,7 +176,8 @@ async def test_subscribe_to_one_context( async def on_event(method, data): events.append(data) - remove_listener = bidi_session.add_event_listener(REALM_CREATED_EVENT, on_event) + remove_listener = bidi_session.add_event_listener( + REALM_CREATED_EVENT, on_event) await bidi_session.browsing_context.navigate( context=top_context["context"], url=inline("
    foo
    "), wait="complete" @@ -192,7 +201,7 @@ async def test_subscribe_to_one_context( @pytest.mark.parametrize("method", ["evaluate", "call_function"]) async def test_script_when_realm_is_created( - bidi_session, subscribe_events, new_tab, wait_for_event,wait_for_future_safe, inline, method + bidi_session, subscribe_events, new_tab, wait_for_event, wait_for_future_safe, inline, method ): await bidi_session.browsing_context.navigate( context=new_tab["context"], url=inline("
    foo
    "), wait="complete" @@ -246,10 +255,12 @@ async def test_dedicated_worker( nonlocal window_realm window_realm = data - remove_listener = bidi_session.add_event_listener(REALM_CREATED_EVENT, on_event) + remove_listener = bidi_session.add_event_listener( + REALM_CREATED_EVENT, on_event) worker_url = inline("while(true){}", doctype="js") - url = inline(f"") + url = inline( + f"") await bidi_session.browsing_context.navigate( url=url, context=top_context["context"], wait="complete" ) @@ -291,7 +302,8 @@ async def test_shared_worker( nonlocal window_realm window_realm = data - remove_listener = bidi_session.add_event_listener(REALM_CREATED_EVENT, on_event) + remove_listener = bidi_session.add_event_listener( + REALM_CREATED_EVENT, on_event) worker_url = inline("while(true){}", doctype="js") url = inline( @@ -339,7 +351,8 @@ async def test_service_worker( nonlocal window_realm window_realm = data - remove_listener = bidi_session.add_event_listener(REALM_CREATED_EVENT, on_event) + remove_listener = bidi_session.add_event_listener( + REALM_CREATED_EVENT, on_event) worker_url = inline("while(true){}", doctype="js") url = inline( @@ -363,3 +376,28 @@ async def test_service_worker( }, realm, ) + + +@pytest.mark.parametrize("type_hint", ["tab", "window"]) +async def test_existing_realm(bidi_session, wait_for_event, wait_for_future_safe, subscribe_events, test_origin, type_hint): + # See https://w3c.github.io/webdriver-bidi/#event-script-realmCreated + # "The remote end subscribe steps with subscribe priority 2" + top_level_context = await bidi_session.browsing_context.create(type_hint=type_hint) + + await bidi_session.browsing_context.navigate( + context=top_level_context["context"], url=test_origin, wait="complete" + ) + + on_entry = wait_for_event(REALM_CREATED_EVENT) + await subscribe_events([REALM_CREATED_EVENT], contexts=[top_level_context["context"]]) + realm = await wait_for_future_safe(on_entry) + + recursive_compare( + { + "type": "window", + "context": top_level_context["context"], + "realm": any_string, + "origin": test_origin, + }, + realm, + ) diff --git a/tests/wpt/tests/webdriver/tests/support/fixtures_bidi.py b/tests/wpt/tests/webdriver/tests/support/fixtures_bidi.py index 9f3c31d3d57..241ba528ddf 100644 --- a/tests/wpt/tests/webdriver/tests/support/fixtures_bidi.py +++ b/tests/wpt/tests/webdriver/tests/support/fixtures_bidi.py @@ -10,9 +10,12 @@ import pytest_asyncio from tests.support.asserts import assert_pdf from tests.support.image import cm_to_px, png_dimensions, ImageDifference +from tests.support.sync import AsyncPoll from webdriver.bidi.error import ( InvalidArgumentException, NoSuchFrameException, + NoSuchInterceptException, + NoSuchRequestException, NoSuchScriptException, NoSuchUserContextException, UnableToSetCookieException, @@ -681,6 +684,166 @@ async def setup_network_test( remove_listener() +@pytest_asyncio.fixture +async def add_intercept(bidi_session): + """Add a network intercept for the provided phases and url patterns, and + ensure the intercept is removed at the end of the test.""" + + intercepts = [] + + async def add_intercept(phases, url_patterns, contexts = None): + nonlocal intercepts + intercept = await bidi_session.network.add_intercept( + phases=phases, + url_patterns=url_patterns, + contexts=contexts, + ) + intercepts.append(intercept) + + return intercept + + yield add_intercept + + # Remove all added intercepts at the end of the test + for intercept in intercepts: + try: + await bidi_session.network.remove_intercept(intercept=intercept) + except NoSuchInterceptException: + # Ignore exceptions in case a specific intercept was already removed + # during the test. + pass + + +@pytest_asyncio.fixture +async def setup_blocked_request( + bidi_session, + setup_network_test, + url, + add_intercept, + fetch, + wait_for_event, + wait_for_future_safe, + top_context, +): + """Creates an intercept for the provided phase, sends a fetch request that + should be blocked by this intercept and resolves when the corresponding + event is received. + + Pass blocked_url to target a specific URL. Otherwise, the test will use + PAGE_EMPTY_TEXT as default test url. + + Pass navigate=True in order to navigate instead of doing a fetch request. + If the navigation url should be different from the blocked url, you can + specify navigate_url. + + For the "authRequired" phase, the request will be sent to the authentication + http handler. The optional arguments username, password and realm can be used + to configure the handler. + + Returns the `request` id of the intercepted request. + """ + + # Keep track of blocked requests in order to cancel them with failRequest + # on test teardown, in case the test did not handle the request. + blocked_requests = [] + + # Blocked auth requests need to resumed using continueWithAuth, they cannot + # rely on failRequest + blocked_auth_requests = [] + + async def setup_blocked_request( + phase, + context=top_context, + username="user", + password="password", + realm="test", + blocked_url=None, + navigate=False, + navigate_url=None, + **kwargs, + ): + await setup_network_test(events=[f"network.{phase}"]) + + if blocked_url is None: + if phase == "authRequired": + blocked_url = url( + "/webdriver/tests/support/http_handlers/authentication.py?" + f"username={username}&password={password}&realm={realm}" + ) + if navigate: + # By default the authentication handler returns a text/plain + # content-type. Switch to text/html for a regular navigation. + blocked_url = f"{blocked_url}&contenttype=text/html" + else: + blocked_url = url("/webdriver/tests/bidi/network/support/empty.txt") + + await add_intercept( + phases=[phase], + url_patterns=[ + { + "type": "string", + "pattern": blocked_url, + } + ], + ) + + events = [] + + async def on_event(method, data): + events.append(data) + + remove_listener = bidi_session.add_event_listener(f"network.{phase}", on_event) + + network_event = wait_for_event(f"network.{phase}") + if navigate: + if navigate_url is None: + navigate_url = blocked_url + + asyncio.ensure_future( + bidi_session.browsing_context.navigate( + context=context["context"], url=navigate_url, wait="complete" + ) + ) + else: + asyncio.ensure_future(fetch(blocked_url, context=context, **kwargs)) + + # Wait for the first blocked request. When testing a navigation where + # navigate_url is different from blocked_url, non-blocked events will + # be received before the blocked request. + wait = AsyncPoll(bidi_session, timeout=2) + await wait.until(lambda _: any(e["isBlocked"] is True for e in events)) + + [blocked_event] = [e for e in events if e["isBlocked"] is True] + request = blocked_event["request"]["request"] + + if phase == "authRequired": + blocked_auth_requests.append(request) + else: + blocked_requests.append(request) + + return request + + yield setup_blocked_request + + # Cleanup unhandled blocked requests on teardown. + for request in blocked_requests: + try: + await bidi_session.network.fail_request(request=request) + except NoSuchRequestException: + # Nothing to do here the request was probably handled during the test. + pass + + # Cleanup unhandled blocked auth requests on teardown. + for request in blocked_auth_requests: + try: + await bidi_session.network.continue_with_auth( + request=request, action="cancel" + ) + except NoSuchRequestException: + # Nothing to do here the request was probably handled during the test. + pass + + @pytest.fixture def origin(server_config, domain_value): def origin(protocol="https", domain="", subdomain=""): diff --git a/tests/wpt/tests/webnn/conformance_tests/buffer.https.any.js b/tests/wpt/tests/webnn/conformance_tests/buffer.https.any.js index 31a33d9e706..6bd3993afcf 100644 --- a/tests/wpt/tests/webnn/conformance_tests/buffer.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/buffer.https.any.js @@ -33,7 +33,11 @@ const sizeOfDescriptor = (descriptor) => { }; const getDescriptorFromBuffer = (buffer) => { - return {dataType: buffer.dataType, dimensions: buffer.shape}; + return { + dataType: buffer.dataType, + dimensions: buffer.shape, + usage: buffer.usage + }; }; @@ -160,7 +164,11 @@ const testWriteWebNNBuffer = (testName) => { }); promise_test(async () => { - const bufferDescriptor = {dataType: 'int32', dimensions: [1]}; + const bufferDescriptor = { + dataType: 'int32', + dimensions: [1], + usage: MLBufferUsage.WRITE_TO, + }; let mlBuffer = await mlContext.createBuffer(bufferDescriptor); const bufferByteLength = sizeOfDescriptor(bufferDescriptor); @@ -205,7 +213,11 @@ const testWriteWebNNBuffer = (testName) => { }, `${testName} / error`); promise_test(async () => { - const bufferDescriptor = {dataType: 'int32', dimensions: [2, 2]}; + const bufferDescriptor = { + dataType: 'int32', + dimensions: [2, 2], + usage: MLBufferUsage.WRITE_TO, + }; let mlBuffer = await mlContext.createBuffer(bufferDescriptor); // Writing data to a destroyed MLBuffer should throw. @@ -218,7 +230,11 @@ const testWriteWebNNBuffer = (testName) => { }, `${testName} / destroy`); promise_test(async () => { - const bufferDescriptor = {dataType: 'int32', dimensions: [2, 3]}; + const bufferDescriptor = { + dataType: 'int32', + dimensions: [2, 3], + usage: MLBufferUsage.WRITE_TO, + }; let mlBuffer = await mlContext.createBuffer(bufferDescriptor); let anotherMLContext = await navigator.ml.createContext(contextOptions); @@ -233,8 +249,11 @@ const testWriteWebNNBuffer = (testName) => { }, `${testName} / context_mismatch`); promise_test(async () => { - let mlBuffer = - await mlContext.createBuffer({dataType: 'int32', dimensions: [1]}); + let mlBuffer = await mlContext.createBuffer({ + dataType: 'int32', + dimensions: [1], + usage: MLBufferUsage.WRITE_TO | MLBufferUsage.READ_FROM, + }); // Initialize the buffer. const inputData = Uint8Array.from([0xAA, 0xAA, 0xAA, 0xAA]); @@ -253,7 +272,11 @@ const testWriteWebNNBuffer = (testName) => { }, `${testName} / zero_write`); promise_test(async () => { - const bufferDescriptor = {dataType: 'int32', dimensions: [2, 2]}; + const bufferDescriptor = { + dataType: 'int32', + dimensions: [2, 2], + usage: MLBufferUsage.WRITE_TO | MLBufferUsage.READ_FROM, + }; let mlBuffer = await mlContext.createBuffer(bufferDescriptor); const bufferByteLength = sizeOfDescriptor(bufferDescriptor); @@ -300,8 +323,11 @@ const testReadWebNNBuffer = (testName) => { }); promise_test(async t => { - let mlBuffer = - await mlContext.createBuffer({dataType: 'int32', dimensions: [2, 2]}); + let mlBuffer = await mlContext.createBuffer({ + dataType: 'int32', + dimensions: [2, 2], + usage: MLBufferUsage.READ_FROM, + }); // Reading a destroyed MLBuffer should reject. mlBuffer.destroy(); @@ -311,8 +337,11 @@ const testReadWebNNBuffer = (testName) => { }, `${testName} / read_after_destroy`); promise_test(async t => { - let mlBuffer = - await mlContext.createBuffer({dataType: 'int32', dimensions: [2, 3]}); + let mlBuffer = await mlContext.createBuffer({ + dataType: 'int32', + dimensions: [2, 3], + usage: MLBufferUsage.READ_FROM, + }); let promise = mlContext.readBuffer(mlBuffer); let anotherPromise = mlContext.readBuffer(mlBuffer); @@ -324,16 +353,22 @@ const testReadWebNNBuffer = (testName) => { }, `${testName} / read_before_destroy`); promise_test(async () => { - let mlBuffer = - await mlContext.createBuffer({dataType: 'int32', dimensions: [1024]}); + let mlBuffer = await mlContext.createBuffer({ + dataType: 'int32', + dimensions: [1024], + usage: MLBufferUsage.READ_FROM, + }); await assert_buffer_data_equals( mlContext, mlBuffer, new Uint32Array(1024)); }, `${testName} / uninitialized`); promise_test(async () => { - let mlBuffer = - await mlContext.createBuffer({dataType: 'int32', dimensions: [1]}); + let mlBuffer = await mlContext.createBuffer({ + dataType: 'int32', + dimensions: [1], + usage: MLBufferUsage.READ_FROM | MLBufferUsage.WRITE_TO, + }); // Initialize the buffer. mlContext.writeBuffer(mlBuffer, Uint8Array.from([0xAA, 0xAA, 0xAA, 0xAA])); @@ -345,8 +380,11 @@ const testReadWebNNBuffer = (testName) => { }, `${testName} / full_size`); promise_test(async () => { - let mlBuffer = - await mlContext.createBuffer({dataType: 'int32', dimensions: [1]}); + let mlBuffer = await mlContext.createBuffer({ + dataType: 'int32', + dimensions: [1], + usage: MLBufferUsage.WRITE_TO | MLBufferUsage.READ_FROM, + }); // Initialize the buffer. mlContext.writeBuffer(mlBuffer, Uint8Array.from([0xAA, 0xAA, 0xAA, 0xAA])); @@ -360,8 +398,11 @@ const testReadWebNNBuffer = (testName) => { }, `${testName} / src_offset_only`); promise_test(async () => { - let mlBuffer = - await mlContext.createBuffer({dataType: 'int32', dimensions: [1]}); + let mlBuffer = await mlContext.createBuffer({ + dataType: 'int32', + dimensions: [1], + usage: MLBufferUsage.WRITE_TO | MLBufferUsage.READ_FROM, + }); // Initialize the buffer. mlContext.writeBuffer(mlBuffer, Uint8Array.from([0xAA, 0xAA, 0xAA, 0xAA])); @@ -375,8 +416,11 @@ const testReadWebNNBuffer = (testName) => { }, `${testName} / src_offset_and_size`); promise_test(async () => { - let mlBuffer = - await mlContext.createBuffer({dataType: 'int32', dimensions: [1]}); + let mlBuffer = await mlContext.createBuffer({ + dataType: 'int32', + dimensions: [1], + usage: MLBufferUsage.WRITE_TO | MLBufferUsage.READ_FROM, + }); // Initialize the buffer. mlContext.writeBuffer(mlBuffer, Uint8Array.from([0xAA, 0xAA, 0xAA, 0xAA])); @@ -390,8 +434,11 @@ const testReadWebNNBuffer = (testName) => { }, `${testName} / larger_src_data`); promise_test(async () => { - let mlBuffer = - await mlContext.createBuffer({dataType: 'int32', dimensions: [1]}); + let mlBuffer = await mlContext.createBuffer({ + dataType: 'int32', + dimensions: [1], + usage: MLBufferUsage.WRITE_TO | MLBufferUsage.READ_FROM, + }); const inputData = [0xAA, 0xAA, 0xAA, 0xAA]; @@ -404,7 +451,11 @@ const testReadWebNNBuffer = (testName) => { }, `${testName} / no_src_offset`); promise_test(async t => { - const bufferDescriptor = {dataType: 'int32', dimensions: [2, 3]}; + const bufferDescriptor = { + dataType: 'int32', + dimensions: [2, 3], + usage: MLBufferUsage.READ_FROM, + }; let mlBuffer = await mlContext.createBuffer(bufferDescriptor); let anotherMLContext = await navigator.ml.createContext(contextOptions); @@ -436,7 +487,11 @@ const testDispatchWebNNBuffer = (testName) => { } // Construct a simple graph: A = B + C, with two outputs. const builder = new MLGraphBuilder(mlContext); - const bufferDescriptor = {dataType: 'float32', dimensions: shape}; + const bufferDescriptor = { + dataType: 'float32', + dimensions: shape, + usage: MLBufferUsage.WRITE_TO | MLBufferUsage.READ_FROM, + }; const lhsOperand = builder.input('lhs', bufferDescriptor); const rhsOperand = builder.input('rhs', bufferDescriptor); const output1Operand = builder.add(lhsOperand, rhsOperand); diff --git a/tests/wpt/tests/webnn/conformance_tests/byob_readbuffer.https.any.js b/tests/wpt/tests/webnn/conformance_tests/byob_readbuffer.https.any.js index 3b9546c50f0..ccbd6d390fa 100644 --- a/tests/wpt/tests/webnn/conformance_tests/byob_readbuffer.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/byob_readbuffer.https.any.js @@ -29,8 +29,11 @@ promise_setup(async () => { } try { - mlBuffer = - await mlContext.createBuffer({dataType: 'int32', dimensions: [2, 4]}); + mlBuffer = await mlContext.createBuffer({ + dataType: 'int32', + dimensions: [2, 4], + usage: MLBufferUsage.WRITE_TO | MLBufferUsage.READ_FROM, + }); } catch (e) { throw new AssertionError( `Unable to create buffer for ${variant} variant. ${e}`); @@ -135,8 +138,11 @@ promise_test(async () => { }, `readBuffer() with a larger TypedArray`); promise_test(async (t) => { - const buffer = - await mlContext.createBuffer({dataType: 'int32', dimensions: [2, 2]}); + const buffer = await mlContext.createBuffer({ + dataType: 'int32', + dimensions: [2, 2], + usage: MLBufferUsage.READ_FROM, + }); const arrayBufferView = new Int32Array(2 * 2); const arrayBuffer = arrayBufferView.buffer; @@ -150,8 +156,11 @@ promise_test(async (t) => { }, `readBuffer() rejects on a destroyed MLBuffer`); promise_test(async (t) => { - const buffer = - await mlContext.createBuffer({dataType: 'int32', dimensions: [2, 2]}); + const buffer = await mlContext.createBuffer({ + dataType: 'int32', + dimensions: [2, 2], + usage: MLBufferUsage.READ_FROM, + }); const arrayBufferView = new Int32Array(2 * 2); const arrayBuffer = arrayBufferView.buffer; diff --git a/tests/wpt/tests/webnn/conformance_tests/gru.https.any.js b/tests/wpt/tests/webnn/conformance_tests/gru.https.any.js index d14fd2eec49..15f585ba914 100644 --- a/tests/wpt/tests/webnn/conformance_tests/gru.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/gru.https.any.js @@ -85,19 +85,11 @@ const gruTests = [ 'descriptor': {'dimensions': [1, 12, 4], 'dataType': 'float32'} }, 'gruBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, 'gruRecurrentBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, }, @@ -110,6 +102,7 @@ const gruTests = [ 'options': { 'bias': 'gruBias', 'recurrentBias': 'gruRecurrentBias', + 'resetAfter': false, 'activations': ['relu', 'relu'] } } @@ -151,19 +144,11 @@ const gruTests = [ 'descriptor': {'dimensions': [1, 12, 4], 'dataType': 'float32'} }, 'gruBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, 'gruRecurrentBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, }, @@ -176,6 +161,7 @@ const gruTests = [ 'options': { 'bias': 'gruBias', 'recurrentBias': 'gruRecurrentBias', + 'resetAfter': false, 'direction': 'forward', 'activations': ['relu', 'relu'] } @@ -218,19 +204,11 @@ const gruTests = [ 'descriptor': {'dimensions': [1, 12, 4], 'dataType': 'float32'} }, 'gruBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, 'gruRecurrentBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, }, @@ -243,6 +221,7 @@ const gruTests = [ 'options': { 'bias': 'gruBias', 'recurrentBias': 'gruRecurrentBias', + 'resetAfter': false, 'layout': 'zrn', 'activations': ['relu', 'relu'] } @@ -285,19 +264,11 @@ const gruTests = [ 'descriptor': {'dimensions': [1, 12, 4], 'dataType': 'float32'} }, 'gruBias': { - 'data': [ - 1, 1, 1, 1, - 1, 2, 1, 2, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 1, 1, 1, 1, 2, 1, 2, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, 'gruRecurrentBias': { - 'data': [ - 1, 1, 1, 1, - 1, 2, 1, 2, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 1, 1, 1, 1, 2, 1, 2, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, }, @@ -310,6 +281,7 @@ const gruTests = [ 'options': { 'bias': 'gruBias', 'recurrentBias': 'gruRecurrentBias', + 'resetAfter': false, 'layout': 'rzn', 'activations': ['relu', 'relu'] } @@ -352,19 +324,11 @@ const gruTests = [ 'descriptor': {'dimensions': [1, 12, 4], 'dataType': 'float32'} }, 'gruBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, 'gruRecurrentBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, 'gruInitialHiddenState': { @@ -382,73 +346,7 @@ const gruTests = [ 'bias': 'gruBias', 'recurrentBias': 'gruRecurrentBias', 'initialHiddenState': 'gruInitialHiddenState', - 'activations': ['relu', 'relu'] - } - } - ], - 'outputs': ['gruOutput'] - }], - 'expectedOutputs': { - 'gruOutput': { - 'data': - [0, 0, -0.25, -3.84, -4, -15, -2.25, -3.41, -1, -3, -1, -3.41], - 'descriptor': {'dimensions': [1, 3, 4], 'dataType': 'float32'} - } - } - } - }, - { - 'name': - 'gru float32 tensors steps=1 with options.bias, options.recurrentBias, options.activations=[\'relu\', \'relu\'] and explicit options.resetAfter=true', - 'graph': { - 'inputs': { - 'gruInput': { - 'data': [1, 2, 2, 1, 1, 1], - 'descriptor': {'dimensions': [1, 3, 2], 'dataType': 'float32'} - }, - 'gruWeight': { - 'data': [ - 1, -1, 2, -2, 0.5, -0.5, 0, 0.1, 1, -1, 2, -2, - 0.5, -0.5, 0, 0.1, 1, -1, 2, -2, 0.5, -0.5, 0, 0.1 - ], - 'descriptor': {'dimensions': [1, 12, 2], 'dataType': 'float32'} - }, - 'gruRecurrentWeight': { - 'data': [ - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 - ], - 'descriptor': {'dimensions': [1, 12, 4], 'dataType': 'float32'} - }, - 'gruBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], - 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} - }, - 'gruRecurrentBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], - 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} - }, - }, - 'operators': [{ - 'name': 'gru', - 'arguments': [ - {'input': 'gruInput'}, {'weight': 'gruWeight'}, - {'recurrentWeight': 'gruRecurrentWeight'}, {'steps': 1}, - {'hiddenSize': 4}, { - 'options': { - 'bias': 'gruBias', - 'recurrentBias': 'gruRecurrentBias', - 'resetAfter': true, + 'resetAfter': false, 'activations': ['relu', 'relu'] } } @@ -489,19 +387,11 @@ const gruTests = [ 'descriptor': {'dimensions': [1, 12, 4], 'dataType': 'float32'} }, 'gruBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, 'gruRecurrentBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, 'gruInitialHiddenState': { @@ -519,7 +409,7 @@ const gruTests = [ 'bias': 'gruBias', 'recurrentBias': 'gruRecurrentBias', 'initialHiddenState': 'gruInitialHiddenState', - 'resetAfter': true, + 'resetAfter': false, 'returnSequence': true, 'direction': 'forward', 'layout': 'zrn', @@ -569,19 +459,11 @@ const gruTests = [ 'descriptor': {'dimensions': [1, 12, 4], 'dataType': 'float32'} }, 'gruBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, 'gruRecurrentBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, }, @@ -594,6 +476,7 @@ const gruTests = [ 'options': { 'bias': 'gruBias', 'recurrentBias': 'gruRecurrentBias', + 'resetAfter': false, 'direction': 'backward', 'activations': ['relu', 'relu'] } @@ -640,19 +523,11 @@ const gruTests = [ 'descriptor': {'dimensions': [1, 12, 4], 'dataType': 'float32'} }, 'gruBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, 'gruRecurrentBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, }, @@ -665,6 +540,7 @@ const gruTests = [ 'options': { 'bias': 'gruBias', 'recurrentBias': 'gruRecurrentBias', + 'resetAfter': false, 'returnSequence': false, 'direction': 'backward', 'activations': ['relu', 'relu'] @@ -712,19 +588,11 @@ const gruTests = [ 'descriptor': {'dimensions': [1, 12, 4], 'dataType': 'float32'} }, 'gruBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, 'gruRecurrentBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, }, @@ -737,6 +605,7 @@ const gruTests = [ 'options': { 'bias': 'gruBias', 'recurrentBias': 'gruRecurrentBias', + 'resetAfter': false, 'returnSequence': true, 'direction': 'backward', 'activations': ['relu', 'relu'] @@ -812,19 +681,11 @@ const gruTests = [ 'descriptor': {'dimensions': [1, 12, 4], 'dataType': 'float32'} }, 'gruBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, 'gruRecurrentBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [1, 12], 'dataType': 'float32'} }, 'gruInitialHiddenState': { @@ -842,7 +703,7 @@ const gruTests = [ 'bias': 'gruBias', 'recurrentBias': 'gruRecurrentBias', 'initialHiddenState': 'gruInitialHiddenState', - 'resetAfter': true, + 'resetAfter': false, 'returnSequence': true, 'direction': 'backward', 'layout': 'zrn', diff --git a/tests/wpt/tests/webnn/conformance_tests/gru_cell.https.any.js b/tests/wpt/tests/webnn/conformance_tests/gru_cell.https.any.js index f8aa3ac9cf7..3d7e69fb9fb 100644 --- a/tests/wpt/tests/webnn/conformance_tests/gru_cell.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/gru_cell.https.any.js @@ -80,19 +80,11 @@ const gruCellTests = [ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'} }, 'gruCellBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [12], 'dataType': 'float32'} }, 'gruCellRecurrentBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [12], 'dataType': 'float32'} } }, @@ -105,77 +97,7 @@ const gruCellTests = [ 'options': { 'bias': 'gruCellBias', 'recurrentBias': 'gruCellRecurrentBias', - 'activations': ['relu', 'relu'] - } - } - ], - 'outputs': 'gruCellOutput' - }], - 'expectedOutputs': { - 'gruCellOutput': { - 'data': - [0, 0, -0.25, -3.84, -4, -15, -2.25, -3.41, -1, -3, -1, -3.41], - 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'} - } - } - } - }, - { - 'name': - 'gruCell float32 tensors with options.bias, options.recurrentBias, options.activations=[\'relu\', \'relu\'] and and explicit options.resetAfter=true', - 'graph': { - 'inputs': { - 'gruCellInput': { - 'data': [1, 2, 2, 1, 1, 1], - 'descriptor': {'dimensions': [3, 2], 'dataType': 'float32'} - }, - 'gruCellWeight': { - 'data': [ - 1, -1, 2, -2, 0.5, -0.5, 0, 0.1, 1, -1, 2, -2, - 0.5, -0.5, 0, 0.1, 1, -1, 2, -2, 0.5, -0.5, 0, 0.1 - ], - 'descriptor': {'dimensions': [12, 2], 'dataType': 'float32'} - }, - 'gruCellRecurrentWeight': { - 'data': [ - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 - ], - 'descriptor': {'dimensions': [12, 4], 'dataType': 'float32'} - }, - 'gruCellHiddenState': { - 'data': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'} - }, - 'gruCellBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], - 'descriptor': {'dimensions': [12], 'dataType': 'float32'} - }, - 'gruCellRecurrentBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], - 'descriptor': {'dimensions': [12], 'dataType': 'float32'} - } - }, - 'operators': [{ - 'name': 'gruCell', - 'arguments': [ - {'input': 'gruCellInput'}, {'weight': 'gruCellWeight'}, - {'recurrentWeight': 'gruCellRecurrentWeight'}, - {'hiddenState': 'gruCellHiddenState'}, {'hiddenSize': 4}, { - 'options': { - 'bias': 'gruCellBias', - 'recurrentBias': 'gruCellRecurrentBias', - 'resetAfter': true, + 'resetAfter': false, 'activations': ['relu', 'relu'] } } @@ -221,19 +143,11 @@ const gruCellTests = [ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'} }, 'gruCellBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [12], 'dataType': 'float32'} }, 'gruCellRecurrentBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [12], 'dataType': 'float32'} } }, @@ -246,6 +160,7 @@ const gruCellTests = [ 'options': { 'bias': 'gruCellBias', 'recurrentBias': 'gruCellRecurrentBias', + 'resetAfter': false, 'layout': 'zrn', 'activations': ['relu', 'relu'] } @@ -292,19 +207,11 @@ const gruCellTests = [ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'} }, 'gruCellBias': { - 'data': [ - 1, 1, 1, 1, - 1, 2, 1, 2, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 1, 1, 1, 1, 2, 1, 2, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [12], 'dataType': 'float32'} }, 'gruCellRecurrentBias': { - 'data': [ - 1, 1, 1, 1, - 1, 2, 1, 2, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 1, 1, 1, 1, 2, 1, 2, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [12], 'dataType': 'float32'} } }, @@ -317,6 +224,7 @@ const gruCellTests = [ 'options': { 'bias': 'gruCellBias', 'recurrentBias': 'gruCellRecurrentBias', + 'resetAfter': false, 'layout': 'rzn', 'activations': ['relu', 'relu'] } @@ -362,19 +270,11 @@ const gruCellTests = [ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'} }, 'gruCellBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [12], 'dataType': 'float32'} }, 'gruCellRecurrentBias': { - 'data': [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 0.5, 0.5, 0.5, 0.5 - ], + 'data': [1, 2, 1, 2, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], 'descriptor': {'dimensions': [12], 'dataType': 'float32'} } }, @@ -387,7 +287,7 @@ const gruCellTests = [ 'options': { 'bias': 'gruCellBias', 'recurrentBias': 'gruCellRecurrentBias', - 'resetAfter': true, + 'resetAfter': false, 'layout': 'zrn', 'activations': ['relu', 'relu'] } diff --git a/tests/wpt/tests/webnn/conformance_tests/parallel-dispatch.https.any.js b/tests/wpt/tests/webnn/conformance_tests/parallel-dispatch.https.any.js index 2ba1f6cf442..b3927765fb5 100644 --- a/tests/wpt/tests/webnn/conformance_tests/parallel-dispatch.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/parallel-dispatch.https.any.js @@ -30,7 +30,11 @@ function buildMulGraph(context, operandDescriptor, multiplier) { } promise_test(async () => { - const operandDescriptor = {dataType: 'float32', dimensions: [1]}; + const operandDescriptor = { + dataType: 'float32', + dimensions: [1], + usage: MLBufferUsage.WRITE_TO | MLBufferUsage.READ_FROM, + }; const [mlGraph, inputBuffer1, inputBuffer2, outputBuffer] = await Promise.all([ @@ -66,7 +70,11 @@ promise_test(async () => { }, 'dispatch queues behind readBuffer'); promise_test(async () => { - const operandDescriptor = {dataType: 'float32', dimensions: [1]}; + const operandDescriptor = { + dataType: 'float32', + dimensions: [1], + usage: MLBufferUsage.WRITE_TO | MLBufferUsage.READ_FROM, + }; const mlGraph = await buildMulGraph(mlContext, operandDescriptor, 3); // write/dispatch/read, write/dispatch/read, ... @@ -90,7 +98,11 @@ promise_test(async () => { }, 'same graph: write/dispatch/read, write/dispatch/read, ...'); promise_test(async () => { - const operandDescriptor = {dataType: 'float32', dimensions: [1]}; + const operandDescriptor = { + dataType: 'float32', + dimensions: [1], + usage: MLBufferUsage.WRITE_TO | MLBufferUsage.READ_FROM, + }; const mlGraph = await buildMulGraph(mlContext, operandDescriptor, 10); // write/write... @@ -125,7 +137,11 @@ promise_test(async () => { }, 'same graph: write/write..., dispatch/read, dispatch/read, ...'); promise_test(async () => { - const operandDescriptor = {dataType: 'float32', dimensions: [1]}; + const operandDescriptor = { + dataType: 'float32', + dimensions: [1], + usage: MLBufferUsage.WRITE_TO | MLBufferUsage.READ_FROM, + }; const mlGraph = await buildMulGraph(mlContext, operandDescriptor, 9); // write/write... @@ -159,7 +175,11 @@ promise_test(async () => { }, 'same graph: write/write..., dispatch/dispatch..., read/read...'); promise_test(async () => { - const operandDescriptor = {dataType: 'float32', dimensions: [1]}; + const operandDescriptor = { + dataType: 'float32', + dimensions: [1], + usage: MLBufferUsage.WRITE_TO | MLBufferUsage.READ_FROM, + }; const mlGraph = await buildMulGraph(mlContext, operandDescriptor, 2); const buffers = await Promise.all([ @@ -188,7 +208,11 @@ promise_test(async () => { }, 'same graph serial inputs: dispatch/dispatch..., read/read...'); promise_test(async () => { - const operandDescriptor = {dataType: 'float32', dimensions: [1]}; + const operandDescriptor = { + dataType: 'float32', + dimensions: [1], + usage: MLBufferUsage.WRITE_TO | MLBufferUsage.READ_FROM, + }; // write/write... const testInputs = [1, 2, 3, 4]; @@ -223,7 +247,11 @@ promise_test(async () => { }, 'different graphs: write/write..., dispatch/read, dispatch/read, ...'); promise_test(async () => { - const operandDescriptor = {dataType: 'float32', dimensions: [1]}; + const operandDescriptor = { + dataType: 'float32', + dimensions: [1], + usage: MLBufferUsage.WRITE_TO | MLBufferUsage.READ_FROM, + }; // write/write... const testInputs = [1, 2, 3, 4]; @@ -257,7 +285,11 @@ promise_test(async () => { }, 'different graphs: write/write..., dispatch/dispatch..., read/read...'); promise_test(async () => { - const operandDescriptor = {dataType: 'float32', dimensions: [1]}; + const operandDescriptor = { + dataType: 'float32', + dimensions: [1], + usage: MLBufferUsage.WRITE_TO | MLBufferUsage.READ_FROM, + }; const graphs = await Promise.all([3, 2].map(async (multiplier) => { return buildMulGraph(mlContext, operandDescriptor, multiplier); @@ -289,7 +321,11 @@ promise_test(async () => { }, 'different graphs serial inputs: dispatch/dispatch..., read/read...'); promise_test(async () => { - const operandDescriptor = {dataType: 'float32', dimensions: [1]}; + const operandDescriptor = { + dataType: 'float32', + dimensions: [1], + usage: MLBufferUsage.WRITE_TO | MLBufferUsage.READ_FROM, + }; const graphs = await Promise.all([2, 3].map(async (multiplier) => { return buildMulGraph(mlContext, operandDescriptor, multiplier); diff --git a/tests/wpt/tests/webnn/conformance_tests/resample2d.https.any.js b/tests/wpt/tests/webnn/conformance_tests/resample2d.https.any.js index bedd348fe58..65faca22abd 100644 --- a/tests/wpt/tests/webnn/conformance_tests/resample2d.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/resample2d.https.any.js @@ -278,6 +278,44 @@ const resample2dTests = [ } } }, + { + 'name': + 'resample2d(upsample) float32 4D tensor explicit options.axes=[3, 2]', + 'graph': { + 'inputs': { + 'resample2dInput': { + 'data': [ + 59.92947006225586, 41.98918914794922, 66.39534759521484, + 90.7006607055664, 86.95105743408203, 79.10005187988281 + ], + 'descriptor': {'dimensions': [1, 1, 2, 3], 'dataType': 'float32'} + } + }, + 'operators': [{ + 'name': 'resample2d', + 'arguments': [ + {'input': 'resample2dInput'}, + {'options': {'sizes': [6, 4], 'axes': [3, 2]}} + ], + 'outputs': 'resample2dOutput' + }], + 'expectedOutputs': { + 'resample2dOutput': { + 'data': [ + 59.92947006225586, 59.92947006225586, 41.98918914794922, + 41.98918914794922, 66.39534759521484, 66.39534759521484, + 59.92947006225586, 59.92947006225586, 41.98918914794922, + 41.98918914794922, 66.39534759521484, 66.39534759521484, + 90.7006607055664, 90.7006607055664, 86.95105743408203, + 86.95105743408203, 79.10005187988281, 79.10005187988281, + 90.7006607055664, 90.7006607055664, 86.95105743408203, + 86.95105743408203, 79.10005187988281, 79.10005187988281 + ], + 'descriptor': {'dimensions': [1, 1, 4, 6], 'dataType': 'float32'} + } + } + } + }, { 'name': 'resample2d(upsample) float32 4D tensor explicit options.mode=\'nearest-neighbor\'', @@ -429,6 +467,80 @@ const resample2dTests = [ } } } + }, + { + 'name': 'resample2d(upsample) float32 4D tensor options.axes=[0, 1]', + 'graph': { + 'inputs': { + 'resample2dInput': { + 'data': [ + 59.92947006225586, 90.7006607055664, 41.98918914794922, + 86.95105743408203, 66.39534759521484, 79.10005187988281 + ], + 'descriptor': {'dimensions': [3, 2, 1, 1], 'dataType': 'float32'} + } + }, + 'operators': [{ + 'name': 'resample2d', + 'arguments': [ + {'input': 'resample2dInput'}, + {'options': {'sizes': [6, 4], 'axes': [0, 1]}} + ], + 'outputs': 'resample2dOutput' + }], + 'expectedOutputs': { + 'resample2dOutput': { + 'data': [ + 59.92947006225586, 59.92947006225586, 90.7006607055664, + 90.7006607055664, 59.92947006225586, 59.92947006225586, + 90.7006607055664, 90.7006607055664, 41.98918914794922, + 41.98918914794922, 86.95105743408203, 86.95105743408203, + 41.98918914794922, 41.98918914794922, 86.95105743408203, + 86.95105743408203, 66.39534759521484, 66.39534759521484, + 79.10005187988281, 79.10005187988281, 66.39534759521484, + 66.39534759521484, 79.10005187988281, 79.10005187988281 + ], + 'descriptor': {'dimensions': [6, 4, 1, 1], 'dataType': 'float32'} + } + } + } + }, + { + 'name': 'resample2d(upsample) float32 4D tensor options.axes=[1, 0]', + 'graph': { + 'inputs': { + 'resample2dInput': { + 'data': [ + 59.92947006225586, 90.7006607055664, 41.98918914794922, + 86.95105743408203, 66.39534759521484, 79.10005187988281 + ], + 'descriptor': {'dimensions': [3, 2, 1, 1], 'dataType': 'float32'} + } + }, + 'operators': [{ + 'name': 'resample2d', + 'arguments': [ + {'input': 'resample2dInput'}, + {'options': {'sizes': [4, 6], 'axes': [1, 0]}} + ], + 'outputs': 'resample2dOutput' + }], + 'expectedOutputs': { + 'resample2dOutput': { + 'data': [ + 59.92947006225586, 59.92947006225586, 90.7006607055664, + 90.7006607055664, 59.92947006225586, 59.92947006225586, + 90.7006607055664, 90.7006607055664, 41.98918914794922, + 41.98918914794922, 86.95105743408203, 86.95105743408203, + 41.98918914794922, 41.98918914794922, 86.95105743408203, + 86.95105743408203, 66.39534759521484, 66.39534759521484, + 79.10005187988281, 79.10005187988281, 66.39534759521484, + 66.39534759521484, 79.10005187988281, 79.10005187988281 + ], + 'descriptor': {'dimensions': [6, 4, 1, 1], 'dataType': 'float32'} + } + } + } } ]; diff --git a/tests/wpt/tests/webnn/validation_tests/clamp.https.any.js b/tests/wpt/tests/webnn/validation_tests/clamp.https.any.js index 8302961e2c4..10cf0028e52 100644 --- a/tests/wpt/tests/webnn/validation_tests/clamp.https.any.js +++ b/tests/wpt/tests/webnn/validation_tests/clamp.https.any.js @@ -11,39 +11,25 @@ validateInputFromAnotherBuilder('clamp'); const label = '123_clamp'; -validateUnaryOperation('clamp', allWebNNOperandDataTypes, label); +validateSingleInputOperation('clamp', label); promise_test(async t => { const builder = new MLGraphBuilder(context); const options = {minValue: 1.0, maxValue: 3.0}; - if (!context.opSupportLimits().input.dataTypes.includes('uint32')) { - assert_throws_js( - TypeError, - () => builder.input( - 'input', {dataType: 'uint32', dimensions: [1, 2, 3]})); - return; - } const input = - builder.input('input', {dataType: 'uint32', dimensions: [1, 2, 3]}); + builder.input('input', {dataType: 'float32', dimensions: [1, 2, 3]}); const output = builder.clamp(input, options); - assert_equals(output.dataType(), 'uint32'); + assert_equals(output.dataType(), 'float32'); assert_array_equals(output.shape(), [1, 2, 3]); }, '[clamp] Build with options'); promise_test(async t => { const builder = new MLGraphBuilder(context); const options = {minValue: 0, maxValue: 0}; - if (!context.opSupportLimits().input.dataTypes.includes('int32')) { - assert_throws_js( - TypeError, - () => builder.input( - 'input', {dataType: 'int32', dimensions: [1, 2, 3, 4]})); - return; - } const input = - builder.input('input', {dataType: 'int32', dimensions: [1, 2, 3, 4]}); + builder.input('input', {dataType: 'float32', dimensions: [1, 2, 3, 4]}); const output = builder.clamp(input, options); - assert_equals(output.dataType(), 'int32'); + assert_equals(output.dataType(), 'float32'); assert_array_equals(output.shape(), [1, 2, 3, 4]); }, '[clamp] Build with options.minValue == options.maxValue'); @@ -54,15 +40,8 @@ promise_test(async t => { maxValue: 1.0, label: label, }; - if (!context.opSupportLimits().input.dataTypes.includes('uint8')) { - assert_throws_js( - TypeError, - () => - builder.input('input', {dataType: 'uint8', dimensions: [1, 2, 3]})); - return; - } const input = - builder.input('input', {dataType: 'uint8', dimensions: [1, 2, 3]}); + builder.input('input', {dataType: 'float32', dimensions: [1, 2, 3]}); const regrexp = new RegExp('\\[' + label + '\\]'); assert_throws_with_label(() => builder.clamp(input, options), regrexp); }, '[clamp] Throw if options.minValue > options.maxValue'); @@ -75,6 +54,6 @@ promise_test(async t => { minValue: -Infinity, label: label, }; - const input = builder.input('input', {dataType: 'float16', dimensions: []}); + const input = builder.input('input', {dataType: 'float32', dimensions: []}); assert_throws_js(TypeError, () => builder.clamp(input, options)); }, '[clamp] Throw if options.minValue is -Infinity'); diff --git a/tests/wpt/tests/webnn/validation_tests/destroyContext.https.any.js b/tests/wpt/tests/webnn/validation_tests/destroyContext.https.any.js index ba0661ae6f8..7d2411412b3 100644 --- a/tests/wpt/tests/webnn/validation_tests/destroyContext.https.any.js +++ b/tests/wpt/tests/webnn/validation_tests/destroyContext.https.any.js @@ -132,16 +132,22 @@ promise_test(async t => { promise_test(async t => { const context = await navigator.ml.createContext(contextOptions); - const buffer = - await context.createBuffer({dataType: 'float32', dimensions: [1]}); + const buffer = await context.createBuffer({ + dataType: 'float32', + dimensions: [1], + usage: MLBufferUsage.READ_FROM, + }); context.destroy(); promise_rejects_dom(t, 'InvalidStateError', context.readBuffer(buffer)); }, 'Destroyed context can not read buffer.'); promise_test(async t => { const context = await navigator.ml.createContext(contextOptions); - const buffer = - await context.createBuffer({dataType: 'float32', dimensions: [1]}); + const buffer = await context.createBuffer({ + dataType: 'float32', + dimensions: [1], + usage: MLBufferUsage.READ_FROM, + }); let promise = context.readBuffer(buffer); context.destroy(); promise_rejects_dom(t, 'InvalidStateError', promise); @@ -152,8 +158,11 @@ promise_test(async t => { // Destroying another context doesn't impact the first context. const another_context = await navigator.ml.createContext(contextOptions); another_context.destroy(); - const buffer = - await context.createBuffer({dataType: 'float32', dimensions: [1]}); + const buffer = await context.createBuffer({ + dataType: 'float32', + dimensions: [1], + usage: MLBufferUsage.WRITE_TO, + }); let arrayBuffer = new ArrayBuffer(4); context.destroy(); assert_throws_dom('InvalidStateError', () => { diff --git a/tests/wpt/tests/webnn/validation_tests/destroyGraph.https.any.js b/tests/wpt/tests/webnn/validation_tests/destroyGraph.https.any.js new file mode 100644 index 00000000000..8d4f5121c2f --- /dev/null +++ b/tests/wpt/tests/webnn/validation_tests/destroyGraph.https.any.js @@ -0,0 +1,141 @@ +// META: timeout=long +// META: title=validation tests for WebNN API MLContext::destroy() +// META: global=window,dedicatedworker +// META: variant=?cpu +// META: variant=?gpu +// META: variant=?npu + +'use strict'; + +let context; + +promise_setup(async () => { + assert_implements(navigator.ml, 'WebNN is not supported'); + const contextOptions = {deviceType: location.search.substring(1)}; + try { + context = await navigator.ml.createContext(contextOptions); + } catch (e) { + throw new AssertionError( + `Unable to create context for ${variant} variant. ${e}`); + } +}, {explicit_timeout: true}); + +promise_test(async t => { + const builder = new MLGraphBuilder(context); + const operandType = {dataType: 'float32', dimensions: [1]}; + const input_operand = builder.input('input', operandType); + const const_operand = builder.constant(operandType, Float32Array.from([2])); + const output_operand = builder.mul(input_operand, const_operand); + const graph = await builder.build({'output': output_operand}); + + graph.destroy(); + graph.destroy(); +}, 'Graph can be destroyed twice.'); + +promise_test(async t => { + const builder = new MLGraphBuilder(context); + const operandType = {dataType: 'float32', dimensions: [1]}; + const input_operand = builder.input('input', operandType); + const const_operand = builder.constant(operandType, Float32Array.from([2])); + const output_operand = builder.mul(input_operand, const_operand); + const graph = await builder.build({'output': output_operand}); + + graph.destroy(); + let inputs = {'input': Float32Array.from([1])}; + let outputs = {'output': new Float32Array(1)}; + promise_rejects_dom( + t, 'InvalidStateError', context.compute(graph, inputs, outputs)); +}, 'Destroyed graph can not compute.'); + +promise_test(async t => { + const builder = new MLGraphBuilder(context); + const operandType = {dataType: 'float32', dimensions: [1]}; + const input_operand = builder.input('input', operandType); + const const_operand = builder.constant(operandType, Float32Array.from([2])); + const output_operand = builder.mul(input_operand, const_operand); + const graph = await builder.build({'output': output_operand}); + + let inputs = {'input': Float32Array.from([1])}; + let outputs = {'output': new Float32Array(1)}; + await context.compute(graph, inputs, outputs); + graph.destroy(); +}, 'Destroying graph after compute() with await is OK.'); + +promise_test(async t => { + const builder = new MLGraphBuilder(context); + const operandType = {dataType: 'float32', dimensions: [1]}; + const input_operand = builder.input('input', operandType); + const const_operand = builder.constant(operandType, Float32Array.from([2])); + const output_operand = builder.mul(input_operand, const_operand); + const graph = await builder.build({'output': output_operand}); + + let inputs = {'input': Float32Array.from([1])}; + let outputs = {'output': new Float32Array(1)}; + const promise = context.compute(graph, inputs, outputs); + graph.destroy(); + promise_rejects_dom(t, 'InvalidStateError', promise); +}, 'compute() rejects when graph is destroyed.'); + +promise_test(async t => { + const builder = new MLGraphBuilder(context); + const operandType = {dataType: 'float32', dimensions: [1]}; + const lhsOperand = builder.input('lhs', operandType); + const rhsOperand = builder.input('rhs', operandType); + const graph = + await builder.build({'output': builder.mul(lhsOperand, rhsOperand)}); + + const lhsBuffer = await context.createBuffer(operandType); + const rhsBuffer = await context.createBuffer(operandType); + const dispatchOutputs = {'output': await context.createBuffer(operandType)}; + + graph.destroy(); + assert_throws_dom('InvalidStateError', () => { + context.dispatch( + graph, { + 'lhs': lhsBuffer, + 'rhs': rhsBuffer, + }, + dispatchOutputs); + }); +}, 'Destroyed graph can not dispatch.'); + +promise_test(async t => { + const builder = new MLGraphBuilder(context); + const operandType = {dataType: 'float32', dimensions: [1]}; + const lhsOperand = builder.input('lhs', operandType); + const rhsOperand = builder.input('rhs', operandType); + const graph = + await builder.build({'output': builder.mul(lhsOperand, rhsOperand)}); + + const lhsBuffer = await context.createBuffer({ + dataType: 'float32', + dimensions: [1], + usage: MLBufferUsage.WRITE_TO, + }); + const rhsBuffer = await context.createBuffer({ + dataType: 'float32', + dimensions: [1], + usage: MLBufferUsage.WRITE_TO, + }); + const outputBuffer = await context.createBuffer({ + dataType: 'float32', + dimensions: [1], + usage: MLBufferUsage.READ_FROM, + }); + // Initialize inputs + const inputData = new Float32Array(1).fill(2.0); + context.writeBuffer(lhsBuffer, inputData); + context.writeBuffer(rhsBuffer, inputData); + context.dispatch( + graph, { + 'lhs': lhsBuffer, + 'rhs': rhsBuffer, + }, + {'output': outputBuffer}); + + graph.destroy(); + const outputData = await context.readBuffer(outputBuffer); + assert_array_equals( + new Float32Array(outputData), [4], + 'Read buffer data equals expected data.'); +}, 'Destroying graph after dispatch() and before readBuffer() is OK.'); diff --git a/tests/wpt/tests/webnn/validation_tests/expand.https.any.js b/tests/wpt/tests/webnn/validation_tests/expand.https.any.js index 12349a33f8c..4edc9a718a4 100644 --- a/tests/wpt/tests/webnn/validation_tests/expand.https.any.js +++ b/tests/wpt/tests/webnn/validation_tests/expand.https.any.js @@ -33,27 +33,27 @@ const tests = [ }, { name: '[expand] Test with the new shapes that are broadcastable.', - input: {dataType: 'int32', dimensions: [3, 1, 5]}, + input: {dataType: 'float32', dimensions: [3, 1, 5]}, newShape: [3, 4, 5], - output: {dataType: 'int32', dimensions: [3, 4, 5]} + output: {dataType: 'float32', dimensions: [3, 4, 5]} }, { name: '[expand] Test with the new shapes that are broadcastable and the rank of new shapes is larger than input.', - input: {dataType: 'int32', dimensions: [2, 5]}, + input: {dataType: 'float32', dimensions: [2, 5]}, newShape: [3, 2, 5], - output: {dataType: 'int32', dimensions: [3, 2, 5]} + output: {dataType: 'float32', dimensions: [3, 2, 5]} }, { name: '[expand] Throw if the input shapes are the same rank but not broadcastable.', - input: {dataType: 'uint32', dimensions: [3, 6, 2]}, + input: {dataType: 'float32', dimensions: [3, 6, 2]}, newShape: [4, 3, 5], options: {label} }, { name: '[expand] Throw if the input shapes are not broadcastable.', - input: {dataType: 'uint32', dimensions: [5, 4]}, + input: {dataType: 'float32', dimensions: [5, 4]}, newShape: [5], options: {label} }, @@ -87,3 +87,22 @@ tests.forEach( } } }, test.name)); + +promise_test(async t => { + for (let dataType of allWebNNOperandDataTypes) { + if (!context.opSupportLimits().input.dataTypes.includes(dataType)) { + continue; + } + const builder = new MLGraphBuilder(context); + const dimensions = [1]; + const newShape = [1, 2, 3]; + const input = builder.input(`input`, {dataType, dimensions}); + if (context.opSupportLimits().expand.input.dataTypes.includes(dataType)) { + const output = builder.expand(input, newShape); + assert_equals(output.dataType(), dataType); + assert_array_equals(output.shape(), newShape); + } else { + assert_throws_js(TypeError, () => builder.expand(input, newShape)); + } + } +}, `[expand] Test expand with all of the data types.`); diff --git a/tests/wpt/tests/webnn/validation_tests/hardSigmoid.https.any.js b/tests/wpt/tests/webnn/validation_tests/hardSigmoid.https.any.js index b0104dfc2c2..c4ea4e1296b 100644 --- a/tests/wpt/tests/webnn/validation_tests/hardSigmoid.https.any.js +++ b/tests/wpt/tests/webnn/validation_tests/hardSigmoid.https.any.js @@ -11,7 +11,7 @@ validateInputFromAnotherBuilder('hardSigmoid'); const label = 'hard_sigmoid'; -validateUnaryOperation('hardSigmoid', floatingPointTypes, label); +validateSingleInputOperation('hardSigmoid', label); promise_test(async t => { const builder = new MLGraphBuilder(context); diff --git a/tests/wpt/tests/webnn/validation_tests/hardSwish.https.any.js b/tests/wpt/tests/webnn/validation_tests/hardSwish.https.any.js index 53c78c8c81d..4c76640b093 100644 --- a/tests/wpt/tests/webnn/validation_tests/hardSwish.https.any.js +++ b/tests/wpt/tests/webnn/validation_tests/hardSwish.https.any.js @@ -10,4 +10,4 @@ validateInputFromAnotherBuilder('hardSwish'); const label = 'hard_swish'; -validateUnaryOperation('hardSwish', floatingPointTypes, label); +validateSingleInputOperation('hardSwish', label); diff --git a/tests/wpt/tests/webnn/validation_tests/invalid-rank.https.any.js b/tests/wpt/tests/webnn/validation_tests/invalid-rank.https.any.js new file mode 100644 index 00000000000..59f5ac52337 --- /dev/null +++ b/tests/wpt/tests/webnn/validation_tests/invalid-rank.https.any.js @@ -0,0 +1,16 @@ +// META: title=ensure an MLOperand cannot be created with an invalid rank +// META: global=window,dedicatedworker +// META: variant=?cpu +// META: variant=?gpu +// META: variant=?npu +// META: script=../resources/utils_validation.js + +promise_test(async t => { + const builder = new MLGraphBuilder(context); + + const shapeWithLargeRank = Array(10).fill(2); + assert_throws_js( + TypeError, + () => builder.input( + 'a', {dataType: 'float32', dimensions: shapeWithLargeRank})); +}, 'Throw if rank is too large'); diff --git a/tests/wpt/tests/webnn/validation_tests/linear.https.any.js b/tests/wpt/tests/webnn/validation_tests/linear.https.any.js index 936843374b9..e1243bb73fd 100644 --- a/tests/wpt/tests/webnn/validation_tests/linear.https.any.js +++ b/tests/wpt/tests/webnn/validation_tests/linear.https.any.js @@ -10,7 +10,7 @@ validateInputFromAnotherBuilder('linear'); const label = 'linear_xxx'; -validateUnaryOperation('linear', floatingPointTypes, label); +validateSingleInputOperation('linear', label); promise_test(async t => { const builder = new MLGraphBuilder(context); @@ -25,7 +25,7 @@ promise_test(async t => { promise_test(async t => { const builder = new MLGraphBuilder(context); const options = {beta: -Infinity}; - const input = builder.input('input', {dataType: 'float16', dimensions: []}); + const input = builder.input('input', {dataType: 'float32', dimensions: []}); assert_throws_js(TypeError, () => builder.linear(input, options)); }, '[linear] Throw if options.beta is -Infinity'); diff --git a/tests/wpt/tests/webnn/validation_tests/prelu.https.any.js b/tests/wpt/tests/webnn/validation_tests/prelu.https.any.js index 5b1b95c70f1..9c01d6edae3 100644 --- a/tests/wpt/tests/webnn/validation_tests/prelu.https.any.js +++ b/tests/wpt/tests/webnn/validation_tests/prelu.https.any.js @@ -38,20 +38,6 @@ const tests = [ slope: {dataType: 'float32', dimensions: [2, 5]}, output: {dataType: 'float32', dimensions: [3, 2, 5]}, }, - { - name: - '[prelu] Test with input\'s dataType = int32 and slope\'s dataType = int32.', - input: {dataType: 'int32', dimensions: [3, 2, 5]}, - slope: {dataType: 'int32', dimensions: [2, 5]}, - output: {dataType: 'int32', dimensions: [3, 2, 5]}, - }, - { - name: - '[prelu] Test with input\'s dataType = int8 and slope\'s dataType = int8.', - input: {dataType: 'int8', dimensions: [3, 2, 5]}, - slope: {dataType: 'int8', dimensions: [2, 5]}, - output: {dataType: 'int8', dimensions: [3, 2, 5]}, - }, { name: '[prelu] Throw if the shape of slope is not broadcastable to the shape of input.', @@ -64,16 +50,6 @@ const tests = [ input: {dataType: 'float32', dimensions: [3, 2, 5]}, slope: {dataType: 'int32', dimensions: [3, 2, 5]}, }, - { - name: '[prelu] Throw if the data type of input is int64.', - input: {dataType: 'int64', dimensions: [3, 2, 5]}, - slope: {dataType: 'int64', dimensions: [3, 2, 5]}, - }, - { - name: '[prelu] Throw if the data type of input is uint32.', - input: {dataType: 'uint32', dimensions: [3, 2, 5]}, - slope: {dataType: 'uint32', dimensions: [3, 2, 5]}, - }, ]; tests.forEach( @@ -97,3 +73,21 @@ tests.forEach( () => builder.prelu(input, slope, options), regrexp); } }, test.name)); + +promise_test(async t => { + for (let dataType of allWebNNOperandDataTypes) { + if (!context.opSupportLimits().input.dataTypes.includes(dataType)) { + continue; + } + const builder = new MLGraphBuilder(context); + const dimensions = [1]; + const input = builder.input(`input`, {dataType, dimensions}); + if (context.opSupportLimits().prelu.input.dataTypes.includes(dataType)) { + const output = builder.prelu(input, input); + assert_equals(output.dataType(), dataType); + assert_array_equals(output.shape(), dimensions); + } else { + assert_throws_js(TypeError, () => builder.prelu(input, input)); + } + } +}, `[prelu] Test prelu with all of the data types.`); diff --git a/tests/wpt/tests/webnn/validation_tests/reduction.https.any.js b/tests/wpt/tests/webnn/validation_tests/reduction.https.any.js index 57931f3aec4..cb0d344b4f1 100644 --- a/tests/wpt/tests/webnn/validation_tests/reduction.https.any.js +++ b/tests/wpt/tests/webnn/validation_tests/reduction.https.any.js @@ -20,38 +20,9 @@ const kReductionOperators = [ 'reduceSumSquare', ]; -const kFloatRestrictReductionOperators = [ - 'reduceL2', - 'reduceLogSum', - 'reduceLogSumExp', - 'reduceMean', -]; - -const kFloatInt32Uint32Int64Uint64RestrictReductionOperators = [ - 'reduceL1', - 'reduceProduct', - 'reduceSum', - 'reduceSumSquare', -]; - -const kNoTypeRestrictReductionOperators = [ - 'reduceMax', - 'reduceMin', -]; - const label = 'reduce_op_xxx'; const allReductionOperatorsTests = [ - { - name: '[reduce] Test reduce with default options.', - input: {dataType: 'float32', dimensions: [1, 3, 4, 4]}, - output: {dataType: 'float32', dimensions: []} - }, - { - name: '[reduce] Test reduce when input\'s datatype is float16.', - input: {dataType: 'float16', dimensions: [1, 3, 4, 4]}, - output: {dataType: 'float16', dimensions: []} - }, { name: '[reduce] Test reduce with keepDimensions=true.', input: {dataType: 'float32', dimensions: [1, 3, 4, 4]}, @@ -84,72 +55,6 @@ const allReductionOperatorsTests = [ }, ]; -const kFloatRestrictOperatorsTests = [ - { - name: '[reduce] Throw if the input data type is int32.', - input: {dataType: 'int32', dimensions: [1, 2, 5, 5]}, - options: { - axes: [0, 1], - label: label, - }, - }, -]; - -const kFloatInt32Uint32Int64Uint64RestrictOperatorsTests = [ - { - name: '[reduce] Test reduce when input\'s datatype is int32.', - input: {dataType: 'int32', dimensions: [1, 2, 5, 5]}, - output: {dataType: 'int32', dimensions: []} - }, - { - name: '[reduce] Test reduce when input\'s datatype is uint32.', - input: {dataType: 'uint32', dimensions: [1, 2, 5, 5]}, - output: {dataType: 'uint32', dimensions: []} - }, - { - name: '[reduce] Test reduce when input\'s datatype is int64.', - input: {dataType: 'int64', dimensions: [1, 2, 5, 5]}, - output: {dataType: 'int64', dimensions: []} - }, - { - name: '[reduce] Test reduce when input\'s datatype is uint64.', - input: {dataType: 'uint64', dimensions: [1, 2, 5, 5]}, - output: {dataType: 'uint64', dimensions: []} - }, - { - name: - '[reduce] Throw if the input data type is not one of the {float32, float16, int32, uint32, int64, uint64}.', - input: {dataType: 'int8', dimensions: [1, 2, 5, 5]}, - options: { - axes: [0, 1], - label: label, - }, - }, -]; - -const kNoTypeRestrictOperatorsTests = [ - { - name: '[reduce] Test reduce when input\'s datatype is int64.', - input: {dataType: 'int64', dimensions: [1, 3, 4, 4]}, - output: {dataType: 'int64', dimensions: []} - }, - { - name: '[reduce] Test reduce when input\'s datatype is uint64.', - input: {dataType: 'uint64', dimensions: [1, 3, 4, 4]}, - output: {dataType: 'uint64', dimensions: []} - }, - { - name: '[reduce] Test reduce when input\'s datatype is int8.', - input: {dataType: 'int8', dimensions: [1, 3, 4, 4]}, - output: {dataType: 'int8', dimensions: []} - }, - { - name: '[reduce] Test reduce when input\'s datatype is uint8.', - input: {dataType: 'uint8', dimensions: [1, 3, 4, 4]}, - output: {dataType: 'uint8', dimensions: []} - }, -]; - function runReductionTests(operatorName, tests) { tests.forEach(test => { promise_test(async t => { @@ -176,16 +81,22 @@ kReductionOperators.forEach((operatorName) => { runReductionTests(operatorName, allReductionOperatorsTests); }); -kFloatRestrictReductionOperators.forEach((operatorName) => { - runReductionTests(operatorName, kFloatRestrictOperatorsTests); -}); - -kFloatInt32Uint32Int64Uint64RestrictReductionOperators.forEach( - (operatorName) => { - runReductionTests( - operatorName, kFloatInt32Uint32Int64Uint64RestrictOperatorsTests); - }); - -kNoTypeRestrictReductionOperators.forEach((operatorName) => { - runReductionTests(operatorName, kNoTypeRestrictOperatorsTests); +kReductionOperators.forEach((operatorName) => { + promise_test(async t => { + for (let dataType of allWebNNOperandDataTypes) { + if (!context.opSupportLimits().input.dataTypes.includes(dataType)) { + continue; + } + const builder = new MLGraphBuilder(context); + const input = builder.input(`input`, {dataType, dimensions3D}); + if (context.opSupportLimits()[operatorName].input.dataTypes.includes( + dataType)) { + const output = builder[operatorName](input); + assert_equals(output.dataType(), dataType); + assert_array_equals(output.shape(), []); + } else { + assert_throws_js(TypeError, () => builder[operatorName](input)); + } + } + }, `[${operatorName}] Test reduce with all of the data types.`); }); diff --git a/tests/wpt/tests/webnn/validation_tests/resample2d.https.any.js b/tests/wpt/tests/webnn/validation_tests/resample2d.https.any.js index 777c1fc6bb8..dd9916aefe0 100644 --- a/tests/wpt/tests/webnn/validation_tests/resample2d.https.any.js +++ b/tests/wpt/tests/webnn/validation_tests/resample2d.https.any.js @@ -27,13 +27,6 @@ const tests = [ options: {scales: [0.5, 0.5]}, output: {dataType: 'float32', dimensions: [1, 1, 2, 2]}, }, - { - name: - '[resample2d] Test building resample2d with input\'s dataType = float16', - input: {dataType: 'float16', dimensions: [1, 1, 5, 5]}, - options: {scales: [0.5, 0.5]}, - output: {dataType: 'float16', dimensions: [1, 1, 2, 2]}, - }, { name: '[resample2d] Test building resample2d with scales=[0.5, 0.5] and explicit axes=[2, 3]', @@ -62,6 +55,16 @@ const tests = [ options: {scales: [2.0, 2.0], sizes: [3, 6]}, output: {dataType: 'float32', dimensions: [1, 1, 3, 6]}, }, + { + name: + '[resample2d] Test building resample2d with non consecutive axes=[0,2]', + input: {dataType: 'float32', dimensions: [1, 1, 2, 4]}, + options: { + axes: [0, 2], + label: label, + }, + output: {dataType: 'float32', dimensions: [1, 1, 2, 4]}, + }, { name: '[resample2d] Throw if the dataType of input is not float32 or float16', @@ -121,14 +124,6 @@ const tests = [ label: label, }, }, - { - name: '[resample2d] Throw if input data type is not floating type', - input: {dataType: 'int32', dimensions: [1, 1, 2, 4]}, - options: { - sizes: [1, 1, 4, 6], - label: label, - }, - }, { name: '[resample2d] Throw if any size value is out of \'unsigned long\' value range', @@ -192,15 +187,6 @@ const tests = [ label: label, }, }, - { - // The valid values in the axes sequence are [0, 1], [1, 2] or [2, 3] - name: '[resample2d] Throw if the values of axes are inconsecutive', - input: {dataType: 'float32', dimensions: [1, 1, 2, 4]}, - options: { - axes: [0, 2], - label: label, - }, - }, { name: '[resample2d] Throw if the values of axes are same', input: {dataType: 'float32', dimensions: [1, 1, 2, 4]}, @@ -236,3 +222,22 @@ tests.forEach( validateInputFromAnotherBuilder( 'resample2d', {dataType: 'float32', dimensions: [2, 2, 2, 2]}); + +promise_test(async t => { + for (let dataType of allWebNNOperandDataTypes) { + if (!context.opSupportLimits().input.dataTypes.includes(dataType)) { + continue; + } + const builder = new MLGraphBuilder(context); + const dimensions = [1, 1, 2, 4]; + const input = builder.input(`input`, {dataType, dimensions}); + if (context.opSupportLimits().resample2d.input.dataTypes.includes( + dataType)) { + const output = builder.resample2d(input); + assert_equals(output.dataType(), dataType); + assert_array_equals(output.shape(), dimensions); + } else { + assert_throws_js(TypeError, () => builder.resample2d(input)); + } + } +}, `[resample2d] Test resample2d with all of the data types.`); diff --git a/tests/wpt/tests/webnn/validation_tests/tanh.https.any.js b/tests/wpt/tests/webnn/validation_tests/tanh.https.any.js index b7ddf461c52..e212d49e035 100644 --- a/tests/wpt/tests/webnn/validation_tests/tanh.https.any.js +++ b/tests/wpt/tests/webnn/validation_tests/tanh.https.any.js @@ -10,4 +10,4 @@ validateInputFromAnotherBuilder('tanh'); const label = 'tanh-xxx'; -validateUnaryOperation('tanh', floatingPointTypes, label); +validateSingleInputOperation('tanh', label); diff --git a/tests/wpt/tests/webnn/validation_tests/transpose.https.any.js b/tests/wpt/tests/webnn/validation_tests/transpose.https.any.js index f9eda1d68b6..d6d250d7922 100644 --- a/tests/wpt/tests/webnn/validation_tests/transpose.https.any.js +++ b/tests/wpt/tests/webnn/validation_tests/transpose.https.any.js @@ -11,11 +11,6 @@ validateInputFromAnotherBuilder('transpose'); const label = 'transpose-2'; const tests = [ - { - name: '[transpose] Test building transpose with default options.', - input: {dataType: 'float32', dimensions: [1, 2, 3, 4]}, - output: {dataType: 'float32', dimensions: [4, 3, 2, 1]} - }, { name: '[transpose] Test building transpose with permutation=[0, 2, 3, 1].', input: {dataType: 'float32', dimensions: [1, 2, 3, 4]}, @@ -78,3 +73,22 @@ tests.forEach( } } }, test.name)); + +promise_test(async t => { + for (let dataType of allWebNNOperandDataTypes) { + if (!context.opSupportLimits().input.dataTypes.includes(dataType)) { + continue; + } + const builder = new MLGraphBuilder(context); + const dimensions = [1, 2, 3, 4]; + const input = builder.input(`input`, {dataType, dimensions}); + if (context.opSupportLimits().transpose.input.dataTypes.includes( + dataType)) { + const output = builder.transpose(input); + assert_equals(output.dataType(), dataType); + assert_array_equals(output.shape(), [4, 3, 2, 1]); + } else { + assert_throws_js(TypeError, () => builder.transpose(input)); + } + } +}, `[transpose] Test transpose with all of the data types.`); diff --git a/tests/wpt/tests/webnn/validation_tests/triangular.https.any.js b/tests/wpt/tests/webnn/validation_tests/triangular.https.any.js index 320c4ab5659..0995d21d692 100644 --- a/tests/wpt/tests/webnn/validation_tests/triangular.https.any.js +++ b/tests/wpt/tests/webnn/validation_tests/triangular.https.any.js @@ -13,6 +13,9 @@ promise_test(async t => { // The input tensor which is at least 2-D. for (let dimensions of allWebNNDimensionsArray.slice(0, 2)) { for (let dataType of allWebNNOperandDataTypes) { + if (!context.opSupportLimits().input.dataTypes.includes(dataType)) { + continue; + } const input = builder.input(`input${++inputIndex}`, {dataType, dimensions}); const label = 'triangular_3'; const options = {label}; diff --git a/tests/wpt/tests/webrtc-encoded-transform/RTCRtpScriptTransform-encoded-transform-worker.js b/tests/wpt/tests/webrtc-encoded-transform/RTCRtpScriptTransform-encoded-transform-worker.js index 3faafd26673..ba3ddc1b756 100644 --- a/tests/wpt/tests/webrtc-encoded-transform/RTCRtpScriptTransform-encoded-transform-worker.js +++ b/tests/wpt/tests/webrtc-encoded-transform/RTCRtpScriptTransform-encoded-transform-worker.js @@ -14,13 +14,18 @@ function ModifyAndWrite(chunk, transformer) { } function RestoreAndWrite(chunk, transformer) { - const value = new Uint8Array(chunk.value.data)[chunk.value.data.byteLength - 1]; + const lastByte = new Uint8Array(chunk.value.data)[chunk.value.data.byteLength - 1]; chunk.value.data = chunk.value.data.slice(0, chunk.value.data.byteLength - 1); + let frameData = chunk.value.data; transformer.writer.write(chunk.value); - if (value === modification && !chunk.value.getMetadata().rtpTimestamp) + if (lastByte === modification && !chunk.value.getMetadata().rtpTimestamp && frameData.byteLength == 0) { self.postMessage("got expected"); - else - self.postMessage("unexpected value: " + value); + } + else { + self.postMessage("unexpected value, lastByte" + lastByte + + ", frame data length: " + frameData.byteLength + " rtpTimestamp: ", + chunk.value.getMetadata().rtpTimestamp); + } } onrtctransform = (event) => { const transformer = event.transformer; diff --git a/tests/wpt/tests/webrtc-extensions/RTCRtpParameters-codec.html b/tests/wpt/tests/webrtc/RTCRtpParameters-codec.html similarity index 99% rename from tests/wpt/tests/webrtc-extensions/RTCRtpParameters-codec.html rename to tests/wpt/tests/webrtc/RTCRtpParameters-codec.html index a93e028e6f6..9903776cceb 100644 --- a/tests/wpt/tests/webrtc-extensions/RTCRtpParameters-codec.html +++ b/tests/wpt/tests/webrtc/RTCRtpParameters-codec.html @@ -4,9 +4,9 @@ - - - + + +