From cc86854c4efefe21dbcd2746a05c379b8f1fb479 Mon Sep 17 00:00:00 2001 From: Servo WPT Sync <32481905+servo-wpt-sync@users.noreply.github.com> Date: Sun, 13 Aug 2023 00:53:29 -0400 Subject: [PATCH] Update web-platform-tests to revision b'785ef6ac7190e22df4a4d8a664022abcd0bb752c' (#30095) --- .../url/url-in-tags-revoke.window.js.ini | 2 +- ...rd-break-auto-phrase-wbr-nobr-001.html.ini | 2 + ...rd-break-auto-phrase-wbr-nobr-002.html.ini | 2 + .../cssbox-content-box-001.html.ini | 2 + .../cssbox-content-box-002.html.ini | 2 + .../transform-box/cssbox-content-box.html.ini | 2 - .../wide-keyword-fallback-002.html.ini | 2 + ...scroll-behavior-smooth-navigation.html.ini | 3 + .../css-images.sub.tentative.html.ini | 6 + .../worker-blob-fetch.tentative.window.js.ini | 3 + .../history-traversal/popstate_event.html.ini | 3 + ...eshow-events-iframe-contentWindow.html.ini | 3 - ...url-return-value-handling-dynamic.html.ini | 6 + .../nav-cancelation-2.sub.html.ini | 3 +- .../cross-origin-objects.html.ini | 1 + .../layers/2d.layer.global-filter.html.ini | 2 + ...er-rendering-state-reset-in-layer.html.ini | 3 + .../reset/2d.reset.state.clip.html.ini | 2 + .../reset/2d.reset.state.direction.html.ini | 3 + .../reset/2d.reset.state.fill_style.html.ini | 3 + .../reset/2d.reset.state.filter.html.ini | 3 + .../reset/2d.reset.state.font.html.ini | 3 + .../2d.reset.state.font_kerning.html.ini | 3 + .../2d.reset.state.font_stretch.html.ini | 3 + .../2d.reset.state.font_variant_caps.html.ini | 3 + .../2d.reset.state.global_alpha.html.ini | 3 + ....state.global_composite_operation.html.ini | 3 + ...set.state.image_smoothing_enabled.html.ini | 3 + ...set.state.image_smoothing_quality.html.ini | 3 + .../2d.reset.state.letter_spacing.html.ini | 3 + .../reset/2d.reset.state.line_cap.html.ini | 3 + .../reset/2d.reset.state.line_dash.html.ini | 3 + .../2d.reset.state.line_dash_offset.html.ini | 3 + .../reset/2d.reset.state.line_join.html.ini | 3 + .../reset/2d.reset.state.line_width.html.ini | 3 + .../reset/2d.reset.state.miter_limit.html.ini | 3 + .../reset/2d.reset.state.shadow_blur.html.ini | 3 + .../2d.reset.state.shadow_color.html.ini | 3 + .../2d.reset.state.shadow_offset_x.html.ini | 3 + .../2d.reset.state.shadow_offset_y.html.ini | 3 + .../2d.reset.state.stroke_style.html.ini | 3 + .../reset/2d.reset.state.text_align.html.ini | 3 + .../2d.reset.state.text_baseline.html.ini | 3 + .../2d.reset.state.text_rendering.html.ini | 3 + ...reset.state.transformation_matrix.html.ini | 3 + .../2d.reset.state.word_spacing.html.ini | 3 + .../text/2d.text.fontVariantCaps2.html.ini | 2 + .../text/2d.text.fontVariantCaps3.html.ini | 2 + .../text/2d.text.fontVariantCaps4.html.ini | 2 + ...text.measure.emHeights-low-ascent.html.ini | 3 + ...xt.measure.emHeights-zero-descent.html.ini | 3 + ...re.fontBoundingBox-reduced-ascent.html.ini | 3 + ...sure.fontBoundingBox-zero-descent.html.ini | 3 + .../element/text/fontVariantCaps-2.html.ini | 2 - .../element/text/fontVariantCaps-3.html.ini | 2 - .../element/text/fontVariantCaps-4.html.ini | 2 - .../layers/2d.layer.global-filter.html.ini | 2 + .../layers/2d.layer.global-filter.w.html.ini | 2 + ...er-rendering-state-reset-in-layer.html.ini | 3 + ...ndering-state-reset-in-layer.worker.js.ini | 3 + .../offscreen/reset/2d.reset.basic.html.ini | 3 + .../reset/2d.reset.basic.worker.js.ini | 3 + .../reset/2d.reset.state.clip.html.ini | 2 + .../reset/2d.reset.state.clip.w.html.ini | 2 + .../reset/2d.reset.state.direction.html.ini | 3 + .../2d.reset.state.direction.worker.js.ini | 3 + .../reset/2d.reset.state.fill_style.html.ini | 3 + .../2d.reset.state.fill_style.worker.js.ini | 3 + .../reset/2d.reset.state.filter.html.ini | 3 + .../reset/2d.reset.state.filter.worker.js.ini | 3 + .../reset/2d.reset.state.font.html.ini | 3 + .../reset/2d.reset.state.font.worker.js.ini | 3 + .../2d.reset.state.font_kerning.html.ini | 3 + .../2d.reset.state.font_kerning.worker.js.ini | 3 + .../2d.reset.state.font_stretch.html.ini | 3 + .../2d.reset.state.font_stretch.worker.js.ini | 3 + .../2d.reset.state.font_variant_caps.html.ini | 3 + ...eset.state.font_variant_caps.worker.js.ini | 3 + .../2d.reset.state.global_alpha.html.ini | 3 + .../2d.reset.state.global_alpha.worker.js.ini | 3 + ....state.global_composite_operation.html.ini | 3 + ...e.global_composite_operation.worker.js.ini | 3 + ...set.state.image_smoothing_enabled.html.ini | 3 + ...tate.image_smoothing_enabled.worker.js.ini | 3 + ...set.state.image_smoothing_quality.html.ini | 3 + ...tate.image_smoothing_quality.worker.js.ini | 3 + .../2d.reset.state.letter_spacing.html.ini | 3 + ...d.reset.state.letter_spacing.worker.js.ini | 3 + .../reset/2d.reset.state.line_cap.html.ini | 3 + .../2d.reset.state.line_cap.worker.js.ini | 3 + .../reset/2d.reset.state.line_dash.html.ini | 3 + .../2d.reset.state.line_dash.worker.js.ini | 3 + .../2d.reset.state.line_dash_offset.html.ini | 3 + ...reset.state.line_dash_offset.worker.js.ini | 3 + .../reset/2d.reset.state.line_join.html.ini | 3 + .../2d.reset.state.line_join.worker.js.ini | 3 + .../reset/2d.reset.state.line_width.html.ini | 3 + .../2d.reset.state.line_width.worker.js.ini | 3 + .../reset/2d.reset.state.miter_limit.html.ini | 3 + .../2d.reset.state.miter_limit.worker.js.ini | 3 + .../reset/2d.reset.state.shadow_blur.html.ini | 3 + .../2d.reset.state.shadow_blur.worker.js.ini | 3 + .../2d.reset.state.shadow_color.html.ini | 3 + .../2d.reset.state.shadow_color.worker.js.ini | 3 + .../2d.reset.state.shadow_offset_x.html.ini | 3 + ....reset.state.shadow_offset_x.worker.js.ini | 3 + .../2d.reset.state.shadow_offset_y.html.ini | 3 + ....reset.state.shadow_offset_y.worker.js.ini | 3 + .../2d.reset.state.stroke_style.html.ini | 3 + .../2d.reset.state.stroke_style.worker.js.ini | 3 + .../reset/2d.reset.state.text_align.html.ini | 3 + .../2d.reset.state.text_align.worker.js.ini | 3 + .../2d.reset.state.text_baseline.html.ini | 3 + ...2d.reset.state.text_baseline.worker.js.ini | 3 + .../2d.reset.state.text_rendering.html.ini | 3 + ...d.reset.state.text_rendering.worker.js.ini | 3 + ...reset.state.transformation_matrix.html.ini | 3 + ....state.transformation_matrix.worker.js.ini | 3 + .../2d.reset.state.word_spacing.html.ini | 3 + .../2d.reset.state.word_spacing.worker.js.ini | 3 + .../text/2d.text.fontVariantCaps1.html.ini | 2 + .../text/2d.text.fontVariantCaps2.html.ini | 2 + .../text/2d.text.fontVariantCaps3.html.ini | 2 + .../text/2d.text.fontVariantCaps4.html.ini | 2 + .../text/2d.text.fontVariantCaps5.html.ini | 2 + .../text/2d.text.fontVariantCaps6.html.ini | 2 + ...text.measure.emHeights-low-ascent.html.ini | 3 + ...measure.emHeights-low-ascent.worker.js.ini | 3 + ...xt.measure.emHeights-zero-descent.html.ini | 3 + ...asure.emHeights-zero-descent.worker.js.ini | 3 + ...re.fontBoundingBox-reduced-ascent.html.ini | 3 + ...ntBoundingBox-reduced-ascent.worker.js.ini | 3 + ...sure.fontBoundingBox-zero-descent.html.ini | 3 + ...fontBoundingBox-zero-descent.worker.js.ini | 3 + .../offscreen/text/fontVariantCaps-1.html.ini | 2 - .../offscreen/text/fontVariantCaps-2.html.ini | 2 - .../offscreen/text/fontVariantCaps-3.html.ini | 2 - .../offscreen/text/fontVariantCaps-4.html.ini | 2 - .../offscreen/text/fontVariantCaps-5.html.ini | 2 - .../offscreen/text/fontVariantCaps-6.html.ini | 2 - ...render-blocking-partial.tentative.html.ini | 2 + ...ocument-render-blocking.tentative.html.ini | 2 + ...nother-top-level-browsing-context.html.ini | 4 + .../iframe_sandbox_popups_escaping-2.html.ini | 3 +- ...rame_sandbox_popups_nonescaping-1.html.ini | 3 +- .../non-active-document.html.ini | 6 - .../selectlist-ask-for-reset.html.ini} | 2 +- ...electlist-explicit-size.tentative.html.ini | 2 + .../selectlist-font-size.tentative.html.ini | 2 + ...ectlist-form-attribute.tentative.html.ini} | 30 +- ...ist-form-state-restore.tentative.html.ini} | 2 +- ...ectlist-form-submission.tentative.html.ini | 6 + .../selectlist-labels.tentative.html.ini | 3 + .../selectlist-marker-part.tentative.html.ini | 2 + .../selectlist-marker-slot.tentative.html.ini | 2 + ...trary-content-displayed.tentative.html.ini | 2 + ...y-content-not-displayed.tentative.html.ini | 2 + ...list-pseudo-open-closed.tentative.html.ini | 6 + ...ist-required-attribute.tentative.html.ini} | 2 +- .../selectlist-rtl.tentative.html.ini | 2 + ...selected-value-behavior.tentative.html.ini | 2 + ...ist-selected-value-part.tentative.html.ini | 2 + ...ist-selected-value-slot.tentative.html.ini | 2 + ...selectlist-user-select.tentative.html.ini} | 6 +- .../selectlist-validity.tentative.html.ini | 6 + ...selectlist-value-option.tentative.html.ini | 3 + ...t-value-selectedOption.tentative.html.ini} | 22 +- ...lectlist-writingmode-lr.tentative.html.ini | 2 + ...lectlist-writingmode-rl.tentative.html.ini | 2 + ...electmenu-explicit-size.tentative.html.ini | 2 - .../selectmenu-font-size.tentative.html.ini | 2 - ...ectmenu-form-submission.tentative.html.ini | 6 - .../selectmenu-labels.tentative.html.ini | 3 - .../selectmenu-marker-part.tentative.html.ini | 2 - .../selectmenu-marker-slot.tentative.html.ini | 2 - ...trary-content-displayed.tentative.html.ini | 2 - ...y-content-not-displayed.tentative.html.ini | 2 - ...menu-pseudo-open-closed.tentative.html.ini | 6 - .../selectmenu-rtl.tentative.html.ini | 2 - ...selected-value-behavior.tentative.html.ini | 2 - ...enu-selected-value-part.tentative.html.ini | 2 - ...enu-selected-value-slot.tentative.html.ini | 2 - .../selectmenu-user-select.tentative.html.ini | 12 - .../selectmenu-validity.tentative.html.ini | 6 - ...selectmenu-value-option.tentative.html.ini | 3 - ...lectmenu-writingmode-lr.tentative.html.ini | 2 - ...lectmenu-writingmode-rl.tentative.html.ini | 2 - .../caption-methods.html.ini | 2 - .../parsing/DOMContentLoaded-defer.html.ini | 3 + ...le-event-handler-settings-objects.html.ini | 3 + ...ob-entry-different-function-realm.html.ini | 5 +- .../webmessaging/with-ports/018.html.ini | 4 + ...s-3P-window.partitioned.tentative.html.ini | 4 + .../Worker/Worker-constructor.html.ini | 2 + tests/wpt/meta/MANIFEST.json | 2357 +++++++++++++---- .../inline-negative-margin-001.html.ini | 3 + .../cssbox-content-box-001.html.ini | 2 + .../cssbox-content-box-002.html.ini | 2 + .../transform-box/cssbox-content-box.html.ini | 2 - .../wide-keyword-fallback-002.html.ini | 2 + .../selectmenu-ask-for-reset.html.ini | 12 - ...lectmenu-form-attribute.tentative.html.ini | 42 - ...menu-form-state-restore.tentative.html.ini | 3 - ...ectmenu-form-submission.tentative.html.ini | 6 - .../selectmenu-labels.tentative.html.ini | 3 - ...trary-content-displayed.tentative.html.ini | 2 - ...y-content-not-displayed.tentative.html.ini | 2 - ...menu-pseudo-open-closed.tentative.html.ini | 6 - ...menu-required-attribute.tentative.html.ini | 3 - .../selectmenu-validity.tentative.html.ini | 6 - ...selectmenu-value-option.tentative.html.ini | 3 - ...nu-value-selectedOption.tentative.html.ini | 33 - ...lectmenu-writingmode-lr.tentative.html.ini | 2 - ...lectmenu-writingmode-rl.tentative.html.ini | 2 - .../crashtests/displaylocked-serialize.html | 6 +- tests/wpt/tests/accname/META.yml | 3 +- .../closewatcher-dialog-popover.html | 94 + .../dialog-cancel-events-closewatcher.html} | 0 ...g-cancel-preventDefault-closewatcher.html} | 0 .../tests/close-watcher/resources/helpers.js | 58 +- .../user-activation-CloseWatcher.html | 75 + .../close-watcher/user-activation-shared.html | 195 ++ .../tests/close-watcher/user-activation.html | 222 -- tests/wpt/tests/core-aam/META.yml | 1 + ...not-observed-by-service-worker.https.html} | 0 .../support/fedcm-helper.sub.js | 54 +- .../fedcm/manifest_with_no_accounts.json | 5 + .../support/fedcm/no_accounts.py | 25 + .../support/mark_signedin | 13 + .../support/mark_signedin.headers | 2 + .../content-visibility-085.html | 35 + .../font-size-adjust-reload-ref.html | 26 + .../css-fonts/font-size-adjust-reload.html | 25 + .../image-set-all-options-invalid.html | 18 + .../mask-image/mask-origin-2-ref.html | 35 - .../css-masking/mask-image/mask-origin-2.html | 77 - .../css/css-masking/parsing/mask-invalid.html | 2 + .../css-masking/parsing/mask-valid.sub.html | 3 +- .../floated-input-in-inline-next-column.html | 19 + .../sticky/position-sticky-details-crash.html | 10 + .../css/css-scroll-snap/overscroll-snap.html | 48 + ...rd-break-auto-phrase-wbr-nobr-001-ref.html | 14 + .../word-break-auto-phrase-wbr-nobr-001.html | 29 + ...rd-break-auto-phrase-wbr-nobr-002-ref.html | 13 + .../word-break-auto-phrase-wbr-nobr-002.html | 30 + .../preserve3d-pseudo-element-ref.html | 1 - .../preserve3d-pseudo-element.html | 1 - ...t-box.html => cssbox-content-box-001.html} | 0 .../transform-box/cssbox-content-box-002.html | 23 + ...tml => wide-keyword-fallback-001-ref.html} | 0 ...ck.html => wide-keyword-fallback-001.html} | 2 +- .../wide-keyword-fallback-002-ref.html | 7 + .../wide-keyword-fallback-002.html | 25 + .../will-change-contents-crash.html | 11 + .../motion/offset-path-shape-ellipse-003.html | 4 +- .../css/motion/offset-path-url-001-ref.html | 19 + .../tests/css/motion/offset-path-url-001.html | 32 + .../css/motion/offset-path-url-002-ref.html | 18 + .../tests/css/motion/offset-path-url-002.html | 35 + .../css/motion/offset-path-url-003-ref.html | 18 + .../tests/css/motion/offset-path-url-003.html | 36 + .../css/motion/offset-path-url-004-ref.html | 18 + .../tests/css/motion/offset-path-url-004.html | 36 + .../tests/css/motion/offset-path-url-005.html | 33 + .../tests/css/motion/offset-path-url-006.html | 33 + .../tests/css/motion/offset-path-url-007.html | 35 + .../css/motion/offset-path-url-008-ref.html | 26 + .../tests/css/motion/offset-path-url-008.html | 45 + .../tests/css/motion/offset-path-url-009.html | 45 + .../tests/css/motion/offset-path-url-010.html | 45 + .../css/motion/offset-path-url-011-ref.html | 18 + .../tests/css/motion/offset-path-url-011.html | 34 + .../css/motion/offset-path-url-crash.html | 37 + .../tests/css/motion/offset-path-url-ref.html | 21 - .../wpt/tests/css/motion/offset-path-url.html | 27 - .../selectors/has-sibling-chrome-crash.html | 10 + .../wpt/tests/css/selectors/user-invalid.html | 47 +- tests/wpt/tests/css/selectors/user-valid.html | 50 +- .../tests/docs/writing-tests/testharness.md | 4 +- tests/wpt/tests/dpub-aam/META.yml | 3 +- tests/wpt/tests/dpub-aria/META.yml | 2 +- ...automatic-beacon-shared-storage.https.html | 44 + .../automatic-beacon-unfenced-top.https.html | 57 + .../fenced-frame/deep-copy-config.https.html | 27 + .../automatic-beacon-unfenced-page.html | 19 + .../resources/fledge-bidding-logic.py | 23 +- .../resources/fledge-decision-logic.py | 34 +- .../resources/postmessage-config.html | 14 + .../wpt/tests/fenced-frame/resources/utils.js | 25 +- .../showPicker-errors.https.window.js | 6 + tests/wpt/tests/fledge/tentative/TODO | 3 +- ...eave-ad-interest-group.https.sub.window.js | 6 +- .../fledge/tentative/resources/fledge-util.js | 36 +- .../resources/trusted-bidding-signals.py | 20 +- .../resources/trusted-scoring-signals.py | 127 + .../round-a-value.https.sub.window.js | 160 ++ ...rusted-bidding-signals.https.sub.window.js | 14 +- ...rusted-scoring-signals.https.sub.window.js | 409 +++ .../wpt/tests/fonts/CanvasTest-ascent256.ttf | Bin 0 -> 2444 bytes tests/wpt/tests/fonts/CanvasTest-descent0.ttf | Bin 0 -> 2444 bytes tests/wpt/tests/fonts/CanvasTest.ttf | Bin 2528 -> 2444 bytes tests/wpt/tests/graphics-aam/META.yml | 3 +- ...ced-frame-bypass.tentative.https.window.js | 3 +- .../fenced-frame.tentative.https.window.js | 3 +- .../html/anonymous-iframe/resources/common.js | 7 +- .../history-traversal/popstate_event.html | 1 + .../2d.layer.global-filter-expected.html | 17 + .../layers/2d.layer.global-filter.html | 26 + ...states.alpha.blending.shadow-expected.html | 1 + ...r.global-states.alpha.blending.shadow.html | 1 + ...tates.alpha.composite.shadow-expected.html | 1 + ....global-states.alpha.composite.shadow.html | 1 + ...r.global-states.alpha.shadow-expected.html | 1 + .../2d.layer.global-states.alpha.shadow.html | 1 + ...lobal-states.blending.shadow-expected.html | 1 + ...d.layer.global-states.blending.shadow.html | 1 + ...obal-states.composite.shadow-expected.html | 1 + ....layer.global-states.composite.shadow.html | 1 + ...filter.alpha.blending.shadow-expected.html | 1 + ...l-states.filter.alpha.blending.shadow.html | 1 + ...ilter.alpha.composite.shadow-expected.html | 1 + ...-states.filter.alpha.composite.shadow.html | 1 + ...l-states.filter.alpha.shadow-expected.html | 1 + ...yer.global-states.filter.alpha.shadow.html | 1 + ...tates.filter.blending.shadow-expected.html | 1 + ....global-states.filter.blending.shadow.html | 1 + ...ates.filter.composite.shadow-expected.html | 1 + ...global-states.filter.composite.shadow.html | 1 + ....global-states.filter.shadow-expected.html | 1 + .../2d.layer.global-states.filter.shadow.html | 1 + ...d.layer.global-states.shadow-expected.html | 1 + .../layers/2d.layer.global-states.shadow.html | 1 + ....layer-rendering-state-reset-in-layer.html | 56 + .../canvas/element/layers/2d.layer.reset.html | 2 + .../2d.layer.several-complex-expected.html | 1 + .../layers/2d.layer.several-complex.html | 2 +- .../reset/2d.reset.state.clip-expected.html | 14 + .../element/reset/2d.reset.state.clip.html | 23 + .../reset/2d.reset.state.direction.html | 32 + .../reset/2d.reset.state.fill_style.html | 32 + .../element/reset/2d.reset.state.filter.html | 32 + .../element/reset/2d.reset.state.font.html | 32 + .../reset/2d.reset.state.font_kerning.html | 32 + .../reset/2d.reset.state.font_stretch.html | 32 + .../2d.reset.state.font_variant_caps.html | 32 + .../reset/2d.reset.state.global_alpha.html | 32 + ...eset.state.global_composite_operation.html | 32 + ...d.reset.state.image_smoothing_enabled.html | 32 + ...d.reset.state.image_smoothing_quality.html | 32 + .../reset/2d.reset.state.letter_spacing.html | 32 + .../reset/2d.reset.state.line_cap.html | 32 + .../reset/2d.reset.state.line_dash.html | 29 + .../2d.reset.state.line_dash_offset.html | 32 + .../reset/2d.reset.state.line_join.html | 32 + .../reset/2d.reset.state.line_width.html | 32 + .../reset/2d.reset.state.miter_limit.html | 32 + .../reset/2d.reset.state.shadow_blur.html | 32 + .../reset/2d.reset.state.shadow_color.html | 32 + .../reset/2d.reset.state.shadow_offset_x.html | 32 + .../reset/2d.reset.state.shadow_offset_y.html | 32 + .../reset/2d.reset.state.stroke_style.html | 32 + .../reset/2d.reset.state.text_align.html | 32 + .../reset/2d.reset.state.text_baseline.html | 32 + .../reset/2d.reset.state.text_rendering.html | 32 + .../2d.reset.state.transformation_matrix.html | 29 + .../reset/2d.reset.state.word_spacing.html | 32 + ...=> 2d.text.fontVariantCaps1-expected.html} | 0 ...s-1.html => 2d.text.fontVariantCaps1.html} | 2 +- ... 2d.text.fontVariantCaps2-unexpected.html} | 0 ...s-2.html => 2d.text.fontVariantCaps2.html} | 2 +- ...=> 2d.text.fontVariantCaps3-expected.html} | 0 ...s-3.html => 2d.text.fontVariantCaps3.html} | 2 +- .../2d.text.fontVariantCaps4-expected.html | 12 + ...s-4.html => 2d.text.fontVariantCaps4.html} | 2 +- .../2d.text.fontVariantCaps5-expected.html | 12 + ...s-5.html => 2d.text.fontVariantCaps5.html} | 2 +- .../2d.text.fontVariantCaps6-expected.html | 12 + ...s-6.html => 2d.text.fontVariantCaps6.html} | 2 +- .../2d.text.measure.emHeights-low-ascent.html | 45 + ...d.text.measure.emHeights-zero-descent.html | 45 + .../text/2d.text.measure.emHeights.html | 14 +- ...easure.fontBoundingBox-reduced-ascent.html | 43 + ....measure.fontBoundingBox-zero-descent.html | 43 + .../text/2d.text.measure.fontBoundingBox.html | 11 +- .../2d.layer.global-filter-expected.html | 17 + .../layers/2d.layer.global-filter.html | 29 + .../layers/2d.layer.global-filter.w.html | 43 + ...states.alpha.blending.shadow-expected.html | 1 + ...r.global-states.alpha.blending.shadow.html | 1 + ...global-states.alpha.blending.shadow.w.html | 1 + ...tates.alpha.composite.shadow-expected.html | 1 + ....global-states.alpha.composite.shadow.html | 1 + ...lobal-states.alpha.composite.shadow.w.html | 1 + ...r.global-states.alpha.shadow-expected.html | 1 + .../2d.layer.global-states.alpha.shadow.html | 1 + ...2d.layer.global-states.alpha.shadow.w.html | 1 + ...lobal-states.blending.shadow-expected.html | 1 + ...d.layer.global-states.blending.shadow.html | 1 + ...layer.global-states.blending.shadow.w.html | 1 + ...obal-states.composite.shadow-expected.html | 1 + ....layer.global-states.composite.shadow.html | 1 + ...ayer.global-states.composite.shadow.w.html | 1 + ...filter.alpha.blending.shadow-expected.html | 1 + ...l-states.filter.alpha.blending.shadow.html | 1 + ...states.filter.alpha.blending.shadow.w.html | 1 + ...ilter.alpha.composite.shadow-expected.html | 1 + ...-states.filter.alpha.composite.shadow.html | 1 + ...tates.filter.alpha.composite.shadow.w.html | 1 + ...l-states.filter.alpha.shadow-expected.html | 1 + ...yer.global-states.filter.alpha.shadow.html | 1 + ...r.global-states.filter.alpha.shadow.w.html | 1 + ...tates.filter.blending.shadow-expected.html | 1 + ....global-states.filter.blending.shadow.html | 1 + ...lobal-states.filter.blending.shadow.w.html | 1 + ...ates.filter.composite.shadow-expected.html | 1 + ...global-states.filter.composite.shadow.html | 1 + ...obal-states.filter.composite.shadow.w.html | 1 + ....global-states.filter.shadow-expected.html | 1 + .../2d.layer.global-states.filter.shadow.html | 1 + ...d.layer.global-states.filter.shadow.w.html | 1 + ...d.layer.global-states.shadow-expected.html | 1 + .../layers/2d.layer.global-states.shadow.html | 1 + .../2d.layer.global-states.shadow.w.html | 1 + ....layer-rendering-state-reset-in-layer.html | 57 + ...r-rendering-state-reset-in-layer.worker.js | 52 + .../offscreen/layers/2d.layer.reset.html | 2 + .../offscreen/layers/2d.layer.reset.w.html | 2 + .../2d.layer.several-complex-expected.html | 1 + .../layers/2d.layer.several-complex.html | 2 +- .../layers/2d.layer.several-complex.w.html | 2 +- .../offscreen/reset/2d.reset.basic.html | 36 + .../offscreen/reset/2d.reset.basic.worker.js | 31 + .../reset/2d.reset.state.clip-expected.html | 14 + .../offscreen/reset/2d.reset.state.clip.html | 26 + .../reset/2d.reset.state.clip.w.html | 40 + .../reset/2d.reset.state.direction.html | 33 + .../reset/2d.reset.state.direction.worker.js | 28 + .../reset/2d.reset.state.fill_style.html | 33 + .../reset/2d.reset.state.fill_style.worker.js | 28 + .../reset/2d.reset.state.filter.html | 33 + .../reset/2d.reset.state.filter.worker.js | 28 + .../offscreen/reset/2d.reset.state.font.html | 33 + .../reset/2d.reset.state.font.worker.js | 28 + .../reset/2d.reset.state.font_kerning.html | 33 + .../2d.reset.state.font_kerning.worker.js | 28 + .../reset/2d.reset.state.font_stretch.html | 33 + .../2d.reset.state.font_stretch.worker.js | 28 + .../2d.reset.state.font_variant_caps.html | 33 + ...2d.reset.state.font_variant_caps.worker.js | 28 + .../reset/2d.reset.state.global_alpha.html | 33 + .../2d.reset.state.global_alpha.worker.js | 28 + ...eset.state.global_composite_operation.html | 33 + ...state.global_composite_operation.worker.js | 28 + ...d.reset.state.image_smoothing_enabled.html | 33 + ...et.state.image_smoothing_enabled.worker.js | 28 + ...d.reset.state.image_smoothing_quality.html | 33 + ...et.state.image_smoothing_quality.worker.js | 28 + .../reset/2d.reset.state.letter_spacing.html | 33 + .../2d.reset.state.letter_spacing.worker.js | 28 + .../reset/2d.reset.state.line_cap.html | 33 + .../reset/2d.reset.state.line_cap.worker.js | 28 + .../reset/2d.reset.state.line_dash.html | 30 + .../reset/2d.reset.state.line_dash.worker.js | 25 + .../2d.reset.state.line_dash_offset.html | 33 + .../2d.reset.state.line_dash_offset.worker.js | 28 + .../reset/2d.reset.state.line_join.html | 33 + .../reset/2d.reset.state.line_join.worker.js | 28 + .../reset/2d.reset.state.line_width.html | 33 + .../reset/2d.reset.state.line_width.worker.js | 28 + .../reset/2d.reset.state.miter_limit.html | 33 + .../2d.reset.state.miter_limit.worker.js | 28 + .../reset/2d.reset.state.shadow_blur.html | 33 + .../2d.reset.state.shadow_blur.worker.js | 28 + .../reset/2d.reset.state.shadow_color.html | 33 + .../2d.reset.state.shadow_color.worker.js | 28 + .../reset/2d.reset.state.shadow_offset_x.html | 33 + .../2d.reset.state.shadow_offset_x.worker.js | 28 + .../reset/2d.reset.state.shadow_offset_y.html | 33 + .../2d.reset.state.shadow_offset_y.worker.js | 28 + .../reset/2d.reset.state.stroke_style.html | 33 + .../2d.reset.state.stroke_style.worker.js | 28 + .../reset/2d.reset.state.text_align.html | 33 + .../reset/2d.reset.state.text_align.worker.js | 28 + .../reset/2d.reset.state.text_baseline.html | 33 + .../2d.reset.state.text_baseline.worker.js | 28 + .../reset/2d.reset.state.text_rendering.html | 33 + .../2d.reset.state.text_rendering.worker.js | 28 + .../2d.reset.state.transformation_matrix.html | 30 + ...eset.state.transformation_matrix.worker.js | 25 + .../reset/2d.reset.state.word_spacing.html | 33 + .../2d.reset.state.word_spacing.worker.js | 28 + ...=> 2d.text.fontVariantCaps1-expected.html} | 0 ...s-1.html => 2d.text.fontVariantCaps1.html} | 2 +- ... 2d.text.fontVariantCaps2-unexpected.html} | 0 ...s-2.html => 2d.text.fontVariantCaps2.html} | 2 +- ...=> 2d.text.fontVariantCaps3-expected.html} | 0 ...s-3.html => 2d.text.fontVariantCaps3.html} | 2 +- .../2d.text.fontVariantCaps4-expected.html | 16 + ...s-4.html => 2d.text.fontVariantCaps4.html} | 2 +- .../2d.text.fontVariantCaps5-expected.html | 16 + ...s-5.html => 2d.text.fontVariantCaps5.html} | 2 +- .../2d.text.fontVariantCaps6-expected.html | 16 + ...s-6.html => 2d.text.fontVariantCaps6.html} | 2 +- .../2d.text.measure.emHeights-low-ascent.html | 34 + ...ext.measure.emHeights-low-ascent.worker.js | 30 + ...d.text.measure.emHeights-zero-descent.html | 34 + ...t.measure.emHeights-zero-descent.worker.js | 30 + .../text/2d.text.measure.emHeights.html | 14 +- .../text/2d.text.measure.emHeights.worker.js | 14 +- ...easure.fontBoundingBox-reduced-ascent.html | 32 + ...e.fontBoundingBox-reduced-ascent.worker.js | 28 + ....measure.fontBoundingBox-zero-descent.html | 32 + ...ure.fontBoundingBox-zero-descent.worker.js | 28 + .../text/2d.text.measure.fontBoundingBox.html | 11 +- .../2d.text.measure.fontBoundingBox.worker.js | 11 +- .../2d-getcontext-options.any.js | 7 +- .../html/canvas/tools/yaml-new/layers.yaml | 66 +- .../html/canvas/tools/yaml-new/reset.yaml | 156 +- .../html/canvas/tools/yaml-new/text.yaml | 97 +- ...ent-render-blocking-partial.tentative.html | 34 + .../document-render-blocking.tentative.html | 33 + .../html/dom/render-blocking/support/utils.js | 10 + ...amed-attribute-detached-context-crash.html | 13 + .../selectlist-ask-for-reset.html | 119 + .../selectlist-disabled.tentative.html} | 10 +- .../selectlist-events.tentative.html} | 190 +- ...electlist-explicit-size-ref.tentative.html | 9 + .../selectlist-explicit-size.tentative.html | 14 + .../selectlist-font-size-ref.tentative.html | 8 + .../selectlist-font-size.tentative.html | 13 + .../selectlist-form-attribute.tentative.html} | 4 +- .../selectlist-form-elements.tentative.html} | 12 +- ...ectlist-form-state-restore.tentative.html} | 14 +- ...selectlist-form-submission.tentative.html} | 22 +- .../selectlist-keyboard.tentative.html | 123 + .../selectlist-labels.tentative.html | 29 + ...tbox-fallback-change-crash.tentative.html} | 12 +- .../selectlist-many-options.tentative.html} | 24 +- ...ist-marker-end-aligned-ref.tentative.html} | 8 +- ...ectlist-marker-end-aligned.tentative.html} | 12 +- .../selectlist-marker-part-ref.html | 9 + .../selectlist-marker-part.tentative.html} | 8 +- .../selectlist-marker-slot-ref.html | 13 + .../selectlist-marker-slot.tentative.html} | 6 +- ...arker-visible-overflow-ref.tentative.html} | 6 +- ...st-marker-visible-overflow.tentative.html} | 10 +- .../selectlist-nested.tentative.html} | 62 +- ...rary-content-displayed-ref.tentative.html} | 8 +- ...rbitrary-content-displayed.tentative.html} | 16 +- ...-content-not-displayed-ref.tentative.html} | 4 +- ...rary-content-not-displayed.tentative.html} | 18 +- ...electlist-option-focusable.tentative.html} | 26 +- .../selectlist-overflow-x-ref.tentative.html} | 8 +- .../selectlist-overflow-x.tentative.html} | 12 +- .../selectlist-parts-structure.tentative.html | 530 ++++ ...-popover-position-with-zoom.tentative.html | 135 + ...selectlist-popover-position.tentative.html | 115 + .../selectlist-popover.tentative.html | 107 + ...-light-dismiss-invalidation.tentative.html | 47 + ...lectlist-pseudo-open-closed.tentative.html | 61 + ...ectlist-required-attribute.tentative.html} | 34 +- .../selectlist-rtl-ref.tentative.html | 9 + .../selectlist-rtl.tentative.html} | 10 +- ...electlist-selected-value-behavior-ref.html | 9 + ...st-selected-value-behavior.tentative.html} | 6 +- .../selectlist-selected-value-part-ref.html | 9 + ...ctlist-selected-value-part.tentative.html} | 8 +- .../selectlist-selected-value-slot-ref.html | 13 + ...ctlist-selected-value-slot.tentative.html} | 6 +- .../selectlist-tab-navigation.tentative.html} | 12 +- .../selectlist-tabindex-order.tentative.html} | 8 +- .../selectlist-user-select.tentative.html} | 28 +- .../selectlist-validity.tentative.html | 88 + .../selectlist-value-option.tentative.html} | 12 +- ...ctlist-value-selectedOption.tentative.html | 224 ++ .../selectlist-writingmode-lr.tentative.html} | 6 +- .../selectlist-writingmode-rl.tentative.html} | 6 +- .../selectlist-writingmode-tb-ref.html | 4 + .../support/back.html | 1 + .../support/fake-selectlist.js} | 24 +- .../support/selectlist_button_icon.svg} | 0 .../selectmenu-ask-for-reset.html | 119 - ...electmenu-explicit-size-ref.tentative.html | 9 - .../selectmenu-explicit-size.tentative.html | 14 - .../selectmenu-font-size-ref.tentative.html | 8 - .../selectmenu-font-size.tentative.html | 13 - .../selectmenu-keyboard.tentative.html | 123 - .../selectmenu-labels.tentative.html | 29 - .../selectmenu-marker-part-ref.html | 9 - .../selectmenu-marker-slot-ref.html | 13 - .../selectmenu-parts-structure.tentative.html | 530 ---- ...-popover-position-with-zoom.tentative.html | 135 - ...selectmenu-popover-position.tentative.html | 115 - .../selectmenu-popover.tentative.html | 107 - ...-light-dismiss-invalidation.tentative.html | 47 - ...lectmenu-pseudo-open-closed.tentative.html | 61 - .../selectmenu-rtl-ref.tentative.html | 9 - ...electmenu-selected-value-behavior-ref.html | 9 - .../selectmenu-selected-value-part-ref.html | 9 - .../selectmenu-selected-value-slot-ref.html | 13 - .../selectmenu-validity.tentative.html | 88 - ...ctmenu-value-selectedOption.tentative.html | 224 -- .../selectmenu-writingmode-tb-ref.html | 4 - ...avigate-navigation-back-same-document.html | 1 + .../callback-idle-periods.html | 2 +- .../test_partial_interface_of.html | 1 - .../test_partial_interface_of.html | 1 - .../css/animation-range-visual-test.html | 1 + .../scroll-timeline-invalidation.html | 19 +- .../view-timelines/contain-alignment.html | 112 + .../view-timelines/subject-br-crash.html | 14 + tests/wpt/tests/tools/lint/lint.py | 10 +- tests/wpt/tests/tools/lint/rules.py | 4 +- .../tests/tools/lint/tests/test_file_lints.py | 3 +- .../tools/manifest/tests/test_sourcefile.py | 22 +- .../wptrunner/wptrunner/browsers/chrome.py | 17 +- .../wptrunner/browsers/content_shell.py | 16 +- .../executors/executorcontentshell.py | 6 + .../tools/wptrunner/wptrunner/wptrunner.py | 10 +- tests/wpt/tests/wai-aria/META.yml | 3 - .../tests/wai-aria/role/fallback-roles.html | 38 +- tests/wpt/tests/wai-aria/role/grid-roles.html | 53 + .../audiocontext-suspend-resume-close.html | 4 +- .../webcodecs/video-decoder.https.any.js | 39 +- .../capture_screenshot/__init__.py | 2 +- .../RTCPeerConnection-removeTrack.https.html | 2 + .../RTCRtpSender-replaceTrack.https.html | 1 - .../webrtc/RTCRtpSender-setParameters.html | 1 - .../RTCRtpTransceiver-stopping.https.html | 15 +- 629 files changed, 11267 insertions(+), 3403 deletions(-) create mode 100644 tests/wpt/meta-legacy-layout/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-001.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-002.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-transforms/transform-box/cssbox-content-box-001.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-transforms/transform-box/cssbox-content-box-002.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/css/css-transforms/transform-box/cssbox-content-box.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/css-variables/wide-keyword-fallback-002.html.ini create mode 100644 tests/wpt/meta-legacy-layout/css/cssom-view/scroll-behavior-smooth-navigation.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/history-traversal/popstate_event.html.ini create 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.layer-rendering-state-reset-in-layer.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.clip.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.direction.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.fill_style.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.filter.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.font.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.font_kerning.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.font_stretch.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.font_variant_caps.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.global_alpha.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.global_composite_operation.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.image_smoothing_enabled.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.image_smoothing_quality.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.letter_spacing.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.line_cap.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.line_dash.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.line_dash_offset.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.line_join.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.line_width.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.miter_limit.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.shadow_blur.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.shadow_color.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.shadow_offset_x.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.shadow_offset_y.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.stroke_style.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.text_align.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.text_baseline.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.text_rendering.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.transformation_matrix.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/reset/2d.reset.state.word_spacing.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.fontVariantCaps2.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.fontVariantCaps3.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.fontVariantCaps4.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.emHeights-low-ascent.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.emHeights-zero-descent.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.fontBoundingBox-reduced-ascent.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.fontBoundingBox-zero-descent.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/text/fontVariantCaps-2.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/text/fontVariantCaps-3.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/element/text/fontVariantCaps-4.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-filter.html.ini create 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.layer-rendering-state-reset-in-layer.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.basic.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.basic.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.clip.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.clip.w.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.direction.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.direction.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.fill_style.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.fill_style.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.filter.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.filter.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.font.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.font.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.font_kerning.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.font_kerning.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.font_stretch.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.font_stretch.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.font_variant_caps.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.font_variant_caps.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.global_alpha.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.global_alpha.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.global_composite_operation.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.global_composite_operation.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_enabled.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_enabled.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_quality.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_quality.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.letter_spacing.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.letter_spacing.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.line_cap.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.line_cap.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.line_dash.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.line_dash.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.line_dash_offset.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.line_dash_offset.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.line_join.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.line_join.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.line_width.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.line_width.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.miter_limit.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.miter_limit.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.shadow_blur.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.shadow_blur.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.shadow_color.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.shadow_color.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_x.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_x.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_y.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_y.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.stroke_style.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.stroke_style.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.text_align.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.text_align.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.text_baseline.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.text_baseline.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.text_rendering.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.text_rendering.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.transformation_matrix.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.transformation_matrix.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.word_spacing.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/reset/2d.reset.state.word_spacing.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.fontVariantCaps1.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.fontVariantCaps2.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.fontVariantCaps3.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.fontVariantCaps4.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.fontVariantCaps5.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.fontVariantCaps6.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.emHeights-low-ascent.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.emHeights-low-ascent.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.emHeights-zero-descent.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.emHeights-zero-descent.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-reduced-ascent.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-reduced-ascent.worker.js.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-zero-descent.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-zero-descent.worker.js.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/fontVariantCaps-1.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/fontVariantCaps-2.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/fontVariantCaps-3.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/fontVariantCaps-4.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/fontVariantCaps-5.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/fontVariantCaps-6.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/render-blocking/document-render-blocking-partial.tentative.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/dom/render-blocking/document-render-blocking.tentative.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/interaction/focus/the-autofocus-attribute/skip-another-top-level-browsing-context.html.ini rename tests/wpt/meta-legacy-layout/html/semantics/forms/{the-selectmenu-element/selectmenu-ask-for-reset.html.ini => the-selectlist-element/selectlist-ask-for-reset.html.ini} (88%) create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-explicit-size.tentative.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-font-size.tentative.html.ini rename tests/wpt/meta-legacy-layout/html/semantics/forms/{the-selectmenu-element/selectmenu-form-attribute.tentative.html.ini => the-selectlist-element/selectlist-form-attribute.tentative.html.ini} (52%) rename tests/wpt/meta-legacy-layout/html/semantics/forms/{the-selectmenu-element/selectmenu-form-state-restore.tentative.html.ini => the-selectlist-element/selectlist-form-state-restore.tentative.html.ini} (58%) create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-form-submission.tentative.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-labels.tentative.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-marker-part.tentative.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-marker-slot.tentative.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-option-arbitrary-content-displayed.tentative.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-option-arbitrary-content-not-displayed.tentative.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-pseudo-open-closed.tentative.html.ini rename tests/wpt/meta-legacy-layout/html/semantics/forms/{the-selectmenu-element/selectmenu-required-attribute.tentative.html.ini => the-selectlist-element/selectlist-required-attribute.tentative.html.ini} (50%) create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-rtl.tentative.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-selected-value-behavior.tentative.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-selected-value-part.tentative.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-selected-value-slot.tentative.html.ini rename tests/wpt/{meta/html/semantics/forms/the-selectmenu-element/selectmenu-user-select.tentative.html.ini => meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-user-select.tentative.html.ini} (59%) create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-validity.tentative.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-value-option.tentative.html.ini rename tests/wpt/meta-legacy-layout/html/semantics/forms/{the-selectmenu-element/selectmenu-value-selectedOption.tentative.html.ini => the-selectlist-element/selectlist-value-selectedOption.tentative.html.ini} (74%) create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-writingmode-lr.tentative.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-writingmode-rl.tentative.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-explicit-size.tentative.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-font-size.tentative.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-form-submission.tentative.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-labels.tentative.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part.tentative.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot.tentative.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-displayed.tentative.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-not-displayed.tentative.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-pseudo-open-closed.tentative.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-rtl.tentative.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-behavior.tentative.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-part.tentative.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot.tentative.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-user-select.tentative.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-validity.tentative.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-value-option.tentative.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-writingmode-lr.tentative.html.ini delete mode 100644 tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-writingmode-rl.tentative.html.ini create mode 100644 tests/wpt/meta-legacy-layout/html/syntax/parsing/DOMContentLoaded-defer.html.ini create mode 100644 tests/wpt/meta-legacy-layout/webmessaging/with-ports/018.html.ini create mode 100644 tests/wpt/meta-legacy-layout/webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html.ini create mode 100644 tests/wpt/meta-legacy-layout/workers/constructors/Worker/Worker-constructor.html.ini create mode 100644 tests/wpt/meta/css/css-transforms/transform-box/cssbox-content-box-001.html.ini create mode 100644 tests/wpt/meta/css/css-transforms/transform-box/cssbox-content-box-002.html.ini delete mode 100644 tests/wpt/meta/css/css-transforms/transform-box/cssbox-content-box.html.ini create mode 100644 tests/wpt/meta/css/css-variables/wide-keyword-fallback-002.html.ini delete mode 100644 tests/wpt/meta/html/semantics/forms/the-selectmenu-element/selectmenu-ask-for-reset.html.ini delete mode 100644 tests/wpt/meta/html/semantics/forms/the-selectmenu-element/selectmenu-form-attribute.tentative.html.ini delete mode 100644 tests/wpt/meta/html/semantics/forms/the-selectmenu-element/selectmenu-form-state-restore.tentative.html.ini delete mode 100644 tests/wpt/meta/html/semantics/forms/the-selectmenu-element/selectmenu-form-submission.tentative.html.ini delete mode 100644 tests/wpt/meta/html/semantics/forms/the-selectmenu-element/selectmenu-labels.tentative.html.ini delete mode 100644 tests/wpt/meta/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-displayed.tentative.html.ini delete mode 100644 tests/wpt/meta/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-not-displayed.tentative.html.ini delete mode 100644 tests/wpt/meta/html/semantics/forms/the-selectmenu-element/selectmenu-pseudo-open-closed.tentative.html.ini delete mode 100644 tests/wpt/meta/html/semantics/forms/the-selectmenu-element/selectmenu-required-attribute.tentative.html.ini delete mode 100644 tests/wpt/meta/html/semantics/forms/the-selectmenu-element/selectmenu-validity.tentative.html.ini delete mode 100644 tests/wpt/meta/html/semantics/forms/the-selectmenu-element/selectmenu-value-option.tentative.html.ini delete mode 100644 tests/wpt/meta/html/semantics/forms/the-selectmenu-element/selectmenu-value-selectedOption.tentative.html.ini delete mode 100644 tests/wpt/meta/html/semantics/forms/the-selectmenu-element/selectmenu-writingmode-lr.tentative.html.ini delete mode 100644 tests/wpt/meta/html/semantics/forms/the-selectmenu-element/selectmenu-writingmode-rl.tentative.html.ini create mode 100644 tests/wpt/tests/close-watcher/closewatcher-dialog-popover.html rename tests/wpt/tests/{html/semantics/interactive-elements/the-dialog-element/dialog-cancel-events-closewatcher.tentative.html => close-watcher/dialog-cancel-events-closewatcher.html} (100%) rename tests/wpt/tests/{html/semantics/interactive-elements/the-dialog-element/dialog-cancel-preventDefault-closewatcher.tentative.html => close-watcher/dialog-cancel-preventDefault-closewatcher.html} (100%) create mode 100644 tests/wpt/tests/close-watcher/user-activation-CloseWatcher.html create mode 100644 tests/wpt/tests/close-watcher/user-activation-shared.html delete mode 100644 tests/wpt/tests/close-watcher/user-activation.html rename tests/wpt/tests/credential-management/{fedcm-not-observer-by-service-worker.https.html => fedcm-not-observed-by-service-worker.https.html} (100%) create mode 100644 tests/wpt/tests/credential-management/support/fedcm/manifest_with_no_accounts.json create mode 100644 tests/wpt/tests/credential-management/support/fedcm/no_accounts.py create mode 100644 tests/wpt/tests/credential-management/support/mark_signedin create mode 100644 tests/wpt/tests/credential-management/support/mark_signedin.headers create mode 100644 tests/wpt/tests/css/css-contain/content-visibility/content-visibility-085.html create mode 100644 tests/wpt/tests/css/css-fonts/font-size-adjust-reload-ref.html create mode 100644 tests/wpt/tests/css/css-fonts/font-size-adjust-reload.html create mode 100644 tests/wpt/tests/css/css-images/image-set/image-set-all-options-invalid.html delete mode 100644 tests/wpt/tests/css/css-masking/mask-image/mask-origin-2-ref.html delete mode 100644 tests/wpt/tests/css/css-masking/mask-image/mask-origin-2.html create mode 100644 tests/wpt/tests/css/css-multicol/crashtests/floated-input-in-inline-next-column.html create mode 100644 tests/wpt/tests/css/css-position/sticky/position-sticky-details-crash.html create mode 100644 tests/wpt/tests/css/css-scroll-snap/overscroll-snap.html create mode 100644 tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-001-ref.html create mode 100644 tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-001.html create mode 100644 tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-002-ref.html create mode 100644 tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-002.html rename tests/wpt/tests/css/css-transforms/transform-box/{cssbox-content-box.html => cssbox-content-box-001.html} (100%) create mode 100644 tests/wpt/tests/css/css-transforms/transform-box/cssbox-content-box-002.html rename tests/wpt/tests/css/css-variables/{wide-keyword-fallback-ref.html => wide-keyword-fallback-001-ref.html} (100%) rename tests/wpt/tests/css/css-variables/{wide-keyword-fallback.html => wide-keyword-fallback-001.html} (91%) create mode 100644 tests/wpt/tests/css/css-variables/wide-keyword-fallback-002-ref.html create mode 100644 tests/wpt/tests/css/css-variables/wide-keyword-fallback-002.html create mode 100644 tests/wpt/tests/css/css-will-change/will-change-contents-crash.html create mode 100644 tests/wpt/tests/css/motion/offset-path-url-001-ref.html create mode 100644 tests/wpt/tests/css/motion/offset-path-url-001.html create mode 100644 tests/wpt/tests/css/motion/offset-path-url-002-ref.html create mode 100644 tests/wpt/tests/css/motion/offset-path-url-002.html create mode 100644 tests/wpt/tests/css/motion/offset-path-url-003-ref.html create mode 100644 tests/wpt/tests/css/motion/offset-path-url-003.html create mode 100644 tests/wpt/tests/css/motion/offset-path-url-004-ref.html create mode 100644 tests/wpt/tests/css/motion/offset-path-url-004.html create mode 100644 tests/wpt/tests/css/motion/offset-path-url-005.html create mode 100644 tests/wpt/tests/css/motion/offset-path-url-006.html create mode 100644 tests/wpt/tests/css/motion/offset-path-url-007.html create mode 100644 tests/wpt/tests/css/motion/offset-path-url-008-ref.html create mode 100644 tests/wpt/tests/css/motion/offset-path-url-008.html create mode 100644 tests/wpt/tests/css/motion/offset-path-url-009.html create mode 100644 tests/wpt/tests/css/motion/offset-path-url-010.html create mode 100644 tests/wpt/tests/css/motion/offset-path-url-011-ref.html create mode 100644 tests/wpt/tests/css/motion/offset-path-url-011.html create mode 100644 tests/wpt/tests/css/motion/offset-path-url-crash.html delete mode 100644 tests/wpt/tests/css/motion/offset-path-url-ref.html delete mode 100644 tests/wpt/tests/css/motion/offset-path-url.html create mode 100644 tests/wpt/tests/css/selectors/has-sibling-chrome-crash.html create mode 100644 tests/wpt/tests/fenced-frame/automatic-beacon-shared-storage.https.html create mode 100644 tests/wpt/tests/fenced-frame/automatic-beacon-unfenced-top.https.html create mode 100644 tests/wpt/tests/fenced-frame/resources/automatic-beacon-unfenced-page.html create mode 100644 tests/wpt/tests/fenced-frame/resources/postmessage-config.html create mode 100644 tests/wpt/tests/fledge/tentative/resources/trusted-scoring-signals.py create mode 100644 tests/wpt/tests/fledge/tentative/round-a-value.https.sub.window.js create mode 100644 tests/wpt/tests/fledge/tentative/trusted-scoring-signals.https.sub.window.js create mode 100644 tests/wpt/tests/fonts/CanvasTest-ascent256.ttf create mode 100644 tests/wpt/tests/fonts/CanvasTest-descent0.ttf create mode 100644 tests/wpt/tests/html/canvas/element/layers/2d.layer.global-filter-expected.html create 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.layer-rendering-state-reset-in-layer.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.clip-expected.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.clip.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.direction.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.fill_style.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.filter.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.font.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.font_kerning.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.font_stretch.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.font_variant_caps.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.global_alpha.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.global_composite_operation.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.image_smoothing_enabled.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.image_smoothing_quality.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.letter_spacing.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_cap.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_dash.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_dash_offset.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_join.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_width.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.miter_limit.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.shadow_blur.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.shadow_color.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.shadow_offset_x.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.shadow_offset_y.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.stroke_style.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.text_align.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.text_baseline.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.text_rendering.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.transformation_matrix.html create mode 100644 tests/wpt/tests/html/canvas/element/reset/2d.reset.state.word_spacing.html rename tests/wpt/tests/html/canvas/element/text/{reference/fontVariantCaps-1-ref.html => 2d.text.fontVariantCaps1-expected.html} (100%) rename tests/wpt/tests/html/canvas/element/text/{fontVariantCaps-1.html => 2d.text.fontVariantCaps1.html} (90%) rename tests/wpt/tests/html/canvas/element/text/{reference/fontVariantCaps-2-ref.html => 2d.text.fontVariantCaps2-unexpected.html} (100%) rename tests/wpt/tests/html/canvas/element/text/{fontVariantCaps-2.html => 2d.text.fontVariantCaps2.html} (89%) rename tests/wpt/tests/html/canvas/element/text/{reference/fontVariantCaps-3-ref.html => 2d.text.fontVariantCaps3-expected.html} (100%) rename tests/wpt/tests/html/canvas/element/text/{fontVariantCaps-3.html => 2d.text.fontVariantCaps3.html} (91%) create mode 100644 tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps4-expected.html rename tests/wpt/tests/html/canvas/element/text/{fontVariantCaps-4.html => 2d.text.fontVariantCaps4.html} (91%) create mode 100644 tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps5-expected.html rename tests/wpt/tests/html/canvas/element/text/{fontVariantCaps-5.html => 2d.text.fontVariantCaps5.html} (91%) create mode 100644 tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps6-expected.html rename tests/wpt/tests/html/canvas/element/text/{fontVariantCaps-6.html => 2d.text.fontVariantCaps6.html} (91%) create mode 100644 tests/wpt/tests/html/canvas/element/text/2d.text.measure.emHeights-low-ascent.html create mode 100644 tests/wpt/tests/html/canvas/element/text/2d.text.measure.emHeights-zero-descent.html create mode 100644 tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox-reduced-ascent.html create mode 100644 tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox-zero-descent.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-filter-expected.html create 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-filter.w.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.basic.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.basic.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.clip-expected.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.clip.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.clip.w.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.direction.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.direction.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.fill_style.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.fill_style.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.filter.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.filter.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_kerning.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_kerning.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_stretch.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_stretch.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_variant_caps.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_variant_caps.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.global_alpha.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.global_alpha.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.global_composite_operation.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.global_composite_operation.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_enabled.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_enabled.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_quality.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_quality.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.letter_spacing.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.letter_spacing.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_cap.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_cap.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_dash.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_dash.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_dash_offset.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_dash_offset.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_join.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_join.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_width.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_width.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.miter_limit.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.miter_limit.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_blur.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_blur.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_color.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_color.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_x.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_x.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_y.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_y.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.stroke_style.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.stroke_style.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_align.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_align.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_baseline.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_baseline.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_rendering.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_rendering.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.transformation_matrix.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.transformation_matrix.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.word_spacing.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.word_spacing.worker.js rename tests/wpt/tests/html/canvas/offscreen/text/{reference/fontVariantCaps-1-ref.html => 2d.text.fontVariantCaps1-expected.html} (100%) rename tests/wpt/tests/html/canvas/offscreen/text/{fontVariantCaps-1.html => 2d.text.fontVariantCaps1.html} (96%) rename tests/wpt/tests/html/canvas/offscreen/text/{reference/fontVariantCaps-2-ref.html => 2d.text.fontVariantCaps2-unexpected.html} (100%) rename tests/wpt/tests/html/canvas/offscreen/text/{fontVariantCaps-2.html => 2d.text.fontVariantCaps2.html} (95%) rename tests/wpt/tests/html/canvas/offscreen/text/{reference/fontVariantCaps-3-ref.html => 2d.text.fontVariantCaps3-expected.html} (100%) rename tests/wpt/tests/html/canvas/offscreen/text/{fontVariantCaps-3.html => 2d.text.fontVariantCaps3.html} (96%) create mode 100644 tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps4-expected.html rename tests/wpt/tests/html/canvas/offscreen/text/{fontVariantCaps-4.html => 2d.text.fontVariantCaps4.html} (96%) create mode 100644 tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps5-expected.html rename tests/wpt/tests/html/canvas/offscreen/text/{fontVariantCaps-5.html => 2d.text.fontVariantCaps5.html} (96%) create mode 100644 tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps6-expected.html rename tests/wpt/tests/html/canvas/offscreen/text/{fontVariantCaps-6.html => 2d.text.fontVariantCaps6.html} (96%) create mode 100644 tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights-low-ascent.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights-low-ascent.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights-zero-descent.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights-zero-descent.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-reduced-ascent.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-reduced-ascent.worker.js create mode 100644 tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-zero-descent.html create mode 100644 tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-zero-descent.worker.js create mode 100644 tests/wpt/tests/html/dom/render-blocking/document-render-blocking-partial.tentative.html create mode 100644 tests/wpt/tests/html/dom/render-blocking/document-render-blocking.tentative.html create mode 100644 tests/wpt/tests/html/dom/render-blocking/support/utils.js create mode 100644 tests/wpt/tests/html/semantics/embedded-content/the-embed-element/embed-named-attribute-detached-context-crash.html create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-ask-for-reset.html rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-disabled.tentative.html => the-selectlist-element/selectlist-disabled.tentative.html} (72%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-events.tentative.html => the-selectlist-element/selectlist-events.tentative.html} (55%) create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-explicit-size-ref.tentative.html create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-explicit-size.tentative.html create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-font-size-ref.tentative.html create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-font-size.tentative.html rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-form-attribute.tentative.html => the-selectlist-element/selectlist-form-attribute.tentative.html} (98%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-form-elements.tentative.html => the-selectlist-element/selectlist-form-elements.tentative.html} (68%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-form-state-restore.tentative.html => the-selectlist-element/selectlist-form-state-restore.tentative.html} (76%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-form-submission.tentative.html => the-selectlist-element/selectlist-form-submission.tentative.html} (68%) create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-keyboard.tentative.html create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-labels.tentative.html rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-listbox-fallback-change-crash.tentative.html => the-selectlist-element/selectlist-listbox-fallback-change-crash.tentative.html} (77%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-many-options.tentative.html => the-selectlist-element/selectlist-many-options.tentative.html} (82%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-marker-end-aligned-ref.tentative.html => the-selectlist-element/selectlist-marker-end-aligned-ref.tentative.html} (74%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-marker-end-aligned.tentative.html => the-selectlist-element/selectlist-marker-end-aligned.tentative.html} (58%) create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-part-ref.html rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-marker-part.tentative.html => the-selectlist-element/selectlist-marker-part.tentative.html} (56%) create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-slot-ref.html rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-marker-slot.tentative.html => the-selectlist-element/selectlist-marker-slot.tentative.html} (61%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-marker-visible-overflow-ref.tentative.html => the-selectlist-element/selectlist-marker-visible-overflow-ref.tentative.html} (67%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-marker-visible-overflow.tentative.html => the-selectlist-element/selectlist-marker-visible-overflow.tentative.html} (59%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-nested.tentative.html => the-selectlist-element/selectlist-nested.tentative.html} (52%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-option-arbitrary-content-displayed-ref.tentative.html => the-selectlist-element/selectlist-option-arbitrary-content-displayed-ref.tentative.html} (92%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-option-arbitrary-content-displayed.tentative.html => the-selectlist-element/selectlist-option-arbitrary-content-displayed.tentative.html} (82%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-option-arbitrary-content-not-displayed-ref.tentative.html => the-selectlist-element/selectlist-option-arbitrary-content-not-displayed-ref.tentative.html} (89%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-option-arbitrary-content-not-displayed.tentative.html => the-selectlist-element/selectlist-option-arbitrary-content-not-displayed.tentative.html} (57%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-option-focusable.tentative.html => the-selectlist-element/selectlist-option-focusable.tentative.html} (65%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-overflow-x-ref.tentative.html => the-selectlist-element/selectlist-overflow-x-ref.tentative.html} (63%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-overflow-x.tentative.html => the-selectlist-element/selectlist-overflow-x.tentative.html} (56%) create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-parts-structure.tentative.html create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-popover-position-with-zoom.tentative.html create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-popover-position.tentative.html create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-popover.tentative.html create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-pseudo-light-dismiss-invalidation.tentative.html create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-pseudo-open-closed.tentative.html rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-required-attribute.tentative.html => the-selectlist-element/selectlist-required-attribute.tentative.html} (58%) create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-rtl-ref.tentative.html rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-rtl.tentative.html => the-selectlist-element/selectlist-rtl.tentative.html} (50%) create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-behavior-ref.html rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-selected-value-behavior.tentative.html => the-selectlist-element/selectlist-selected-value-behavior.tentative.html} (66%) create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-part-ref.html rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-selected-value-part.tentative.html => the-selectlist-element/selectlist-selected-value-part.tentative.html} (53%) create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-slot-ref.html rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-selected-value-slot.tentative.html => the-selectlist-element/selectlist-selected-value-slot.tentative.html} (62%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-tab-navigation.tentative.html => the-selectlist-element/selectlist-tab-navigation.tentative.html} (71%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-tabindex-order.tentative.html => the-selectlist-element/selectlist-tabindex-order.tentative.html} (81%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-user-select.tentative.html => the-selectlist-element/selectlist-user-select.tentative.html} (81%) create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-validity.tentative.html rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-value-option.tentative.html => the-selectlist-element/selectlist-value-option.tentative.html} (68%) create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-value-selectedOption.tentative.html rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-writingmode-lr.tentative.html => the-selectlist-element/selectlist-writingmode-lr.tentative.html} (56%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/selectmenu-writingmode-rl.tentative.html => the-selectlist-element/selectlist-writingmode-rl.tentative.html} (56%) create mode 100644 tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-writingmode-tb-ref.html rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element => the-selectlist-element}/support/back.html (66%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/support/fake-selectmenu.js => the-selectlist-element/support/fake-selectlist.js} (63%) rename tests/wpt/tests/html/semantics/forms/{the-selectmenu-element/support/selectmenu_button_icon.svg => the-selectlist-element/support/selectlist_button_icon.svg} (100%) delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-ask-for-reset.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-explicit-size-ref.tentative.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-explicit-size.tentative.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-font-size-ref.tentative.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-font-size.tentative.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-keyboard.tentative.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-labels.tentative.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part-ref.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot-ref.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-parts-structure.tentative.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-popover-position-with-zoom.tentative.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-popover-position.tentative.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-popover.tentative.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-pseudo-light-dismiss-invalidation.tentative.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-pseudo-open-closed.tentative.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-rtl-ref.tentative.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-behavior-ref.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-part-ref.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot-ref.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-validity.tentative.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-value-selectedOption.tentative.html delete mode 100644 tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-writingmode-tb-ref.html create mode 100644 tests/wpt/tests/scroll-animations/view-timelines/contain-alignment.html create mode 100644 tests/wpt/tests/scroll-animations/view-timelines/subject-br-crash.html create mode 100644 tests/wpt/tests/wai-aria/role/grid-roles.html diff --git a/tests/wpt/meta-legacy-layout/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/meta-legacy-layout/FileAPI/url/url-in-tags-revoke.window.js.ini index cdeaf7f7080..282ab0b2525 100644 --- a/tests/wpt/meta-legacy-layout/FileAPI/url/url-in-tags-revoke.window.js.ini +++ b/tests/wpt/meta-legacy-layout/FileAPI/url/url-in-tags-revoke.window.js.ini @@ -7,7 +7,7 @@ expected: FAIL [Opening a blob URL in a new window immediately before revoking it works.] - expected: TIMEOUT + expected: FAIL [Opening a blob URL in a noopener about:blank window immediately before revoking it works.] expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-001.html.ini new file mode 100644 index 00000000000..f3e550ce2e1 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-001.html.ini @@ -0,0 +1,2 @@ +[word-break-auto-phrase-wbr-nobr-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-002.html.ini new file mode 100644 index 00000000000..4b95771bc4c --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-002.html.ini @@ -0,0 +1,2 @@ +[word-break-auto-phrase-wbr-nobr-002.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/transform-box/cssbox-content-box-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/transform-box/cssbox-content-box-001.html.ini new file mode 100644 index 00000000000..e755631d21c --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-transforms/transform-box/cssbox-content-box-001.html.ini @@ -0,0 +1,2 @@ +[cssbox-content-box-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/transform-box/cssbox-content-box-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/transform-box/cssbox-content-box-002.html.ini new file mode 100644 index 00000000000..d6a7f222bb7 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-transforms/transform-box/cssbox-content-box-002.html.ini @@ -0,0 +1,2 @@ +[cssbox-content-box-002.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/transform-box/cssbox-content-box.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/transform-box/cssbox-content-box.html.ini deleted file mode 100644 index 39281adef09..00000000000 --- a/tests/wpt/meta-legacy-layout/css/css-transforms/transform-box/cssbox-content-box.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[cssbox-content-box.html] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-variables/wide-keyword-fallback-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-variables/wide-keyword-fallback-002.html.ini new file mode 100644 index 00000000000..2591556c763 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-variables/wide-keyword-fallback-002.html.ini @@ -0,0 +1,2 @@ +[wide-keyword-fallback-002.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/cssom-view/scroll-behavior-smooth-navigation.html.ini b/tests/wpt/meta-legacy-layout/css/cssom-view/scroll-behavior-smooth-navigation.html.ini new file mode 100644 index 00000000000..977ef8f774c --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/cssom-view/scroll-behavior-smooth-navigation.html.ini @@ -0,0 +1,3 @@ +[scroll-behavior-smooth-navigation.html] + [Instant scrolling while doing history navigation.] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini b/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini index f9de5391ad6..741af78eff8 100644 --- a/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini +++ b/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini @@ -146,3 +146,9 @@ [list-style-image sec-fetch-site - HTTPS downgrade-upgrade] expected: FAIL + + [background-image sec-fetch-site - HTTPS downgrade (header not sent)] + expected: TIMEOUT + + [border-image sec-fetch-site - HTTPS downgrade (header not sent)] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/fetch/private-network-access/worker-blob-fetch.tentative.window.js.ini b/tests/wpt/meta-legacy-layout/fetch/private-network-access/worker-blob-fetch.tentative.window.js.ini index 5238f29ff20..fb5b7f774ee 100644 --- a/tests/wpt/meta-legacy-layout/fetch/private-network-access/worker-blob-fetch.tentative.window.js.ini +++ b/tests/wpt/meta-legacy-layout/fetch/private-network-access/worker-blob-fetch.tentative.window.js.ini @@ -34,3 +34,6 @@ [public https to local https: failure.] expected: FAIL + + [private to private: success.] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/history-traversal/popstate_event.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/history-traversal/popstate_event.html.ini new file mode 100644 index 00000000000..61cb3241815 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/history-traversal/popstate_event.html.ini @@ -0,0 +1,3 @@ +[popstate_event.html] + [Queue a task to fire popstate event] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini index 149bcb4ff8c..51fd557bd7f 100644 --- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini +++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini @@ -7,6 +7,3 @@ [load & pageshow events do not fire on contentWindow of + + + diff --git a/tests/wpt/tests/css/css-images/image-set/image-set-all-options-invalid.html b/tests/wpt/tests/css/css-images/image-set/image-set-all-options-invalid.html new file mode 100644 index 00000000000..14d3d0b6e55 --- /dev/null +++ b/tests/wpt/tests/css/css-images/image-set/image-set-all-options-invalid.html @@ -0,0 +1,18 @@ + +image-set() is an invalid image if all options are invalid + + + + + +

Test passes if there is a filled green square.

+
diff --git a/tests/wpt/tests/css/css-masking/mask-image/mask-origin-2-ref.html b/tests/wpt/tests/css/css-masking/mask-image/mask-origin-2-ref.html deleted file mode 100644 index bbb5ef2c414..00000000000 --- a/tests/wpt/tests/css/css-masking/mask-image/mask-origin-2-ref.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - CSS Masking: mask-origin: mask positioning area - - - - - -
-
-
-
- - diff --git a/tests/wpt/tests/css/css-masking/mask-image/mask-origin-2.html b/tests/wpt/tests/css/css-masking/mask-image/mask-origin-2.html deleted file mode 100644 index 90ee89b15df..00000000000 --- a/tests/wpt/tests/css/css-masking/mask-image/mask-origin-2.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - CSS Masking: mask-origin: mask positioning area - - - - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - diff --git a/tests/wpt/tests/css/css-masking/parsing/mask-invalid.html b/tests/wpt/tests/css/css-masking/parsing/mask-invalid.html index 367049cf19f..f9999ca9828 100644 --- a/tests/wpt/tests/css/css-masking/parsing/mask-invalid.html +++ b/tests/wpt/tests/css/css-masking/parsing/mask-invalid.html @@ -29,6 +29,8 @@ test_invalid_value('mask', 'no-clip border-box content-box'); test_invalid_value('mask', 'content-box stroke-box no-clip'); +test_invalid_value('mask', 'margin-box'); + test_invalid_value('mask', 'add intersect'); diff --git a/tests/wpt/tests/css/css-masking/parsing/mask-valid.sub.html b/tests/wpt/tests/css/css-masking/parsing/mask-valid.sub.html index e0646444d48..6b6d712d175 100644 --- a/tests/wpt/tests/css/css-masking/parsing/mask-valid.sub.html +++ b/tests/wpt/tests/css/css-masking/parsing/mask-valid.sub.html @@ -29,12 +29,11 @@ test_valid_value('mask', 'url("https://{{host}}/") 1px 2px / contain'); test_valid_value('mask', 'repeat-y'); // = | fill-box | stroke-box | view-box -// = | margin-box +// = // = border-box | padding-box | content-box test_valid_value('mask', 'border-box', 'none'); test_valid_value('mask', 'linear-gradient(to left bottom, red, blue) padding-box'); test_valid_value('mask', 'content-box'); -test_valid_value('mask', 'margin-box'); test_valid_value('mask', 'url("https://{{host}}/") fill-box'); test_valid_value('mask', 'linear-gradient(to left bottom, red, blue) stroke-box'); test_valid_value('mask', 'view-box'); diff --git a/tests/wpt/tests/css/css-multicol/crashtests/floated-input-in-inline-next-column.html b/tests/wpt/tests/css/css-multicol/crashtests/floated-input-in-inline-next-column.html new file mode 100644 index 00000000000..1b84cd3d99a --- /dev/null +++ b/tests/wpt/tests/css/css-multicol/crashtests/floated-input-in-inline-next-column.html @@ -0,0 +1,19 @@ + + + + +
+
+
+ +
+
+ + diff --git a/tests/wpt/tests/css/css-position/sticky/position-sticky-details-crash.html b/tests/wpt/tests/css/css-position/sticky/position-sticky-details-crash.html new file mode 100644 index 00000000000..65b7ea48807 --- /dev/null +++ b/tests/wpt/tests/css/css-position/sticky/position-sticky-details-crash.html @@ -0,0 +1,10 @@ + + +
+
+
+ diff --git a/tests/wpt/tests/css/css-scroll-snap/overscroll-snap.html b/tests/wpt/tests/css/css-scroll-snap/overscroll-snap.html new file mode 100644 index 00000000000..b34caf87f12 --- /dev/null +++ b/tests/wpt/tests/css/css-scroll-snap/overscroll-snap.html @@ -0,0 +1,48 @@ + + + + + + + + + + + + + +
+
+
+ + + diff --git a/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-001-ref.html b/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-001-ref.html new file mode 100644 index 00000000000..dbc18b8e291 --- /dev/null +++ b/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-001-ref.html @@ -0,0 +1,14 @@ + + + +
+
ドライ
+
ドラ
イブ
+
ドラ
イブ
+
diff --git a/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-001.html b/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-001.html new file mode 100644 index 00000000000..76944730d5c --- /dev/null +++ b/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-001.html @@ -0,0 +1,29 @@ + + + + + + +
+ +
ドライブ
+ +
ドライブ
+ +
ドラ​イブ
+
diff --git a/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-002-ref.html b/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-002-ref.html new file mode 100644 index 00000000000..72d89af9bf7 --- /dev/null +++ b/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-002-ref.html @@ -0,0 +1,13 @@ + + + +
+
楽しいドライブ、
楽しいドライブ。
+
楽しい
ドライブ、楽しい
ドライブ。
+
diff --git a/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-002.html b/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-002.html new file mode 100644 index 00000000000..9b4e55623c5 --- /dev/null +++ b/tests/wpt/tests/css/css-text/word-break/auto-phrase/word-break-auto-phrase-wbr-nobr-002.html @@ -0,0 +1,30 @@ + + + + + + +
+ +
楽しいドライブ、楽しいドライブ。
+
楽しいドライブ、楽しいドライブ。
+
diff --git a/tests/wpt/tests/css/css-transforms/preserve3d-pseudo-element-ref.html b/tests/wpt/tests/css/css-transforms/preserve3d-pseudo-element-ref.html index 8b3c3b08af4..c8e68f55995 100644 --- a/tests/wpt/tests/css/css-transforms/preserve3d-pseudo-element-ref.html +++ b/tests/wpt/tests/css/css-transforms/preserve3d-pseudo-element-ref.html @@ -9,4 +9,3 @@ div { }
- diff --git a/tests/wpt/tests/css/css-transforms/preserve3d-pseudo-element.html b/tests/wpt/tests/css/css-transforms/preserve3d-pseudo-element.html index f3a4441e991..a84482e5ecd 100644 --- a/tests/wpt/tests/css/css-transforms/preserve3d-pseudo-element.html +++ b/tests/wpt/tests/css/css-transforms/preserve3d-pseudo-element.html @@ -21,4 +21,3 @@ div::before { }
- diff --git a/tests/wpt/tests/css/css-transforms/transform-box/cssbox-content-box.html b/tests/wpt/tests/css/css-transforms/transform-box/cssbox-content-box-001.html similarity index 100% rename from tests/wpt/tests/css/css-transforms/transform-box/cssbox-content-box.html rename to tests/wpt/tests/css/css-transforms/transform-box/cssbox-content-box-001.html diff --git a/tests/wpt/tests/css/css-transforms/transform-box/cssbox-content-box-002.html b/tests/wpt/tests/css/css-transforms/transform-box/cssbox-content-box-002.html new file mode 100644 index 00000000000..24e038b562d --- /dev/null +++ b/tests/wpt/tests/css/css-transforms/transform-box/cssbox-content-box-002.html @@ -0,0 +1,23 @@ + +transform-box: content-box (CSS layout), percentage padding + + + + +
+
+
diff --git a/tests/wpt/tests/css/css-variables/wide-keyword-fallback-ref.html b/tests/wpt/tests/css/css-variables/wide-keyword-fallback-001-ref.html similarity index 100% rename from tests/wpt/tests/css/css-variables/wide-keyword-fallback-ref.html rename to tests/wpt/tests/css/css-variables/wide-keyword-fallback-001-ref.html diff --git a/tests/wpt/tests/css/css-variables/wide-keyword-fallback.html b/tests/wpt/tests/css/css-variables/wide-keyword-fallback-001.html similarity index 91% rename from tests/wpt/tests/css/css-variables/wide-keyword-fallback.html rename to tests/wpt/tests/css/css-variables/wide-keyword-fallback-001.html index bb27a61e610..947c253837c 100644 --- a/tests/wpt/tests/css/css-variables/wide-keyword-fallback.html +++ b/tests/wpt/tests/css/css-variables/wide-keyword-fallback-001.html @@ -4,7 +4,7 @@ - + +
+
+
+ Should be green +
+
+
diff --git a/tests/wpt/tests/css/css-will-change/will-change-contents-crash.html b/tests/wpt/tests/css/css-will-change/will-change-contents-crash.html new file mode 100644 index 00000000000..b2a05dac869 --- /dev/null +++ b/tests/wpt/tests/css/css-will-change/will-change-contents-crash.html @@ -0,0 +1,11 @@ + + + CSS will-change contents: Chrome crash with partial cache hit + + + + +
Test passes
+
if it does not crash.
+ + diff --git a/tests/wpt/tests/css/motion/offset-path-shape-ellipse-003.html b/tests/wpt/tests/css/motion/offset-path-shape-ellipse-003.html index 38ef5eb9bbf..1831af7019d 100644 --- a/tests/wpt/tests/css/motion/offset-path-shape-ellipse-003.html +++ b/tests/wpt/tests/css/motion/offset-path-shape-ellipse-003.html @@ -1,7 +1,9 @@ CSS Motion Path test: <basic-shape> ellipse() path with offset-distance - + + + diff --git a/tests/wpt/tests/css/motion/offset-path-url-001-ref.html b/tests/wpt/tests/css/motion/offset-path-url-001-ref.html new file mode 100644 index 00000000000..f8fde8afae0 --- /dev/null +++ b/tests/wpt/tests/css/motion/offset-path-url-001-ref.html @@ -0,0 +1,19 @@ + + + + CSS Motion Path Referecne: url() to svg paths + + + +
+ + diff --git a/tests/wpt/tests/css/motion/offset-path-url-001.html b/tests/wpt/tests/css/motion/offset-path-url-001.html new file mode 100644 index 00000000000..0c7ac4f1019 --- /dev/null +++ b/tests/wpt/tests/css/motion/offset-path-url-001.html @@ -0,0 +1,32 @@ + + + + CSS Motion Path: offset-path:url() to svg paths + + + + + + +
+
+
+ + + + + diff --git a/tests/wpt/tests/css/motion/offset-path-url-002-ref.html b/tests/wpt/tests/css/motion/offset-path-url-002-ref.html new file mode 100644 index 00000000000..177d71385fc --- /dev/null +++ b/tests/wpt/tests/css/motion/offset-path-url-002-ref.html @@ -0,0 +1,18 @@ + + + + CSS Motion Path Referecne: url() to rect + + + +
+ + diff --git a/tests/wpt/tests/css/motion/offset-path-url-002.html b/tests/wpt/tests/css/motion/offset-path-url-002.html new file mode 100644 index 00000000000..7957d785a3f --- /dev/null +++ b/tests/wpt/tests/css/motion/offset-path-url-002.html @@ -0,0 +1,35 @@ + + + + CSS Motion Path: offset-path:url() to rectangles + + + + + + + +
+
+
+ + + + + + + diff --git a/tests/wpt/tests/css/motion/offset-path-url-003-ref.html b/tests/wpt/tests/css/motion/offset-path-url-003-ref.html new file mode 100644 index 00000000000..e34976213e3 --- /dev/null +++ b/tests/wpt/tests/css/motion/offset-path-url-003-ref.html @@ -0,0 +1,18 @@ + + + + CSS Motion Path Referecne: url() to circle + + + +
+ + diff --git a/tests/wpt/tests/css/motion/offset-path-url-003.html b/tests/wpt/tests/css/motion/offset-path-url-003.html new file mode 100644 index 00000000000..4485b52d071 --- /dev/null +++ b/tests/wpt/tests/css/motion/offset-path-url-003.html @@ -0,0 +1,36 @@ + + + + CSS Motion Path: offset-path:url() to circles + + + + + + + + +
+
+
+ + + + + + + diff --git a/tests/wpt/tests/css/motion/offset-path-url-004-ref.html b/tests/wpt/tests/css/motion/offset-path-url-004-ref.html new file mode 100644 index 00000000000..4ff49d968e0 --- /dev/null +++ b/tests/wpt/tests/css/motion/offset-path-url-004-ref.html @@ -0,0 +1,18 @@ + + + + CSS Motion Path Referecne: url() to ellipse + + + +
+ + diff --git a/tests/wpt/tests/css/motion/offset-path-url-004.html b/tests/wpt/tests/css/motion/offset-path-url-004.html new file mode 100644 index 00000000000..05aea375a18 --- /dev/null +++ b/tests/wpt/tests/css/motion/offset-path-url-004.html @@ -0,0 +1,36 @@ + + + + CSS Motion Path: offset-path:url() to ellipses + + + + + + + + +
+
+
+ + + + + + + diff --git a/tests/wpt/tests/css/motion/offset-path-url-005.html b/tests/wpt/tests/css/motion/offset-path-url-005.html new file mode 100644 index 00000000000..437a111a7ea --- /dev/null +++ b/tests/wpt/tests/css/motion/offset-path-url-005.html @@ -0,0 +1,33 @@ + + + + CSS Motion Path: offset-path:url() to lines + + + + + + + +
+
+
+ + + + + diff --git a/tests/wpt/tests/css/motion/offset-path-url-006.html b/tests/wpt/tests/css/motion/offset-path-url-006.html new file mode 100644 index 00000000000..b65af774bb7 --- /dev/null +++ b/tests/wpt/tests/css/motion/offset-path-url-006.html @@ -0,0 +1,33 @@ + + + + CSS Motion Path: offset-path:url() to polylines + + + + + + + +
+
+
+ + + + + diff --git a/tests/wpt/tests/css/motion/offset-path-url-007.html b/tests/wpt/tests/css/motion/offset-path-url-007.html new file mode 100644 index 00000000000..0f80207c0e3 --- /dev/null +++ b/tests/wpt/tests/css/motion/offset-path-url-007.html @@ -0,0 +1,35 @@ + + + + CSS Motion Path: offset-path:url() to polygons + + + + + + + +
+
+
+ + + + + + + diff --git a/tests/wpt/tests/css/motion/offset-path-url-008-ref.html b/tests/wpt/tests/css/motion/offset-path-url-008-ref.html new file mode 100644 index 00000000000..3e99530eb30 --- /dev/null +++ b/tests/wpt/tests/css/motion/offset-path-url-008-ref.html @@ -0,0 +1,26 @@ + + + + CSS Motion Path Referecne: url() with border-box + + + +
+
+
+ + diff --git a/tests/wpt/tests/css/motion/offset-path-url-008.html b/tests/wpt/tests/css/motion/offset-path-url-008.html new file mode 100644 index 00000000000..48b99006f94 --- /dev/null +++ b/tests/wpt/tests/css/motion/offset-path-url-008.html @@ -0,0 +1,45 @@ + + + + CSS Motion Path: offset-path:url() with border-box + + + + + + +
+
+
+ + + + + + + diff --git a/tests/wpt/tests/css/motion/offset-path-url-009.html b/tests/wpt/tests/css/motion/offset-path-url-009.html new file mode 100644 index 00000000000..90a13d18f4b --- /dev/null +++ b/tests/wpt/tests/css/motion/offset-path-url-009.html @@ -0,0 +1,45 @@ + + + + CSS Motion Path: offset-path:url() with padding-box + + + + + + +
+
+
+ + + + + + + diff --git a/tests/wpt/tests/css/motion/offset-path-url-010.html b/tests/wpt/tests/css/motion/offset-path-url-010.html new file mode 100644 index 00000000000..d2907704597 --- /dev/null +++ b/tests/wpt/tests/css/motion/offset-path-url-010.html @@ -0,0 +1,45 @@ + + + + CSS Motion Path: offset-path:url() with content-box + + + + + + +
+
+
+ + + + + + + diff --git a/tests/wpt/tests/css/motion/offset-path-url-011-ref.html b/tests/wpt/tests/css/motion/offset-path-url-011-ref.html new file mode 100644 index 00000000000..d0f97eda1dd --- /dev/null +++ b/tests/wpt/tests/css/motion/offset-path-url-011-ref.html @@ -0,0 +1,18 @@ + + + + CSS Motion Path Referecne: url() to non SVG elements + + + +
+ + diff --git a/tests/wpt/tests/css/motion/offset-path-url-011.html b/tests/wpt/tests/css/motion/offset-path-url-011.html new file mode 100644 index 00000000000..84dfe5205ba --- /dev/null +++ b/tests/wpt/tests/css/motion/offset-path-url-011.html @@ -0,0 +1,34 @@ + + + + CSS Motion Path: offset-path:url() reference to non-SVG elements + + + + + + +
+
+
+ + diff --git a/tests/wpt/tests/css/motion/offset-path-url-crash.html b/tests/wpt/tests/css/motion/offset-path-url-crash.html new file mode 100644 index 00000000000..c6fe6319113 --- /dev/null +++ b/tests/wpt/tests/css/motion/offset-path-url-crash.html @@ -0,0 +1,37 @@ + + + + CSS Motion Path: path(url) paths + + + + + + +
+ + + diff --git a/tests/wpt/tests/css/motion/offset-path-url-ref.html b/tests/wpt/tests/css/motion/offset-path-url-ref.html deleted file mode 100644 index c5f8ec74e87..00000000000 --- a/tests/wpt/tests/css/motion/offset-path-url-ref.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - CSS Motion Path: path(url) paths - - - -
- - diff --git a/tests/wpt/tests/css/motion/offset-path-url.html b/tests/wpt/tests/css/motion/offset-path-url.html deleted file mode 100644 index b8cd89104fb..00000000000 --- a/tests/wpt/tests/css/motion/offset-path-url.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - CSS Motion Path: path(url) paths - - - - - - -
- - - - - diff --git a/tests/wpt/tests/css/selectors/has-sibling-chrome-crash.html b/tests/wpt/tests/css/selectors/has-sibling-chrome-crash.html new file mode 100644 index 00000000000..0306e3e3927 --- /dev/null +++ b/tests/wpt/tests/css/selectors/has-sibling-chrome-crash.html @@ -0,0 +1,10 @@ + +CSS Selectors Test: Chrome crash issue 1470477 + + +

PASS if this tests does not crash

diff --git a/tests/wpt/tests/css/selectors/user-invalid.html b/tests/wpt/tests/css/selectors/user-invalid.html index 222f36e33b3..e7e008e677b 100644 --- a/tests/wpt/tests/css/selectors/user-invalid.html +++ b/tests/wpt/tests/css/selectors/user-invalid.html @@ -8,21 +8,29 @@ +

Test form interactions (reset / submit):

+
+
+
+ + +
+ +

Test form interactions (reset / submit):

+
+
+
+ + + +
+ diff --git a/tests/wpt/tests/docs/writing-tests/testharness.md b/tests/wpt/tests/docs/writing-tests/testharness.md index fd4450f4403..e88d5741ca6 100644 --- a/tests/wpt/tests/docs/writing-tests/testharness.md +++ b/tests/wpt/tests/docs/writing-tests/testharness.md @@ -212,7 +212,7 @@ Use `// META: timeout=long` at the beginning of the resource. Use `// META: variant=url-suffix` at the beginning of the resource. For example, ``` -// META: variant= +// META: variant=?default // META: variant=?wss ``` @@ -222,7 +222,7 @@ A test file can have multiple variants by including `meta` elements, for example: ```html - + ``` diff --git a/tests/wpt/tests/dpub-aam/META.yml b/tests/wpt/tests/dpub-aam/META.yml index a382778f375..5552a2e82eb 100644 --- a/tests/wpt/tests/dpub-aam/META.yml +++ b/tests/wpt/tests/dpub-aam/META.yml @@ -1,4 +1,3 @@ spec: https://w3c.github.io/dpub-aam/ suggested_reviewers: - - halindrome - - joanmarie + - spectranaut diff --git a/tests/wpt/tests/dpub-aria/META.yml b/tests/wpt/tests/dpub-aria/META.yml index c6e339af636..b27081355ab 100644 --- a/tests/wpt/tests/dpub-aria/META.yml +++ b/tests/wpt/tests/dpub-aria/META.yml @@ -1,3 +1,3 @@ spec: https://w3c.github.io/dpub-aria/ suggested_reviewers: - - halindrome + - spectranaut diff --git a/tests/wpt/tests/fenced-frame/automatic-beacon-shared-storage.https.html b/tests/wpt/tests/fenced-frame/automatic-beacon-shared-storage.https.html new file mode 100644 index 00000000000..a21e42a4881 --- /dev/null +++ b/tests/wpt/tests/fenced-frame/automatic-beacon-shared-storage.https.html @@ -0,0 +1,44 @@ + +Test window.fence.setReportEventDataForAutomaticBeacons from + SharedStorage + + + + + + + + + + + + diff --git a/tests/wpt/tests/fenced-frame/automatic-beacon-unfenced-top.https.html b/tests/wpt/tests/fenced-frame/automatic-beacon-unfenced-top.https.html new file mode 100644 index 00000000000..49c4ba84e08 --- /dev/null +++ b/tests/wpt/tests/fenced-frame/automatic-beacon-unfenced-top.https.html @@ -0,0 +1,57 @@ + +Test automatic beacons sent from an '_unfencedTop' navigation + + + + + + + + + + + + diff --git a/tests/wpt/tests/fenced-frame/deep-copy-config.https.html b/tests/wpt/tests/fenced-frame/deep-copy-config.https.html index 37b27a742b9..54a976233cb 100644 --- a/tests/wpt/tests/fenced-frame/deep-copy-config.https.html +++ b/tests/wpt/tests/fenced-frame/deep-copy-config.https.html @@ -76,6 +76,33 @@ promise_test(async(t) => { }, "The write should fail for a FencedFrameConfig."); }, 'A FencedFrameConfig cannot be written to storage.'); +promise_test(async(t) => { + const key = token(); + + // Create a fenced frame once the config comes in through postMessage. + window.addEventListener( + "message", + (event) => { + attachFencedFrame(event.data); + }, + false, + ); + + // The pop-up will generate a FencedFrameConfig from a FLEDGE auction, and + // then pass it back into this page through postMessage(). Since config + // mappings are only valid within the same frame tree, this page will not be + // able to navigate a fenced frame to the config. + window.open(generateURL("resources/postmessage-config.html", [key]), "foo"); + + // Set up a timeout to ensure that there's enough time for any messages to be + // sent from a fenced frame if it loads. + const timeout = new Promise(resolve => t.step_timeout(resolve, 1000)); + const result = await Promise.race([nextValueFromServer(key), timeout]); + assert_true(typeof result === "undefined", + "The fenced frame should not have loaded."); +}, 'A FencedFrameConfig sent to a context that does not support it gracefully' + + ' fails to load.'); + diff --git a/tests/wpt/tests/fenced-frame/resources/automatic-beacon-unfenced-page.html b/tests/wpt/tests/fenced-frame/resources/automatic-beacon-unfenced-page.html new file mode 100644 index 00000000000..44f5df32e71 --- /dev/null +++ b/tests/wpt/tests/fenced-frame/resources/automatic-beacon-unfenced-page.html @@ -0,0 +1,19 @@ + +Page navigated to by an _unfencedTop navigation + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/tests/fenced-frame/resources/fledge-bidding-logic.py b/tests/wpt/tests/fenced-frame/resources/fledge-bidding-logic.py index 73f4895cebe..85c78acb8bc 100644 --- a/tests/wpt/tests/fenced-frame/resources/fledge-bidding-logic.py +++ b/tests/wpt/tests/fenced-frame/resources/fledge-bidding-logic.py @@ -5,6 +5,8 @@ # so we leave `reportWin` empty unless we need to call registerAdBeacon(). See # `generateURNFromFledge` in "utils.js" to see how this file is used. +from wptserve.utils import isomorphic_decode + def main(request, response): # Set up response headers. headers = [ @@ -13,10 +15,28 @@ def main(request, response): ] # Parse URL params. + requested_size = request.GET.first(b"requested-size", None) ad_with_size = request.GET.first(b"ad-with-size", None) automatic_beacon = request.GET.first(b"automatic-beacon", None) - # Use URL params to modify JS + # Use URL params to modify Javascript. + requested_size_check = '' + if requested_size is not None: + # request.GET stores URL keys and values in iso-8859-1 binary encoding. We + # have to decode the values back to a string to parse width/height. Don't + # bother sanitizing the size, because it is sanitized before auction logic + # runs already. + width, height = isomorphic_decode(requested_size).split('-') + + requested_size_check = ( + f''' + if (!(browserSignals.requestedSize.width === '{width}') && + (browserSignals.requestedSize.height === '{height}')) {{ + throw new Error('requestedSize missing/incorrect in browserSignals'); + }} + ''' + ) + render_obj = 'ad.renderUrl' if ad_with_size is not None: render_obj = '{ url: ad.renderUrl, width: "100px", height: "50px" }' @@ -53,6 +73,7 @@ def main(request, response): perBuyerSignals, trustedBiddingSignals, browserSignals) {{ + {requested_size_check} const ad = interestGroup.ads[0]; // `auctionSignals` controls whether or not component auctions are diff --git a/tests/wpt/tests/fenced-frame/resources/fledge-decision-logic.py b/tests/wpt/tests/fenced-frame/resources/fledge-decision-logic.py index 028fe76efc0..bd615af835b 100644 --- a/tests/wpt/tests/fenced-frame/resources/fledge-decision-logic.py +++ b/tests/wpt/tests/fenced-frame/resources/fledge-decision-logic.py @@ -5,6 +5,8 @@ # `reportResult` empty. See `generateURNFromFledge` in "utils.js" to see how # this file is used. +from wptserve.utils import isomorphic_decode + def main(request, response): # Set up response headers. headers = [ @@ -12,9 +14,26 @@ def main(request, response): ('X-Allow-FLEDGE', 'true') ] - # TODO: Insert any code here that should be mutated based on URL parameters. - # Keep for now as a placeholder/example. - score_ad_content = '' + # Parse URL params. + requested_size = request.GET.first(b"requested-size", None) + + # Use URL params to modify Javascript. + requested_size_check = '' + if requested_size is not None: + # request.GET stores URL keys and values in iso-8859-1 binary encoding. We + # have to decode the values back to a string to parse width/height. Don't + # bother sanitizing the size, because it is sanitized before auction logic + # runs already. + width, height = isomorphic_decode(requested_size).split('-') + + requested_size_check = ( + f''' + if (!(auctionConfig.requestedSize.width === '{width}') && + (auctionConfig.requestedSize.height === '{height}')) {{ + throw new Error('requestedSize missing/incorrect in auctionConfig'); + }} + ''' + ) # Generate Javascript. # Note: Python fstrings use double-brackets ( {{, }} ) to insert bracket @@ -26,18 +45,19 @@ def main(request, response): auctionConfig, trustedScoringSignals, browserSignals) {{ - {score_ad_content} + {requested_size_check} return 2*bid; }} ''' ) report_result = ( - '''function reportResult( + f'''function reportResult( auctionConfig, - browserSignals) { + browserSignals) {{ + {requested_size_check} return; - } + }} ''' ) diff --git a/tests/wpt/tests/fenced-frame/resources/postmessage-config.html b/tests/wpt/tests/fenced-frame/resources/postmessage-config.html new file mode 100644 index 00000000000..3c201904200 --- /dev/null +++ b/tests/wpt/tests/fenced-frame/resources/postmessage-config.html @@ -0,0 +1,14 @@ + + +A page opened in a pop-up that sends a FencedFrameConfig + diff --git a/tests/wpt/tests/fenced-frame/resources/utils.js b/tests/wpt/tests/fenced-frame/resources/utils.js index d812736cdc2..a402dfdde4a 100644 --- a/tests/wpt/tests/fenced-frame/resources/utils.js +++ b/tests/wpt/tests/fenced-frame/resources/utils.js @@ -36,10 +36,11 @@ async function runSelectRawURL(href, resolve_to_config = false) { // gracefully fail rather than bring the whole test down. } return await sharedStorage.selectURL( - 'test-url-selection-operation', [{url: href}], { + 'test-url-selection-operation', [{url: href, + reportingMetadata: {'reserved.top_navigation': BEACON_URL}}], { data: {'mockResult': 0}, resolveToConfig: resolve_to_config, - keepAlive: true + keepAlive: true, }); } @@ -93,12 +94,16 @@ async function generateURNFromFledgeRawURL( adComponents: ad_components_list, }; - let params = new URLSearchParams(interestGroup.biddingLogicUrl.search); + let biddingUrlParams = + new URLSearchParams(interestGroup.biddingLogicUrl.search); + if (requested_size) + biddingUrlParams.set( + 'requested-size', requested_size[0] + '-' + requested_size[1]); if (ad_with_size) - params.set('ad-with-size', 1); + biddingUrlParams.set('ad-with-size', 1); if (automatic_beacon) - params.set('automatic-beacon', 1); - interestGroup.biddingLogicUrl.search = params; + biddingUrlParams.set('automatic-beacon', 1); + interestGroup.biddingLogicUrl.search = biddingUrlParams; if (ad_with_size) { interestGroup.ads[0].sizeGroup = 'group1'; @@ -117,9 +122,17 @@ async function generateURNFromFledgeRawURL( auctionSignals: {biddingToken: bidding_token, sellerToken: seller_token}, resolveToConfig: resolve_to_config }; + if (requested_size) { + let decisionUrlParams = + new URLSearchParams(auctionConfig.decisionLogicUrl.search); + decisionUrlParams.set( + 'requested-size', requested_size[0] + '-' + requested_size[1]); + auctionConfig.decisionLogicUrl.search = decisionUrlParams; + auctionConfig['requestedSize'] = {width: requested_size[0], height: requested_size[1]}; } + return navigator.runAdAuction(auctionConfig); } diff --git a/tests/wpt/tests/file-system-access/showPicker-errors.https.window.js b/tests/wpt/tests/file-system-access/showPicker-errors.https.window.js index ed66e1093b1..b2eeed90210 100644 --- a/tests/wpt/tests/file-system-access/showPicker-errors.https.window.js +++ b/tests/wpt/tests/file-system-access/showPicker-errors.https.window.js @@ -86,6 +86,12 @@ function define_file_picker_error_tests(showPickerMethod) { })); }, showPickerMethod + ': unknown well-known starting directory.'); + promise_test(async t => { + await promise_rejects_js(t, TypeError, self[showPickerMethod]({ + startIn: '', + })); + }, showPickerMethod + ': starting directory can\t be empty.'); + promise_test(async t => { await promise_rejects_js(t, TypeError, self[showPickerMethod]({ startIn: null, diff --git a/tests/wpt/tests/fledge/tentative/TODO b/tests/wpt/tests/fledge/tentative/TODO index 96654d2c592..fc2c296762c 100644 --- a/tests/wpt/tests/fledge/tentative/TODO +++ b/tests/wpt/tests/fledge/tentative/TODO @@ -18,8 +18,7 @@ Need tests for (likely not a complete list): loading URNs in fencedframes in other frames, loading component ad URNs in fenced frames of other frames, etc) * adAuctionConfig passed to reportResult(). -* trusted scoring signals. -* Component ads. +* Component ads (including scoring signals fetches). * Component auctions. * browserSignals fields in scoring/bidding methods. * In reporting methods, browserSignals fields: dataVersion, topLevelSeller, diff --git a/tests/wpt/tests/fledge/tentative/join-leave-ad-interest-group.https.sub.window.js b/tests/wpt/tests/fledge/tentative/join-leave-ad-interest-group.https.sub.window.js index d1d6d50e4b0..9b2b501fc72 100644 --- a/tests/wpt/tests/fledge/tentative/join-leave-ad-interest-group.https.sub.window.js +++ b/tests/wpt/tests/fledge/tentative/join-leave-ad-interest-group.https.sub.window.js @@ -471,13 +471,15 @@ const SIMPLE_JOIN_LEAVE_TEST_CASES = [ { expectJoinSucces: true, expectLeaveSucces: true, interestGroup: { ...BASE_INTEREST_GROUP, - name: 'a'.repeat(1048528) }, + name: 'a'.repeat(1048524) + }, testCaseName: "Largest possible interest group dictionary", }, { expectJoinSucces: false, expectLeaveSucces: true, interestGroup: { ...BASE_INTEREST_GROUP, - name: 'a'.repeat(1048529) }, + name: 'a'.repeat(1048525) + }, testCaseName: "Oversized interest group dictionary", }, ]; diff --git a/tests/wpt/tests/fledge/tentative/resources/fledge-util.js b/tests/wpt/tests/fledge/tentative/resources/fledge-util.js index cd7bb7044c3..f941d2285d2 100644 --- a/tests/wpt/tests/fledge/tentative/resources/fledge-util.js +++ b/tests/wpt/tests/fledge/tentative/resources/fledge-util.js @@ -6,12 +6,15 @@ const BASE_PATH = (new URL(BASE_URL)).pathname; const DEFAULT_INTEREST_GROUP_NAME = 'default name'; -// Unlike other URLs, the trustedBiddingSignalsUrl can't have a query string -// that's set by tests, since FLEDGE controls it entirely, so tests that -// exercise it use a fixed URL string. Special keys and interest group names -// control the response. +// Unlike other URLs, trusted signals URLs can't have query strings +// that are set by tests, since FLEDGE controls it entirely, so tests that +// exercise them use a fixed URL string. Note that FLEDGE adds query +// params when requesting these URLs, and the python scripts use these +// to construct the response. const TRUSTED_BIDDING_SIGNALS_URL = `${BASE_URL}resources/trusted-bidding-signals.py`; +const TRUSTED_SCORING_SIGNALS_URL = + `${BASE_URL}resources/trusted-scoring-signals.py`; // Creates a URL that will be sent to the URL request tracker script. // `uuid` is used to identify the stash shard to use. @@ -99,7 +102,11 @@ async function waitForObservedRequests(uuid, expectedRequests) { // all expected requests and exit. let trackedRequests = trackerData.trackedRequests; if (trackedRequests.length == expectedRequests.length) { - assert_array_equals(trackedRequests.sort(), expectedRequests); + // Hide the uuid content in order to have a static expected file. + assert_array_equals(trackedRequests.sort().map((url) => + url.replace(uuid, '')), + expectedRequests.map((url) => + url.replace(uuid, ''))); break; } @@ -107,7 +114,9 @@ async function waitForObservedRequests(uuid, expectedRequests) { // compare what's been received so far, to have a greater chance to fail // rather than hang on error. for (const trackedRequest of trackedRequests) { - assert_in_array(trackedRequest, expectedRequests); + assert_in_array(trackedRequest.replace(uuid, ''), + expectedRequests.sort().map((url) => + url.replace(uuid, ''))); } } } @@ -153,11 +162,14 @@ function createDecisionScriptUrl(uuid, params = {}) { // Creates a renderUrl for an ad that runs the passed in "script". "uuid" has // no effect, beyond making the URL distinct between tests, and being verified // by the decision logic script before accepting a bid. "uuid" is expected to -// be last. -function createRenderUrl(uuid, script) { +// be last. "signalsParams" also has no effect, but is used by +// trusted-scoring-signals.py to affect the response. +function createRenderUrl(uuid, script, signalsParams) { let url = new URL(`${BASE_URL}resources/fenced-frame.sub.py`); if (script) url.searchParams.append('script', script); + if (signalsParams) + url.searchParams.append('signalsParams', signalsParams); url.searchParams.append('uuid', uuid); return url.toString(); } @@ -239,10 +251,10 @@ async function runBasicFledgeAuctionAndNavigate(test, uuid, } // Joins an interest group and runs an auction, expecting a winner to be -// returned. "testConfig" can optionally modify the interest group or +// returned. "testConfig" can optionally modify the uuid, interest group or // auctionConfig. async function runBasicFledgeTestExpectingWinner(test, testConfig = {}) { - const uuid = generateUuid(test); + const uuid = testConfig.uuid ? testConfig.uuid : generateUuid(test); await joinInterestGroup(test, uuid, testConfig.interestGroupOverrides); let config = await runBasicFledgeAuction( test, uuid, testConfig.auctionConfigOverrides); @@ -251,10 +263,10 @@ async function runBasicFledgeTestExpectingWinner(test, testConfig = {}) { } // Joins an interest group and runs an auction, expecting no winner to be -// returned. "testConfig" can optionally modify the interest group or +// returned. "testConfig" can optionally modify the uuid, interest group or // auctionConfig. async function runBasicFledgeTestExpectingNoWinner(test, testConfig = {}) { - const uuid = generateUuid(test); + const uuid = testConfig.uuid ? testConfig.uuid : generateUuid(test); await joinInterestGroup(test, uuid, testConfig.interestGroupOverrides); let result = await runBasicFledgeAuction( test, uuid, testConfig.auctionConfigOverrides); diff --git a/tests/wpt/tests/fledge/tentative/resources/trusted-bidding-signals.py b/tests/wpt/tests/fledge/tentative/resources/trusted-bidding-signals.py index cdd7052a96a..9602bd22f96 100644 --- a/tests/wpt/tests/fledge/tentative/resources/trusted-bidding-signals.py +++ b/tests/wpt/tests/fledge/tentative/resources/trusted-bidding-signals.py @@ -50,7 +50,7 @@ def main(request, response): body = None contentType = "application/json" - xAllowFledge = "true" + adAuctionAllowed = "true" dataVersion = None if keys: for key in keys: @@ -74,14 +74,12 @@ def main(request, response): contentType = None elif key == "wrong-content-type": contentType = 'text/plain' - elif key == "wrongContentType": - contentType = 'text/plain' - elif key == "bad-allow-fledge": - xAllowFledge = "sometimes" - elif key == "fledge-not-allowed": - xAllowFledge = "false" - elif key == "no-allow-fledge": - xAllowFledge = None + elif key == "bad-ad-auction-allowed": + adAuctionAllowed = "sometimes" + elif key == "ad-auction-not-allowed": + adAuctionAllowed = "false" + elif key == "no-ad-auction-allow": + adAuctionAllowed = None elif key == "no-value": continue elif key == "wrong-value": @@ -108,8 +106,8 @@ def main(request, response): if contentType: response.headers.set("Content-Type", contentType) - if xAllowFledge: - response.headers.set("X-Allow-FLEDGE", xAllowFledge) + if adAuctionAllowed: + response.headers.set("Ad-Auction-Allowed", adAuctionAllowed) if dataVersion: response.headers.set("Data-Version", dataVersion) response.headers.set("X-fledge-bidding-signals-format-version", "2") diff --git a/tests/wpt/tests/fledge/tentative/resources/trusted-scoring-signals.py b/tests/wpt/tests/fledge/tentative/resources/trusted-scoring-signals.py new file mode 100644 index 00000000000..6036d2ef4d1 --- /dev/null +++ b/tests/wpt/tests/fledge/tentative/resources/trusted-scoring-signals.py @@ -0,0 +1,127 @@ +import json +from urllib.parse import unquote_plus, urlparse + +# Script to generate trusted scoring signals. The responses depends on the +# query strings in the ads Urls - some result in entire response failures, +# others affect only their own value. Each renderUrl potentially has a +# signalsParam, which is a comma-delimited list of instructions that can +# each affect either the value associated with the renderUrl, or the +# response as a whole. +def main(request, response): + hostname = None + renderUrls = None + adComponentRenderUrls = None + + # Manually parse query params. Can't use request.GET because it unescapes as well as splitting, + # and commas mean very different things from escaped commas. + for param in request.url_parts.query.split("&"): + pair = param.split("=", 1) + if len(pair) != 2: + return fail(response, "Bad query parameter: " + param) + # Browsers should escape query params consistently. + if "%20" in pair[1]: + return fail(response, "Query parameter should escape using '+': " + param) + + # Hostname can't be empty. The empty string can be a key or interest group name, though. + if pair[0] == "hostname" and hostname == None and len(pair[1]) > 0: + hostname = pair[1] + continue + if pair[0] == "renderUrls" and renderUrls == None: + renderUrls = list(map(unquote_plus, pair[1].split(","))) + continue + if pair[0] == "adComponentRenderUrls" and adComponentRenderUrls == None: + adComponentRenderUrls = list(map(unquote_plus, pair[1].split(","))) + continue + return fail(response, "Unexpected query parameter: " + param) + + # "hostname" and "renderUrls" are mandatory. + if not hostname: + return fail(response, "hostname missing") + if not renderUrls: + return fail(response, "renderUrls missing") + + response.status = (200, b"OK") + + # The JSON representation of this is used as the response body. + responseBody = {"renderUrls": {}} + + # Set when certain special keys are observed, used in place of the JSON + # representation of `responseBody`, when set. + body = None + + contentType = "application/json" + adAuctionAllowed = "true" + dataVersion = None + if renderUrls: + for renderUrl in renderUrls: + value = "default value" + + signalsParams = None + for param in urlparse(renderUrl).query.split("&"): + pair = param.split("=", 1) + if len(pair) != 2: + continue + if pair[0] == "signalsParams": + if signalsParams != None: + return fail(response, "renderUrl has multiple signalsParams: " + renderUrl) + signalsParams = pair[1] + if signalsParams != None: + signalsParams = unquote_plus(signalsParams) + for signalsParam in signalsParams.split(","): + if signalsParam == "close-connection": + # Close connection without writing anything, to simulate a + # network error. The write call is needed to avoid writing the + # default headers. + response.writer.write("") + response.close_connection = True + return + elif signalsParam.startswith("replace-body:"): + # Replace entire response body. Continue to run through other + # renderUrls, to allow them to modify request headers. + body = signalsParam.split(':', 1)[1] + elif signalsParam.startswith("data-version:"): + dataVersion = signalsParam.split(':', 1)[1] + elif signalsParam == "http-error": + response.status = (404, b"Not found") + elif signalsParam == "no-content-type": + contentType = None + elif signalsParam == "wrong-content-type": + contentType = 'text/plain' + elif signalsParam == "bad-ad-auction-allowed": + adAuctionAllowed = "sometimes" + elif signalsParam == "ad-auction-not-allowed": + adAuctionAllowed = "false" + elif signalsParam == "no-ad-auction-allow": + adAuctionAllowed = None + elif signalsParam == "no-value": + continue + elif signalsParam == "null-value": + value = None + elif signalsParam == "num-value": + value = 1 + elif signalsParam == "string-value": + value = "1" + elif signalsParam == "array-value": + value = [1, "foo", None] + elif signalsParam == "object-value": + value = {"a":"b", "c":["d"]} + elif signalsParam == "hostname": + value = request.GET.first(b"hostname", b"not-found").decode("ASCII") + if value != None: + responseBody["renderUrls"][renderUrl] = value + + if contentType: + response.headers.set("Content-Type", contentType) + if adAuctionAllowed: + response.headers.set("Ad-Auction-Allowed", adAuctionAllowed) + if dataVersion: + response.headers.set("Data-Version", dataVersion) + + if body != None: + return body + return json.dumps(responseBody) + +def fail(response, body): + response.status = (400, "Bad Request") + response.headers.set(b"Content-Type", b"text/plain") + return body diff --git a/tests/wpt/tests/fledge/tentative/round-a-value.https.sub.window.js b/tests/wpt/tests/fledge/tentative/round-a-value.https.sub.window.js new file mode 100644 index 00000000000..252e4db00fb --- /dev/null +++ b/tests/wpt/tests/fledge/tentative/round-a-value.https.sub.window.js @@ -0,0 +1,160 @@ +// META: script=/resources/testdriver.js +// META: script=/common/utils.js +// META: script=resources/fledge-util.js +// META: timeout=long + +"use strict;" + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + { generateBid: + `return {'adCost': 1.99, + 'bid': 9, + 'render': interestGroup.ads[0].renderUrl};`, + reportWinSuccessCondition: + // Possible stochastic rounding results for 1.99 + `browserSignals.adCost === 1.9921875 || browserSignals.adCost === 1.984375`, + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, + // expectedReportUrls + [createBidderReportUrl(uuid)] + ); +}, 'Check adCost is stochastically rounded with 8 bit mantissa and exponent.'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + { generateBid: + `return {'bid': 1.99, + 'render': interestGroup.ads[0].renderUrl};`, + reportWinSuccessCondition: + // Possible stochastic rounding results for 1.99 + `browserSignals.bid === 1.9921875 || browserSignals.bid === 1.984375`, + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, + // expectedReportUrls + [createBidderReportUrl(uuid)] + ); +}, 'Check bid is stochastically rounded with 8 bit mantissa and exponent.'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + { scoreAd: + `return {desirability: 1.99, + allowComponentAuction: false}`, + reportResultSuccessCondition: + // Possible stochastic rounding results for 1.99 + `browserSignals.desirability === 1.9921875 || browserSignals.desirability === 1.984375`, + reportResult: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, + // expectedReportUrls + [createBidderReportUrl(uuid)] + ); +}, 'Check desirability is stochastically rounded with 8 bit mantissa and exponent.'); + +promise_test(async test => { + const uuid = generateUuid(test); + await joinInterestGroup(test, uuid, + { biddingLogicUrl: createBiddingScriptUrl({ bid: 1.99 }), + name: 'other interest group 1' }); + await runReportTest( + test, uuid, + { reportResultSuccessCondition: + // Possible stochastic rounding results for 1.99 + `browserSignals.highestScoringOtherBid === 1.9921875 || browserSignals.highestScoringOtherBid === 1.984375`, + reportResult: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, + // expectedReportUrls + [createBidderReportUrl(uuid)] + ); +}, 'Check highestScoringOtherBid is stochastically rounded with 8 bit mantissa and exponent.'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + { generateBid: + `return {'adCost': 2, + 'bid': 9, + 'render': interestGroup.ads[0].renderUrl};`, + reportWinSuccessCondition: + `browserSignals.adCost === 2`, + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, + // expectedReportUrls + [createBidderReportUrl(uuid)] + ); +}, 'Value is ignored as a non-valid floating-point number.'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + { generateBid: + `return {'adCost': 1E-46, + 'bid': 9, + 'render': interestGroup.ads[0].renderUrl};`, + reportWinSuccessCondition: + `browserSignals.adCost === 0`, + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, + // expectedReportUrls + [createBidderReportUrl(uuid)] + ); +}, 'Value is rounded to 0 if value is greater than 0 and its exponent is less than -128.'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + { generateBid: + `return {'adCost': -1E-46, + 'bid': 9, + 'render': interestGroup.ads[0].renderUrl};`, + reportWinSuccessCondition: + `browserSignals.adCost === -0`, + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, + // expectedReportUrls + [createBidderReportUrl(uuid)] + ); +}, 'Value is rounded to -0 if value is greater than 0 and its exponent is less than -128.'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + { generateBid: + `return {'adCost': 1E+39, + 'bid': 9, + 'render': interestGroup.ads[0].renderUrl};`, + reportWinSuccessCondition: + `browserSignals.adCost === Infinity`, + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, + // expectedReportUrls + [createBidderReportUrl(uuid)] + ); +}, 'Value is rounded to Infinity if value is greater than 0 and its exponent is greater than 127.'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + { generateBid: + `return {'adCost': -1E+39, + 'bid': 9, + 'render': interestGroup.ads[0].renderUrl};`, + reportWinSuccessCondition: + `browserSignals.adCost === -Infinity`, + reportWin: + `sendReportTo('${createBidderReportUrl(uuid)}');` }, + // expectedReportUrls + [createBidderReportUrl(uuid)] + ); +}, 'Value is rounded to -Infinity if value is less than 0 and its exponent is greater than 127.'); diff --git a/tests/wpt/tests/fledge/tentative/trusted-bidding-signals.https.sub.window.js b/tests/wpt/tests/fledge/tentative/trusted-bidding-signals.https.sub.window.js index 0f8b2396392..90c1c39fd6e 100644 --- a/tests/wpt/tests/fledge/tentative/trusted-bidding-signals.https.sub.window.js +++ b/tests/wpt/tests/fledge/tentative/trusted-bidding-signals.https.sub.window.js @@ -111,23 +111,23 @@ promise_test(async test => { promise_test(async test => { await runTrustedBiddingSignalsTest( test, 'trustedBiddingSignals === null', - { trustedBiddingSignalsKeys: ['fledge-not-allowed'], + { trustedBiddingSignalsKeys: ['ad-auction-not-allowed'], trustedBiddingSignalsUrl: TRUSTED_BIDDING_SIGNALS_URL }); }, 'Trusted bidding signals response does not allow fledge.'); promise_test(async test => { await runTrustedBiddingSignalsTest( test, 'trustedBiddingSignals === null', - { trustedBiddingSignalsKeys: ['bad-allow-fledge'], + { trustedBiddingSignalsKeys: ['bad-ad-auction-allowed'], trustedBiddingSignalsUrl: TRUSTED_BIDDING_SIGNALS_URL }); -}, 'Trusted bidding signals response has wrong X-Allow-FLEDGE header.'); +}, 'Trusted bidding signals response has wrong Ad-Auction-Allowed header.'); promise_test(async test => { await runTrustedBiddingSignalsTest( test, 'trustedBiddingSignals === null', - { trustedBiddingSignalsKeys: ['no-allow-fledge'], + { trustedBiddingSignalsKeys: ['no-ad-auction-allow'], trustedBiddingSignalsUrl: TRUSTED_BIDDING_SIGNALS_URL }); -}, 'Trusted bidding signals response has no X-Allow-FLEDGE header.'); +}, 'Trusted bidding signals response has no Ad-Auction-Allowed header.'); promise_test(async test => { await runTrustedBiddingSignalsTest( @@ -197,7 +197,7 @@ promise_test(async test => { test, 'trustedBiddingSignals["null-value"] === null', { trustedBiddingSignalsKeys: ['null-value'], trustedBiddingSignalsUrl: TRUSTED_BIDDING_SIGNALS_URL }); -}, 'Trusted bidding signals response null value for key.'); +}, 'Trusted bidding signals response has null value for key.'); promise_test(async test => { await runTrustedBiddingSignalsTest( @@ -316,7 +316,7 @@ promise_test(async test => { 'browserSignals.dataVersion === undefined', { trustedBiddingSignalsKeys: ['num-value'], trustedBiddingSignalsUrl: TRUSTED_BIDDING_SIGNALS_URL }); -}, 'Trusted bidding signals response has no data-version.'); +}, 'Trusted bidding signals response has no Data-Version.'); promise_test(async test => { await runTrustedBiddingSignalsDataVersionTest( diff --git a/tests/wpt/tests/fledge/tentative/trusted-scoring-signals.https.sub.window.js b/tests/wpt/tests/fledge/tentative/trusted-scoring-signals.https.sub.window.js new file mode 100644 index 00000000000..94385fd731a --- /dev/null +++ b/tests/wpt/tests/fledge/tentative/trusted-scoring-signals.https.sub.window.js @@ -0,0 +1,409 @@ +// META: script=/resources/testdriver.js +// META: script=/common/utils.js +// META: script=resources/fledge-util.js +// META: timeout=long + +"use strict"; + +// These tests focus on trustedScoringSignals: Requesting them, handling network +// errors, handling the renderURLs portion of the response, passing renderURLs +// to worklet scripts, and handling the Data-Version header. + +// Helper for trusted scoring signals tests. Runs an auction with +// TRUSTED_SCORING_SIGNALS_URL and a single interest group, failing the test +// if there's no winner. "scoreAdCheck" is an expression that should be true +// when evaluated in scoreAd(). "renderURL" can be used to control the response +// given for TRUSTED_SCORING_SIGNALS_URL. +async function runTrustedScoringSignalsTest(test, uuid, renderURL, scoreAdCheck) { + const auctionConfigOverrides = { + trustedScoringSignalsUrl: TRUSTED_SCORING_SIGNALS_URL, + decisionLogicUrl: + createDecisionScriptUrl(uuid, { + scoreAd: `if (!(${scoreAdCheck})) throw "error";` })}; + await runBasicFledgeTestExpectingWinner( + test, + { uuid: uuid, + interestGroupOverrides: {ads: [{renderUrl: renderURL}]}, + auctionConfigOverrides: auctionConfigOverrides + }); +} + +// Much like runTrustedScoringSignalsTest, but runs auctions through reporting +// as well, and evaluates `check` both in scodeAd() and reportResult(). Also +// makes sure browserSignals.dataVersion is undefined in generateBid() and +// reportWin(). +async function runTrustedScoringSignalsDataVersionTest( + test, uuid, renderURL, check) { + const interestGroupOverrides = { + biddingLogicUrl : + createBiddingScriptUrl({ + generateBid: + `if (browserSignals.dataVersion !== undefined) + throw "Bad browserSignals.dataVersion"`, + reportWin: + `if (browserSignals.dataVersion !== undefined) + sendReportTo('${createSellerReportUrl(uuid, '1-error')}'); + else + sendReportTo('${createSellerReportUrl(uuid, '1')}');`}), + ads: [{renderUrl: renderURL}]}; + await joinInterestGroup(test, uuid, interestGroupOverrides); + + const auctionConfigOverrides = { + decisionLogicUrl: createDecisionScriptUrl( + uuid, + { scoreAd: + `if (!(${check})) return false;`, + reportResult: + `if (!(${check})) + sendReportTo('${createSellerReportUrl(uuid, '2-error')}') + sendReportTo('${createSellerReportUrl(uuid, '2')}')`, + }), + trustedScoringSignalsUrl: TRUSTED_SCORING_SIGNALS_URL + } + await runBasicFledgeAuctionAndNavigate(test, uuid, auctionConfigOverrides); + await waitForObservedRequests( + uuid, [createSellerReportUrl(uuid, '1'), createSellerReportUrl(uuid, '2')]); +} + +// Creates a render URL that, when sent to the trusted-scoring-signals.py, +// results in a trusted scoring signals response with the provided response +// body. +function createScoringSignalsRenderUrlWithBody(uuid, responseBody) { + return createRenderUrl(uuid, /*script=*/null, + /*signalsParam=*/`replace-body:${responseBody}`); +} + +///////////////////////////////////////////////////////////////////////////// +// Tests where no renderURL value is received for the passed in renderURL. +///////////////////////////////////////////////////////////////////////////// + +promise_test(async test => { + const uuid = generateUuid(test); + const decisionLogicScriptUrl = createDecisionScriptUrl( + uuid, + { scoreAd: 'if (trustedScoringSignals !== null) throw "error";'}); + await runBasicFledgeTestExpectingWinner( + test, + { uuid: uuid, + auctionConfigOverrides: { decisionLogicUrl: decisionLogicScriptUrl } + }); +}, 'No trustedScoringSignalsUrl.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, /*signalsParam=*/'close-connection'); + await runTrustedScoringSignalsTest( + test, uuid, renderURL, + 'trustedScoringSignals === null'); +}, 'Trusted scoring signals closes the connection without sending anything.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, /*signalsParam=*/'http-error'); + await runTrustedScoringSignalsTest(test, uuid, renderURL, 'trustedScoringSignals === null'); +}, 'Trusted scoring signals response is HTTP 404 error.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, /*signalsParam=*/'no-content-type'); + await runTrustedScoringSignalsTest(test, uuid, renderURL, 'trustedScoringSignals === null'); +}, 'Trusted scoring signals response has no content-type.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, /*signalsParam=*/'wrong-content-type'); + await runTrustedScoringSignalsTest(test, uuid, renderURL, 'trustedScoringSignals === null'); +}, 'Trusted scoring signals response has wrong content-type.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, /*signalsParam=*/'ad-auction-not-allowed'); + await runTrustedScoringSignalsTest(test, uuid, renderURL, 'trustedScoringSignals === null'); +}, 'Trusted scoring signals response does not allow FLEDGE.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, /*signalsParam=*/'bad-ad-auction-allowed'); + await runTrustedScoringSignalsTest(test, uuid, renderURL, 'trustedScoringSignals === null'); +}, 'Trusted scoring signals response has wrong Ad-Auction-Allowed header.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, /*signalsParam=*/'no-ad-auction-allow'); + await runTrustedScoringSignalsTest( test, uuid, renderURL, 'trustedScoringSignals === null'); +}, 'Trusted scoring signals response has no Ad-Auction-Allowed header.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createScoringSignalsRenderUrlWithBody( + uuid, /*responseBody=*/''); + await runTrustedScoringSignalsTest(test, uuid, renderURL, 'trustedScoringSignals === null'); +}, 'Trusted scoring signals response has no body.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createScoringSignalsRenderUrlWithBody( + uuid, /*responseBody=*/'Not JSON'); + await runTrustedScoringSignalsTest(test, uuid, renderURL, 'trustedScoringSignals === null'); +}, 'Trusted scoring signals response is not JSON.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createScoringSignalsRenderUrlWithBody( + uuid, /*responseBody=*/'[]'); + await runTrustedScoringSignalsTest(test, uuid, renderURL, 'trustedScoringSignals === null'); +}, 'Trusted scoring signals response is a JSON array.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createScoringSignalsRenderUrlWithBody( + uuid, /*responseBody=*/'{JSON_keys_need_quotes: 1}'); + await runTrustedScoringSignalsTest(test, uuid, renderURL, 'trustedScoringSignals === null'); +}, 'Trusted scoring signals response is invalid JSON object.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createScoringSignalsRenderUrlWithBody( + uuid, /*responseBody=*/'{}'); + await runTrustedScoringSignalsTest( + test, uuid, renderURL, + `trustedScoringSignals.renderURL["${renderURL}"] === null`); +}, 'Trusted scoring signals response has no renderUrl object.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createScoringSignalsRenderUrlWithBody( + uuid, /*responseBody=*/'{"renderUrls":{}}'); + await runTrustedScoringSignalsTest( + test, uuid, renderURL, + `trustedScoringSignals.renderURL["${renderURL}"] === null`); +}, 'Trusted scoring signals response has no renderUrls.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createScoringSignalsRenderUrlWithBody( + uuid, /*responseBody=*/'{"renderUrls":{"https://wrong-url.test": 5}}'); + await runTrustedScoringSignalsTest( + test, uuid, renderURL, + `trustedScoringSignals.renderURL["${renderURL}"] === null && + trustedScoringSignals["https://wrong-url.test/"] === undefined`); +}, 'Trusted scoring signals response has renderURL not in response.'); + +///////////////////////////////////////////////////////////////////////////// +// Tests where renderURL value is received for the passed in renderURL. +///////////////////////////////////////////////////////////////////////////// + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, /*signalsParam=*/'null-value'); + await runTrustedScoringSignalsTest( + test, uuid, renderURL, + `trustedScoringSignals.renderURL["${renderURL}"] === null`); +}, 'Trusted scoring signals response has null value for renderURL.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, /*signalsParam=*/'num-value'); + await runTrustedScoringSignalsTest( + test, uuid, renderURL, + `trustedScoringSignals.renderURL["${renderURL}"] === 1`); +}, 'Trusted scoring signals response has a number value for renderURL.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, + /*signalsParam=*/'string-value'); + await runTrustedScoringSignalsTest( + test, uuid, renderURL, + `trustedScoringSignals.renderURL["${renderURL}"] === "1"`); +}, 'Trusted scoring signals response has a string value for renderURL.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, /*signalsParam=*/'array-value'); + await runTrustedScoringSignalsTest( + test, uuid, renderURL, + `JSON.stringify(trustedScoringSignals.renderURL["${renderURL}"]) === '[1,"foo",null]'`); +}, 'Trusted scoring signals response has an array value for renderURL.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, /*signalsParam=*/'object-value'); + await runTrustedScoringSignalsTest( + test, uuid, renderURL, + `Object.keys(trustedScoringSignals.renderURL["${renderURL}"]).length === 2 && + trustedScoringSignals.renderURL["${renderURL}"]["a"] === "b" && + JSON.stringify(trustedScoringSignals.renderURL["${renderURL}"]["c"]) === '["d"]'`); +}, 'Trusted scoring signals response has an object value for renderURL.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, /*signalsParam=*/'+%20 \x00?,3#&'); + await runTrustedScoringSignalsTest( + test, uuid, renderURL, + `trustedScoringSignals.renderURL["${renderURL}"] === "default value"`); +}, 'Trusted scoring signals with escaped renderURL.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, /*signalsParam=*/'hostname'); + await runTrustedScoringSignalsTest( + test, uuid, renderURL, + `trustedScoringSignals.renderURL["${renderURL}"] === "${window.location.hostname}"`); +}, 'Trusted scoring signals receives hostname field.'); + +// Joins two interest groups and makes sure the scoring signals for one are never leaked +// to the seller script when scoring the other. +// +// There's no guarantee in this test that a single request to the server will be made with +// render URLs from two different IGs, though that's the case this is trying to test - +// browsers are not required to support batching, and even if they do, joining any two +// particular requests may be racy. +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL1 = createRenderUrl(uuid, /*script=*/null, /*signalsParam=*/'num-value'); + const renderURL2 = createRenderUrl(uuid, /*script=*/null, /*signalsParam=*/'string-value'); + await joinInterestGroup(test, uuid, {ads: [{renderUrl: renderURL1}], name: '1'}); + await joinInterestGroup(test, uuid, {ads: [{renderUrl: renderURL2}], name: '2'}); + let auctionConfigOverrides = { trustedScoringSignalsUrl: TRUSTED_SCORING_SIGNALS_URL }; + + // scoreAd() only accepts the first IG's bid, validating its trustedScoringSignals. + auctionConfigOverrides.decisionLogicUrl = + createDecisionScriptUrl(uuid, { + scoreAd: `if (browserSignals.renderURL === "${renderURL1}" && + trustedScoringSignals.renderURL["${renderURL1}"] !== 1 || + trustedScoringSignals.renderURL["${renderURL2}"] !== undefined) + return;` }); + let config = await runBasicFledgeAuction( + test, uuid, auctionConfigOverrides); + assert_true(config instanceof FencedFrameConfig, + `Wrong value type returned from first auction: ${config.constructor.type}`); + + // scoreAd() only accepts the second IG's bid, validating its trustedScoringSignals. + auctionConfigOverrides.decisionLogicUrl = + createDecisionScriptUrl(uuid, { + scoreAd: `if (browserSignals.renderURL === "${renderURL2}" && + trustedScoringSignals.renderURL["${renderURL1}"] !== undefined || + trustedScoringSignals.renderURL["${renderURL2}"] !== '1') + return;` }); + config = await runBasicFledgeAuction( + test, uuid, auctionConfigOverrides); + assert_true(config instanceof FencedFrameConfig, + `Wrong value type returned from second auction: ${config.constructor.type}`); +}, 'Trusted scoring signals multiple renderURLs.'); + +///////////////////////////////////////////////////////////////////////////// +// Data-Version tests +///////////////////////////////////////////////////////////////////////////// + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid); + await runTrustedScoringSignalsDataVersionTest( + test, uuid, renderURL, + 'browserSignals.dataVersion === undefined'); +}, 'Trusted scoring signals response has no Data-Version.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, 'data-version:3'); + await runTrustedScoringSignalsDataVersionTest( + test, uuid, renderURL, + 'browserSignals.dataVersion === 3'); +}, 'Trusted scoring signals response has valid Data-Version.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, 'data-version:0'); + await runTrustedScoringSignalsDataVersionTest( + test, uuid, renderURL, + 'browserSignals.dataVersion === 0'); +}, 'Trusted scoring signals response has min Data-Version.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, 'data-version:4294967295'); + await runTrustedScoringSignalsDataVersionTest( + test, uuid, renderURL, + 'browserSignals.dataVersion === 4294967295'); +}, 'Trusted scoring signals response has max Data-Version.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, 'data-version:4294967296'); + await runTrustedScoringSignalsDataVersionTest( + test, uuid, renderURL, + 'browserSignals.dataVersion === undefined'); +}, 'Trusted scoring signals response has too large Data-Version.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, 'data-version:03'); + await runTrustedScoringSignalsDataVersionTest( + test, uuid, renderURL, + 'browserSignals.dataVersion === undefined'); +}, 'Trusted scoring signals response has data-version with leading 0.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, 'data-version:-1'); + await runTrustedScoringSignalsDataVersionTest( + test, uuid, renderURL, + 'browserSignals.dataVersion === undefined'); +}, 'Trusted scoring signals response has negative Data-Version.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, 'data-version:1.3'); + await runTrustedScoringSignalsDataVersionTest( + test, uuid, renderURL, + 'browserSignals.dataVersion === undefined'); +}, 'Trusted scoring signals response has decimal in Data-Version.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, 'data-version:2 2'); + await runTrustedScoringSignalsDataVersionTest( + test, uuid, renderURL, + 'browserSignals.dataVersion === undefined'); +}, 'Trusted scoring signals response has space in Data-Version.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, 'data-version:0x4'); + await runTrustedScoringSignalsDataVersionTest( + test, uuid, renderURL, + 'browserSignals.dataVersion === undefined'); +}, 'Trusted scoring signals response has hex Data-Version.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, 'data-version:3,replace-body:'); + await runTrustedScoringSignalsDataVersionTest( + test, uuid, renderURL, + 'browserSignals.dataVersion === undefined'); +}, 'Trusted scoring signals response has data-version and empty body.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, 'data-version:3,replace-body:[]'); + await runTrustedScoringSignalsDataVersionTest( + test, uuid, renderURL, + 'browserSignals.dataVersion === undefined'); +}, 'Trusted scoring signals response has data-version and JSON array body.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, 'data-version:3,replace-body:{} {}'); + await runTrustedScoringSignalsDataVersionTest( + test, uuid, renderURL, + 'browserSignals.dataVersion === undefined'); +}, 'Trusted scoring signals response has data-version and double JSON object body.'); + +promise_test(async test => { + const uuid = generateUuid(test); + const renderURL = createRenderUrl(uuid, /*script=*/null, 'data-version:3,replace-body:{}'); + await runTrustedScoringSignalsDataVersionTest( + test, uuid, renderURL, + 'browserSignals.dataVersion === 3'); +}, 'Trusted scoring signals response has data-version and no renderURLs.'); diff --git a/tests/wpt/tests/fonts/CanvasTest-ascent256.ttf b/tests/wpt/tests/fonts/CanvasTest-ascent256.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d5924fc2194a3ae0d9a4eca3c293b14909b2a44e GIT binary patch literal 2444 zcmds2-)j_C6#nka>})n_RB9T*Z5h+pB*pA*Hl?8i!1_TIg7 z&iT&Id*;qw2moz32^B~8?m0B}*UL&8i1iTNm&s%&rmrroQ1&Rt4<1UU4|mx&0bx@< znk$*!4!`XH<)68Z)b&d7)vlw0PCi^tmDU!bj;2b8yL%go0f z{&|hM-?(0}3BKE~ z)%(Nu-vN<(jDOd2EB^Mb=M<*CLVX@`uUrp0et&It^Y9AfE>TP{@5Ghm!L=BKlh|Aq_NKX-9Zy*sMng;O@5vo2? zZV)-!pyF2yh?sQH`3#4w^U;_*HkQYih+#~i4jj>Msk^8QY!sQ!-~@NlDP2h8kER4T zYV84$mB|%v_+o~Vj1s5Q5NS)e<4ue=#`nh8MsAPf>Oa-5)3$|}94b8`(B&?L9+pB_ zs9Ho{?^$3dK_I%$KaIA;S~qNbn({w@2WK8HagO3m9LIb3g!6M;!{4G`yv{!H-H5bu zj-87laZw;Syd2eVKYdY;+#Oz46|%UfN;o3n<)|)d!^=YA16y})?H<_rLZ{gB;KmK* z-0DoHa!mF$F5=>*avvLjX9hb4JE9%Y?r8U5JahKM^vR{kcjphd%Bk5iA5MR8dUk2) zFh86BpAQd*CJ!}#Y|~DDpJZ2qQ&*SYLZImnH9W|)tKHG~HM47*v4e(9ofEW+thcdy zutRKbYUSEd8C)r@xAt`AtZp}TceS&I?0T!0X3sEJt-TI?H&Z?(muSjWYj4V>=47tO zw@tak)uvoxh1)#XoQz+Y-0zc}sL2kr;ez}MgHh$P!3(sa8uI+}!HJMp@gm*{d9BGN z!hW3(aXrBK@1e>6tY7d26H8uToA@~76>JojLte$W_$uVJCYuPJSGI(>F7Xl9TPzpm zY~Sd~^&06^f6AD&3&nzGWX;8*TTZmLPFY3EtXO%Y>g27m;oFumu|I2!7jl+Uv4#xW z_r0NHa$#X1;d+GJYB^^m-11zq*f6OiO9j6#6cV28jhN27S;<-zf5OTas-=wU_!&A_ zMmmu)hK$F03hBYVbe}A2#wu3|u4AN9{fSg6g%P;$u!u4Wn1c-;26~V~FKHSn^m7@Q zq^5u(mq#fJlO9ESmU&CGa!$dbY!R>UnWs$^4yi>8gE4J#25-Fm^ffTfI5{FtU_C@c z=JgqS2uaR`U?zgf8dfgjl>;A%mRV^ssOE8$3Xu}y`sjN?lVDt%YlPJ~yp?5*S!S=$ zc7ilduPS{rjO-ATRA!JBr@245e_7+d`8PCa3^HpvSdEU&(7VhGg&?NE7!sGUXA+Pzg@H zy#F*j3(Yp2xkBD@OQvs^-I4<_niO z_F9^lfC(np1WAm>`0f)Z3FSdBJQ$)v42F>4Q!(K|qoU{w`k>dIpPAdjg~%VEGduhJ zem~z|GvA%rfdJ5k6VP#F@18@Wf4!(Bfk+S0eW_G>{P5Mq>y$mp(SwKL$>|;Wn}BdA zAITOo-ZsDO0Og-Jrn7Utg--1hppQ^*%w{THz0SypSd?343kyfv-kYbbo&&Tu96OVX zJoxi>>VD;T$srK&RxdJE7v(Oe=pQr2F-Q42Wvk$3Gx`neMjutb=JWOJodMR6_ zOwr!;{deC2p}UNK$8#(G)~;tYroKXb4sxv=_nx``^UTJfKd{aq09-r2dP&l|KU{pL z)?QmScbm5;wt$|h(Z{@1TgJ43TKmdvbGM2VC>7BavH?-KS~lq^6!t1&3NZ|b2MAI1 zp>~7FnFbZVpkG9!gUNT$Oa=6(YA${Y&tzcFy$(R8BB$+ z(2bC}Rx@QNK_I-wKZ&+PTGy?AlJY-*t38hw*hla>j^SN=%zhbP;&0I>USXa1ZA4N# z%gTijyC4uBS_&JupS)m(?hGyI8d+S>B^;9QQrHx=p(P>l{>|GrclU4J(J40lcH@S2 zc4ewlJ1XlM6;W|hyN`9iQv)3X9pR2}cer~XnmTj*@QKBVx91MH+R2&I9~^%F)Xd`I zYdkjpKOb%mLvCt5EYo(LPqHg&*VW}&P@29#!;MV4+OomZ%&Kj~HX1fnPS7s2R>tmu z4zabVl&eQ%aILUb+Eb}Brqfj2mChQ{Yo%VCIn7+P_BzbnO!%WISbZy^mL-CM(c}^YRp`R^_|F3$&sd@cjAUc);s;9&ZJ_(PR^1 zz0L)=sc`;14EfKxhtHT;@&a4LM***4y|@(cI>y8o0dF+fgz%iUDZovM54+w%IX~<8 zR!?@9l}z*{tO+My$a_{gvrur$vDVf}yI^N3cFwAna(3DB9orh;pSH&GS-VuR2QA0< zy}@{VettgYdW76+Icvw<@@%}&Fsa0gdA~OhVxHp-XG(LKO4_dY<904zEvDR(pQ3|p zC1VL|(0Zh&kR0eu_R5J(+2u;!Em?^~Uo4SGU>GhuETD`$X5qkxg&t(Fi!_M@`Zz31 zP?JZ2!=sc&h8_iamU&CGvQNUMY!k2Wouf?^B~qIf7GpZ(EZ%tg>1$z(ak4~8%6gE9 z%jsK8dfgjm6eY~%baOk&E`>*3Xvk?`sjU36JuP5W0^We2XqCyk8Fhqzqm5wg#1aCqwxm2m3qS%WTk)E`WgP^o}@ZibP__p0c8Q#qIu2Q)fnHbd`0OAb$a>faRZWn_0 zo6OTQv$wBhp5EeKQ315Op6gVM->EV7esLZ5STKUkHqfFx3wh6v=A?}#hc7WVXX|B0 zEXsQvP-LF-ow)!PVY44|v*!5j;qR*}K&rzBd<*Jfv?sq$wT08jV#?|bJ zzvz`L03YTz7viS$@_;Dr= zaL{P1@S0PfXt@1@0y19UJ^s-+ooY{uklHJ>)&%2myV+}f52^J{e zeuCwWo)ofpp6L3PE1p(zc4|#0oN~j+b}Q9}ucCAzd&RvOR_is>vc|_O%TkZ^b@iubu-Asm|6Jv__^Ob$ M)vNS~+HEZV2Q!;?b^rhX delta 711 zcmah{OKTHR7(L(2WSZ0(3u#a>VvMmn)3M+KR0vi>um+{Zf>6*gGi@TBBsfWoAVhE@ zDxwUCD}O>aaUmi_#Me?6uH1AXU8sw0+=ax`_IBMFzI)H(-ZOW;nJ2N8*t6Z8djRse zT(NNV!=tZ2w^Jw z?r)HX7Z&f%XOHAA(7yp__sg#BtSz72OYbl1c$q?^-hT~rBuyb*_8RSxlfB0be@~uT ztd(qi*;s$TIr4;Ox9gZefqtGmS+za4KmFnp5L)3Ht6uXPd(!(g9$=Kd1L4Rr*Jhj7 zcb)!+9R>y9%ToW%*4&HtewsmCCdCNya!@3=C1*}$5y5#K17Oblt{>*&^(bBpNU1qN zoKW|M2lV1VcU77ad5h2JF*MtCbYHqZjHq;gD3-Q@&}0)fLj}XqR#<~6&lT1&E~^R~ z7}gFc9Kxt}Sz(j<9kyJI2+#1FwTT5|a#LXqBk}-xW@C|#i}F$#2FA3V3Wt!?G76j2 z?I1t&M-V(Un i*>(xRtMGwiN&aQ-ZNE~hCN1k|# { // Create the the 3 actors. const iframe_credentialless_1 = newIframeCredentialless(cross_origin); - const fenced_frame = newFencedFrame(cross_origin); + const fenced_frame = await newFencedFrame(cross_origin); send(fenced_frame, ` const importScript = ${importScript}; await importScript("/common/utils.js"); diff --git a/tests/wpt/tests/html/anonymous-iframe/fenced-frame.tentative.https.window.js b/tests/wpt/tests/html/anonymous-iframe/fenced-frame.tentative.https.window.js index a9cdcbbd560..c72341fc5c9 100644 --- a/tests/wpt/tests/html/anonymous-iframe/fenced-frame.tentative.https.window.js +++ b/tests/wpt/tests/html/anonymous-iframe/fenced-frame.tentative.https.window.js @@ -23,10 +23,11 @@ promise_test(async test => { send(iframe_credentialless, ` const importScript = ${importScript}; await importScript("/common/utils.js"); + await importScript("/fenced-frame/resources/utils.js"); await importScript("/html/cross-origin-embedder-policy/credentialless" + "/resources/common.js"); await importScript("/html/anonymous-iframe/resources/common.js"); - const frame_fenced = newFencedFrame("${origin}"); + const frame_fenced = await newFencedFrame("${origin}"); send("${msg_queue}", frame_fenced); `); // TODO: Properly generate a fenced frame to check credentialless. diff --git a/tests/wpt/tests/html/anonymous-iframe/resources/common.js b/tests/wpt/tests/html/anonymous-iframe/resources/common.js index 241df1df242..2fa51aa9c61 100644 --- a/tests/wpt/tests/html/anonymous-iframe/resources/common.js +++ b/tests/wpt/tests/html/anonymous-iframe/resources/common.js @@ -33,16 +33,15 @@ const newPopup = (test, origin) => { // Create a fenced frame. The new document will execute any scripts sent // toward the token it returns. -const newFencedFrame = (child_origin) => { +const newFencedFrame = async (child_origin) => { const support_loading_mode_fenced_frame = "|header(Supports-Loading-Mode,fenced-frame)"; const sub_document_token = token(); - const fencedframe = document.createElement('fencedframe'); const url = child_origin + executor_path + support_loading_mode_fenced_frame + `&uuid=${sub_document_token}`; - fencedframe.config = new FencedFrameConfig(url); - document.body.appendChild(fencedframe); + const urn = await generateURNFromFledge(url, []); + attachFencedFrame(urn); return sub_document_token; }; diff --git a/tests/wpt/tests/html/browsers/browsing-the-web/history-traversal/popstate_event.html b/tests/wpt/tests/html/browsers/browsing-the-web/history-traversal/popstate_event.html index a41fabf9686..05b1dbf4b71 100644 --- a/tests/wpt/tests/html/browsers/browsing-the-web/history-traversal/popstate_event.html +++ b/tests/wpt/tests/html/browsers/browsing-the-web/history-traversal/popstate_event.html @@ -21,6 +21,7 @@ window.onload = t.step_func(function () { assert_true(e instanceof PopStateEvent, "is PopStateEvent"); assert_false(e.bubbles, "bubbles"); assert_false(e.cancelable, "cancelable"); + assert_not_equals(e.hasUAVisualTransition, undefined); states.push(e.state); 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 new file mode 100644 index 00000000000..88057fc354a --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-filter-expected.html @@ -0,0 +1,17 @@ + + +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 new file mode 100644 index 00000000000..cf46f41b974 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-filter.html @@ -0,0 +1,26 @@ + + + +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.alpha.blending.shadow-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.blending.shadow-expected.html index d7ba158d161..f7b633b35f6 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.blending.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.blending.shadow-expected.html @@ -21,6 +21,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; canvas2 = document.createElement("canvas"); ctx2 = canvas2.getContext("2d"); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.blending.shadow.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.blending.shadow.html index 22946174cde..c8c6d433bc0 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.blending.shadow.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.blending.shadow.html @@ -22,6 +22,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.composite.shadow-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.composite.shadow-expected.html index a669a2271e9..0ae93871f52 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.composite.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.composite.shadow-expected.html @@ -21,6 +21,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; canvas2 = document.createElement("canvas"); ctx2 = canvas2.getContext("2d"); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.composite.shadow.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.composite.shadow.html index c07e717a663..92b8a0d7a75 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.composite.shadow.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.composite.shadow.html @@ -22,6 +22,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.shadow-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.shadow-expected.html index 206eb750139..6f764c50017 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.shadow-expected.html @@ -20,6 +20,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; canvas2 = document.createElement("canvas"); ctx2 = canvas2.getContext("2d"); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.shadow.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.shadow.html index bcb7fe50962..a325302b3b0 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.shadow.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.alpha.shadow.html @@ -21,6 +21,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.blending.shadow-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.blending.shadow-expected.html index 02275c8cc21..6f969074f93 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.blending.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.blending.shadow-expected.html @@ -20,6 +20,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; canvas2 = document.createElement("canvas"); ctx2 = canvas2.getContext("2d"); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.blending.shadow.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.blending.shadow.html index 80f414d4ee5..51926d76d8c 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.blending.shadow.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.blending.shadow.html @@ -21,6 +21,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.composite.shadow-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.composite.shadow-expected.html index e380cccab82..b687c27f471 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.composite.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.composite.shadow-expected.html @@ -20,6 +20,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; canvas2 = document.createElement("canvas"); ctx2 = canvas2.getContext("2d"); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.composite.shadow.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.composite.shadow.html index 9e32dddd40d..c563a57b76e 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.composite.shadow.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.composite.shadow.html @@ -21,6 +21,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.blending.shadow-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.blending.shadow-expected.html index d9c93719b99..62942ffeaec 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.blending.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.blending.shadow-expected.html @@ -47,6 +47,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.drawImage(img, 0, 0); }; diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.blending.shadow.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.blending.shadow.html index ae320702c2f..ccadfb624b7 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.blending.shadow.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.blending.shadow.html @@ -22,6 +22,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: [ {name: 'colorMatrix', values: [0.393, 0.769, 0.189, 0, 0, diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.composite.shadow-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.composite.shadow-expected.html index 26d13a4cae9..a6499725462 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.composite.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.composite.shadow-expected.html @@ -47,6 +47,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.drawImage(img, 0, 0); }; diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.composite.shadow.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.composite.shadow.html index 050bb5f0e36..b2907f02aa5 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.composite.shadow.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.composite.shadow.html @@ -22,6 +22,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: [ {name: 'colorMatrix', values: [0.393, 0.769, 0.189, 0, 0, diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.shadow-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.shadow-expected.html index 9cc735fd42c..169baee29b9 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.shadow-expected.html @@ -46,6 +46,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.drawImage(img, 0, 0); }; diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.shadow.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.shadow.html index 97595444db7..6aa8e75a950 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.shadow.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.alpha.shadow.html @@ -21,6 +21,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: [ {name: 'colorMatrix', values: [0.393, 0.769, 0.189, 0, 0, diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.blending.shadow-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.blending.shadow-expected.html index a48485f7e8a..91f3725f8ec 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.blending.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.blending.shadow-expected.html @@ -46,6 +46,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.drawImage(img, 0, 0); }; diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.blending.shadow.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.blending.shadow.html index 491bdb377b9..e54cf06d0dd 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.blending.shadow.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.blending.shadow.html @@ -21,6 +21,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: [ {name: 'colorMatrix', values: [0.393, 0.769, 0.189, 0, 0, diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.composite.shadow-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.composite.shadow-expected.html index 79191ee3910..4716bb2760f 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.composite.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.composite.shadow-expected.html @@ -46,6 +46,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.drawImage(img, 0, 0); }; diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.composite.shadow.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.composite.shadow.html index ce9215eeb1c..e5c76986347 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.composite.shadow.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.composite.shadow.html @@ -21,6 +21,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: [ {name: 'colorMatrix', values: [0.393, 0.769, 0.189, 0, 0, diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.shadow-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.shadow-expected.html index 59cf16fa87d..13ba2dd4cde 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.shadow-expected.html @@ -45,6 +45,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.drawImage(img, 0, 0); }; diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.shadow.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.shadow.html index f7fc309cc0a..9efcd9d4f75 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.shadow.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.shadow.html @@ -20,6 +20,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: [ {name: 'colorMatrix', values: [0.393, 0.769, 0.189, 0, 0, diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.shadow-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.shadow-expected.html index ba56644d6c2..835e9d420ac 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.shadow-expected.html @@ -19,6 +19,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; canvas2 = document.createElement("canvas"); ctx2 = canvas2.getContext("2d"); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.shadow.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.shadow.html index bd9e868d1ef..209316164cb 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.shadow.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.shadow.html @@ -20,6 +20,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.layer-rendering-state-reset-in-layer.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.layer-rendering-state-reset-in-layer.html new file mode 100644 index 00000000000..9283fd39b7d --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.layer-rendering-state-reset-in-layer.html @@ -0,0 +1,56 @@ + + +Canvas test: 2d.layer.layer-rendering-state-reset-in-layer + + + + + + +

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

+

Tests that layers ignore the global context filter.

+ + +

Actual output:

+

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 dc50ee76c10..9ad779abfdd 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 @@ -17,6 +17,7 @@ ctx.shadowOffsetX = -3; ctx.shadowOffsetY = 3; ctx.shadowColor = 'rgba(0, 30, 0, 0.3)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: {name: 'dropShadow', dx: -3, dy: 3}}); @@ -26,6 +27,7 @@ ctx.shadowOffsetX = -6; ctx.shadowOffsetY = 6; ctx.shadowColor = 'rgba(0, 60, 0, 0.6)'; + ctx.shadowBlur = 3; ctx.reset(); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.several-complex-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.several-complex-expected.html index 84ad6244740..ef46f69e2a5 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.several-complex-expected.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.several-complex-expected.html @@ -17,6 +17,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'orange'; + ctx.shadowBlur = 3; var canvas2 = [5]; var ctx2 = [5]; diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.several-complex.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.several-complex.html index 6ae78f690ae..cff0c123ef6 100644 --- a/tests/wpt/tests/html/canvas/element/layers/2d.layer.several-complex.html +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.several-complex.html @@ -19,7 +19,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'orange'; - + ctx.shadowBlur = 3 for (let i = 0; i < 5; i++) { ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.clip-expected.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.clip-expected.html new file mode 100644 index 00000000000..974b37fab4e --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.clip-expected.html @@ -0,0 +1,14 @@ + + +Canvas test: 2d.reset.state.clip +

    2d.reset.state.clip

    +

    check that the clip is reset

    + +

    FAIL (fallback content)

    +
    + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.clip.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.clip.html new file mode 100644 index 00000000000..ab3fa1081ca --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.clip.html @@ -0,0 +1,23 @@ + + + +Canvas test: 2d.reset.state.clip +

    2d.reset.state.clip

    +

    check that the clip is reset

    + +

    FAIL (fallback content)

    +
    + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.direction.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.direction.html new file mode 100644 index 00000000000..8b27e3cfe44 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.direction.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.direction + + + + + + +

    2d.reset.state.direction

    +

    check that the state is reset

    + + +

    Actual output:

    +

    FAIL (fallback content)

    + +
      + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.fill_style.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.fill_style.html new file mode 100644 index 00000000000..1239e2ec7fb --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.fill_style.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.fill_style + + + + + + +

      2d.reset.state.fill_style

      +

      check that the state is reset

      + + +

      Actual output:

      +

      FAIL (fallback content)

      + +
        + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.filter.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.filter.html new file mode 100644 index 00000000000..80ccd22bb2b --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.filter.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.filter + + + + + + +

        2d.reset.state.filter

        +

        check that the state is reset

        + + +

        Actual output:

        +

        FAIL (fallback content)

        + +
          + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.font.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.font.html new file mode 100644 index 00000000000..c93d038a622 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.font.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.font + + + + + + +

          2d.reset.state.font

          +

          check that the state is reset

          + + +

          Actual output:

          +

          FAIL (fallback content)

          + +
            + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.font_kerning.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.font_kerning.html new file mode 100644 index 00000000000..d3ad9d386cb --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.font_kerning.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.font_kerning + + + + + + +

            2d.reset.state.font_kerning

            +

            check that the state is reset

            + + +

            Actual output:

            +

            FAIL (fallback content)

            + +
              + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.font_stretch.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.font_stretch.html new file mode 100644 index 00000000000..0a91c640b26 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.font_stretch.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.font_stretch + + + + + + +

              2d.reset.state.font_stretch

              +

              check that the state is reset

              + + +

              Actual output:

              +

              FAIL (fallback content)

              + +
                + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.font_variant_caps.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.font_variant_caps.html new file mode 100644 index 00000000000..262c4fc4d3a --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.font_variant_caps.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.font_variant_caps + + + + + + +

                2d.reset.state.font_variant_caps

                +

                check that the state is reset

                + + +

                Actual output:

                +

                FAIL (fallback content)

                + +
                  + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.global_alpha.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.global_alpha.html new file mode 100644 index 00000000000..18b825e60fd --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.global_alpha.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.global_alpha + + + + + + +

                  2d.reset.state.global_alpha

                  +

                  check that the state is reset

                  + + +

                  Actual output:

                  +

                  FAIL (fallback content)

                  + +
                    + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.global_composite_operation.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.global_composite_operation.html new file mode 100644 index 00000000000..aee6841d955 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.global_composite_operation.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.global_composite_operation + + + + + + +

                    2d.reset.state.global_composite_operation

                    +

                    check that the state is reset

                    + + +

                    Actual output:

                    +

                    FAIL (fallback content)

                    + +
                      + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.image_smoothing_enabled.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.image_smoothing_enabled.html new file mode 100644 index 00000000000..e865967a38f --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.image_smoothing_enabled.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.image_smoothing_enabled + + + + + + +

                      2d.reset.state.image_smoothing_enabled

                      +

                      check that the state is reset

                      + + +

                      Actual output:

                      +

                      FAIL (fallback content)

                      + +
                        + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.image_smoothing_quality.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.image_smoothing_quality.html new file mode 100644 index 00000000000..e78abfce77e --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.image_smoothing_quality.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.image_smoothing_quality + + + + + + +

                        2d.reset.state.image_smoothing_quality

                        +

                        check that the state is reset

                        + + +

                        Actual output:

                        +

                        FAIL (fallback content)

                        + +
                          + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.letter_spacing.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.letter_spacing.html new file mode 100644 index 00000000000..3e732b1fa05 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.letter_spacing.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.letter_spacing + + + + + + +

                          2d.reset.state.letter_spacing

                          +

                          check that the state is reset

                          + + +

                          Actual output:

                          +

                          FAIL (fallback content)

                          + +
                            + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_cap.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_cap.html new file mode 100644 index 00000000000..8020e284a74 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_cap.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.line_cap + + + + + + +

                            2d.reset.state.line_cap

                            +

                            check that the state is reset

                            + + +

                            Actual output:

                            +

                            FAIL (fallback content)

                            + +
                              + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_dash.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_dash.html new file mode 100644 index 00000000000..ca68ae51588 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_dash.html @@ -0,0 +1,29 @@ + + +Canvas test: 2d.reset.state.line_dash + + + + + + +

                              2d.reset.state.line_dash

                              +

                              check that the line dash is reset

                              + + +

                              Actual output:

                              +

                              FAIL (fallback content)

                              + +
                                + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_dash_offset.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_dash_offset.html new file mode 100644 index 00000000000..10015199b93 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_dash_offset.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.line_dash_offset + + + + + + +

                                2d.reset.state.line_dash_offset

                                +

                                check that the state is reset

                                + + +

                                Actual output:

                                +

                                FAIL (fallback content)

                                + +
                                  + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_join.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_join.html new file mode 100644 index 00000000000..1c20cb1b2ae --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_join.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.line_join + + + + + + +

                                  2d.reset.state.line_join

                                  +

                                  check that the state is reset

                                  + + +

                                  Actual output:

                                  +

                                  FAIL (fallback content)

                                  + +
                                    + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_width.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_width.html new file mode 100644 index 00000000000..db2516b5350 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.line_width.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.line_width + + + + + + +

                                    2d.reset.state.line_width

                                    +

                                    check that the state is reset

                                    + + +

                                    Actual output:

                                    +

                                    FAIL (fallback content)

                                    + +
                                      + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.miter_limit.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.miter_limit.html new file mode 100644 index 00000000000..7920c38d52c --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.miter_limit.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.miter_limit + + + + + + +

                                      2d.reset.state.miter_limit

                                      +

                                      check that the state is reset

                                      + + +

                                      Actual output:

                                      +

                                      FAIL (fallback content)

                                      + +
                                        + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.shadow_blur.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.shadow_blur.html new file mode 100644 index 00000000000..07784de7d55 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.shadow_blur.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.shadow_blur + + + + + + +

                                        2d.reset.state.shadow_blur

                                        +

                                        check that the state is reset

                                        + + +

                                        Actual output:

                                        +

                                        FAIL (fallback content)

                                        + +
                                          + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.shadow_color.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.shadow_color.html new file mode 100644 index 00000000000..9e8ee6c7f5a --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.shadow_color.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.shadow_color + + + + + + +

                                          2d.reset.state.shadow_color

                                          +

                                          check that the state is reset

                                          + + +

                                          Actual output:

                                          +

                                          FAIL (fallback content)

                                          + +
                                            + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.shadow_offset_x.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.shadow_offset_x.html new file mode 100644 index 00000000000..7992ce4c1e7 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.shadow_offset_x.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.shadow_offset_x + + + + + + +

                                            2d.reset.state.shadow_offset_x

                                            +

                                            check that the state is reset

                                            + + +

                                            Actual output:

                                            +

                                            FAIL (fallback content)

                                            + +
                                              + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.shadow_offset_y.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.shadow_offset_y.html new file mode 100644 index 00000000000..84a38e0bdbb --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.shadow_offset_y.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.shadow_offset_y + + + + + + +

                                              2d.reset.state.shadow_offset_y

                                              +

                                              check that the state is reset

                                              + + +

                                              Actual output:

                                              +

                                              FAIL (fallback content)

                                              + +
                                                + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.stroke_style.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.stroke_style.html new file mode 100644 index 00000000000..4acb19c41eb --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.stroke_style.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.stroke_style + + + + + + +

                                                2d.reset.state.stroke_style

                                                +

                                                check that the state is reset

                                                + + +

                                                Actual output:

                                                +

                                                FAIL (fallback content)

                                                + +
                                                  + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.text_align.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.text_align.html new file mode 100644 index 00000000000..a625737d722 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.text_align.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.text_align + + + + + + +

                                                  2d.reset.state.text_align

                                                  +

                                                  check that the state is reset

                                                  + + +

                                                  Actual output:

                                                  +

                                                  FAIL (fallback content)

                                                  + +
                                                    + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.text_baseline.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.text_baseline.html new file mode 100644 index 00000000000..2e4169bdb1e --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.text_baseline.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.text_baseline + + + + + + +

                                                    2d.reset.state.text_baseline

                                                    +

                                                    check that the state is reset

                                                    + + +

                                                    Actual output:

                                                    +

                                                    FAIL (fallback content)

                                                    + +
                                                      + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.text_rendering.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.text_rendering.html new file mode 100644 index 00000000000..e182babee4d --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.text_rendering.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.text_rendering + + + + + + +

                                                      2d.reset.state.text_rendering

                                                      +

                                                      check that the state is reset

                                                      + + +

                                                      Actual output:

                                                      +

                                                      FAIL (fallback content)

                                                      + +
                                                        + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.transformation_matrix.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.transformation_matrix.html new file mode 100644 index 00000000000..7872681bfc4 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.transformation_matrix.html @@ -0,0 +1,29 @@ + + +Canvas test: 2d.reset.state.transformation_matrix + + + + + + +

                                                        2d.reset.state.transformation_matrix

                                                        +

                                                        check that the state is reset

                                                        + + +

                                                        Actual output:

                                                        +

                                                        FAIL (fallback content)

                                                        + +
                                                          + + diff --git a/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.word_spacing.html b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.word_spacing.html new file mode 100644 index 00000000000..c4a448f21c4 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/reset/2d.reset.state.word_spacing.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.reset.state.word_spacing + + + + + + +

                                                          2d.reset.state.word_spacing

                                                          +

                                                          check that the state is reset

                                                          + + +

                                                          Actual output:

                                                          +

                                                          FAIL (fallback content)

                                                          + +
                                                            + + diff --git a/tests/wpt/tests/html/canvas/element/text/reference/fontVariantCaps-1-ref.html b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps1-expected.html similarity index 100% rename from tests/wpt/tests/html/canvas/element/text/reference/fontVariantCaps-1-ref.html rename to tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps1-expected.html diff --git a/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-1.html b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps1.html similarity index 90% rename from tests/wpt/tests/html/canvas/element/text/fontVariantCaps-1.html rename to tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps1.html index 3240476ad0f..b610c2240ff 100644 --- a/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-1.html +++ b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps1.html @@ -3,7 +3,7 @@ HTML Canvas Test: the 'fontVariantCaps' property - + diff --git a/tests/wpt/tests/html/canvas/element/text/reference/fontVariantCaps-2-ref.html b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps2-unexpected.html similarity index 100% rename from tests/wpt/tests/html/canvas/element/text/reference/fontVariantCaps-2-ref.html rename to tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps2-unexpected.html diff --git a/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-2.html b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps2.html similarity index 89% rename from tests/wpt/tests/html/canvas/element/text/fontVariantCaps-2.html rename to tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps2.html index cbcb73b231c..f9d42ac3a60 100644 --- a/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-2.html +++ b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps2.html @@ -3,7 +3,7 @@ HTML Canvas Test: the 'fontVariantCaps' property - + diff --git a/tests/wpt/tests/html/canvas/element/text/reference/fontVariantCaps-3-ref.html b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps3-expected.html similarity index 100% rename from tests/wpt/tests/html/canvas/element/text/reference/fontVariantCaps-3-ref.html rename to tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps3-expected.html diff --git a/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-3.html b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps3.html similarity index 91% rename from tests/wpt/tests/html/canvas/element/text/fontVariantCaps-3.html rename to tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps3.html index 8c0761121ef..a90e0c29b3d 100644 --- a/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-3.html +++ b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps3.html @@ -3,7 +3,7 @@ HTML Canvas Test: the 'fontVariantCaps' property - + diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps4-expected.html b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps4-expected.html new file mode 100644 index 00000000000..069fbfba882 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps4-expected.html @@ -0,0 +1,12 @@ + + +HTML Canvas reference + + + + + diff --git a/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-4.html b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps4.html similarity index 91% rename from tests/wpt/tests/html/canvas/element/text/fontVariantCaps-4.html rename to tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps4.html index 62fe241838b..b598fb60baf 100644 --- a/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-4.html +++ b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps4.html @@ -3,7 +3,7 @@ HTML Canvas Test: the 'fontVariantCaps' property - + diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps5-expected.html b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps5-expected.html new file mode 100644 index 00000000000..8ea3c22be13 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps5-expected.html @@ -0,0 +1,12 @@ + + +HTML Canvas reference + + + + + diff --git a/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-5.html b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps5.html similarity index 91% rename from tests/wpt/tests/html/canvas/element/text/fontVariantCaps-5.html rename to tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps5.html index a21169f8bb6..b871f7c0624 100644 --- a/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-5.html +++ b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps5.html @@ -3,7 +3,7 @@ HTML Canvas Test: the 'fontVariantCaps' property - + diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps6-expected.html b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps6-expected.html new file mode 100644 index 00000000000..c64f5d0ec2a --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps6-expected.html @@ -0,0 +1,12 @@ + + +HTML Canvas reference + + + + + diff --git a/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-6.html b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps6.html similarity index 91% rename from tests/wpt/tests/html/canvas/element/text/fontVariantCaps-6.html rename to tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps6.html index 6126c4e7b2f..e7bbd29341d 100644 --- a/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-6.html +++ b/tests/wpt/tests/html/canvas/element/text/2d.text.fontVariantCaps6.html @@ -3,7 +3,7 @@ HTML Canvas Test: the 'fontVariantCaps' property - + diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.measure.emHeights-low-ascent.html b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.emHeights-low-ascent.html new file mode 100644 index 00000000000..7b6874d10b5 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.emHeights-low-ascent.html @@ -0,0 +1,45 @@ + + +Canvas test: 2d.text.measure.emHeights-low-ascent + + + + + + + +

                                                            2d.text.measure.emHeights-low-ascent

                                                            +

                                                            Testing emHeights with reduced ascent metric

                                                            + + +A +

                                                            Actual output:

                                                            +

                                                            FAIL (fallback content)

                                                            + +
                                                              + + diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.measure.emHeights-zero-descent.html b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.emHeights-zero-descent.html new file mode 100644 index 00000000000..c3ce994fa14 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.emHeights-zero-descent.html @@ -0,0 +1,45 @@ + + +Canvas test: 2d.text.measure.emHeights-zero-descent + + + + + + + +

                                                              2d.text.measure.emHeights-zero-descent

                                                              +

                                                              Testing emHeights with zero descent metric

                                                              + + +A +

                                                              Actual output:

                                                              +

                                                              FAIL (fallback content)

                                                              + +
                                                                + + diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.measure.emHeights.html b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.emHeights.html index e39fc06c411..0db4c30801f 100644 --- a/tests/wpt/tests/html/canvas/element/text/2d.text.measure.emHeights.html +++ b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.emHeights.html @@ -29,16 +29,16 @@ promise_test(async t => { var ctx = canvas.getContext('2d'); await document.fonts.ready; - ctx.font = '50px CanvasTest'; + ctx.font = '40px CanvasTest'; ctx.direction = 'ltr'; ctx.align = 'left' - _assertSame(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5"); - _assertSame(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5"); - _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50"); + _assertSame(ctx.measureText('A').emHeightAscent, 30, "ctx.measureText('A').emHeightAscent", "30"); + _assertSame(ctx.measureText('A').emHeightDescent, 10, "ctx.measureText('A').emHeightDescent", "10"); + _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 40, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "40"); - _assertSame(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5"); - _assertSame(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5"); - _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50"); + _assertSame(ctx.measureText('ABCD').emHeightAscent, 30, "ctx.measureText('ABCD').emHeightAscent", "30"); + _assertSame(ctx.measureText('ABCD').emHeightDescent, 10, "ctx.measureText('ABCD').emHeightDescent", "10"); + _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 40, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "40"); }, "Testing emHeights"); diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox-reduced-ascent.html b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox-reduced-ascent.html new file mode 100644 index 00000000000..653d26d820e --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox-reduced-ascent.html @@ -0,0 +1,43 @@ + + +Canvas test: 2d.text.measure.fontBoundingBox-reduced-ascent + + + + + + + +

                                                                2d.text.measure.fontBoundingBox-reduced-ascent

                                                                +

                                                                Testing fontBoundingBox for OffscreenCanvas with reduced ascent metric

                                                                + + +A +

                                                                Actual output:

                                                                +

                                                                FAIL (fallback content)

                                                                + +
                                                                  + + diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox-zero-descent.html b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox-zero-descent.html new file mode 100644 index 00000000000..785c0bc1866 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox-zero-descent.html @@ -0,0 +1,43 @@ + + +Canvas test: 2d.text.measure.fontBoundingBox-zero-descent + + + + + + + +

                                                                  2d.text.measure.fontBoundingBox-zero-descent

                                                                  +

                                                                  Testing fontBoundingBox for OffscreenCanvas with zero descent metric

                                                                  + + +A +

                                                                  Actual output:

                                                                  +

                                                                  FAIL (fallback content)

                                                                  + +
                                                                    + + diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox.html b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox.html index 375910593aa..9e7e190754d 100644 --- a/tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox.html +++ b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox.html @@ -29,15 +29,14 @@ promise_test(async t => { var ctx = canvas.getContext('2d'); await document.fonts.ready; - ctx.font = '50px CanvasTest'; + ctx.font = '40px CanvasTest'; ctx.direction = 'ltr'; ctx.align = 'left' - // approx_equals because font metrics may be rounded slightly differently by different platforms/browsers. - assert_approx_equals(ctx.measureText('A').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent"); - assert_approx_equals(ctx.measureText('A').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent"); + _assertSame(ctx.measureText('A').fontBoundingBoxAscent, 30, "ctx.measureText('A').fontBoundingBoxAscent", "30"); + _assertSame(ctx.measureText('A').fontBoundingBoxDescent, 10, "ctx.measureText('A').fontBoundingBoxDescent", "10"); - assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent"); - assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent"); + _assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 30, "ctx.measureText('ABCD').fontBoundingBoxAscent", "30"); + _assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 10, "ctx.measureText('ABCD').fontBoundingBoxDescent", "10"); }, "Testing fontBoundingBox measurements"); 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 new file mode 100644 index 00000000000..88057fc354a --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-filter-expected.html @@ -0,0 +1,17 @@ + + +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 new file mode 100644 index 00000000000..2388a06a964 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-filter.html @@ -0,0 +1,29 @@ + + + +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.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-filter.w.html new file mode 100644 index 00000000000..4c8f92d18a1 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-filter.w.html @@ -0,0 +1,43 @@ + + + + +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.alpha.blending.shadow-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.blending.shadow-expected.html index d7ba158d161..f7b633b35f6 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.blending.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.blending.shadow-expected.html @@ -21,6 +21,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; canvas2 = document.createElement("canvas"); ctx2 = canvas2.getContext("2d"); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.blending.shadow.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.blending.shadow.html index 551df36b15e..ed2d2d70af2 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.blending.shadow.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.blending.shadow.html @@ -22,6 +22,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.blending.shadow.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.blending.shadow.w.html index 6851a4a8468..1ff3ad83850 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.blending.shadow.w.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.blending.shadow.w.html @@ -24,6 +24,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.composite.shadow-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.composite.shadow-expected.html index a669a2271e9..0ae93871f52 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.composite.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.composite.shadow-expected.html @@ -21,6 +21,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; canvas2 = document.createElement("canvas"); ctx2 = canvas2.getContext("2d"); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.composite.shadow.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.composite.shadow.html index 841742ef1e7..eb579cdcce7 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.composite.shadow.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.composite.shadow.html @@ -22,6 +22,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.composite.shadow.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.composite.shadow.w.html index ef44257c0ad..60e36f4b978 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.composite.shadow.w.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.composite.shadow.w.html @@ -24,6 +24,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow-expected.html index 206eb750139..6f764c50017 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow-expected.html @@ -20,6 +20,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; canvas2 = document.createElement("canvas"); ctx2 = canvas2.getContext("2d"); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow.html index daa788cd150..65a66c977d5 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow.html @@ -21,6 +21,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow.w.html index f75db3d2490..f404601e3d1 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow.w.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.alpha.shadow.w.html @@ -23,6 +23,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.blending.shadow-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.blending.shadow-expected.html index 02275c8cc21..6f969074f93 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.blending.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.blending.shadow-expected.html @@ -20,6 +20,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; canvas2 = document.createElement("canvas"); ctx2 = canvas2.getContext("2d"); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.blending.shadow.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.blending.shadow.html index 9ad87aa0cd2..2e91f3d2d10 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.blending.shadow.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.blending.shadow.html @@ -21,6 +21,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.blending.shadow.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.blending.shadow.w.html index dc52e9e9251..d8e20d04795 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.blending.shadow.w.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.blending.shadow.w.html @@ -23,6 +23,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.composite.shadow-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.composite.shadow-expected.html index e380cccab82..b687c27f471 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.composite.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.composite.shadow-expected.html @@ -20,6 +20,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; canvas2 = document.createElement("canvas"); ctx2 = canvas2.getContext("2d"); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.composite.shadow.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.composite.shadow.html index 2e0883f5af8..1e3ab4d6a07 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.composite.shadow.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.composite.shadow.html @@ -21,6 +21,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.composite.shadow.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.composite.shadow.w.html index 66d44050581..7dfb70148b5 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.composite.shadow.w.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.composite.shadow.w.html @@ -23,6 +23,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.blending.shadow-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.blending.shadow-expected.html index d9c93719b99..62942ffeaec 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.blending.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.blending.shadow-expected.html @@ -47,6 +47,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.drawImage(img, 0, 0); }; diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.blending.shadow.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.blending.shadow.html index fd6022c85d2..62d98d967c8 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.blending.shadow.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.blending.shadow.html @@ -22,6 +22,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: [ {name: 'colorMatrix', values: [0.393, 0.769, 0.189, 0, 0, diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.blending.shadow.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.blending.shadow.w.html index 00237ef3fb1..e81efd6b8de 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.blending.shadow.w.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.blending.shadow.w.html @@ -24,6 +24,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: [ {name: 'colorMatrix', values: [0.393, 0.769, 0.189, 0, 0, diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.composite.shadow-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.composite.shadow-expected.html index 26d13a4cae9..a6499725462 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.composite.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.composite.shadow-expected.html @@ -47,6 +47,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.drawImage(img, 0, 0); }; diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.composite.shadow.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.composite.shadow.html index 069e5ccf986..d067ff2f5e4 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.composite.shadow.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.composite.shadow.html @@ -22,6 +22,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: [ {name: 'colorMatrix', values: [0.393, 0.769, 0.189, 0, 0, diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.composite.shadow.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.composite.shadow.w.html index f5829242815..39abc78b17d 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.composite.shadow.w.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.composite.shadow.w.html @@ -24,6 +24,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: [ {name: 'colorMatrix', values: [0.393, 0.769, 0.189, 0, 0, diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.shadow-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.shadow-expected.html index 9cc735fd42c..169baee29b9 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.shadow-expected.html @@ -46,6 +46,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.drawImage(img, 0, 0); }; diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.shadow.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.shadow.html index aaa2e1cfb1e..2548c211810 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.shadow.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.shadow.html @@ -21,6 +21,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: [ {name: 'colorMatrix', values: [0.393, 0.769, 0.189, 0, 0, diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.shadow.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.shadow.w.html index ff211ec7beb..5e1494422ee 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.shadow.w.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.alpha.shadow.w.html @@ -23,6 +23,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: [ {name: 'colorMatrix', values: [0.393, 0.769, 0.189, 0, 0, diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.blending.shadow-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.blending.shadow-expected.html index a48485f7e8a..91f3725f8ec 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.blending.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.blending.shadow-expected.html @@ -46,6 +46,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.drawImage(img, 0, 0); }; diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.blending.shadow.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.blending.shadow.html index 57fbca6d3b7..d0d429bee33 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.blending.shadow.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.blending.shadow.html @@ -21,6 +21,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: [ {name: 'colorMatrix', values: [0.393, 0.769, 0.189, 0, 0, diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.blending.shadow.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.blending.shadow.w.html index 674c177bc8f..ce432ea74d9 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.blending.shadow.w.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.blending.shadow.w.html @@ -23,6 +23,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: [ {name: 'colorMatrix', values: [0.393, 0.769, 0.189, 0, 0, diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.composite.shadow-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.composite.shadow-expected.html index 79191ee3910..4716bb2760f 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.composite.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.composite.shadow-expected.html @@ -46,6 +46,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.drawImage(img, 0, 0); }; diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.composite.shadow.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.composite.shadow.html index 0cc84d92cbd..b5e8b9f843a 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.composite.shadow.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.composite.shadow.html @@ -21,6 +21,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: [ {name: 'colorMatrix', values: [0.393, 0.769, 0.189, 0, 0, diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.composite.shadow.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.composite.shadow.w.html index cddcc3cdd7d..894089d88e4 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.composite.shadow.w.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.composite.shadow.w.html @@ -23,6 +23,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: [ {name: 'colorMatrix', values: [0.393, 0.769, 0.189, 0, 0, diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow-expected.html index 59cf16fa87d..13ba2dd4cde 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow-expected.html @@ -45,6 +45,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.drawImage(img, 0, 0); }; diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow.html index 5780181a3f2..7bb0ef5e134 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow.html @@ -20,6 +20,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: [ {name: 'colorMatrix', values: [0.393, 0.769, 0.189, 0, 0, diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow.w.html index 99ea29b5dc5..bc9bd48aad3 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow.w.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.shadow.w.html @@ -22,6 +22,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: [ {name: 'colorMatrix', values: [0.393, 0.769, 0.189, 0, 0, diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow-expected.html index ba56644d6c2..835e9d420ac 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow-expected.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow-expected.html @@ -19,6 +19,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; canvas2 = document.createElement("canvas"); ctx2 = canvas2.getContext("2d"); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow.html index 41a832c516e..ad60e87fb13 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow.html @@ -20,6 +20,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow.w.html index 7b78f4b739a..1fc35fd33aa 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow.w.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.shadow.w.html @@ -22,6 +22,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; ctx.beginLayer(); 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 new file mode 100644 index 00000000000..867553b45e0 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.html @@ -0,0 +1,57 @@ + + +OffscreenCanvas test: 2d.layer.layer-rendering-state-reset-in-layer + + + + +

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

                                                                    +

                                                                    Tests that layers ignore the global context filter.

                                                                    + + + 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 new file mode 100644 index 00000000000..5c2bb73e8f8 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.layer-rendering-state-reset-in-layer.worker.js @@ -0,0 +1,52 @@ +// 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. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("Tests that layers ignore the global context filter."); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + ctx.globalAlpha = 0.5; + ctx.globalCompositeOperation = 'xor'; + ctx.shadowColor = '#0000ff'; + ctx.shadowOffsetX = 10; + ctx.shadowOffsetY = 20; + ctx.shadowBlur = 30; + + _assertSame(ctx.globalAlpha, 0.5, "ctx.globalAlpha", "0.5"); + _assertSame(ctx.globalCompositeOperation, 'xor', "ctx.globalCompositeOperation", "'xor'"); + _assertSame(ctx.shadowColor, '#0000ff', "ctx.shadowColor", "'#0000ff'"); + _assertSame(ctx.shadowOffsetX, 10, "ctx.shadowOffsetX", "10"); + _assertSame(ctx.shadowOffsetY, 20, "ctx.shadowOffsetY", "20"); + _assertSame(ctx.shadowBlur, 30, "ctx.shadowBlur", "30"); + + ctx.beginLayer(); + + _assertSame(ctx.globalAlpha, 1.0, "ctx.globalAlpha", "1.0"); + _assertSame(ctx.globalCompositeOperation, 'source-over', "ctx.globalCompositeOperation", "'source-over'"); + _assertSame(ctx.shadowColor, 'rgba(0, 0, 0, 0)', "ctx.shadowColor", "'rgba(0, 0, 0, 0)'"); + _assertSame(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0"); + _assertSame(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0"); + _assertSame(ctx.shadowBlur, 0, "ctx.shadowBlur", "0"); + + ctx.endLayer(); + + _assertSame(ctx.globalAlpha, 0.5, "ctx.globalAlpha", "0.5"); + _assertSame(ctx.globalCompositeOperation, 'xor', "ctx.globalCompositeOperation", "'xor'"); + _assertSame(ctx.shadowColor, '#0000ff', "ctx.shadowColor", "'#0000ff'"); + _assertSame(ctx.shadowOffsetX, 10, "ctx.shadowOffsetX", "10"); + _assertSame(ctx.shadowOffsetY, 20, "ctx.shadowOffsetY", "20"); + _assertSame(ctx.shadowBlur, 30, "ctx.shadowBlur", "30"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.reset.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.reset.html index 4b2fe6229fe..3254c0a0489 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.reset.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.reset.html @@ -17,6 +17,7 @@ ctx.shadowOffsetX = -3; ctx.shadowOffsetY = 3; ctx.shadowColor = 'rgba(0, 30, 0, 0.3)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: {name: 'dropShadow', dx: -3, dy: 3}}); @@ -26,6 +27,7 @@ ctx.shadowOffsetX = -6; ctx.shadowOffsetY = 6; ctx.shadowColor = 'rgba(0, 60, 0, 0.6)'; + ctx.shadowBlur = 3; ctx.reset(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.reset.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.reset.w.html index 710e56bf46b..09bd6451bd0 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.reset.w.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.reset.w.html @@ -19,6 +19,7 @@ ctx.shadowOffsetX = -3; ctx.shadowOffsetY = 3; ctx.shadowColor = 'rgba(0, 30, 0, 0.3)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: {name: 'dropShadow', dx: -3, dy: 3}}); @@ -28,6 +29,7 @@ ctx.shadowOffsetX = -6; ctx.shadowOffsetY = 6; ctx.shadowColor = 'rgba(0, 60, 0, 0.6)'; + ctx.shadowBlur = 3; ctx.reset(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.several-complex-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.several-complex-expected.html index 84ad6244740..ef46f69e2a5 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.several-complex-expected.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.several-complex-expected.html @@ -17,6 +17,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'orange'; + ctx.shadowBlur = 3; var canvas2 = [5]; var ctx2 = [5]; diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.several-complex.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.several-complex.html index c4b50282805..e30f1d2fa0e 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.several-complex.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.several-complex.html @@ -19,7 +19,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'orange'; - + ctx.shadowBlur = 3 for (let i = 0; i < 5; i++) { ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.several-complex.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.several-complex.w.html index 114c5e06868..e00de635072 100644 --- a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.several-complex.w.html +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.several-complex.w.html @@ -21,7 +21,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'orange'; - + ctx.shadowBlur = 3 for (let i = 0; i < 5; i++) { ctx.beginLayer(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.basic.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.basic.html new file mode 100644 index 00000000000..7396ca120a3 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.basic.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.reset.basic + + + + +

                                                                    2d.reset.basic

                                                                    +

                                                                    reset clears to transparent black

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.basic.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.basic.worker.js new file mode 100644 index 00000000000..180bffbfac3 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.basic.worker.js @@ -0,0 +1,31 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.basic +// Description:reset clears to transparent black +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("reset clears to transparent black"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); + ctx.reset(); + _assertPixel(canvas, 0,0, 0,0,0,0); + _assertPixel(canvas, 50,25, 0,0,0,0); + _assertPixel(canvas, 25,50, 0,0,0,0); + _assertPixel(canvas, 100,50, 0,0,0,0); + _assertPixel(canvas, 0,50, 0,0,0,0); + _assertPixel(canvas, 100,0, 0,0,0,0); + t.done(); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.clip-expected.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.clip-expected.html new file mode 100644 index 00000000000..974b37fab4e --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.clip-expected.html @@ -0,0 +1,14 @@ + + +Canvas test: 2d.reset.state.clip +

                                                                    2d.reset.state.clip

                                                                    +

                                                                    check that the clip is reset

                                                                    + +

                                                                    FAIL (fallback content)

                                                                    +
                                                                    + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.clip.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.clip.html new file mode 100644 index 00000000000..2f53da7a496 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.clip.html @@ -0,0 +1,26 @@ + + + +Canvas test: 2d.reset.state.clip +

                                                                    2d.reset.state.clip

                                                                    +

                                                                    check that the clip is reset

                                                                    + +

                                                                    FAIL (fallback content)

                                                                    +
                                                                    + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.clip.w.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.clip.w.html new file mode 100644 index 00000000000..ec4bdf5b23f --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.clip.w.html @@ -0,0 +1,40 @@ + + + + +Canvas test: 2d.reset.state.clip +

                                                                    2d.reset.state.clip

                                                                    +

                                                                    check that the clip is reset

                                                                    + +

                                                                    FAIL (fallback content)

                                                                    +
                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.direction.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.direction.html new file mode 100644 index 00000000000..f2dc299e971 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.direction.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.direction + + + + +

                                                                    2d.reset.state.direction

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.direction.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.direction.worker.js new file mode 100644 index 00000000000..3d6b8350509 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.direction.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.direction +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.direction; + + ctx.direction = 'rtl'; + _assert(ctx.direction == 'rtl', "ctx.direction == 'rtl'"); + + ctx.reset(); + _assert(ctx.direction == default_value, "ctx.direction == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.fill_style.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.fill_style.html new file mode 100644 index 00000000000..1fdd2b773a6 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.fill_style.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.fill_style + + + + +

                                                                    2d.reset.state.fill_style

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.fill_style.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.fill_style.worker.js new file mode 100644 index 00000000000..c574824b0ab --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.fill_style.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.fill_style +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.fillStyle; + + ctx.fillStyle = '#ffffff'; + _assert(ctx.fillStyle == '#ffffff', "ctx.fillStyle == '#ffffff'"); + + ctx.reset(); + _assert(ctx.fillStyle == default_value, "ctx.fillStyle == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.filter.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.filter.html new file mode 100644 index 00000000000..af898c7dd12 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.filter.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.filter + + + + +

                                                                    2d.reset.state.filter

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.filter.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.filter.worker.js new file mode 100644 index 00000000000..f781a9fa340 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.filter.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.filter +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.filter; + + ctx.filter = 'blur(10px)'; + _assert(ctx.filter == 'blur(10px)', "ctx.filter == 'blur(10px)'"); + + ctx.reset(); + _assert(ctx.filter == default_value, "ctx.filter == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font.html new file mode 100644 index 00000000000..69bbf3261e2 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.font + + + + +

                                                                    2d.reset.state.font

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font.worker.js new file mode 100644 index 00000000000..ea6f4cc1846 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.font +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.font; + + ctx.font = '16px sans-serif'; + _assert(ctx.font == '16px sans-serif', "ctx.font == '16px sans-serif'"); + + ctx.reset(); + _assert(ctx.font == default_value, "ctx.font == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_kerning.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_kerning.html new file mode 100644 index 00000000000..27954486c08 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_kerning.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.font_kerning + + + + +

                                                                    2d.reset.state.font_kerning

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_kerning.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_kerning.worker.js new file mode 100644 index 00000000000..1c21249b9cb --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_kerning.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.font_kerning +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.fontKerning; + + ctx.fontKerning = 'normal'; + _assert(ctx.fontKerning == 'normal', "ctx.fontKerning == 'normal'"); + + ctx.reset(); + _assert(ctx.fontKerning == default_value, "ctx.fontKerning == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_stretch.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_stretch.html new file mode 100644 index 00000000000..b1e22173207 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_stretch.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.font_stretch + + + + +

                                                                    2d.reset.state.font_stretch

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_stretch.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_stretch.worker.js new file mode 100644 index 00000000000..71bb6aff480 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_stretch.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.font_stretch +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.fontStretch; + + ctx.fontStretch = 'ultra-condensed'; + _assert(ctx.fontStretch == 'ultra-condensed', "ctx.fontStretch == 'ultra-condensed'"); + + ctx.reset(); + _assert(ctx.fontStretch == default_value, "ctx.fontStretch == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_variant_caps.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_variant_caps.html new file mode 100644 index 00000000000..7d0518c021e --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_variant_caps.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.font_variant_caps + + + + +

                                                                    2d.reset.state.font_variant_caps

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_variant_caps.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_variant_caps.worker.js new file mode 100644 index 00000000000..e89a8bda428 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.font_variant_caps.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.font_variant_caps +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.fontVariantCaps; + + ctx.fontVariantCaps = 'unicase'; + _assert(ctx.fontVariantCaps == 'unicase', "ctx.fontVariantCaps == 'unicase'"); + + ctx.reset(); + _assert(ctx.fontVariantCaps == default_value, "ctx.fontVariantCaps == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.global_alpha.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.global_alpha.html new file mode 100644 index 00000000000..fe87aedf84b --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.global_alpha.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.global_alpha + + + + +

                                                                    2d.reset.state.global_alpha

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.global_alpha.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.global_alpha.worker.js new file mode 100644 index 00000000000..518a8cbb461 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.global_alpha.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.global_alpha +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.globalAlpha; + + ctx.globalAlpha = 0.5; + _assert(ctx.globalAlpha == 0.5, "ctx.globalAlpha == 0.5"); + + ctx.reset(); + _assert(ctx.globalAlpha == default_value, "ctx.globalAlpha == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.global_composite_operation.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.global_composite_operation.html new file mode 100644 index 00000000000..647349c94a2 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.global_composite_operation.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.global_composite_operation + + + + +

                                                                    2d.reset.state.global_composite_operation

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.global_composite_operation.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.global_composite_operation.worker.js new file mode 100644 index 00000000000..c94f15b2325 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.global_composite_operation.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.global_composite_operation +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.globalCompositeOperation; + + ctx.globalCompositeOperation = 'destination-over'; + _assert(ctx.globalCompositeOperation == 'destination-over', "ctx.globalCompositeOperation == 'destination-over'"); + + ctx.reset(); + _assert(ctx.globalCompositeOperation == default_value, "ctx.globalCompositeOperation == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_enabled.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_enabled.html new file mode 100644 index 00000000000..c0b7f29acaa --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_enabled.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.image_smoothing_enabled + + + + +

                                                                    2d.reset.state.image_smoothing_enabled

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_enabled.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_enabled.worker.js new file mode 100644 index 00000000000..7010fb899c1 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_enabled.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.image_smoothing_enabled +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.imageSmoothingEnabled; + + ctx.imageSmoothingEnabled = false; + _assert(ctx.imageSmoothingEnabled == false, "ctx.imageSmoothingEnabled == false"); + + ctx.reset(); + _assert(ctx.imageSmoothingEnabled == default_value, "ctx.imageSmoothingEnabled == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_quality.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_quality.html new file mode 100644 index 00000000000..12a6367ff97 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_quality.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.image_smoothing_quality + + + + +

                                                                    2d.reset.state.image_smoothing_quality

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_quality.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_quality.worker.js new file mode 100644 index 00000000000..74296666911 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.image_smoothing_quality.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.image_smoothing_quality +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.imageSmoothingQuality; + + ctx.imageSmoothingQuality = 'high'; + _assert(ctx.imageSmoothingQuality == 'high', "ctx.imageSmoothingQuality == 'high'"); + + ctx.reset(); + _assert(ctx.imageSmoothingQuality == default_value, "ctx.imageSmoothingQuality == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.letter_spacing.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.letter_spacing.html new file mode 100644 index 00000000000..addb0c62ad2 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.letter_spacing.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.letter_spacing + + + + +

                                                                    2d.reset.state.letter_spacing

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.letter_spacing.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.letter_spacing.worker.js new file mode 100644 index 00000000000..e0dfae0a8e5 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.letter_spacing.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.letter_spacing +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.letterSpacing; + + ctx.letterSpacing = '12px'; + _assert(ctx.letterSpacing == '12px', "ctx.letterSpacing == '12px'"); + + ctx.reset(); + _assert(ctx.letterSpacing == default_value, "ctx.letterSpacing == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_cap.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_cap.html new file mode 100644 index 00000000000..9b528b34483 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_cap.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.line_cap + + + + +

                                                                    2d.reset.state.line_cap

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_cap.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_cap.worker.js new file mode 100644 index 00000000000..c3a94f2cbb3 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_cap.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.line_cap +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.lineCap; + + ctx.lineCap = 'square'; + _assert(ctx.lineCap == 'square', "ctx.lineCap == 'square'"); + + ctx.reset(); + _assert(ctx.lineCap == default_value, "ctx.lineCap == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_dash.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_dash.html new file mode 100644 index 00000000000..fd4edf58cf0 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_dash.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.reset.state.line_dash + + + + +

                                                                    2d.reset.state.line_dash

                                                                    +

                                                                    check that the line dash is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_dash.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_dash.worker.js new file mode 100644 index 00000000000..841475d8760 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_dash.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.line_dash +// Description:check that the line dash is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the line dash is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + ctx.setLineDash([1, 2]); + + ctx.reset(); + _assert(ctx.getLineDash().length == 0, "ctx.getLineDash().length == 0"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_dash_offset.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_dash_offset.html new file mode 100644 index 00000000000..475db49f82d --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_dash_offset.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.line_dash_offset + + + + +

                                                                    2d.reset.state.line_dash_offset

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_dash_offset.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_dash_offset.worker.js new file mode 100644 index 00000000000..5e0d8dd47c8 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_dash_offset.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.line_dash_offset +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.lineDashOffset; + + ctx.lineDashOffset = 1.0; + _assert(ctx.lineDashOffset == 1.0, "ctx.lineDashOffset == 1.0"); + + ctx.reset(); + _assert(ctx.lineDashOffset == default_value, "ctx.lineDashOffset == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_join.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_join.html new file mode 100644 index 00000000000..793c1d9bc4b --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_join.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.line_join + + + + +

                                                                    2d.reset.state.line_join

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_join.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_join.worker.js new file mode 100644 index 00000000000..9d5e76757b1 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_join.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.line_join +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.lineJoin; + + ctx.lineJoin = 'bevel'; + _assert(ctx.lineJoin == 'bevel', "ctx.lineJoin == 'bevel'"); + + ctx.reset(); + _assert(ctx.lineJoin == default_value, "ctx.lineJoin == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_width.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_width.html new file mode 100644 index 00000000000..8cdf45f7005 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_width.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.line_width + + + + +

                                                                    2d.reset.state.line_width

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_width.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_width.worker.js new file mode 100644 index 00000000000..1e28f93d66a --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.line_width.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.line_width +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.lineWidth; + + ctx.lineWidth = 1; + _assert(ctx.lineWidth == 1, "ctx.lineWidth == 1"); + + ctx.reset(); + _assert(ctx.lineWidth == default_value, "ctx.lineWidth == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.miter_limit.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.miter_limit.html new file mode 100644 index 00000000000..7f47f9a6be0 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.miter_limit.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.miter_limit + + + + +

                                                                    2d.reset.state.miter_limit

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.miter_limit.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.miter_limit.worker.js new file mode 100644 index 00000000000..3945a662d49 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.miter_limit.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.miter_limit +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.miterLimit; + + ctx.miterLimit = 1.0; + _assert(ctx.miterLimit == 1.0, "ctx.miterLimit == 1.0"); + + ctx.reset(); + _assert(ctx.miterLimit == default_value, "ctx.miterLimit == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_blur.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_blur.html new file mode 100644 index 00000000000..e7075ce102e --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_blur.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.shadow_blur + + + + +

                                                                    2d.reset.state.shadow_blur

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_blur.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_blur.worker.js new file mode 100644 index 00000000000..d82933169d1 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_blur.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.shadow_blur +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.shadowBlur; + + ctx.shadowBlur = 10.0; + _assert(ctx.shadowBlur == 10.0, "ctx.shadowBlur == 10.0"); + + ctx.reset(); + _assert(ctx.shadowBlur == default_value, "ctx.shadowBlur == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_color.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_color.html new file mode 100644 index 00000000000..ad928acf46a --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_color.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.shadow_color + + + + +

                                                                    2d.reset.state.shadow_color

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_color.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_color.worker.js new file mode 100644 index 00000000000..6ad1e83be22 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_color.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.shadow_color +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.shadowColor; + + ctx.shadowColor = '#ff0000'; + _assert(ctx.shadowColor == '#ff0000', "ctx.shadowColor == '#ff0000'"); + + ctx.reset(); + _assert(ctx.shadowColor == default_value, "ctx.shadowColor == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_x.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_x.html new file mode 100644 index 00000000000..e3742e4dbc3 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_x.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.shadow_offset_x + + + + +

                                                                    2d.reset.state.shadow_offset_x

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_x.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_x.worker.js new file mode 100644 index 00000000000..4247820a4d1 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_x.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.shadow_offset_x +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.shadowOffsetX; + + ctx.shadowOffsetX = 10.0; + _assert(ctx.shadowOffsetX == 10.0, "ctx.shadowOffsetX == 10.0"); + + ctx.reset(); + _assert(ctx.shadowOffsetX == default_value, "ctx.shadowOffsetX == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_y.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_y.html new file mode 100644 index 00000000000..64901ef492b --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_y.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.shadow_offset_y + + + + +

                                                                    2d.reset.state.shadow_offset_y

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_y.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_y.worker.js new file mode 100644 index 00000000000..0c1926ebcaa --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.shadow_offset_y.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.shadow_offset_y +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.shadowOffsetY; + + ctx.shadowOffsetY = 10.0; + _assert(ctx.shadowOffsetY == 10.0, "ctx.shadowOffsetY == 10.0"); + + ctx.reset(); + _assert(ctx.shadowOffsetY == default_value, "ctx.shadowOffsetY == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.stroke_style.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.stroke_style.html new file mode 100644 index 00000000000..79803b28288 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.stroke_style.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.stroke_style + + + + +

                                                                    2d.reset.state.stroke_style

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.stroke_style.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.stroke_style.worker.js new file mode 100644 index 00000000000..99e1eaaed58 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.stroke_style.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.stroke_style +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.strokeStyle; + + ctx.strokeStyle = '#ffffff'; + _assert(ctx.strokeStyle == '#ffffff', "ctx.strokeStyle == '#ffffff'"); + + ctx.reset(); + _assert(ctx.strokeStyle == default_value, "ctx.strokeStyle == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_align.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_align.html new file mode 100644 index 00000000000..c1a33d6f3df --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_align.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.text_align + + + + +

                                                                    2d.reset.state.text_align

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_align.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_align.worker.js new file mode 100644 index 00000000000..087d3195e41 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_align.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.text_align +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.textAlign; + + ctx.textAlign = 'end'; + _assert(ctx.textAlign == 'end', "ctx.textAlign == 'end'"); + + ctx.reset(); + _assert(ctx.textAlign == default_value, "ctx.textAlign == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_baseline.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_baseline.html new file mode 100644 index 00000000000..acb56e4a008 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_baseline.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.text_baseline + + + + +

                                                                    2d.reset.state.text_baseline

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_baseline.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_baseline.worker.js new file mode 100644 index 00000000000..9a171326cb2 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_baseline.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.text_baseline +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.textBaseline; + + ctx.textBaseline = 'middle'; + _assert(ctx.textBaseline == 'middle', "ctx.textBaseline == 'middle'"); + + ctx.reset(); + _assert(ctx.textBaseline == default_value, "ctx.textBaseline == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_rendering.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_rendering.html new file mode 100644 index 00000000000..174dbb38014 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_rendering.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.text_rendering + + + + +

                                                                    2d.reset.state.text_rendering

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_rendering.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_rendering.worker.js new file mode 100644 index 00000000000..df4cea10445 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.text_rendering.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.text_rendering +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.textRendering; + + ctx.textRendering = 'geometricPrecision'; + _assert(ctx.textRendering == 'geometricPrecision', "ctx.textRendering == 'geometricPrecision'"); + + ctx.reset(); + _assert(ctx.textRendering == default_value, "ctx.textRendering == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.transformation_matrix.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.transformation_matrix.html new file mode 100644 index 00000000000..c30e459b302 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.transformation_matrix.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.reset.state.transformation_matrix + + + + +

                                                                    2d.reset.state.transformation_matrix

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.transformation_matrix.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.transformation_matrix.worker.js new file mode 100644 index 00000000000..2ae105c20e9 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.transformation_matrix.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.transformation_matrix +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + ctx.scale(2, 2); + + ctx.reset(); + _assert(ctx.getTransform().isIdentity, "ctx.getTransform().isIdentity"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.word_spacing.html b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.word_spacing.html new file mode 100644 index 00000000000..470db2cf980 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.word_spacing.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.reset.state.word_spacing + + + + +

                                                                    2d.reset.state.word_spacing

                                                                    +

                                                                    check that the state is reset

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.word_spacing.worker.js b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.word_spacing.worker.js new file mode 100644 index 00000000000..9e8c717f78a --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/reset/2d.reset.state.word_spacing.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.reset.state.word_spacing +// Description:check that the state is reset +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("check that the state is reset"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + const default_value = ctx.wordSpacing; + + ctx.wordSpacing = '12px'; + _assert(ctx.wordSpacing == '12px', "ctx.wordSpacing == '12px'"); + + ctx.reset(); + _assert(ctx.wordSpacing == default_value, "ctx.wordSpacing == default_value"); + t.done(); +}); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/text/reference/fontVariantCaps-1-ref.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps1-expected.html similarity index 100% rename from tests/wpt/tests/html/canvas/offscreen/text/reference/fontVariantCaps-1-ref.html rename to tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps1-expected.html diff --git a/tests/wpt/tests/html/canvas/offscreen/text/fontVariantCaps-1.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps1.html similarity index 96% rename from tests/wpt/tests/html/canvas/offscreen/text/fontVariantCaps-1.html rename to tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps1.html index aed6f660384..a2da7f557ce 100644 --- a/tests/wpt/tests/html/canvas/offscreen/text/fontVariantCaps-1.html +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps1.html @@ -4,7 +4,7 @@ HTML OffscreenCanvas Test: the 'fontVariantCaps' property - + diff --git a/tests/wpt/tests/html/canvas/offscreen/text/reference/fontVariantCaps-2-ref.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps2-unexpected.html similarity index 100% rename from tests/wpt/tests/html/canvas/offscreen/text/reference/fontVariantCaps-2-ref.html rename to tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps2-unexpected.html diff --git a/tests/wpt/tests/html/canvas/offscreen/text/fontVariantCaps-2.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps2.html similarity index 95% rename from tests/wpt/tests/html/canvas/offscreen/text/fontVariantCaps-2.html rename to tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps2.html index 7d8fc08cfe6..8a644fbb616 100644 --- a/tests/wpt/tests/html/canvas/offscreen/text/fontVariantCaps-2.html +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps2.html @@ -4,7 +4,7 @@ HTML OffscreenCanvas Test: the 'fontVariantCaps' property - + diff --git a/tests/wpt/tests/html/canvas/offscreen/text/reference/fontVariantCaps-3-ref.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps3-expected.html similarity index 100% rename from tests/wpt/tests/html/canvas/offscreen/text/reference/fontVariantCaps-3-ref.html rename to tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps3-expected.html diff --git a/tests/wpt/tests/html/canvas/offscreen/text/fontVariantCaps-3.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps3.html similarity index 96% rename from tests/wpt/tests/html/canvas/offscreen/text/fontVariantCaps-3.html rename to tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps3.html index 8e9ddd464a0..665a176087f 100644 --- a/tests/wpt/tests/html/canvas/offscreen/text/fontVariantCaps-3.html +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps3.html @@ -4,7 +4,7 @@ HTML OffscreenCanvas Test: the 'fontVariantCaps' property - + diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps4-expected.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps4-expected.html new file mode 100644 index 00000000000..8d96d0ab032 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps4-expected.html @@ -0,0 +1,16 @@ + + +HTML OffscreenCanvas reference + + + +
                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/text/fontVariantCaps-4.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps4.html similarity index 96% rename from tests/wpt/tests/html/canvas/offscreen/text/fontVariantCaps-4.html rename to tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps4.html index d2f4439897d..84c5fbb4469 100644 --- a/tests/wpt/tests/html/canvas/offscreen/text/fontVariantCaps-4.html +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps4.html @@ -4,7 +4,7 @@ HTML OffscreenCanvas Test: the 'fontVariantCaps' property - + diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps5-expected.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps5-expected.html new file mode 100644 index 00000000000..942bcdec9cb --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps5-expected.html @@ -0,0 +1,16 @@ + + +HTML OffscreenCanvas reference + + + +
                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/text/fontVariantCaps-5.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps5.html similarity index 96% rename from tests/wpt/tests/html/canvas/offscreen/text/fontVariantCaps-5.html rename to tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps5.html index 57b6ca70776..877d890ccc6 100644 --- a/tests/wpt/tests/html/canvas/offscreen/text/fontVariantCaps-5.html +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps5.html @@ -4,7 +4,7 @@ HTML OffscreenCanvas Test: the 'fontVariantCaps' property - + diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps6-expected.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps6-expected.html new file mode 100644 index 00000000000..dbcb8abd76a --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps6-expected.html @@ -0,0 +1,16 @@ + + +HTML OffscreenCanvas reference + + + +
                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/text/fontVariantCaps-6.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps6.html similarity index 96% rename from tests/wpt/tests/html/canvas/offscreen/text/fontVariantCaps-6.html rename to tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps6.html index 09ff6fab0c6..08c70a3a2e2 100644 --- a/tests/wpt/tests/html/canvas/offscreen/text/fontVariantCaps-6.html +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.fontVariantCaps6.html @@ -4,7 +4,7 @@ HTML OffscreenCanvas Test: the 'fontVariantCaps' property - + diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights-low-ascent.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights-low-ascent.html new file mode 100644 index 00000000000..2e2e5dde672 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights-low-ascent.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.text.measure.emHeights-low-ascent + + + + +

                                                                    2d.text.measure.emHeights-low-ascent

                                                                    +

                                                                    Testing emHeights with reduced ascent metric

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights-low-ascent.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights-low-ascent.worker.js new file mode 100644 index 00000000000..09ee7873092 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights-low-ascent.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.text.measure.emHeights-low-ascent +// Description:Testing emHeights with reduced ascent metric +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +promise_test(async t => { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + var f = new FontFace("CanvasTest-ascent256", "url('/fonts/CanvasTest-ascent256.ttf')"); + f.load(); + self.fonts.add(f); + await self.fonts.ready; + ctx.font = '40px CanvasTest-ascent256'; + ctx.direction = 'ltr'; + ctx.align = 'left' + _assertSame(ctx.measureText('A').emHeightAscent, 20, "ctx.measureText('A').emHeightAscent", "20"); + _assertSame(ctx.measureText('A').emHeightDescent, 20, "ctx.measureText('A').emHeightDescent", "20"); + _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 40, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "40"); + + _assertSame(ctx.measureText('ABCD').emHeightAscent, 20, "ctx.measureText('ABCD').emHeightAscent", "20"); + _assertSame(ctx.measureText('ABCD').emHeightDescent, 20, "ctx.measureText('ABCD').emHeightDescent", "20"); + _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 40, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "40"); + t.done(); +}, "Testing emHeights with reduced ascent metric"); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights-zero-descent.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights-zero-descent.html new file mode 100644 index 00000000000..e39c08ce821 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights-zero-descent.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.text.measure.emHeights-zero-descent + + + + +

                                                                    2d.text.measure.emHeights-zero-descent

                                                                    +

                                                                    Testing emHeights with zero descent metric

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights-zero-descent.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights-zero-descent.worker.js new file mode 100644 index 00000000000..a2f09782c98 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights-zero-descent.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.text.measure.emHeights-zero-descent +// Description:Testing emHeights with zero descent metric +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +promise_test(async t => { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + var f = new FontFace("CanvasTest-descent0", "url('/fonts/CanvasTest-descent0.ttf')"); + f.load(); + self.fonts.add(f); + await self.fonts.ready; + ctx.font = '40px CanvasTest-descent0'; + ctx.direction = 'ltr'; + ctx.align = 'left' + _assertSame(ctx.measureText('A').emHeightAscent, 40, "ctx.measureText('A').emHeightAscent", "40"); + _assertSame(ctx.measureText('A').emHeightDescent, 0, "ctx.measureText('A').emHeightDescent", "0"); + _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 40, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "40"); + + _assertSame(ctx.measureText('ABCD').emHeightAscent, 40, "ctx.measureText('ABCD').emHeightAscent", "40"); + _assertSame(ctx.measureText('ABCD').emHeightDescent, 0, "ctx.measureText('ABCD').emHeightDescent", "0"); + _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 40, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "40"); + t.done(); +}, "Testing emHeights with zero descent metric"); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.html index a92ce58a00e..0764279df31 100644 --- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.html +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.html @@ -19,16 +19,16 @@ promise_test(async t => { f.load(); document.fonts.add(f); await document.fonts.ready; - ctx.font = '50px CanvasTest'; + ctx.font = '40px CanvasTest'; ctx.direction = 'ltr'; ctx.align = 'left' - _assertSame(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5"); - _assertSame(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5"); - _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50"); + _assertSame(ctx.measureText('A').emHeightAscent, 30, "ctx.measureText('A').emHeightAscent", "30"); + _assertSame(ctx.measureText('A').emHeightDescent, 10, "ctx.measureText('A').emHeightDescent", "10"); + _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 40, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "40"); - _assertSame(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5"); - _assertSame(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5"); - _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50"); + _assertSame(ctx.measureText('ABCD').emHeightAscent, 30, "ctx.measureText('ABCD').emHeightAscent", "30"); + _assertSame(ctx.measureText('ABCD').emHeightDescent, 10, "ctx.measureText('ABCD').emHeightDescent", "10"); + _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 40, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "40"); }, "Testing emHeights"); diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js index 68db6de88d0..0385d3d737d 100644 --- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js @@ -15,16 +15,16 @@ promise_test(async t => { f.load(); self.fonts.add(f); await self.fonts.ready; - ctx.font = '50px CanvasTest'; + ctx.font = '40px CanvasTest'; ctx.direction = 'ltr'; ctx.align = 'left' - _assertSame(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5"); - _assertSame(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5"); - _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50"); + _assertSame(ctx.measureText('A').emHeightAscent, 30, "ctx.measureText('A').emHeightAscent", "30"); + _assertSame(ctx.measureText('A').emHeightDescent, 10, "ctx.measureText('A').emHeightDescent", "10"); + _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 40, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "40"); - _assertSame(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5"); - _assertSame(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5"); - _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50"); + _assertSame(ctx.measureText('ABCD').emHeightAscent, 30, "ctx.measureText('ABCD').emHeightAscent", "30"); + _assertSame(ctx.measureText('ABCD').emHeightDescent, 10, "ctx.measureText('ABCD').emHeightDescent", "10"); + _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 40, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "40"); t.done(); }, "Testing emHeights"); done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-reduced-ascent.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-reduced-ascent.html new file mode 100644 index 00000000000..51eb2c822c4 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-reduced-ascent.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.text.measure.fontBoundingBox-reduced-ascent + + + + +

                                                                    2d.text.measure.fontBoundingBox-reduced-ascent

                                                                    +

                                                                    Testing fontBoundingBox for OffscreenCanvas with reduced ascent metric

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-reduced-ascent.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-reduced-ascent.worker.js new file mode 100644 index 00000000000..dea67ff8f67 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-reduced-ascent.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.text.measure.fontBoundingBox-reduced-ascent +// Description:Testing fontBoundingBox for OffscreenCanvas with reduced ascent metric +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +promise_test(async t => { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + var f = new FontFace("CanvasTest-ascent256", "url('/fonts/CanvasTest-ascent256.ttf')"); + f.load(); + self.fonts.add(f); + await self.fonts.ready; + ctx.font = '40px CanvasTest-ascent256'; + ctx.direction = 'ltr'; + ctx.align = 'left' + _assertSame(ctx.measureText('A').fontBoundingBoxAscent, 10, "ctx.measureText('A').fontBoundingBoxAscent", "10"); + _assertSame(ctx.measureText('A').fontBoundingBoxDescent, 10, "ctx.measureText('A').fontBoundingBoxDescent", "10"); + + _assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 10, "ctx.measureText('ABCD').fontBoundingBoxAscent", "10"); + _assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 10, "ctx.measureText('ABCD').fontBoundingBoxDescent", "10"); + t.done(); +}, "Testing fontBoundingBox for OffscreenCanvas with reduced ascent metric"); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-zero-descent.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-zero-descent.html new file mode 100644 index 00000000000..ea65e58b5c5 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-zero-descent.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.text.measure.fontBoundingBox-zero-descent + + + + +

                                                                    2d.text.measure.fontBoundingBox-zero-descent

                                                                    +

                                                                    Testing fontBoundingBox for OffscreenCanvas with zero descent metric

                                                                    + + + diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-zero-descent.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-zero-descent.worker.js new file mode 100644 index 00000000000..99a886d015c --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox-zero-descent.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.text.measure.fontBoundingBox-zero-descent +// Description:Testing fontBoundingBox for OffscreenCanvas with zero descent metric +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +promise_test(async t => { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + var f = new FontFace("CanvasTest-descent0", "url('/fonts/CanvasTest-descent0.ttf')"); + f.load(); + self.fonts.add(f); + await self.fonts.ready; + ctx.font = '40px CanvasTest-descent0'; + ctx.direction = 'ltr'; + ctx.align = 'left' + _assertSame(ctx.measureText('A').fontBoundingBoxAscent, 30, "ctx.measureText('A').fontBoundingBoxAscent", "30"); + _assertSame(ctx.measureText('A').fontBoundingBoxDescent, 0, "ctx.measureText('A').fontBoundingBoxDescent", "0"); + + _assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 30, "ctx.measureText('ABCD').fontBoundingBoxAscent", "30"); + _assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 0, "ctx.measureText('ABCD').fontBoundingBoxDescent", "0"); + t.done(); +}, "Testing fontBoundingBox for OffscreenCanvas with zero descent metric"); +done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html index e3278033426..36b11f31d7f 100644 --- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html @@ -19,15 +19,14 @@ promise_test(async t => { f.load(); document.fonts.add(f); await document.fonts.ready; - ctx.font = '50px CanvasTest'; + ctx.font = '40px CanvasTest'; ctx.direction = 'ltr'; ctx.align = 'left' - // approx_equals because font metrics may be rounded slightly differently by different platforms/browsers. - assert_approx_equals(ctx.measureText('A').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent"); - assert_approx_equals(ctx.measureText('A').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent"); + _assertSame(ctx.measureText('A').fontBoundingBoxAscent, 30, "ctx.measureText('A').fontBoundingBoxAscent", "30"); + _assertSame(ctx.measureText('A').fontBoundingBoxDescent, 10, "ctx.measureText('A').fontBoundingBoxDescent", "10"); - assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent"); - assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent"); + _assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 30, "ctx.measureText('ABCD').fontBoundingBoxAscent", "30"); + _assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 10, "ctx.measureText('ABCD').fontBoundingBoxDescent", "10"); }, "Testing fontBoundingBox measurements"); diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.js index ca272760fd4..b2cde04c0da 100644 --- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.js +++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.js @@ -15,15 +15,14 @@ promise_test(async t => { f.load(); self.fonts.add(f); await self.fonts.ready; - ctx.font = '50px CanvasTest'; + ctx.font = '40px CanvasTest'; ctx.direction = 'ltr'; ctx.align = 'left' - // approx_equals because font metrics may be rounded slightly differently by different platforms/browsers. - assert_approx_equals(ctx.measureText('A').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent"); - assert_approx_equals(ctx.measureText('A').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent"); + _assertSame(ctx.measureText('A').fontBoundingBoxAscent, 30, "ctx.measureText('A').fontBoundingBoxAscent", "30"); + _assertSame(ctx.measureText('A').fontBoundingBoxDescent, 10, "ctx.measureText('A').fontBoundingBoxDescent", "10"); - assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent"); - assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent"); + _assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 30, "ctx.measureText('ABCD').fontBoundingBoxAscent", "30"); + _assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 10, "ctx.measureText('ABCD').fontBoundingBoxDescent", "10"); t.done(); }, "Testing fontBoundingBox measurements"); done(); diff --git a/tests/wpt/tests/html/canvas/offscreen/the-offscreen-canvas/2d-getcontext-options.any.js b/tests/wpt/tests/html/canvas/offscreen/the-offscreen-canvas/2d-getcontext-options.any.js index 8c4e7cfe961..930f7722ee0 100644 --- a/tests/wpt/tests/html/canvas/offscreen/the-offscreen-canvas/2d-getcontext-options.any.js +++ b/tests/wpt/tests/html/canvas/offscreen/the-offscreen-canvas/2d-getcontext-options.any.js @@ -37,5 +37,10 @@ test(() => { assert_array_equals(actual, expected, "order of operations (creation)"); actual = []; assert_equals(canvas.getContext('2d', options), context, "cached context"); - assert_array_equals(actual, expected, "order of operations (caching)"); + // Getting the cached context does not involve the options argument at all; + // the context retains its existing settings, and the new options (if any) + // are ignored. + // Therefore, there is no expectation that the 'options' dictionary will be + // accessed again here, and we cannot predict the contents, if any, of the + // 'actual' array. }); diff --git a/tests/wpt/tests/html/canvas/tools/yaml-new/layers.yaml b/tests/wpt/tests/html/canvas/tools/yaml-new/layers.yaml index babe3a4f5b1..dd33e05a4d8 100644 --- a/tests/wpt/tests/html/canvas/tools/yaml-new/layers.yaml +++ b/tests/wpt/tests/html/canvas/tools/yaml-new/layers.yaml @@ -55,6 +55,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; alpha.blending: render_states: |- ctx.globalAlpha = 0.6; @@ -69,6 +70,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; alpha.blending.shadow: render_states: |- ctx.globalAlpha = 0.6; @@ -76,6 +78,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; alpha.composite.shadow: render_states: |- ctx.globalAlpha = 0.6; @@ -83,18 +86,21 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; blending.shadow: render_states: |- ctx.globalCompositeOperation = 'multiply'; ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; composite.shadow: render_states: |- ctx.globalCompositeOperation = 'source-in'; ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + ctx.shadowBlur = 3; - name: 2d.layer.global-states.filter @@ -164,6 +170,27 @@ img.src = 'data:image/svg+xml;base64,' + btoa(svg); variants: *global-state-variants +- name: 2d.layer.global-filter + desc: Tests that layers ignore the global context filter. + size: [150, 100] + code: | + ctx.filter = 'blur(5px)' + + ctx.beginLayer(); + ctx.fillRect(10, 10, 30, 30); // `ctx.filter` applied to draw call. + ctx.endLayer(); + + ctx.beginLayer(); + ctx.filter = 'none'; + ctx.fillRect(60, 10, 30, 30); // Should not be filted by the layer. + ctx.endLayer(); + + ctx.fillRect(110, 10, 30, 30); // `ctx.filter` is still set. + reference: | + ctx.fillRect(60, 10, 30, 30); + ctx.filter = 'blur(5px)' + ctx.fillRect(10, 10, 30, 30); + ctx.fillRect(110, 10, 30, 30); - name: 2d.layer.nested desc: Tests nested canvas layers. @@ -246,6 +273,40 @@ ctx.fillRect(70, 70, 75, 50); +- name: 2d.layer.layer-rendering-state-reset-in-layer + desc: Tests that layers ignore the global context filter. + code: | + ctx.globalAlpha = 0.5; + ctx.globalCompositeOperation = 'xor'; + ctx.shadowColor = '#0000ff'; + ctx.shadowOffsetX = 10; + ctx.shadowOffsetY = 20; + ctx.shadowBlur = 30; + + @assert ctx.globalAlpha === 0.5; + @assert ctx.globalCompositeOperation === 'xor'; + @assert ctx.shadowColor === '#0000ff'; + @assert ctx.shadowOffsetX === 10; + @assert ctx.shadowOffsetY === 20; + @assert ctx.shadowBlur === 30; + + ctx.beginLayer(); + + @assert ctx.globalAlpha === 1.0; + @assert ctx.globalCompositeOperation === 'source-over'; + @assert ctx.shadowColor === 'rgba(0, 0, 0, 0)'; + @assert ctx.shadowOffsetX === 0; + @assert ctx.shadowOffsetY === 0; + @assert ctx.shadowBlur === 0; + + ctx.endLayer(); + + @assert ctx.globalAlpha === 0.5; + @assert ctx.globalCompositeOperation === 'xor'; + @assert ctx.shadowColor === '#0000ff'; + @assert ctx.shadowOffsetX === 10; + @assert ctx.shadowOffsetY === 20; + @assert ctx.shadowBlur === 30; - name: 2d.layer.unclosed desc: Check that layers are rendered even if not closed. @@ -435,7 +496,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'orange'; - + ctx.shadowBlur = 3 for (let i = 0; i < 5; i++) { ctx.beginLayer(); @@ -455,6 +516,7 @@ ctx.shadowOffsetX = -10; ctx.shadowOffsetY = 10; ctx.shadowColor = 'orange'; + ctx.shadowBlur = 3; var canvas2 = [5]; var ctx2 = [5]; @@ -479,6 +541,7 @@ ctx.shadowOffsetX = -3; ctx.shadowOffsetY = 3; ctx.shadowColor = 'rgba(0, 30, 0, 0.3)'; + ctx.shadowBlur = 3; ctx.beginLayer({filter: {name: 'dropShadow', dx: -3, dy: 3}}); @@ -488,6 +551,7 @@ ctx.shadowOffsetX = -6; ctx.shadowOffsetY = 6; ctx.shadowColor = 'rgba(0, 60, 0, 0.6)'; + ctx.shadowBlur = 3; ctx.reset(); diff --git a/tests/wpt/tests/html/canvas/tools/yaml-new/reset.yaml b/tests/wpt/tests/html/canvas/tools/yaml-new/reset.yaml index 4107166248a..fdb7f815c27 100644 --- a/tests/wpt/tests/html/canvas/tools/yaml-new/reset.yaml +++ b/tests/wpt/tests/html/canvas/tools/yaml-new/reset.yaml @@ -1,7 +1,5 @@ - name: 2d.reset.basic desc: reset clears to transparent black - canvasType: - ['HTMLCanvas'] code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); @@ -12,4 +10,156 @@ @assert pixel 100,50 == 0,0,0,0; @assert pixel 0,50 == 0,0,0,0; @assert pixel 100,0 == 0,0,0,0; - t.done(); \ No newline at end of file + t.done(); + +- name: 2d.reset.state + desc: check that the state is reset + code: | + const default_value = ctx.{{ state_name }}; + + ctx.{{ state_name }} = {{ new_value }}; + @assert ctx.{{ state_name }} == {{ new_value }}; + + ctx.reset(); + @assert ctx.{{ state_name }} == default_value; + + variants: + letter_spacing: + state_name: letterSpacing + new_value: "'12px'" + + word_spacing: + state_name: wordSpacing + new_value: "'12px'" + + fill_style: + state_name: fillStyle + new_value: "'#ffffff'" + + stroke_style: + state_name: strokeStyle + new_value: "'#ffffff'" + + filter: + state_name: filter + new_value: "'blur(10px)'" + + font: + state_name: font + new_value: "'25px sans-serif'" + + global_alpha: + state_name: globalAlpha + new_value: 0.5 + + global_composite_operation: + state_name: globalCompositeOperation + new_value: "'destination-over'" + + line_width: + state_name: lineWidth + new_value: 1 + + line_cap: + state_name: lineCap + new_value: "'square'" + + line_join: + state_name: lineJoin + new_value: "'bevel'" + + miter_limit: + state_name: miterLimit + new_value: 1.0 + + line_dash_offset: + state_name: lineDashOffset + new_value: 1.0 + + shadow_offset_x: + state_name: shadowOffsetX + new_value: 10.0 + + shadow_offset_y: + state_name: shadowOffsetY + new_value: 10.0 + + shadow_blur: + state_name: shadowBlur + new_value: 10.0 + + shadow_color: + state_name: shadowColor + new_value: "'#ff0000'" + + font: + state_name: font + new_value: "'16px sans-serif'" + + text_align: + state_name: textAlign + new_value: "'end'" + + text_baseline: + state_name: textBaseline + new_value: "'middle'" + + direction: + state_name: direction + new_value: "'rtl'" + + font_kerning: + state_name: fontKerning + new_value: "'normal'" + + font_stretch: + state_name: fontStretch + new_value: "'ultra-condensed'" + + font_variant_caps: + state_name: fontVariantCaps + new_value: "'unicase'" + + text_rendering: + state_name: textRendering + new_value: "'geometricPrecision'" + + image_smoothing_enabled: + state_name: imageSmoothingEnabled + new_value: "false" + + image_smoothing_quality: + state_name: imageSmoothingQuality + new_value: "'high'" + +- name: 2d.reset.state.transformation_matrix + desc: check that the state is reset + code: | + ctx.scale(2, 2); + + ctx.reset(); + @assert ctx.getTransform().isIdentity; + +- name: 2d.reset.state.clip + desc: check that the clip is reset + size: [200, 200] + code: | + ctx.beginPath(); + ctx.rect(0, 0, 100, 100); + ctx.clip(); + + ctx.fillRect(0, 0, 200, 200); + + ctx.reset(); + + ctx.fillRect(0, 0, 200, 200); + reference: | + ctx.fillRect(0, 0, 200, 200); + +- name: 2d.reset.state.line_dash + desc: check that the line dash is reset + code: | + ctx.setLineDash([1, 2]); + + ctx.reset(); + @assert ctx.getLineDash().length == 0; \ No newline at end of file diff --git a/tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml b/tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml index de28898152f..93c86b8b5e5 100644 --- a/tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml +++ b/tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml @@ -1060,15 +1060,14 @@ - CanvasTest code: | {{ load_font }} - ctx.font = '50px CanvasTest'; + ctx.font = '40px CanvasTest'; ctx.direction = 'ltr'; ctx.align = 'left' - // approx_equals because font metrics may be rounded slightly differently by different platforms/browsers. - assert_approx_equals(ctx.measureText('A').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent"); - assert_approx_equals(ctx.measureText('A').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent"); + @assert ctx.measureText('A').fontBoundingBoxAscent === 30; + @assert ctx.measureText('A').fontBoundingBoxDescent === 10; - assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent"); - assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent"); + @assert ctx.measureText('ABCD').fontBoundingBoxAscent === 30; + @assert ctx.measureText('ABCD').fontBoundingBoxDescent === 10; variants: *load-font-variant-definition - name: 2d.text.measure.fontBoundingBox.ahem @@ -1087,6 +1086,40 @@ @assert ctx.measureText('ABCD').fontBoundingBoxDescent === 10; variants: *load-font-variant-definition +- name: 2d.text.measure.fontBoundingBox-reduced-ascent + desc: Testing fontBoundingBox for OffscreenCanvas with reduced ascent metric + test_type: promise + fonts: + - CanvasTest-ascent256 + code: | + {{ load_font }} + ctx.font = '40px CanvasTest-ascent256'; + ctx.direction = 'ltr'; + ctx.align = 'left' + @assert ctx.measureText('A').fontBoundingBoxAscent === 10; + @assert ctx.measureText('A').fontBoundingBoxDescent === 10; + + @assert ctx.measureText('ABCD').fontBoundingBoxAscent === 10; + @assert ctx.measureText('ABCD').fontBoundingBoxDescent === 10; + variants: *load-font-variant-definition + +- name: 2d.text.measure.fontBoundingBox-zero-descent + desc: Testing fontBoundingBox for OffscreenCanvas with zero descent metric + test_type: promise + fonts: + - CanvasTest-descent0 + code: | + {{ load_font }} + ctx.font = '40px CanvasTest-descent0'; + ctx.direction = 'ltr'; + ctx.align = 'left' + @assert ctx.measureText('A').fontBoundingBoxAscent === 30; + @assert ctx.measureText('A').fontBoundingBoxDescent === 0; + + @assert ctx.measureText('ABCD').fontBoundingBoxAscent === 30; + @assert ctx.measureText('ABCD').fontBoundingBoxDescent === 0; + variants: *load-font-variant-definition + - name: 2d.text.measure.emHeights desc: Testing emHeights test_type: promise @@ -1094,16 +1127,54 @@ - CanvasTest code: | {{ load_font }} - ctx.font = '50px CanvasTest'; + ctx.font = '40px CanvasTest'; ctx.direction = 'ltr'; ctx.align = 'left' - @assert ctx.measureText('A').emHeightAscent === 37.5; - @assert ctx.measureText('A').emHeightDescent === 12.5; - @assert ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent === 50; + @assert ctx.measureText('A').emHeightAscent === 30; + @assert ctx.measureText('A').emHeightDescent === 10; + @assert ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent === 40; - @assert ctx.measureText('ABCD').emHeightAscent === 37.5; - @assert ctx.measureText('ABCD').emHeightDescent === 12.5; - @assert ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent === 50; + @assert ctx.measureText('ABCD').emHeightAscent === 30; + @assert ctx.measureText('ABCD').emHeightDescent === 10; + @assert ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent === 40; + variants: *load-font-variant-definition + +- name: 2d.text.measure.emHeights-low-ascent + desc: Testing emHeights with reduced ascent metric + test_type: promise + fonts: + - CanvasTest-ascent256 + code: | + {{ load_font }} + ctx.font = '40px CanvasTest-ascent256'; + ctx.direction = 'ltr'; + ctx.align = 'left' + @assert ctx.measureText('A').emHeightAscent === 20; + @assert ctx.measureText('A').emHeightDescent === 20; + @assert ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent === 40; + + @assert ctx.measureText('ABCD').emHeightAscent === 20; + @assert ctx.measureText('ABCD').emHeightDescent === 20; + @assert ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent === 40; + variants: *load-font-variant-definition + +- name: 2d.text.measure.emHeights-zero-descent + desc: Testing emHeights with zero descent metric + test_type: promise + fonts: + - CanvasTest-descent0 + code: | + {{ load_font }} + ctx.font = '40px CanvasTest-descent0'; + ctx.direction = 'ltr'; + ctx.align = 'left' + @assert ctx.measureText('A').emHeightAscent === 40; + @assert ctx.measureText('A').emHeightDescent === 0; + @assert ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent === 40; + + @assert ctx.measureText('ABCD').emHeightAscent === 40; + @assert ctx.measureText('ABCD').emHeightDescent === 0; + @assert ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent === 40; variants: *load-font-variant-definition - name: 2d.text.measure.baselines diff --git a/tests/wpt/tests/html/dom/render-blocking/document-render-blocking-partial.tentative.html b/tests/wpt/tests/html/dom/render-blocking/document-render-blocking-partial.tentative.html new file mode 100644 index 00000000000..89ab05ed845 --- /dev/null +++ b/tests/wpt/tests/html/dom/render-blocking/document-render-blocking-partial.tentative.html @@ -0,0 +1,34 @@ + + + + + + `blocking=render` defers frames until the attribute is set + + + +
                                                                    + +
                                                                    + +
                                                                    + + diff --git a/tests/wpt/tests/html/dom/render-blocking/document-render-blocking.tentative.html b/tests/wpt/tests/html/dom/render-blocking/document-render-blocking.tentative.html new file mode 100644 index 00000000000..909029b73db --- /dev/null +++ b/tests/wpt/tests/html/dom/render-blocking/document-render-blocking.tentative.html @@ -0,0 +1,33 @@ + + + + + + `blocking=render` defers frames until complete document parsed + + + +
                                                                    + +
                                                                    + +
                                                                    + + diff --git a/tests/wpt/tests/html/dom/render-blocking/support/utils.js b/tests/wpt/tests/html/dom/render-blocking/support/utils.js new file mode 100644 index 00000000000..9a890ab685c --- /dev/null +++ b/tests/wpt/tests/html/dom/render-blocking/support/utils.js @@ -0,0 +1,10 @@ +function jank(ms) { + let start = performance.now(); + while (performance.now() < start + ms); +} + +function jankMany(ms, times) { + for (let i = 0; i < times; i++) { + jank(ms); + } +} diff --git a/tests/wpt/tests/html/semantics/embedded-content/the-embed-element/embed-named-attribute-detached-context-crash.html b/tests/wpt/tests/html/semantics/embedded-content/the-embed-element/embed-named-attribute-detached-context-crash.html new file mode 100644 index 00000000000..7445b49f0fe --- /dev/null +++ b/tests/wpt/tests/html/semantics/embedded-content/the-embed-element/embed-named-attribute-detached-context-crash.html @@ -0,0 +1,13 @@ + + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-ask-for-reset.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-ask-for-reset.html new file mode 100644 index 00000000000..7cf2aff5159 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-ask-for-reset.html @@ -0,0 +1,119 @@ + + +HTMLSelectListElement Test: ask-for-reset + + + +
                                                                    + + + + + + + + + + + + + + + +
                                                                    + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-disabled.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-disabled.tentative.html similarity index 72% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-disabled.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-disabled.tentative.html index 0fe722fdfed..f557804d9bf 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-disabled.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-disabled.tentative.html @@ -13,16 +13,16 @@ function OnFocus(event) { } - + - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-events.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-events.tentative.html similarity index 55% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-events.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-events.tentative.html index 830daaabc38..94577815cd0 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-events.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-events.tentative.html @@ -1,59 +1,59 @@ -HTMLSelectMenuElement Test: events +HTMLSelectListElement Test: events - +
                                                                    - +
                                                                    -
                                                                    + - + - + - + - + - + - + - + - - + + - + - + - - - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-explicit-size-ref.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-explicit-size-ref.tentative.html new file mode 100644 index 00000000000..3e967d03ed0 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-explicit-size-ref.tentative.html @@ -0,0 +1,9 @@ + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-explicit-size.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-explicit-size.tentative.html new file mode 100644 index 00000000000..d9e52a9fff7 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-explicit-size.tentative.html @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-font-size-ref.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-font-size-ref.tentative.html new file mode 100644 index 00000000000..46d6dbdb9b2 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-font-size-ref.tentative.html @@ -0,0 +1,8 @@ + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-font-size.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-font-size.tentative.html new file mode 100644 index 00000000000..9c30e71bda3 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-font-size.tentative.html @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-form-attribute.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-form-attribute.tentative.html similarity index 98% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-form-attribute.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-form-attribute.tentative.html index 16ee1b80456..c1872b93039 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-form-attribute.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-form-attribute.tentative.html @@ -1,4 +1,4 @@ - @@ -49,7 +49,7 @@
                                                                    - + - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-form-state-restore.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-form-state-restore.tentative.html similarity index 76% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-form-state-restore.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-form-state-restore.tentative.html index 1002355a5ab..f98494a9507 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-form-state-restore.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-form-state-restore.tentative.html @@ -1,37 +1,37 @@ -HTMLSelectMenuElement Test: form state restore +HTMLSelectListElement Test: form state restore - + - +
                                                                    - + - +
                                                                    - + - +
                                                                    diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-keyboard.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-keyboard.tentative.html new file mode 100644 index 00000000000..38c5fd7dc4e --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-keyboard.tentative.html @@ -0,0 +1,123 @@ + +HTMLSelectListElement Test: keyboard accessibility + + + + + + +
                                                                    button
                                                                    + + + +
                                                                    + + + + + + +
                                                                    button
                                                                    + + + +
                                                                    + + +
                                                                    button
                                                                    + + + +
                                                                    + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-labels.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-labels.tentative.html new file mode 100644 index 00000000000..819da49fdd4 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-labels.tentative.html @@ -0,0 +1,29 @@ + + +HTMLSelectListElement Test: labels + + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-listbox-fallback-change-crash.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-listbox-fallback-change-crash.tentative.html similarity index 77% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-listbox-fallback-change-crash.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-listbox-fallback-change-crash.tentative.html index 690a98dcf32..1a9e81d8178 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-listbox-fallback-change-crash.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-listbox-fallback-change-crash.tentative.html @@ -3,19 +3,19 @@ - +
                                                                    - +
                                                                    -
                                                                    -
                                                                    + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-many-options.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-many-options.tentative.html similarity index 82% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-many-options.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-many-options.tentative.html index b828326197b..36bae1a82ba 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-many-options.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-many-options.tentative.html @@ -1,6 +1,6 @@ -HTMLSelectMenuElement Test: many options +HTMLSelectListElement Test: many options @@ -9,13 +9,13 @@ - -
                                                                    + +
                                                                    @@ -115,7 +115,7 @@
                                                                    - +

                                                                    diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-end-aligned-ref.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-end-aligned-ref.tentative.html similarity index 74% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-end-aligned-ref.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-end-aligned-ref.tentative.html index 5985df5936b..b1df8a65816 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-end-aligned-ref.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-end-aligned-ref.tentative.html @@ -5,15 +5,15 @@ div { display:flex; justify-content:flex-end; } -selectmenu { +selectlist { width:100px; } -selectmenu::part(button) { +selectlist::part(button) { border-style:none; background-color:rgba(0,0,0,0) }
                                                                    - + - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-end-aligned.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-end-aligned.tentative.html similarity index 58% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-end-aligned.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-end-aligned.tentative.html index a419108e3d2..c2540acb368 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-end-aligned.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-end-aligned.tentative.html @@ -1,7 +1,7 @@ - + - +
                                                                    - + - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-part-ref.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-part-ref.html new file mode 100644 index 00000000000..1a1302b96db --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-part-ref.html @@ -0,0 +1,9 @@ + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-part.tentative.html similarity index 56% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-part.tentative.html index b6e94c947a4..dedabc9bab7 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-part.tentative.html @@ -1,12 +1,12 @@ - + - + - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-slot-ref.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-slot-ref.html new file mode 100644 index 00000000000..e910df4c5ab --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-slot-ref.html @@ -0,0 +1,13 @@ + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-slot.tentative.html similarity index 61% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-slot.tentative.html index fff911005d8..de43a02c33f 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-slot.tentative.html @@ -1,8 +1,8 @@ - + - +
                                                                    marker
                                                                    -
                                                                    + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-visible-overflow-ref.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-visible-overflow-ref.tentative.html similarity index 67% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-visible-overflow-ref.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-visible-overflow-ref.tentative.html index 674de192e4c..dda53db5bf8 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-visible-overflow-ref.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-visible-overflow-ref.tentative.html @@ -1,10 +1,10 @@
                                                                    - + - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-visible-overflow.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-visible-overflow.tentative.html similarity index 59% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-visible-overflow.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-visible-overflow.tentative.html index 6d39f6f3c50..345c2059837 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-visible-overflow.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-marker-visible-overflow.tentative.html @@ -1,14 +1,14 @@ - + - +
                                                                    - + - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-nested.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-nested.tentative.html similarity index 52% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-nested.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-nested.tentative.html index 06b4fb6eb24..1d15fb90160 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-nested.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-nested.tentative.html @@ -1,23 +1,23 @@ -HTMLSelectMenuElement Test: nested selects +HTMLSelectListElement Test: nested selects - +
                                                                    - + - +
                                                                    -
                                                                    + - +
                                                                    -
                                                                    + - +
                                                                    - -
                                                                    button0
                                                                    + +
                                                                    button0
                                                                    -
                                                                    -
                                                                    button1
                                                                    + +
                                                                    button1
                                                                    -
                                                                    + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-displayed-ref.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-option-arbitrary-content-displayed-ref.tentative.html similarity index 92% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-displayed-ref.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-option-arbitrary-content-displayed-ref.tentative.html index c890bb63f1b..61b1c1a7108 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-displayed-ref.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-option-arbitrary-content-displayed-ref.tentative.html @@ -3,16 +3,16 @@ - + - +
                                                                    option with image displayed
                                                                    - +
                                                                    -
                                                                    + @@ -12,17 +12,17 @@ - - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-focusable.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-option-focusable.tentative.html similarity index 65% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-focusable.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-option-focusable.tentative.html index a78b972a2a7..993ef007e68 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-focusable.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-option-focusable.tentative.html @@ -1,6 +1,6 @@ -HTMLSelectMenuElement Test: option facusable +HTMLSelectListElement Test: option facusable @@ -8,11 +8,11 @@ - + - + - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-overflow-x-ref.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-overflow-x-ref.tentative.html similarity index 63% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-overflow-x-ref.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-overflow-x-ref.tentative.html index 8fd33dbc072..df87060359b 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-overflow-x-ref.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-overflow-x-ref.tentative.html @@ -1,13 +1,13 @@ - + - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-overflow-x.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-overflow-x.tentative.html similarity index 56% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-overflow-x.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-overflow-x.tentative.html index 0e0c3dba5e8..93c1b948a09 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-overflow-x.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-overflow-x.tentative.html @@ -1,16 +1,16 @@ - + - + - + - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-parts-structure.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-parts-structure.tentative.html new file mode 100644 index 00000000000..f60ba65be17 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-parts-structure.tentative.html @@ -0,0 +1,530 @@ + + +HTMLSelectListElement Test: part structure + + + + + + + + +
                                                                    + + +
                                                                    three
                                                                    +
                                                                    + +
                                                                    + + +
                                                                    +
                                                                    + Custom button +
                                                                    + + +
                                                                    +
                                                                    + + +
                                                                    + Custom button +
                                                                    + + +
                                                                    +
                                                                    + +
                                                                    + This is some text. + + More text. +
                                                                    +
                                                                    + + +
                                                                    +
                                                                    button0
                                                                    +
                                                                    + +
                                                                    + + +
                                                                    button0
                                                                    +
                                                                    +
                                                                    + + +
                                                                    +
                                                                    +
                                                                    + + +
                                                                    +
                                                                    button0
                                                                    +
                                                                    +
                                                                    + + +
                                                                    + + + +
                                                                    +
                                                                    +
                                                                    + + + +
                                                                    +
                                                                    +
                                                                    + + + +
                                                                    + +
                                                                    + + +
                                                                    +
                                                                    + + +
                                                                    +
                                                                    +
                                                                    + + + + + + + + +
                                                                    + +
                                                                    +
                                                                    Test
                                                                    +
                                                                    + + +
                                                                    +
                                                                    button0
                                                                    +
                                                                    +
                                                                    +
                                                                    + + +
                                                                    +
                                                                    +
                                                                    + + +
                                                                    +
                                                                    +
                                                                    button0
                                                                    +
                                                                    button1
                                                                    +
                                                                    +
                                                                    button2
                                                                    +
                                                                    +
                                                                    +
                                                                    +
                                                                    + + +
                                                                    +
                                                                    +
                                                                    + + +
                                                                    +
                                                                    +
                                                                    + + +
                                                                    button0
                                                                    + + +
                                                                    + + +
                                                                    + +
                                                                    + + +
                                                                    +
                                                                    +
                                                                    button
                                                                    +
                                                                    +
                                                                    + +
                                                                    + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-popover-position-with-zoom.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-popover-position-with-zoom.tentative.html new file mode 100644 index 00000000000..2f61af1a11f --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-popover-position-with-zoom.tentative.html @@ -0,0 +1,135 @@ + + +HTMLSelectListElement Test: popover position with zoom + + + + + + + + + + +
                                                                    Custom bottom left
                                                                    +
                                                                    + + + +
                                                                    +
                                                                    +
                                                                    + + +
                                                                    Custom top left
                                                                    +
                                                                    + + + +
                                                                    +
                                                                    + + +
                                                                    Custom bottom right
                                                                    +
                                                                    + + + +
                                                                    +
                                                                    + + +
                                                                    Custom top right
                                                                    +
                                                                    + + + +
                                                                    +
                                                                    + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-popover-position.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-popover-position.tentative.html new file mode 100644 index 00000000000..a19e2b0d282 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-popover-position.tentative.html @@ -0,0 +1,115 @@ + + +HTMLSelectListElement Test: popover position + + + + + + + + + + +
                                                                    + + + +
                                                                    +
                                                                    +
                                                                    + + +
                                                                    + + + +
                                                                    +
                                                                    + + +
                                                                    + + + +
                                                                    +
                                                                    + + +
                                                                    + + + +
                                                                    +
                                                                    + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-popover.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-popover.tentative.html new file mode 100644 index 00000000000..b7663875ce0 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-popover.tentative.html @@ -0,0 +1,107 @@ + +HTMLSelectListElement Test: popover + + + + + + + + + +
                                                                    I'm a div with no part attr
                                                                    + + +
                                                                    + + +
                                                                    + Custom button +
                                                                    +
                                                                    + + + +
                                                                    +
                                                                    + + + +
                                                                    +
                                                                    + + +
                                                                    +
                                                                    + +
                                                                    +
                                                                    +
                                                                    + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-pseudo-light-dismiss-invalidation.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-pseudo-light-dismiss-invalidation.tentative.html new file mode 100644 index 00000000000..bda5842a37c --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-pseudo-light-dismiss-invalidation.tentative.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-pseudo-open-closed.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-pseudo-open-closed.tentative.html new file mode 100644 index 00000000000..3184fe786c1 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-pseudo-open-closed.tentative.html @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-required-attribute.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-required-attribute.tentative.html similarity index 58% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-required-attribute.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-required-attribute.tentative.html index ea6d1b215d7..ef4408915b3 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-required-attribute.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-required-attribute.tentative.html @@ -1,37 +1,37 @@ -HTMLSelectMenuElement Test: required attribute +HTMLSelectListElement Test: required attribute - + - + - + - + - + - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-rtl-ref.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-rtl-ref.tentative.html new file mode 100644 index 00000000000..70d2b98d330 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-rtl-ref.tentative.html @@ -0,0 +1,9 @@ + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-rtl.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-rtl.tentative.html similarity index 50% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-rtl.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-rtl.tentative.html index 90c06c93d76..24f79596321 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-rtl.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-rtl.tentative.html @@ -1,14 +1,14 @@ - + - + - + - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-behavior-ref.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-behavior-ref.html new file mode 100644 index 00000000000..7d76f1c8176 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-behavior-ref.html @@ -0,0 +1,9 @@ + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-behavior.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-behavior.tentative.html similarity index 66% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-behavior.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-behavior.tentative.html index 799b4451141..a43e43d267a 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-behavior.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-behavior.tentative.html @@ -1,8 +1,8 @@ - + - +
                                                                    -
                                                                    + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-part-ref.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-part-ref.html new file mode 100644 index 00000000000..3be168beba9 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-part-ref.html @@ -0,0 +1,9 @@ + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-part.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-part.tentative.html similarity index 53% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-part.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-part.tentative.html index e41d2ddfd66..8fc05480d15 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-part.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-part.tentative.html @@ -1,12 +1,12 @@ - + - + - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-slot-ref.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-slot-ref.html new file mode 100644 index 00000000000..ecb8c886a1d --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-slot-ref.html @@ -0,0 +1,13 @@ + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-slot.tentative.html similarity index 62% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-slot.tentative.html index 9bbf2dfc06e..c69a962c295 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-selected-value-slot.tentative.html @@ -1,8 +1,8 @@ - + - +
                                                                    new selected value
                                                                    -
                                                                    + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-tab-navigation.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-tab-navigation.tentative.html similarity index 71% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-tab-navigation.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-tab-navigation.tentative.html index 3d583335ed1..3b7d9d3d9ad 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-tab-navigation.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-tab-navigation.tentative.html @@ -6,11 +6,11 @@ - + - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-tabindex-order.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-tabindex-order.tentative.html similarity index 81% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-tabindex-order.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-tabindex-order.tentative.html index b4fa2a1e757..c93efe1118e 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-tabindex-order.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-tabindex-order.tentative.html @@ -6,11 +6,11 @@ - + - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-user-select.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-user-select.tentative.html similarity index 81% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-user-select.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-user-select.tentative.html index dc6e2e230c0..078e8a4d83c 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-user-select.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-user-select.tentative.html @@ -4,30 +4,30 @@ - + - + - +
                                                                    button
                                                                    listbox
                                                                    -
                                                                    + - +
                                                                    button
                                                                    listbox
                                                                    -
                                                                    + - +
                                                                    button
                                                                    listbox
                                                                    -
                                                                    + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-validity.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-validity.tentative.html new file mode 100644 index 00000000000..2b2033f6688 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-validity.tentative.html @@ -0,0 +1,88 @@ + + +HTMLSelectListElement Test: validity + + + + + + + + + + + +
                                                                    + + +
                                                                    + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-value-option.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-value-option.tentative.html similarity index 68% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-value-option.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-value-option.tentative.html index bf58630816a..243067937cb 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-value-option.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-value-option.tentative.html @@ -4,17 +4,17 @@ - + - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-value-selectedOption.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-value-selectedOption.tentative.html new file mode 100644 index 00000000000..20e72ac1dcb --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-value-selectedOption.tentative.html @@ -0,0 +1,224 @@ + +HTMLSelectListElement Test: value and selectedOption + + + + + + + + +
                                                                    I'm a div with no part attr
                                                                    + + +
                                                                    + + +
                                                                    one
                                                                    +
                                                                    two
                                                                    +
                                                                    I'm a div with no part attr
                                                                    +
                                                                    three
                                                                    +
                                                                    four
                                                                    +
                                                                    + + +
                                                                    I'm a div with no part attr
                                                                    + + + +
                                                                    + + +
                                                                    +
                                                                    Default custom selected-value text
                                                                    +
                                                                    + + +
                                                                    + + +
                                                                    +
                                                                    Default custom selected-value text
                                                                    +
                                                                    +
                                                                    + + +
                                                                    +
                                                                    + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-writingmode-lr.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-writingmode-lr.tentative.html similarity index 56% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-writingmode-lr.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-writingmode-lr.tentative.html index 15bd5916bdf..9973696ddd7 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-writingmode-lr.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-writingmode-lr.tentative.html @@ -1,8 +1,8 @@ - + - + - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-writingmode-rl.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-writingmode-rl.tentative.html similarity index 56% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-writingmode-rl.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-writingmode-rl.tentative.html index 9cc1056e35a..dc74203e69c 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-writingmode-rl.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-writingmode-rl.tentative.html @@ -1,8 +1,8 @@ - + - + - + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-writingmode-tb-ref.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-writingmode-tb-ref.html new file mode 100644 index 00000000000..db922f5f9fb --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-writingmode-tb-ref.html @@ -0,0 +1,4 @@ + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/support/back.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/support/back.html similarity index 66% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/support/back.html rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/support/back.html index 0d13a0f3b7c..9cc5a1d6034 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/support/back.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/support/back.html @@ -1 +1,2 @@ + diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/support/fake-selectmenu.js b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/support/fake-selectlist.js similarity index 63% rename from tests/wpt/tests/html/semantics/forms/the-selectmenu-element/support/fake-selectmenu.js rename to tests/wpt/tests/html/semantics/forms/the-selectlist-element/support/fake-selectlist.js index 2e084450a36..c17fe1afc5f 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/support/fake-selectmenu.js +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/support/fake-selectlist.js @@ -2,14 +2,14 @@ function replaceChildElement(newChild, oldChild) { oldChild.parentElement.replaceChild(newChild, oldChild); } -function createFakeSelectmenu(selectedValueText) { - const selectmenu = document.createElement('div'); - selectmenu.classList.add('fake-selectmenu-internal-selectmenu-button'); - selectmenu.innerHTML = ` -
                                                                    -
                                                                    +function createFakeSelectlist(selectedValueText) { + const selectlist = document.createElement('div'); + selectlist.classList.add('fake-selectlist-internal-selectlist-button'); + selectlist.innerHTML = ` +
                                                                    +
                                                                    - - - diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-font-size-ref.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-font-size-ref.tentative.html deleted file mode 100644 index a01455aab09..00000000000 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-font-size-ref.tentative.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-font-size.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-font-size.tentative.html deleted file mode 100644 index 4a4d129cb94..00000000000 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-font-size.tentative.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-keyboard.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-keyboard.tentative.html deleted file mode 100644 index 9f937d7b700..00000000000 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-keyboard.tentative.html +++ /dev/null @@ -1,123 +0,0 @@ - -HTMLSelectMenuElement Test: keyboard accessibility - - - - - - -
                                                                    button
                                                                    - - - -
                                                                    - - - - - - -
                                                                    button
                                                                    - - - -
                                                                    - - -
                                                                    button
                                                                    - - - -
                                                                    - diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-labels.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-labels.tentative.html deleted file mode 100644 index 6f940432999..00000000000 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-labels.tentative.html +++ /dev/null @@ -1,29 +0,0 @@ - - -HTMLSelectMenuElement Test: labels - - - - - - - - - - - - - - - diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part-ref.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part-ref.html deleted file mode 100644 index cec447509eb..00000000000 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part-ref.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot-ref.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot-ref.html deleted file mode 100644 index 54bdefb7619..00000000000 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot-ref.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-parts-structure.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-parts-structure.tentative.html deleted file mode 100644 index 08c283322d5..00000000000 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-parts-structure.tentative.html +++ /dev/null @@ -1,530 +0,0 @@ - - -HTMLSelectMenuElement Test: part structure - - - - - - - - -
                                                                    - - -
                                                                    three
                                                                    -
                                                                    - -
                                                                    - - -
                                                                    -
                                                                    - Custom button -
                                                                    - - -
                                                                    -
                                                                    - - -
                                                                    - Custom button -
                                                                    - - -
                                                                    -
                                                                    - -
                                                                    - This is some text. - - More text. -
                                                                    -
                                                                    - - -
                                                                    -
                                                                    button0
                                                                    -
                                                                    - -
                                                                    - - -
                                                                    button0
                                                                    -
                                                                    -
                                                                    - - -
                                                                    -
                                                                    -
                                                                    - - -
                                                                    -
                                                                    button0
                                                                    -
                                                                    -
                                                                    - - -
                                                                    - - - -
                                                                    -
                                                                    -
                                                                    - - - -
                                                                    -
                                                                    -
                                                                    - - - -
                                                                    - -
                                                                    - - -
                                                                    -
                                                                    - - -
                                                                    -
                                                                    -
                                                                    - - - - - - - - -
                                                                    - -
                                                                    -
                                                                    Test
                                                                    -
                                                                    - - -
                                                                    -
                                                                    button0
                                                                    -
                                                                    -
                                                                    -
                                                                    - - -
                                                                    -
                                                                    -
                                                                    - - -
                                                                    -
                                                                    -
                                                                    button0
                                                                    -
                                                                    button1
                                                                    -
                                                                    -
                                                                    button2
                                                                    -
                                                                    -
                                                                    -
                                                                    -
                                                                    - - -
                                                                    -
                                                                    -
                                                                    - - -
                                                                    -
                                                                    -
                                                                    - - -
                                                                    button0
                                                                    - - -
                                                                    - - -
                                                                    - -
                                                                    - - -
                                                                    -
                                                                    -
                                                                    button
                                                                    -
                                                                    -
                                                                    - -
                                                                    - - diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-popover-position-with-zoom.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-popover-position-with-zoom.tentative.html deleted file mode 100644 index 85d73d6a407..00000000000 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-popover-position-with-zoom.tentative.html +++ /dev/null @@ -1,135 +0,0 @@ - - -HTMLSelectMenuElement Test: popover position with zoom - - - - - - - - - - -
                                                                    Custom bottom left
                                                                    -
                                                                    - - - -
                                                                    -
                                                                    -
                                                                    - - -
                                                                    Custom top left
                                                                    -
                                                                    - - - -
                                                                    -
                                                                    - - -
                                                                    Custom bottom right
                                                                    -
                                                                    - - - -
                                                                    -
                                                                    - - -
                                                                    Custom top right
                                                                    -
                                                                    - - - -
                                                                    -
                                                                    - - diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-popover-position.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-popover-position.tentative.html deleted file mode 100644 index d83015f4efd..00000000000 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-popover-position.tentative.html +++ /dev/null @@ -1,115 +0,0 @@ - - -HTMLSelectMenuElement Test: popover position - - - - - - - - - - -
                                                                    - - - -
                                                                    -
                                                                    -
                                                                    - - -
                                                                    - - - -
                                                                    -
                                                                    - - -
                                                                    - - - -
                                                                    -
                                                                    - - -
                                                                    - - - -
                                                                    -
                                                                    - - diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-popover.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-popover.tentative.html deleted file mode 100644 index 74aa4f828c3..00000000000 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-popover.tentative.html +++ /dev/null @@ -1,107 +0,0 @@ - -HTMLSelectMenuElement Test: popover - - - - - - - - - -
                                                                    I'm a div with no part attr
                                                                    - - -
                                                                    - - -
                                                                    - Custom button -
                                                                    -
                                                                    - - - -
                                                                    -
                                                                    - - - -
                                                                    -
                                                                    - - -
                                                                    -
                                                                    - -
                                                                    -
                                                                    -
                                                                    - diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-pseudo-light-dismiss-invalidation.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-pseudo-light-dismiss-invalidation.tentative.html deleted file mode 100644 index dfbab93de82..00000000000 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-pseudo-light-dismiss-invalidation.tentative.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-pseudo-open-closed.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-pseudo-open-closed.tentative.html deleted file mode 100644 index b1400e04265..00000000000 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-pseudo-open-closed.tentative.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-rtl-ref.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-rtl-ref.tentative.html deleted file mode 100644 index 42b2541fd51..00000000000 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-rtl-ref.tentative.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-behavior-ref.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-behavior-ref.html deleted file mode 100644 index bf468c5516c..00000000000 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-behavior-ref.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-part-ref.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-part-ref.html deleted file mode 100644 index 744846b5511..00000000000 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-part-ref.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot-ref.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot-ref.html deleted file mode 100644 index 3b322bf7915..00000000000 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot-ref.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-validity.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-validity.tentative.html deleted file mode 100644 index a58fe54ff6a..00000000000 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-validity.tentative.html +++ /dev/null @@ -1,88 +0,0 @@ - - -HTMLSelectMenuElement Test: validity - - - - - - - - - - - -
                                                                    - - -
                                                                    - - diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-value-selectedOption.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-value-selectedOption.tentative.html deleted file mode 100644 index 8998a07e03c..00000000000 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-value-selectedOption.tentative.html +++ /dev/null @@ -1,224 +0,0 @@ - -HTMLSelectMenuElement Test: value and selectedOption - - - - - - - - -
                                                                    I'm a div with no part attr
                                                                    - - -
                                                                    - - -
                                                                    one
                                                                    -
                                                                    two
                                                                    -
                                                                    I'm a div with no part attr
                                                                    -
                                                                    three
                                                                    -
                                                                    four
                                                                    -
                                                                    - - -
                                                                    I'm a div with no part attr
                                                                    - - - -
                                                                    - - -
                                                                    -
                                                                    Default custom selected-value text
                                                                    -
                                                                    - - -
                                                                    - - -
                                                                    -
                                                                    Default custom selected-value text
                                                                    -
                                                                    -
                                                                    - - -
                                                                    -
                                                                    - - - - - - - - - - - - - - diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-writingmode-tb-ref.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-writingmode-tb-ref.html deleted file mode 100644 index d2486ad9cc2..00000000000 --- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-writingmode-tb-ref.html +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/tests/wpt/tests/navigation-api/navigate-event/navigate-navigation-back-same-document.html b/tests/wpt/tests/navigation-api/navigate-event/navigate-navigation-back-same-document.html index 431d38449c3..e587569a3c6 100644 --- a/tests/wpt/tests/navigation-api/navigate-event/navigate-navigation-back-same-document.html +++ b/tests/wpt/tests/navigation-api/navigate-event/navigate-navigation-back-same-document.html @@ -23,6 +23,7 @@ async_test(t => { assert_equals(e.destination.index, 0); assert_equals(e.formData, null); assert_equals(e.info, "hi"); + assert_not_equals(e.hasUAVisualTransition, undefined); }); assert_true(navigation.canGoBack); navigation.back({ info: "hi" }); diff --git a/tests/wpt/tests/requestidlecallback/callback-idle-periods.html b/tests/wpt/tests/requestidlecallback/callback-idle-periods.html index 3c2de61bfea..f515755e353 100644 --- a/tests/wpt/tests/requestidlecallback/callback-idle-periods.html +++ b/tests/wpt/tests/requestidlecallback/callback-idle-periods.html @@ -16,7 +16,7 @@ async_test(function() { var remaining = deadline.timeRemaining(); var new_deadline = now + remaining; if (previous_deadline != undefined) { - assert_true(new_deadline > previous_deadline, "A requestIdleCallback scheduled during an idle period should be called back with a deadline greater than that in the current idle period."); + assert_true(new_deadline >= previous_deadline, "A requestIdleCallback scheduled during an idle period should be called back with a deadline greater than or equal to that in the current idle period."); } // Schedule a new requestIdleCallback. diff --git a/tests/wpt/tests/resources/test/tests/functional/idlharness/IdlDictionary/test_partial_interface_of.html b/tests/wpt/tests/resources/test/tests/functional/idlharness/IdlDictionary/test_partial_interface_of.html index 05e6e0b1e06..f635768c69f 100644 --- a/tests/wpt/tests/resources/test/tests/functional/idlharness/IdlDictionary/test_partial_interface_of.html +++ b/tests/wpt/tests/resources/test/tests/functional/idlharness/IdlDictionary/test_partial_interface_of.html @@ -3,7 +3,6 @@ - idlharness: Partial dictionary diff --git a/tests/wpt/tests/resources/test/tests/functional/idlharness/IdlInterface/test_partial_interface_of.html b/tests/wpt/tests/resources/test/tests/functional/idlharness/IdlInterface/test_partial_interface_of.html index 671196cc5df..7dd9e676af4 100644 --- a/tests/wpt/tests/resources/test/tests/functional/idlharness/IdlInterface/test_partial_interface_of.html +++ b/tests/wpt/tests/resources/test/tests/functional/idlharness/IdlInterface/test_partial_interface_of.html @@ -3,7 +3,6 @@ - idlharness: Partial interface diff --git a/tests/wpt/tests/scroll-animations/css/animation-range-visual-test.html b/tests/wpt/tests/scroll-animations/css/animation-range-visual-test.html index 8d68603701b..1ff2b12d1f9 100644 --- a/tests/wpt/tests/scroll-animations/css/animation-range-visual-test.html +++ b/tests/wpt/tests/scroll-animations/css/animation-range-visual-test.html @@ -5,6 +5,7 @@ + diff --git a/tests/wpt/tests/scroll-animations/scroll-timelines/scroll-timeline-invalidation.html b/tests/wpt/tests/scroll-animations/scroll-timelines/scroll-timeline-invalidation.html index cf5e74898af..a26500989ed 100644 --- a/tests/wpt/tests/scroll-animations/scroll-timelines/scroll-timeline-invalidation.html +++ b/tests/wpt/tests/scroll-animations/scroll-timelines/scroll-timeline-invalidation.html @@ -36,7 +36,7 @@ promise_test(async t => { await animation.ready; // Animation current time is at 20% because scroller was scrolled to 20% - assert_equals(animation.currentTime.value, 20); + assert_percents_equal(animation.currentTime, 20); assert_equals(scroller.scrollTop, 180); assert_equals(maxScroll, 900); @@ -52,9 +52,10 @@ promise_test(async t => { const expected_progress = (scroller.scrollTop / maxScroll) * 100; assert_true(expected_progress > initial_progress) - assert_equals(animation.currentTime.value, expected_progress); // 45% - assert_equals(animation.timeline.currentTime.value, expected_progress); // 45% - assert_equals(animation.effect.getComputedTiming().localTime.value, expected_progress); // 45% + // @ 45% + assert_percents_equal(animation.currentTime, expected_progress); + assert_percents_equal(animation.timeline.currentTime, expected_progress); + assert_percents_equal(animation.effect.getComputedTiming().localTime, expected_progress); }, 'Animation current time and effect local time are updated after scroller ' + 'content size changes.'); @@ -72,7 +73,7 @@ promise_test(async t => { // Animation current time is at 20% because scroller was scrolled to 20% // assert_equals(animation.currentTime.value, 20); - assert_equals(animation.currentTime.value, 20); + assert_percents_equal(animation.currentTime, 20); assert_equals(scroller.scrollTop, scrollOffset); assert_equals(maxScroll, 900); @@ -86,9 +87,11 @@ promise_test(async t => { const expected_progress = (scroller.scrollTop / maxScroll) * 100; assert_true(expected_progress > initial_progress); - assert_equals(animation.currentTime.value, expected_progress); // 45% - assert_equals(animation.timeline.currentTime.value, expected_progress); // 45% - assert_equals(animation.effect.getComputedTiming().localTime.value, expected_progress); // 45% + // @ 45% + assert_percents_equal(animation.currentTime, expected_progress); + assert_percents_equal(animation.timeline.currentTime, expected_progress); + assert_percents_equal(animation.effect.getComputedTiming().localTime, + expected_progress); }, 'Animation current time and effect local time are updated after scroller ' + 'size changes.'); diff --git a/tests/wpt/tests/scroll-animations/view-timelines/contain-alignment.html b/tests/wpt/tests/scroll-animations/view-timelines/contain-alignment.html new file mode 100644 index 00000000000..8b61a9ab81c --- /dev/null +++ b/tests/wpt/tests/scroll-animations/view-timelines/contain-alignment.html @@ -0,0 +1,112 @@ + + + + + + +
                                                                    +
                                                                    +
                                                                    +
                                                                    +
                                                                    + +
                                                                    +
                                                                    +
                                                                    +
                                                                    +
                                                                    + +
                                                                    + +
                                                                    +
                                                                    +
                                                                    +
                                                                    + +
                                                                    +
                                                                    +
                                                                    +
                                                                    + + + + + + diff --git a/tests/wpt/tests/scroll-animations/view-timelines/subject-br-crash.html b/tests/wpt/tests/scroll-animations/view-timelines/subject-br-crash.html new file mode 100644 index 00000000000..36627dbea63 --- /dev/null +++ b/tests/wpt/tests/scroll-animations/view-timelines/subject-br-crash.html @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/tests/wpt/tests/tools/lint/lint.py b/tests/wpt/tests/tools/lint/lint.py index 9fc78d9b68e..00d76144ea8 100644 --- a/tests/wpt/tests/tools/lint/lint.py +++ b/tests/wpt/tests/tools/lint/lint.py @@ -453,11 +453,11 @@ def check_parsed(repo_root: Text, path: Text, f: IO[bytes]) -> List[rules.Error] errors.append(rules.VariantMissing.error(path)) else: variant = element.attrib["content"] - if variant != "": - if (variant[0] not in ("?", "#") or - len(variant) == 1 or - (variant[0] == "?" and variant[1] == "#")): - errors.append(rules.MalformedVariant.error(path, (path,))) + if (variant == "" or + variant[0] not in ("?", "#") or + len(variant) == 1 or + (variant[0] == "?" and variant[1] == "#")): + errors.append(rules.MalformedVariant.error(path, (path,))) required_elements.extend(key for key, value in {"testharness": True, "testharnessreport": len(testharnessreport_nodes) > 0, diff --git a/tests/wpt/tests/tools/lint/rules.py b/tests/wpt/tests/tools/lint/rules.py index 88b7b6d80c3..580ef8009cd 100644 --- a/tests/wpt/tests/tools/lint/rules.py +++ b/tests/wpt/tests/tools/lint/rules.py @@ -198,8 +198,8 @@ class VariantMissing(Rule): class MalformedVariant(Rule): name = "MALFORMED-VARIANT" description = collapse(""" - %s `` 'content' attribute must be the empty string - or start with '?' or '#' + %s `` 'content' attribute must be a non empty string + and start with '?' or '#' """) diff --git a/tests/wpt/tests/tools/lint/tests/test_file_lints.py b/tests/wpt/tests/tools/lint/tests/test_file_lints.py index 9a49d6e7a24..62a380e1a40 100644 --- a/tests/wpt/tests/tools/lint/tests/test_file_lints.py +++ b/tests/wpt/tests/tools/lint/tests/test_file_lints.py @@ -610,8 +610,7 @@ def test_variant_missing(): # A corresponding "positive" test cannot be written because the manifest # SourceFile implementation raises a runtime exception for the condition this # linting rule describes -@pytest.mark.parametrize("content", ["", - "?foo" +@pytest.mark.parametrize("content", ["?foo" "#bar"]) def test_variant_malformed_negative(content): code = """\ diff --git a/tests/wpt/tests/tools/manifest/tests/test_sourcefile.py b/tests/wpt/tests/tools/manifest/tests/test_sourcefile.py index 4b98e718d03..298e480c142 100644 --- a/tests/wpt/tests/tools/manifest/tests/test_sourcefile.py +++ b/tests/wpt/tests/tools/manifest/tests/test_sourcefile.py @@ -235,7 +235,7 @@ test()""" def test_worker_with_variants(): - contents = b"""// META: variant= + contents = b"""// META: variant=?default // META: variant=?wss test()""" @@ -255,7 +255,7 @@ test()""" expected_urls = [ "/html/test.worker.html" + suffix - for suffix in ["", "?wss"] + for suffix in ["?default", "?wss"] ] assert len(items) == len(expected_urls) @@ -265,7 +265,7 @@ test()""" def test_window_with_variants(): - contents = b"""// META: variant= + contents = b"""// META: variant=?default // META: variant=?wss test()""" @@ -285,7 +285,7 @@ test()""" expected_urls = [ "/html/test.window.html" + suffix - for suffix in ["", "?wss"] + for suffix in ["?default", "?wss"] ] assert len(items) == len(expected_urls) @@ -429,7 +429,7 @@ test()""" def test_multi_global_with_variants(): contents = b"""// META: global=window,worker -// META: variant= +// META: variant=?default // META: variant=?wss test()""" @@ -456,7 +456,7 @@ test()""" expected_urls = sorted( urls[ty] + suffix for ty in ["dedicatedworker", "serviceworker", "sharedworker", "window"] - for suffix in ["", "?wss"] + for suffix in ["?default", "?wss"] ) assert len(items) == len(expected_urls) @@ -859,7 +859,7 @@ def test_spec_links_complex(input, expected): def test_url_base(): contents = b"""// META: global=window,worker -// META: variant= +// META: variant=?default // META: variant=?wss test()""" @@ -868,13 +868,13 @@ test()""" assert item_type == "testharness" - assert [item.url for item in items] == ['/_fake_base/html/test.any.html', + assert [item.url for item in items] == ['/_fake_base/html/test.any.html?default', '/_fake_base/html/test.any.html?wss', - '/_fake_base/html/test.any.serviceworker.html', + '/_fake_base/html/test.any.serviceworker.html?default', '/_fake_base/html/test.any.serviceworker.html?wss', - '/_fake_base/html/test.any.sharedworker.html', + '/_fake_base/html/test.any.sharedworker.html?default', '/_fake_base/html/test.any.sharedworker.html?wss', - '/_fake_base/html/test.any.worker.html', + '/_fake_base/html/test.any.worker.html?default', '/_fake_base/html/test.any.worker.html?wss'] assert items[0].url_base == "/_fake_base/" diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/chrome.py b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/chrome.py index 3d97ccbd976..047bfa02451 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/chrome.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/chrome.py @@ -62,7 +62,7 @@ def executor_kwargs(logger, test_type, test_environment, run_info_data, } }, "excludeSwitches": ["enable-automation"], - "w3c": True + "w3c": True, } } @@ -93,6 +93,8 @@ def executor_kwargs(logger, test_type, test_environment, run_info_data, # on Linux as it hasn't shipped there yet, but in WPT we enable virtual # authenticator devices anyway for testing and so SPC works. chrome_options["args"].append("--enable-features=SecurePaymentConfirmationBrowser") + # For WebTransport tests. + chrome_options["args"].append("--webtransport-developer-mode") # Classify `http-private`, `http-public` and https variants in the # appropriate IP address spaces. @@ -122,21 +124,16 @@ def executor_kwargs(logger, test_type, test_environment, run_info_data, if kwargs["enable_experimental"]: chrome_options["args"].extend(["--enable-experimental-web-platform-features"]) - # Copy over any other flags that were passed in via --binary_args - if kwargs["binary_args"] is not None: - chrome_options["args"].extend(kwargs["binary_args"]) - # Pass the --headless flag to Chrome if WPT's own --headless flag was set # or if we're running print reftests because of crbug.com/753118 if ((kwargs["headless"] or test_type == "print-reftest") and "--headless" not in chrome_options["args"]): chrome_options["args"].append("--headless") - # For WebTransport tests. - webtranport_h3_port = test_environment.config.ports.get('webtransport-h3') - if webtranport_h3_port is not None: - chrome_options["args"].append( - f"--origin-to-force-quic-on=web-platform.test:{webtranport_h3_port[0]}") + # Copy over any other flags that were passed in via `--binary-arg` + for arg in kwargs.get("binary_args", []): + if arg not in chrome_options["args"]: + chrome_options["args"].append(arg) if test_type == "wdspec": executor_kwargs["binary_args"] = chrome_options["args"] diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/content_shell.py b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/content_shell.py index 4bbb42cc267..45fb48a6272 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/content_shell.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/content_shell.py @@ -43,21 +43,21 @@ def check_args(**kwargs): def browser_kwargs(logger, test_type, run_info_data, config, **kwargs): - args = list(kwargs["binary_args"]) - + args = [] args.append("--ignore-certificate-errors-spki-list=%s" % ','.join(chrome_spki_certs.IGNORE_CERTIFICATE_ERRORS_SPKI_LIST)) - - webtranport_h3_port = config.ports.get('webtransport-h3') - if webtranport_h3_port is not None: - args.append( - f"--origin-to-force-quic-on=web-platform.test:{webtranport_h3_port[0]}") + # For WebTransport tests. + args.append("--webtransport-developer-mode") if not kwargs["headless"]: args.append("--disable-headless-mode") - # These flags are specific to content_shell - they activate web test protocol mode. + # `--run-web-tests -` are specific to content_shell - they activate web + # test protocol mode. args.append("--run-web-tests") + for arg in kwargs.get("binary_args", []): + if arg not in args: + args.append(arg) args.append("-") return {"binary": kwargs["binary"], diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorcontentshell.py b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorcontentshell.py index 1ff25781ba4..8ca0a7a9a60 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorcontentshell.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorcontentshell.py @@ -279,6 +279,12 @@ class ContentShellPrintRefTestExecutor(ContentShellRefTestExecutor): class ContentShellTestharnessExecutor(TestharnessExecutor, _SanitizerMixin): # type: ignore + # Chromium's `testdriver-vendor.js` partially implements testdriver support + # with internal APIs [1]. + # + # [1]: https://chromium.googlesource.com/chromium/src/+/HEAD/docs/testing/writing_web_tests.md#Relying-on-Blink_Specific-Testing-APIs + supports_testdriver = True + def __init__(self, logger, browser, server_config, timeout_multiplier=1, debug_info=None, **kwargs): super().__init__(logger, browser, server_config, timeout_multiplier, debug_info, **kwargs) diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/wptrunner.py b/tests/wpt/tests/tools/wptrunner/wptrunner/wptrunner.py index 0cb71bcbfad..1ea44041d93 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/wptrunner.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/wptrunner.py @@ -223,10 +223,14 @@ def run_test_iteration(test_status, test_loader, test_source_kwargs, test_source if test_type == "testharness": tests_to_run[test_type] = [] for test in test_loader.tests[test_type]: - if ((test.testdriver and not executor_cls.supports_testdriver) or - (test.jsshell and not executor_cls.supports_jsshell)): + skip_reason = None + if test.testdriver and not executor_cls.supports_testdriver: + skip_reason = "Executor does not support testdriver.js" + elif test.jsshell and not executor_cls.supports_jsshell: + skip_reason = "Executor does not support jsshell" + if skip_reason: logger.test_start(test.id) - logger.test_end(test.id, status="SKIP") + logger.test_end(test.id, status="SKIP", message=skip_reason) test_status.skipped += 1 else: tests_to_run[test_type].append(test) diff --git a/tests/wpt/tests/wai-aria/META.yml b/tests/wpt/tests/wai-aria/META.yml index 502b9c30251..17068230e58 100644 --- a/tests/wpt/tests/wai-aria/META.yml +++ b/tests/wpt/tests/wai-aria/META.yml @@ -3,6 +3,3 @@ suggested_reviewers: - cookiecrook - spectranaut - jnurthen - - halindrome - - joanmarie - - michael-n-cooper diff --git a/tests/wpt/tests/wai-aria/role/fallback-roles.html b/tests/wpt/tests/wai-aria/role/fallback-roles.html index 6f42fa693e5..98011570b4f 100644 --- a/tests/wpt/tests/wai-aria/role/fallback-roles.html +++ b/tests/wpt/tests/wai-aria/role/fallback-roles.html @@ -13,19 +13,41 @@

                                                                    Tests 8.1 Role Attribute role token list selection and 9.1 Roles - handling author errors.

                                                                    + - +
                                                                    x
                                                                    -- valid/valid "switch checkbox" -- invalid/valid "foo group" -- unicode char tests with fallback -- whitespace tests with fallback -- unicode char tests with fallback -- "invalid, punctuation, tests, link, button" + +
                                                                    x
                                                                    + + + x + + +